analisis produktivitas dan efektifitas tenaga kerja pekerjaan ...
APLIKASI MONITORING PRODUKTIVITAS KINERJA MITRA ...
-
Upload
khangminh22 -
Category
Documents
-
view
2 -
download
0
Transcript of APLIKASI MONITORING PRODUKTIVITAS KINERJA MITRA ...
APLIKASI MONITORING PRODUKTIVITAS
KINERJA MITRA PERUSAHAAN
(Studi Kasus: PDAM Provinsi DKI Jakarta)
FIKRI KHARISMA
106091002879
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
2011 M/1432 H
APLIKASI MONITORING PRODUKTIVITAS
KINERJA MITRA PERUSAHAAN
(Studi Kasus: PDAM Provinsi DKI Jakarta)
Oleh:
FIKRI KHARISMA
106091002879
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar
Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
2011 M/1432 H
APLIKASI MONITORING PRODUKTIVITAS
KINERJA MITRA PERUSAHAAN
(Studi Kasus: PDAM Provinsi DKI Jakarta)
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar
Sarjana Komputer
Pada Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta
Oleh:
FIKRI KHARISMA
106091002879
Menyetujui,
Pembimbing 1 Pembimbing 2
Viva Arifin, MMSI Dr. Syafedi Syafei, M.Sc NIP. 19730810 200604 2 001 NIP. 19571005 198211 1 001
Mengetahui,
Ketua Program Studi Teknik Informatika,
Yusuf Durachman, M.Sc, MIT NIP. 19710522 200604 1 002
ii
PENGESAHAN UJIAN
Skripsi yang berjudul “Aplikasi Monitoring Produktivitas Kinerja Mitra Perusahaan (Studi
Kasus: PDAM Provinsi DKI Jakarta)” telah diuji dan dinyatakan lulus pada sidang
Munaqosyah Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah
Jakarta pada hari Jum’at, 28 Januari 2011. Skripsi ini telah diterima sebagai salah satu syarat
untuk memperoleh gelar Sarjana Strata Satu (S1) Program Studi Teknik Informatika.
Jakarta, 28 Januari 2011
Menyetujui,
Penguji,
Penguji 1 Penguji 2
Arini, M.T Andrew Fiade, M.Kom NIP. 19760131 200901 2 001 NIP. 19820811 200912 1 004
Pembimbing,
Pembimbing 1 Pembimbing 2
Viva Arifin, MMSI Dr. Syafedi Syafei, M.Sc NIP. 19730810 200604 2 001 NIP. 19571005 198211 1 001
Mengetahui,
Dekan Ketua Fakultas Sains dan Teknologi Program Studi Teknik Informatika
DR. Syopiansyah Jaya Putra, M.Sis Yusuf Durachman, M.Sc, MIT NIP. 19680117 200112 1 001 NIP. 19710522 200604 1 002
iii
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI ADALAH HASIL
KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI
ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA
MANAPUN
Jakarta, Januari 2011
Fikri Kharisma
106091002879
iv
ABSTRAK
Fikri Kharisma, Aplikasi Monitoring Produktivitas Kinerja Mitra Perusahaan (Studi Kasus: PDAM Provinsi DKI Jakarta), dibimbing oleh Viva Arifin, MMSI dan Dr. Syafedi Syafei, M.Sc. Perusahaan Daerah Air Minum (PDAM) Provinsi DKI Jakarta merupakan perusahaan yang secara berkesinambungan menjalankan fungsinya dalam hal pelayanan dan penyediaan air untuk seluruh masyarakat propinsi DKI Jakarta. Dalam membantu menjalankan fungsinya, perusahaan mengadakan kerja sama atau bermitra dengan dua perusahaan lainnya, yaitu PT. PAM LYONNAISE JAYA (PALYJA) dan PT. AETRA AIR JAKARTA (AETRA). PDAM memantau kinerja kedua mitra dengan mendata ulang secara manual laporan-laporan yang disampaikan ke dalam bentuk laporan elektronik untuk dapat dilakukan evaluasi setiap bulannya. Melalui proses pendataan ulang secara manual laporan-laporan tersebut, terdapat kemungkinan adanya duplikasi data yang dapat menyebabkan ketidakakurasian data-data tersebut, dan proses evaluasi yang dilakukan berjalan lambat. Melihat permasalahan yang terjadi maka perlu dibuat aplikasi yang dapat meminimalkan permasalahan-permasalahan yang timbul dan meningkatkan proses evaluasi. Dalam penelitian ini aplikasi dibuat dengan menggunakan framework dan konsep pemrograman Model-View-Controller (MVC). Metode pengembangan aplikasi yang digunakan dalam penelitian ini adalah model proses incremental (Incremental Process Models). Pada akhirnya, aplikasi ini dapat mengurangi terjadinya duplikasi dan ketidakakurasian data, serta memudahkan dan mempercepat proses dalam melakukan evaluasi kinerja mitra PDAM. Untuk ke depannya, aplikasi ini dapat dikembangkan lagi untuk melakukan proses monitoring laporan kinerja dalam skala besar. Kata Kunci: Aplikasi, Monitoring, Framework, MVC Jumlah Halaman: xxxii + 160 halaman + 40 lampiran Jumlah Daftar Pustaka: 19 sumber (1992 - 2010)
v
KATA PENGANTAR
Bismillahirrahmanirrahim,
Alhamdulillah penulis panjatkan puji dan syukur kehadirat Allah SWT,
karena dengan rahmat, ridho, dan hidayahNya, penulis dapat menyelesaikan tugas
akhir yang berjudul Aplikasi Monitoring Produktivitas Kinerja Mitra
Perusahaan (Studi Kasus: PDAM Provinsi DKI Jakarta). Shalawat dan salam
semoga selalu dilimpahkan kepada Nabi Muhammad SAW, keluarga, para
sahabat, dan para pengikutnya hingga akhir jaman.
Pada kesempatan ini, penulis juga ingin mengucapkan terima kasih kepada
pihak-pihak yang telah memberikan bantuan baik dalam bentuk dukungan moral
maupun materi selama penulis melaksanakan kegiatan penelitian hingga dalam
penulisan laporan ini. Secara khusus penulis ingin menyampaikan terima kasih
kepada:
1. Bapak DR. Syopiansyah Jaya Putra, M.Sis selaku Dekan Fakultas Sains dan
Teknologi yang telah memberikan komitmen, dorongan, dan program
pendidikan bagi mahasiswanya.
2. Bapak Yusuf Durachman, M.Sc, MIT selaku Ketua Program Studi Teknik
Informatika yang telah memberikan komitmen, dorongan, dan program
pendidikan bagi mahasiswanya.
3. Ibu Viva Arifin, MMSI selaku Pembimbing I skripsi dari Fakultas Sains dan
Teknologi UIN Syarif Hidayatullah Jakarta yang telah memberikan dukungan
baik secara moral maupun teknis.
vi
4. Bapak Dr. Syafedi Syafei, M.Sc selaku Pembimbing II skripsi dari Fakultas
Sains dan Teknologi UIN Syarif Hidayatullah Jakarta yang telah memberikan
dukungan baik secara moral maupun teknis.
5. Bapak Duddy Permadi, S.E selaku Manager Sub Divisi Pengembangan
Sistem dan Teknologi PDAM Provinsi DKI Jakarta yang telah membantu dan
menerima penulis dengan baik selama penelitian.
6. Bapak Enar Legowo, S.Kom selaku pembimbing lapangan dari pihak PDAM
Provinsi DKI Jakarta, yang telah memberikan bimbingan dan dukungan, baik
dalam bentuk moral maupun teknis sehingga penulis dapat menyelesaikan
penelitian.
7. Bapak M. Ditha Pratama, S.Ikom dari pihak PDAM Provinsi DKI Jakarta
yang turut memberikan dukungan bagi penulis selama penelitian.
8. Dosen-dosen Program Studi Teknik Informatika yang telah memberikan ilmu,
pengetahuan, dan kemampuan manajemen beserta pemupukan akhlak, moral
dan mental yang baik.
9. Ayah dan ibu tercinta yang selalu mendo’akan, memberi kasih sayang, dan
dukungan kepada anaknya tercinta, serta mas Aldhika, kakak yang selalu
membantu dan berbagi ilmu, serta adikku Aulia Rahmah yang juga selalu
memberikan dukungan.
10. Sahabat-sahabat Program Studi Teknik Informatika angkatan 2006 yang tidak
dapat penulis sebutkan satu persatu.
vii
viii
11. Seluruh pihak yang telah membantu dan namanya tidak dapat disebutkan satu
persatu. Terima kasih atas dukungan dan motivasinya, semoga Allah SWT
membalas segala kebaikan yang telah diberikan kepada penulis.
Penulis juga ingin menyampaikan maaf yang sebesar-besarnya apabila
selama ini ada hal-hal yang kurang berkenan yang dilakukan. Kritik dan saran
yang sifatnya membangun akan penulis terima guna meningkatkan penulisan yang
akan datang.
Akhir kata, penulis berharap semoga tugas akhir ini dapat bermanfaat
dalam pengembangan ilmu pengetahuan khususnya dalam bidang sains dan
teknologi.
Jakarta, 27 Desember 2010
Penulis
DAFTAR ISI
Halaman
LEMBAR JUDUL .......................................................................................... i
LEMBAR PERSETUJUAN PEMBIMBING ................................................. ii
LEMBAR PENGESAHAN UJIAN ................................................................ iii
LEMBAR PERNYATAAN ............................................................................ iv
ABSTRAK ...................................................................................................... v
KATA PENGANTAR .................................................................................... vi
DAFTAR ISI ................................................................................................... ix
DAFTAR TABEL ........................................................................................... xvi
DAFTAR GAMBAR ...................................................................................... xvii
DAFTAR SIMBOL ......................................................................................... xxiii
DAFTAR LAMPIRAN ................................................................................... xxxii
BAB I PENDAHULUAN
1.1. Latar Belakang ............................................................................. 1
1.2. Perumusan Masalah ..................................................................... 2
1.3. Batasan Masalah ........................................................................... 3
1.4. Tujuan dan Manfaat Penelitian .................................................... 3
1.4.1. Tujuan Penelitian .............................................................. 3
1.4.2. Manfaat Penelitian ............................................................ 4
1.4.2.1. Bagi Penulis ....................................................... 4
ix
1.4.2.2. Bagi Instansi/Perusahaan ................................... 4
1.4.2.3. Bagi Universitas ................................................. 4
1.5. Waktu dan Tempat Penelitian ...................................................... 5
1.6. Metode Penelitian ......................................................................... 5
1.6.1. Metode Pengumpulan Data .............................................. 5
1.6.2. Metode Pengembangan Aplikasi ...................................... 6
1.7. Sistematika Penulisan ................................................................... 7
BAB II LANDASAN TEORI
2.1. Aplikasi ........................................................................................ 9
2.2. Monitoring dan Evaluasi .............................................................. 9
2.3. Perusahaan .................................................................................... 10
2.4. Database Management System (DBMS) ..................................... 10
2.4.1. Data .................................................................................. 12
2.4.2. Keuntungan DBMS .......................................................... 12
2.4.3. Model Data ....................................................................... 14
2.4.4. Arsitektur Sistem Database .............................................. 15
2.4.4.1. Skema dan Bahasa .............................................. 15
2.4.4.2. Arsitektur Tiga Tingkatan .................................. 16
2.5. World Wide Web .......................................................................... 17
2.6. Framework ................................................................................... 18
2.7. Konsep Model-View-Controller (MVC) ...................................... 19
2.8. Bahasa Pemrograman yang Digunakan ....................................... 20
x
2.8.1. CSS ................................................................................... 20
2.8.2. HTML ............................................................................... 22
2.8.3. PHP ................................................................................... 22
2.9. Perangkat Lunak yang Digunakan ............................................... 24
2.9.1. CodeIgniter ....................................................................... 24
2.9.2. XAMPP ............................................................................ 24
2.10. Incremental Process Models ........................................................ 25
2.10.1. Communication .............................................................. 27
2.10.2. Planning ......................................................................... 27
2.10.3. Modelling ....................................................................... 28
2.10.4. Construction ................................................................... 28
2.10.5. Deployment .................................................................... 29
2.11. Pengujian ...................................................................................... 30
2.11.1. Pengujian Fungsional ..................................................... 30
2.11.2. Pengujian Non Fungsional ............................................. 30
2.11.3. Pengujian Black-Box (Black-Box Testing) ..................... 31
2.11.4. Pengujian White-Box (White-Box Testing) .................... 31
2.12. Unified Modelling Language (UML) ........................................... 32
2.12.1. Use Case Diagram ......................................................... 33
2.12.2. Class Diagram ............................................................... 35
2.12.3. Activity Diagram ............................................................ 37
2.12.4. Sequence Diagram ......................................................... 39
2.12.5. Deployment Diagram ..................................................... 41
xi
2.13. Tinjauan Umum PDAM Provinsi DKI Jakarta (PAM JAYA) ..... 42
2.13.1. Sejarah ............................................................................ 42
2.13.2. Visi dan Misi .................................................................. 44
2.13.3. Struktur Organisasi ........................................................ 45
BAB III METODE PENELITIAN
3.1. Kerangka Berpikir ........................................................................ 46
3.2. Metode Pengumpulan Data .......................................................... 47
3.2.1. Wawancara ....................................................................... 47
3.2.2. Studi Pustaka .................................................................... 47
3.2.3. Studi Sejenis ..................................................................... 47
3.3. Metode Pengembangan Aplikasi .................................................. 49
3.3.1. Communication ................................................................ 49
3.3.2. Planning ........................................................................... 50
3.3.2.1. Menggambarkan Tugas Teknis .......................... 50
3.3.2.2. Sumber Daya ...................................................... 51
3.3.3. Modelling .......................................................................... 51
3.3.3.1. Modelling Aplikasi ............................................. 51
3.3.3.2. Perancangan Database ....................................... 52
3.3.3.3. Perancangan Tampilan ....................................... 52
3.3.4. Construction ..................................................................... 53
3.3.4.1. Coding ................................................................ 53
3.3.4.2. Testing ................................................................ 53
xii
3.3.5. Deployment ....................................................................... 53
BAB IV ANALISIS DAN PEMBAHASAN
4.1. Communication ............................................................................ 54
4.2. Planning ....................................................................................... 54
4.2.1. Menggambarkan Tugas Teknis ........................................ 54
4.2.1.1. Persyaratan Pengguna (User Requirement) ........ 54
4.2.1.2. Pemodelan (Modelling) ...................................... 55
4.2.1.3. Coding dan Testing ............................................ 55
4.2.1.4. Deploying Aplikasi ............................................. 56
4.2.2. Sumber Daya .................................................................... 56
4.2.2.1. Perangkat Lunak ................................................. 56
4.2.2.2. Perangkat Keras ................................................. 57
4.3. Modelling ..................................................................................... 57
4.3.1. Modelling Aplikasi ........................................................... 57
4.3.1.1. Use Case Diagram ............................................. 57
4.3.1.2. Class Diagram ................................................... 61
4.3.1.3. Activity Diagram ................................................ 62
4.3.1.4. Sequence Diagram ............................................. 70
4.3.1.5. Deployment Diagram ......................................... 78
4.3.2. Perancangan Database ..................................................... 79
4.3.2.1. Spesifikasi Database .......................................... 79
4.3.2.2. Entity Relationship Diagram (ERD) .................. 85
xiii
4.3.2.3. Logical Record Structure (LRS) ........................ 86
4.3.3. Perancangan Tampilan ..................................................... 87
4.3.3.1. Perancangan Interface Aplikasi ......................... 87
4.3.3.2. Implementasi Interface Aplikasi pada Web ....... 88
4.3.3.2.1. Halaman Login .................................. 88
4.3.3.2.2. Halaman Home .................................. 89
4.3.3.2.3. Halaman Aetra ................................... 90
4.3.3.2.4. Halaman Palyja .................................. 98
4.4. Construction ................................................................................. 106
4.4.1. Coding .............................................................................. 106
4.4.1.1. Framework CodeIgniter ..................................... 106
4.4.1.2. Web Server .......................................................... 122
4.4.2. Pengujian Aplikasi (Testing) ............................................ 123
4.4.2.1. Pengujian Fungsionalitas ................................... 123
4.4.2.1.1. Pengujian Mandiri ............................. 123
4.4.2.1.2. Hasil Pengujian Mandiri .................... 126
4.4.2.1.3. Pengujian Lapangan ........................... 142
4.4.2.1.4. Kesimpulan Pengujian ....................... 142
4.4.2.2. Pengujian Non Fungsionalitas ............................ 142
4.4.2.2.1. Hasil Pengujian Non Fungsionalitas .. 146
4.5. Deployment .................................................................................. 155
xiv
xv
BAB V PENUTUP
5.1. Kesimpulan .................................................................................. 156
5.2. Saran ............................................................................................. 157
DAFTAR PUSTAKA .................................................................................... 158
LAMPIRAN
DAFTAR TABEL
Halaman
Tabel 3.1 Studi Sejenis ................................................................................. 48
Tabel 4.1 Tabel Use Case Diagram Aplikasi Monitoring ........................... 59
Tabel 4.2 Tabel bulan ................................................................................... 79
Tabel 4.3 Tabel kategori ............................................................................... 79
Tabel 4.4 Tabel monitor_aetra ..................................................................... 80
Tabel 4.5 Tabel monitor_palyja ................................................................... 81
Tabel 4.6 Tabel tahun ................................................................................... 82
Tabel 4.7 Tabel target_aetra ......................................................................... 82
Tabel 4.8 Tabel target_palyja ....................................................................... 83
Tabel 4.9 Tabel triwulan .............................................................................. 84
Tabel 4.10 Tabel user ..................................................................................... 84
Tabel 4.11 Pengujian Mandiri ........................................................................ 123
Tabel 4.12 Hasil Pengujian Lapangan ............................................................ 142
Tabel 4.13 Pengujian Non Fungsionalitas ...................................................... 143
xvi
DAFTAR GAMBAR
Halaman
Gambar 2.1 The ANSI-SPARC three-level architecture .......................... 17
Gambar 2.2 Model Hubungan MVC ........................................................ 19
Gambar 2.3 The Incremental Model ......................................................... 26
Gambar 2.4 Contoh Use Case Diagram ................................................... 34
Gambar 2.5 Contoh Class Diagram .......................................................... 37
Gambar 2.6 Contoh Activity Diagram ...................................................... 38
Gambar 2.7 Contoh Sequence Diagram ................................................... 40
Gambar 2.8 Contoh Deployment Diagram ............................................... 41
Gambar 2.9 Struktur Organisasi PAM JAYA ........................................... 45
Gambar 3.1 Kerangka Berpikir ................................................................. 46
Gambar 3.2 The Incremental Model ......................................................... 49
Gambar 4.1 Use Case Diagram Aplikasi Monitoring .............................. 58
Gambar 4.2 Class Diagram Aplikasi Monitoring ..................................... 61
Gambar 4.3 Activity Diagram Target Aetra .............................................. 62
Gambar 4.4 Activity Diagram Realisasi Aetra .......................................... 63
Gambar 4.5 Activity Diagram Rekapitulasi Aetra .................................... 64
Gambar 4.6 Activity Diagram Evaluasi Aetra .......................................... 65
Gambar 4.7 Activity Diagram Target Palyja ............................................. 66
Gambar 4.8 Activity Diagram Realisasi Palyja ......................................... 67
Gambar 4.9 Activity Diagram Rekapitulasi Palyja ................................... 68
xvii
Gambar 4.10 Activity Diagram Evaluasi Palyja ......................................... 69
Gambar 4.11 Sequence Diagram Target Aetra ........................................... 70
Gambar 4.12 Sequence Diagram Realisasi Aetra ....................................... 71
Gambar 4.13 Sequence Diagram Rekapitulasi Aetra ................................. 72
Gambar 4.14 Sequence Diagram Evaluasi Aetra ........................................ 73
Gambar 4.15 Sequence Diagram Target Palyja .......................................... 74
Gambar 4.16 Sequence Diagram Realisasi Palyja ...................................... 75
Gambar 4.17 Sequence Diagram Rekapitulasi Palyja ................................ 76
Gambar 4.18 Sequence Diagram Evaluasi Palyja ...................................... 77
Gambar 4.19 Deployment Diagram Aplikasi Monitoring .......................... 78
Gambar 4.20 Entity Relationship Diagram (ERD) ..................................... 85
Gambar 4.21 Logical Record Structure (LRS) ........................................... 86
Gambar 4.22 Rancang Tampilan Login ...................................................... 87
Gambar 4.23 Rancang Tampilan Halaman Aplikasi .................................. 87
Gambar 4.24 Halaman Login Aplikasi ....................................................... 88
Gambar 4.25 Halaman Home Aplikasi ....................................................... 89
Gambar 4.26 Halaman Aetra ...................................................................... 90
Gambar 4.27 Halaman Target Aetra ........................................................... 91
Gambar 4.28 Halaman Tambah Data Target Aetra .................................... 92
Gambar 4.29 Halaman Update Data Target Aetra ...................................... 92
Gambar 4.30 Halaman Realisasi Aetra ....................................................... 93
Gambar 4.31 Halaman Tambah Data Realisasi Aetra ................................ 94
Gambar 4.32 Halaman Update Data Realisasi Aetra .................................. 94
xviii
Gambar 4.33 Halaman Rekapitulasi Aetra ................................................. 95
Gambar 4.34 Download File Rekapitulasi Aetra ........................................ 96
Gambar 4.35 Halaman Grafik Evaluasi Aetra ............................................ 97
Gambar 4.36 Halaman Palyja ..................................................................... 98
Gambar 4.37 Halaman Target Palyja .......................................................... 99
Gambar 4.38 Halaman Tambah Data Target Palyja ................................... 100
Gambar 4.39 Halaman Update Data Target Palyja ..................................... 100
Gambar 4.40 Halaman Realisasi Palyja ...................................................... 101
Gambar 4.41 Halaman Tambah Data Realisasi Palyja ............................... 102
Gambar 4.42 Halaman Update Data Realisasi Palyja ................................. 102
Gambar 4.43 Halaman Rekapitulasi Palyja ................................................ 103
Gambar 4.44 Download File Rekapitulasi Palyja ....................................... 104
Gambar 4.45 Halaman Grafik Evaluasi Palyja ........................................... 105
Gambar 4.46 CodeIgniter 1.7.2 ................................................................... 106
Gambar 4.47 login_model.php ................................................................... 107
Gambar 4.48 login_view.php ...................................................................... 107
Gambar 4.49 login.php ............................................................................... 108
Gambar 4.50 aetratgt_model.php ................................................................ 109
Gambar 4.51 palyjatgt_model.php .............................................................. 109
Gambar 4.52 target.php untuk view bagian Aetra ....................................... 110
Gambar 4.53 target.php untuk view bagian Palyja ...................................... 110
Gambar 4.54 aetra_target.php ..................................................................... 111
Gambar 4.55 palyja_target.php ................................................................... 111
xix
Gambar 4.56 aetrareal_model.php .............................................................. 112
Gambar 4.57 palyjareal_model.php ............................................................ 113
Gambar 4.58 realisasi.php untuk view bagian Aetra ................................... 113
Gambar 4.59 realisasi.php untuk view bagian Palyja .................................. 114
Gambar 4.60 aetra_realisasi.php ................................................................. 114
Gambar 4.61 palyja_realisasi.php ............................................................... 115
Gambar 4.62 aetrarekap_model.php ........................................................... 116
Gambar 4.63 palyjarekap_model.php ......................................................... 116
Gambar 4.64 rekap.php untuk view bagian Aetra ....................................... 117
Gambar 4.65 rekap.php untuk view bagian Palyja ...................................... 117
Gambar 4.66 aetra_rekap.php ..................................................................... 118
Gambar 4.67 palyja_rekap.php ................................................................... 118
Gambar 4.68 aetragrafik_model.php .......................................................... 119
Gambar 4.69 palyjagrafik_model.php ........................................................ 120
Gambar 4.70 grafik.php untuk view bagian Aetra ...................................... 120
Gambar 4.71 grafik.php untuk view bagian Palyja ..................................... 121
Gambar 4.72 aetra_grafik.php .................................................................... 121
Gambar 4.73 palyja_grafik.php .................................................................. 122
Gambar 4.74 Login dengan benar ............................................................... 126
Gambar 4.75 Halaman home (setelah login dengan benar) ........................ 126
Gambar 4.76 Login yang salah ................................................................... 127
Gambar 4.77 Login tanpa username dan password .................................... 127
Gambar 4.78 Tampil data target Palyja ...................................................... 128
xx
Gambar 4.79 Tambah target Palyja data baru ............................................. 128
Gambar 4.80 Tambah target Palyja data sudah tercatat .............................. 129
Gambar 4.81 Tambah target Palyja data kosong ........................................ 129
Gambar 4.82 Update data target Palyja ...................................................... 130
Gambar 4.83 Hapus data target Palyja ........................................................ 130
Gambar 4.84 Tampil data realisasi Palyja .................................................. 131
Gambar 4.85 Tambah realisasi Palyja data baru ......................................... 131
Gambar 4.86 Tambah realisasi Palyja data sudah tercatat .......................... 132
Gambar 4.87 Tambah realisasi Palyja data kosong .................................... 132
Gambar 4.88 Update data realisasi Palyja .................................................. 133
Gambar 4.89 Hapus data realisasi Palyja .................................................... 133
Gambar 4.90 Tampil rekapitulasi Palyja ..................................................... 134
Gambar 4.91 Tampil grafik evaluasi Palyja ................................................ 134
Gambar 4.92 Tampil data target Aetra ........................................................ 135
Gambar 4.93 Tambah target Aetra data baru .............................................. 135
Gambar 4.94 Tambah target Aetra data sudah tercatat ............................... 136
Gambar 4.95 Tambah target Aetra data kosong ......................................... 136
Gambar 4.96 Update data target Aetra ....................................................... 137
Gambar 4.97 Hapus data target Aetra ......................................................... 137
Gambar 4.98 Tampil data realisasi Aetra .................................................... 138
Gambar 4.99 Tambah realisasi Aetra data baru .......................................... 138
Gambar 4.100 Tambah realisasi Aetra data sudah tercatat ........................... 139
Gambar 4.101 Tambah realisasi Aetra data kosong ..................................... 139
xxi
xxii
Gambar 4.102 Update data realisasi Aetra ................................................... 140
Gambar 4.103 Hapus data realisasi Aetra ..................................................... 140
Gambar 4.104 Tampil rekapitulasi Aetra ...................................................... 141
Gambar 4.105 Tampil grafik evaluasi Aetra ................................................. 141
Gambar 4.106 Tampilan aplikasi user friendly ............................................. 146
Gambar 4.107 Mudah mempelajari penggunaan aplikasi .................................. 147
Gambar 4.108 Pengguna dapat mengoperasikan aplikasi dengan baik ............... 147
Gambar 4.109 Web browser tanpa pemutar Flash ............................................ 148
Gambar 4.110 Gangguan pada web server ..................................................... 148
Gambar 4.111 Aplikasi berjalan pada web server versi tahun 2007 ................ 149
Gambar 4.112 Restart pada web server ........................................................ 149
Gambar 4.113 Waktu untuk memproses data ............................................... 150
Gambar 4.114 Memory resource yang terpakai ............................................ 150
Gambar 4.115 Kegagalan dalam pemrosesan data ....................................... 151
Gambar 4.116 Perubahan aplikasi pada direktori models-views-controllers . 151
Gambar 4.117 Penghapusan bagian persentase dan pesan kesalahan ........... 152
Gambar 4.118 Bagian persentase terhapus ................................................... 152
Gambar 4.119 Aplikasi berjalan di sistem operasi Linux ............................. 153
Gambar 4.120 Aplikasi berjalan setelah instalasi web server ....................... 153
Gambar 4.121 Export file Excel pada sistem operasi Linux ......................... 154
Gambar 4.122 File Excel dapat terbuka pada sistem operasi Linux ............. 154
Gambar 4.123 Aplikasi dapat berjalan pada sistem operasi yang lain .......... 155
DAFTAR SIMBOL
Simbol Use Case Diagram
Simbol Nama Fungsi
Actor User di luar sistem
Use case
Sebuah spesifikasi perilaku suatu entitas dalam interaksi dengan agen di luar
Subject Boundary
Classifier yang sifatnya dideskripsikan dengan use case
Communication path
Penjelasan tentang sambungan antara class instances
Generalization
Hubungan antara lebih spesifik dan deskripsi yang lebih umum, digunakan untuk inheritance dan deklarasi tipe polimorfik
Extend Menghubungkan sebuah perluasan use case ke use case dasar
Include Menghubungkan use case dasar ke use case tambahan
(Sumber: Rumbaugh, et al., 2006)
xxiii
Simbol Class Diagram
Simbol Nama Fungsi
Class Sebuah class adalah classifier yang memiliki objek. Sebuah class menyediakan template dari objek yang diciptakan (diinstansiasi). Di dalam class juga didefinisikan atribut dan operasi
Generalization Sebuah hubungan generalization menghubungkan sebuah class yang umum dan sebuah class yang khusus atau spesifik
Usage Sebuah hubungan usage terjadi dimana sebuah class membutuhkan class lain untuk operasi atau implementasi
(Sumber: http://resource.visual-paradigm.com/)
xxiv
Simbol Activity Diagram
Simbol Nama Fungsi
Action atau activity Perilaku spesifikasi yang menggambarkan sekuensial serta langkah-langkah prosedur komputasi
Fork node Node dengan satu input dan beberapa output atau sebaliknya
Intial node Menunjukkan tempat dimana eksekusi program dimulai ketika sebuah activity dipanggil
Activity final node Menyebabkan penghentian eksekusi paksa semua flow dalam activity dan berakhirnya pelaksanaan activity
Flow Mendeskripsikan sumber dan target dari berbagai jenis informasi
Accept event action Suatu aksi yang melakukan eksekusi sampai suatu jenis kejadian tertentu dikenal oleh objek pelaksana
Send signal action Spesifikasi dari blok informasi yang dikomunikasikan dengan asynchronous antar objek
Accept time action Suatu aksi yang dilakukan dalam waktu tertentu
Branch atau merge Situasi dimana flow input aksi dapat menuju satu atau beberapa
xxv
kemungkinan flow output atau sebaliknya
Pin Merepresentasikan koneksi untuk nilai input atau output suatu aksi
Object node Merepresentasikan adanya suatu objek yang diproduksi oleh aksi
Exception handler Kontol yang melakukan asumsi jika ada pengecualian dari suatu kejadian yang terjadi
Interruptible activity region
Suatu daerah yang dapat dilakukan proses interupsi
Expansion region Suatu daerah yang mengeksekusi satu dari setiap elemen yang diinput
Sub-activity Activity diagram utama terlalu kompleks sehingga dituhkan activity diagram tersendiri untuk proses tertentu
(Sumber: http://resource.visual-paradigm.com/ dan Rumbaugh, et al., 2006)
xxvi
Simbol Sequencial Diagram
Simbol Nama Fungsi
LifeLine Partisipasi individu dalam interaksi
Boundary LifeLine
Jenis penghubung yang didefinisikan sebagai stereotip batas
Control LifeLine
Jenis penghubung yang didefinisikan sebagai stereotip kontrol
Entity LifeLine Sebuah jenis penghubung yang didefinisikan sebagai stereotip entitas
asynchronous message
Komunikasi antar lifeline
synchronous call
Tipe message yang merupakan tipe operasi call
return message Tipe message yang merupakan akhir dari eksekusi dan kembali kepada pemanggilnya
Duration Message
Tipe pesan yang bergantung pada waktu panggilan pesan
stop (destruction)
Penghapusan objek
xxvii
Create Message Model penciptaan objek
Self Message Jenis pesan yang merupakan pelaksanaan atau operasi memanggil dalam garis hidup yang sama
Recursive Message
Jenis pesan diri yang dijalankan secara rekursif
Found Message Jenis pesan yang mana terjadinya peristiwa penerima dikenal
Lost Message Jenis pesan yang mana terjadinya peristiwa pengiriman dikenal
Alternative Combined Fragment
Sebuah fragmen gabungan alternatif menetapkan alternatif fragmen interaksi
xxviii
Loop Combined Fragment
Sebuah fragmen yang mendefinisikan perulangan fragmen interaksi
Interaction Use Sebuah cara singkat untuk menyalin isi dari interaksi yang dirujuk
Frame Sebuah unit yang mempunyai perilaku untuk berfokus pada pengamatan pertukaran informasi
Actor Aktor menentukan peran yang dimainkan oleh pengguna manusia, perangkat keras eksternal, atau subjek lain yang berinteraksi dengan subjek
Concurrent Membuat timeline eksekusi baru bersamaan
xxix
Continuation Mendefinisikan kelanjutan dari cabang Alternatve Combined Fragment yang berbeda
Gate Titik sambungan antara pesan internal dan eksternal dari frame
Note Sebuah notasi tekstual yang dapat melekat pada elemen
Anchor Sebuah konektor antara elemen dan catatan
Constraint Kendala adalah suatu kondisi atau pembatasan, yang dapat disajikan dalam kedua bahasa natural atau bahasa mesin yang dapat dibaca.
(Sumber: http://resource.visual-paradigm.com/ dan Rumbaugh, et al., 2006)
xxx
xxxi
Simbol Deployment Diagram
Simbol Nama Fungsi
Device Node Sumber daya komputasi fisik dengan kemampuan pemrosesan untuk mengeksekusi artefak
Artifact Artefak adalah informasi yang digunakan atau dihasilkan oleh proses pengembangan perangkat lunak
Association
Sebuah asosiasi yang menetapkan hubungan semantik yang dapat terjadi antar instansi
Execution Environment Node
Sebuah execution environment adalah node yang menawarkan lingkungan eksekusi untuk tipe komponen tertentu sebagai syarat untuk mengeksekusi artefak
(Sumber: http://resource.visual-paradigm.com/)
DAFTAR LAMPIRAN
Halaman
Lampiran 1. Surat Keterangan Penunjukkan Dosen Pembimbing Skripsi ..... A-1
Lampiran 2. Surat Keterangan Permohonan Penelitian ................................. A-2
Lampiran 3. Surat Keterangan Persetujuan Penelitian dari PDAM ............... A-3
Lampiran 4. Surat Keterangan Penelitian di PDAM ...................................... A-4
Lampiran 5. Wawancara Awal Penelitian ...................................................... B-1
Lampiran 6. Wawancara Akhir Penelitian dan Seusai Pengujian Aplikasi ... B-2
Lampiran 7. Kode Program ............................................................................ C-1
xxxii
BAB I
PENDAHULUAN
1.1. Latar Belakang
Perkembangan teknologi informasi saat ini berkembang semakin cepat
sejalan dengan pola berpikir manusia yang berkembang mengikuti jaman.
Begitu pula dengan perkembangan komputer. Komputer merupakan salah
satu alat yang dapat memberikan dampak positif seperti pengaksesan dan
pemrosesan informasi yang cepat. Dengan teknologinya, komputer dapat
digunakan untuk membantu manusia dalam memecahkan masalah, dan
mempermudah aktivitas kerja, begitu pula aktivitas kerja Perusahaan Daerah
Air Minum (PDAM) Provinsi DKI Jakarta.
Perusahaan Daerah Air Minum (PDAM) Provinsi DKI Jakarta
merupakan perusahaan yang secara berkesinambungan menjalankan
fungsinya dalam hal pelayanan dan penyediaan air untuk seluruh
masyarakat provinsi DKI Jakarta. Dalam membantu menjalankan fungsinya,
perusahaan mengadakan kerja sama atau bermitra dengan dua perusahaan
lainnya, yaitu PT. PAM Lyonnaise Jaya (PALYJA) dan PT. Aetra Air
Jakarta (AETRA).
Setiap bulannya kedua mitra tersebut mengirimkan laporan kinerja
perusahaan kepada PDAM. Selanjutnya PDAM mendata ulang secara
manual laporan-laporan tersebut sebagai bentuk kegiatan mengamati secara
1
2
seksama kinerja kedua mitra tersebut, dengan tujuan agar semua informasi
yang diperoleh mengenai kinerja kedua mitra tersebut dapat menjadi
landasan dalam mengambil keputusan tindakan selanjutnya yang diperlukan
atau evaluasi.
PDAM memantau kinerja kedua mitra dengan mendata ulang secara
manual laporan-laporan yang disampaikan ke dalam bentuk laporan
elektronik untuk dapat dilakukan evaluasi setiap bulannya. Melalui proses
pendataan ulang secara manual laporan-laporan tersebut, terdapat
kemungkinan adanya duplikasi data yang dapat menyebabkan
ketidakakurasian data-data tersebut, dan proses evaluasi yang dilakukan
berjalan lambat.
Berdasarkan uraian tersebut maka penulis ingin mengembangkan
aplikasi monitoring produktivitas kinerja mitra perusahaan berbasis web.
Adapun judul yang diangkat adalah Aplikasi Monitoring Produktivitas
Kinerja Mitra Perusahaan (Studi Kasus: PDAM Provinsi DKI
Jakarta).
1.2. Perumusan Masalah
Permasalahan yang dapat dirumuskan melalui penelitian ini adalah:
Bagaimana membangun aplikasi monitoring produktivitas kinerja
sehingga kinerja kedua mitra perusahaan PDAM dapat diketahui oleh
PDAM.
3
1.3. Batasan Masalah
Berdasarkan rumusan masalah, penulis membatasi masalah pada
beberapa hal, yaitu:
1. Penelitian ini dilakukan terkait pada proses monitoring laporan kinerja
air baku, air produksi, air terdistribusi, dan air terjual dari kedua mitra
perusahaan.
2. Penggunaan implementasi aplikasi monitoring produktivitas kinerja
mitra perusahaan berbasis web pada penelitian ini sebatas pada aplikasi
web, laporan rekapitulasi, dan data statistik dalam bentuk diagram.
3. Perihal denda bagi mitra perusahaan yang realisasinya tidak memenuhi
target yang telah ditetapkan, tidak ditampilkan dalam aplikasi ini karena
hal tersebut merupakan kewenangan dan keputusan dari PDAM.
1.4. Tujuan dan Manfaat Penelitian
1.4.1. Tujuan Penelitian
Berdasarkan uraian latar belakang, maka tujuan penelitian ini
adalah:
Menganalisis dan mengimplementasi aplikasi monitoring
produktivitas kinerja mitra perusahaan berbasis web dalam
melakukan proses monitoring, sehingga memudahkan dan
mempercepat PDAM dalam mengevaluasi kedua mitra perusahaan.
4
1.4.2. Manfaat Penelitian
1.4.2.1. Bagi Penulis
1. Dapat mengetahui proses monitoring produktivitas
kinerja kedua mitra perusahaan PDAM.
2. Penulis dapat mengembangkan aplikasi berbasis web.
1.4.2.2. Bagi Instansi/Perusahaan
1. Mendapatkan rekomendasi aplikasi yang dapat
meminimalkan permasalahan-permasalahan yang
timbul dalam proses monitoring kinerja mitra
perusahaan.
2. Meningkatkan proses evaluasi terhadap mitra
perusahaan tersebut.
1.4.2.3. Bagi Universitas
1. Diharapkan sebagai sumbangan karya ilmiah dalam
disiplin ilmu khususnya dalam bidang teknologi
informasi.
2. Berguna sebagai penambah hasil-hasil penelitian yang
dapat dijadikan bahan acuan bagi peneliti lain yang
berminat mengkaji permasalahan atau topik yang
serupa.
5
1.5. Waktu dan Tempat Penelitian
Penelitian ini dilaksanakan pada:
Waktu : 11 Oktober 2010 - 15 Nopember 2010
Tempat : Divisi Bina Program PDAM Provinsi DKI Jakarta yang
berlokasi di Jalan Penjernihan II Pejompongan, Jakarta Pusat.
1.6. Metode Penelitian
Penulis menggunakan beberapa metode dalam proses pengumpulan
data dan informasi yang diperlukan dalam penelitian ini. Metode yang
digunakan adalah:
1.6.1. Metode Pengumpulan Data
1. Wawancara (Interview)
Pengumpulan data dan informasi dengan mengadakan tanya
jawab antara peneliti dan instansi yang terkait.
2. Studi Pustaka
Pengumpulan data dan informasi dengan membaca buku-buku
referensi yang dapat menjadi acuan dalam penelitian.
3. Studi Sejenis
Studi sejenis yang dapat berupa jurnal, artikel ilmiah, maupun
dari studi kasus yang pernah ada sebagai bahan perbandingan
penelitian penulis.
6
1.6.2. Metode Pengembangan Aplikasi
Metode pengembangan aplikasi yang dipakai dalam
penelitian ini adalah model proses incremental. Model incremental
menggabungkan elemen-elemen dari alur proses linear dan
parallel. Model proses incremental berfokus pada pengantaran dari
operasional produk dengan tiap perulangan.
Kerangka proses pembangunan perangkat lunak dari model
proses incremental meliputi lima kegiatan, yaitu:
1. Communication. Sebelum kerja teknis apapun dapat dimulai,
secara kritis sangat penting untuk berkomunikasi dan
berkolaborasi dengan pelanggan dan stakeholder yang lain.
2. Planning. Sebuah proyek perangkat lunak adalah sebuah
perjalanan yang kompleks, dan kegiatan perencanaan
menciptakan sebuah “peta” yang dapat membantu memandu
tim seperti melakukan sebuah perjalanan. Peta yang dimaksud
disebut sebagai software project plan, yang mendefinisikan
kerja pembangunan perangkat lunak dengan mendeskripsikan
tugas-tugas teknis untuk diadakan, resiko-resiko yang mungkin
terjadi, sumber-sumber yang akan dibutuhkan, berbagai kerja
yang akan dilaksanakan, dan jadwal kerja.
3. Modelling. Seorang teknisi perangkat lunak menciptakan
model-model untuk mengerti kebutuhan-kebutuhan perangkat
7
lunak dengan lebih baik, dan model yang akan mencapai
kebutuhan-kebutuhan tersebut.
4. Construction. Aktifitas ini menggabungkan pembuatan kode
(baik manual maupun otomatis) dan pengujian yang diperlukan
untuk mengungkapkan kesalahan-kesalahan yang ada pada
kode.
5. Deployment. Perangkat lunak (sebagai sebuah kesatuan
lengkap atau sebagai sebuah perulangan bagian-bagian yang
lengkap) diantarkan kepada pelanggan yang mengevaluasi
produk yang diantarkan tersebut dan memberikan umpan balik
berdasarkan evaluasi tersebut.
1.7. Sistematika Penulisan
Pembahasan dalam skripsi ini terbagi ke dalam lima bab, berikut ini
adalah uraian singkat masing-masing bab yang terdapat dalam skripsi ini:
BAB I PENDAHULUAN
Dalam bab ini memberikan uraian mengenai latar belakang,
perumusan masalah, batasan masalah, tujuan dan manfaat
penelitian, waktu dan tempat penelitian, metodologi penelitian,
dan sistematika penulisan.
BAB II LANDASAN TEORI
Dalam bab ini memberikan uraian mengenai berbagai teori yang
berhubungan dengan permasalahan yang diambil penulis dan
8
yang digunakan sebagai dasar dalam penelitian ini. Teori-teori
tersebut diambil dari pustaka, dokumentasi, dan informasi dari
berbagai pihak.
BAB III METODE PENELITIAN
Dalam bab ini memberikan uraian mengenai metode penelitian
yang digunakan serta langkah-langkah yang digunakan terkait
dengan penelitian yang dilakukan.
BAB IV ANALISIS DAN PEMBAHASAN
Dalam bab ini memberikan uraian mengenai analisis dan
pembahasan tentang pengembangan aplikasi.
BAB V PENUTUP
Dalam bab ini memberikan uraian kesimpulan dari hasil
penelitian yang dilakukan dan saran agar pengembangan aplikasi
ini dapat lebih baik ke depannya.
BAB II
LANDASAN TEORI
2.1. Aplikasi
Aplikasi adalah sebuah program komputer yang digunakan untuk tugas yang
spesifik atau khusus, seperti akuntansi, analisis dalam bidang sains atau medis,
atau pemrosesan kata. Bagian “aplikasi” mengacu kepada keseluruhan set dari
program yang secara kolektif mengimplementasikan sebuah proses bisnis yang
spesifik. Program-program individual yang mengimplementasikan bagian dari
proses bisnis ini dikenal sebagai “program aplikasi” atau “perangkat lunak
aplikasi” (Nader, 1992: 20).
2.2. Monitoring dan Evaluasi
Menurut Sumiyati (dalam Pusat Kurikulum, Badan Penelitian dan
Pengembangan Departemen Pendidikan Nasional, 2009) monitoring atau
pemantauan merupakan suatu kegiatan mengamati secara seksama suatu keadaan
atau kondisi, termasuk juga perilaku atau kegiatan tertentu, dengan tujuan agar
semua data masukan atau informasi yang diperoleh dari hasil pengamatan tersebut
dapat menjadi landasan dalam mengambil keputusan tindakan selanjutnya yang
diperlukan. Tindakan tersebut diperlukan seandainya hasil pengamatan
menunjukkan adanya hal atau kondisi yang tidak sesuai dengan yang
direncanakan semula.
9
10
Sementara itu, evaluasi merupakan kegiatan yang menilai hasil yang diperoleh
selama kegiatan pemantauan berlangsung. Lebih dari itu, evaluasi juga menilai
hasil atau produk yang telah dihasilkan dari suatu rangkaian program sebagai
dasar mengambil keputusan tentang tingkat keberhasilan yang telah dicapai dan
tindakan selanjutnya yang diperlukan.
2.3. Perusahaan
Menurut Undang-Undang Republik Indonesia No. 8 Tahun 1997 Tentang
Dokumen Perusahaan disebut bahwa yang dimaksud dengan perusahaan adalah
setiap bentuk usaha yang melakukan kegiatan secara tetap dan terus menerus
dengan tujuan memperoleh keuntungan dan atau laba, baik yang diselenggarakan
oleh orang-perorangan maupun badan usaha yang berbentuk badan hukum atau
bukan badan hukum, yang didirikan dan berkedudukan dalam wilayah Negara
Republik Indonesia.
2.4. Database Management System (DBMS)
Sistem manajemen database atau Database Management System (DBMS)
merupakan suatu sistem software yang memungkinkan user untuk
mendefinisikan, membuat, dan memelihara database maupun menyediakan akses
yang terkontrol terhadap data. Sebuah database merupakan sekumpulan data yang
berhubungan secara logika dan memiliki beberapa arti yang saling berpautan.
Istilah database kerap digunakan sebagai acuan terhadap data itu sendiri, namun
11
demikian, ada sejumlah komponen tambahan lainnya yang juga menjadi bagian
dari suatu sistem manajemen database yang utuh.
Hardware merupakan sistem komputer aktual yang digunakan untuk
menyimpan dan mengakses database. Dalam sebuah organisasi berskala besar,
hardware untuk sistem yang seperti ini terdiri dari jaringan (network) dengan
sebuah server pusat dan beberapa program client yang berjalan di komputer
desktop. Server adalah prosesor pusat yang secara fisik merupakan tempat
penyimpanan database. Server biasanya memiliki sebuah prosesor yang begitu
handal karena akan dipergunakan untuk mengelola operasi-operasi pengambilan
data maupun berbagai manipulasi data aktual. Client merupakan program-program
yang berinteraksi dengan DBMS dan berjalan di komputer desktop personal untuk
mengakses database dari sisi pandang user. DBMS beserta client-nya dapat juga
berada di dalam satu komputer tunggal. Dalam kasus seperti ini biasanya hanya
terdapat satu user yang mengakses database pada satu waktu, sistem manajemen
database personal atau single-user akan diakses oleh beberapa user pada waktu
yang berbeda. Secara aktual, konfigurasi jaringan akan berbeda-beda antara satu
organisasi dengan organisasi lainnya.
Software adalah DBMS yang aktual. Di dalam jaringan client/server, DBMS
memungkinkan program-program pengelola data untuk berada di server dan
program-program client berada di masing-masing desktop. Di dalam sistem
single-user biasanya hanya ada satu bagian software yang menangani keseluruhan
operasi. DBMS memungkinkan para user untuk berkomunikasi dengan database.
Dengan kata lain, ini merupakan mediator antara database dengan user. Beberapa
12
diantaranya diperbolehkan untuk mengubah bagian-bagian dari struktur database,
beberapa yang lainnya diperbolehkan untuk mengubah data, sedangkan sisanya
hanya diperbolehkan untuk melihat-lihat data. DBMS mengontrol akses dan
membantu memelihara konsistensi data. Beberapa utility biasanya disertakan pula
sebagai bagian dari DBMS ini (Toledo & Cushman, 2007: 1-2).
2.4.1. Data
Data adalah jantung dari DBMS. Ada dua jenis data. Pertama, dan
yang paling jelas, adalah kumpulan informasi yang diperlukan oleh
organisasi. Jenis data kedua, atau metadata, adalah informasi mengenai
database. Informasi ini biasanya disimpan dalam sebuah kamus data (data
dictionary) atau katalog. Kamus data menyertakan informasi berupa user,
hak istimewa (privileges) dan struktur internal database (Toledo &
Cushman, 2007: 3).
2.4.2. Keuntungan DBMS
Keuntungan menggunakan sebuah DBMS terbagi menjadi tiga
kategori utama:
1. Pemeliharaan Data yang Tepat
Para user harus dapat mempercayai bahwa data senantiasa
dalam keadaan akurat dan terkini. Inkonsistensi seharusnya
dihindari dan redundansi pun seharusnya diminimalkan.
Redundansi terjadi ketika informasi yang serupa disimpan di
berbagai tempat. Inkonsistensi hadir ketika data di suatu lokasi
mengalami perubahan sedangkan di lokasi lainnya tidak.
13
Kebanyakan sistem database menyediakan batasan integritas
(integrity constraint) yang harus diikuti.
2. Penyediaan Akses Terhadap Data
Data biasanya dibagi pakai (shared) oleh beberapa user dan
program. Baik penyimpanan maupun akses terhadap data
seharusnya dapat dilakukan dengan mudah dan cepat. Dukungan
yang sama terhadap semua jenis transaksi, baik yang interaktif
maupun berupa query program, harus disediakan oleh DBMS.
Query interaktif tidak harus menunggu hingga program aplikasi
selesai dijalankan. Tugas DBMS adalah memungkinkan akses
cepat untuk seluruh user yang membutuhkannya sambil tetap
menjalankan prosedur-prosedur pemeliharaan database yang
diperlukan.
3. Pemeliharaan Keamanan Data
Database Administrator (DBA) biasanya adalah orang yang
bertanggung jawab terhadap keamanan data. Akses yang tidak
sah (unauthorized) harus dicegah dan sejumlah tingkatan izin
akses (permission) pun harus diberikan kepada para user.
Sejumlah tool telah disediakan bagi DBA untuk melaksanakan
seluruh prosedur keamanan dan mempertemukan semua
kepentingan bersilangan yang muncul ketika banyak user harus
mengakses ke database yang sama (Toledo & Cushman, 2007:
6-7).
14
2.4.3. Model Data
Model data adalah suatu cara untuk menjelaskan susunan logis data
beserta hubungan antar berbagai bagiannya dan ke seluruh bagian. Model-
model data yang berbeda telah digunakan selama bertahun-tahun. Pada
tahun-tahun awal sering kali suatu sistem mentah (flat file system) atau file
teks sederhana (simple text file) hadir dengan seluruh data berada dalam
urutan yang sama, nampak lebih mudah. Biasanya program aplikasi
mengakses data secara berurutan (sequential) untuk melakukan proses
batch. Tidak banyak akses interaktif yang tersedia. Model-model lainnya
yang digunakan dalam mainframe besar adalah model hirarki (hierarchical)
dan jaringan (network). Database hirarki disusun menggunakan sebuah
model pohon (tree model), dengan satu akar dan beberapa tingkatan cabang.
Setiap item hanya memiliki satu link yang menginduk padanya. Akses data
dimulai dari akar dan menyusur ke bawah pohon hingga detail yang
diinginkan berhasil ditemukan. Model network memuat banyak link di
antara berbagai item data. Indeks yang saling berhubungan memungkinkan
akses data dari berbagai arah.
Pada tahun 1970, Dr. E. F. Codd mendeskripsikan suatu bentuk
model baru, yaitu model relasional (relational model) untuk sistem
database. Sistem manajemen database relasional (relational database
management system), di mana seluruh data disimpan dalam tabel atau relasi,
menjadi standar baru. Semua itu jauh lebih fleksibel dan mudah digunakan,
15
dengan hampir seluruh item data dapat diakses lebih cepat daripada model-
model yang lain (Toledo & Cushman, 2007: 8).
2.4.4. Arsitektur Sistem Database
Memahami suatu model abstrak dari sebuah data adalah penting
dalam upaya mendeskripsikan arsitektur sistem database. Salah satu ciri
utama database adalah data aktualnya terpisah dari program yang
menggunakan data tersebut (Toledo & Cushman, 2007: 9).
2.4.4.1. Skema dan Bahasa
Model data mendeskripsikan data dan hubungan-
hubungannya di tingkat abstrak. Skema database digunakan untuk
mendeskripsikan konsep organisasi sistem database. Organisasi ini
ditentukan sebelum proses desain, biasanya menggunakan data
definition language (DDL) yang disediakan oleh vendor software
tertentu.
Organisasi data dapat dideskripsikan dalam dua tingkatan,
yaitu logis dan fisik. Organisasi fisik berhubungan dengan
bagaimana data secara aktual tersimpan di dalam disk. Organisasi
logis adalah konsep model data yang akan diimplementasikan. DDL
memperbolehkan user untuk mendefinisikan organisasi data di
tingkat logis. Software DBMS tertentu kemudian mengambil alih
organisasi fisik data melalui pemetaan dari logis ke fisik (Toledo &
Cushman, 2007: 9).
16
2.4.4.2. Arsitektur Tiga Tingkatan
Metode yang diterima secara umum untuk menjelaskan
arsitektur suatu sistem database disahkan oleh suatu komite pada
tahun 1975 dan dijelaskan secara lebih menyeluruh pada tahun 1978.
Artisektur ini dikenal sebagai ANSI/SPARC, sesuai dengan nama
Standards Planning and Requirements Committee di American
National Standards Institute (Toledo & Cushman, 2007: 10).
Tiga tingkatan tersebut adalah internal, konseptual, dan
eksternal.
1. Tingkatan internal menyangkut cara data disimpan ke dalam
hardware secara fisik. Tingkatan ini dideskripsikan
menggunakan byte aktual dan terminologi machine-level
(tingkat mesin). Biasanya software DBMS yang menangani
tingkatan ini.
2. Tingkatan konseptual, yaitu definisi logikal database,
kadang diartikan sebagai tampilan komunitas. Model data
dan diagram skema adalah penjelasan database dalam
tingkatan konseptual. DBA dan asistennya mengurusi
skema dan biasanya merekalah yang menggunakan DDL
untuk mendefinisikan database.
3. Tingkatan eksternal adalah tingkatan yang menyangkut
user. Entah user itu adalah programmer aplikasi maupun
end user, mereka selalu memiliki pandangan, atau model
17
bayangan, terhadap database dan isi yang terkandung di
dalamnya (Toledo & Cushman, 2007: 10-11).
Gambar 2.1 The ANSI-SPARC three-level architecture
(Sumber: Connolly & Begg, 2002: 35)
2.5. World Wide Web
World Wide Web (WWW), atau Web, adalah sebuah aplikasi perangkat
lunak yang membuat mudah dan mungkin bagi hampir semua orang untuk
mempublikasikan dan menelusuri dokumen hypertext di Internet. Web dapat
dianggap seperti mencakup semua informasi yang tersedia melalui browser
web. Web telah berkembang besar karena kemudahan penggunaan dan daya tarik
visual. Disebut "Web" karena interkoneksi antara dokumen menyerupai jaring
laba-laba (Greenlaw & Hepp, 2002: 142).
18
Bagaimana Internet berbeda dari WWW? Internet dapat dianggap sebagai
kelompok jaringan komputer yang sangat besar. Informasi di web diangkut
melalui Internet. Oleh karena itu web menggunakan Internet. Bahkan, web kini
menjadi kekuatan pendorong di belakang Internet. Web menghasilkan lalu lintas
permintaan terbesar dalam Internet, dan teknologi Internet yang baru sedang
dikembangkan untuk memenuhi keinginan pengguna web (Greenlaw & Hepp,
2002: 142-143).
Ide sentral dalam pengembangan web adalah Uniform Resource Locator
(URL). Sebuah URL adalah alamat web yang secara unik mengidentifikasi sebuah
dokumen di web. Dokumen tersebut dapat berupa gambar, file HTML, program,
atau file jenis lain. Alamat-alamat yang unik memungkinkan untuk terhubung ke
dokumen web orang lain. Sifat nonlinier dari web merupakan salah satu atraksi
utama. Karena orang di seluruh dunia yang berpartisipasi melakukan publikasi di
dalam web, seluruh sistem telah berkembang menjadi sesuatu yang jauh lebih
besar daripada kontribusi individu (Greenlaw & Hepp, 2002: 143-144).
2.6. Framework
Framework dapat diartikan sebagai koleksi atau kumpulan potongan-
potongan program yang disusun atau diorganisasikan sedemikian rupa, sehingga
dapat digunakan untuk membantu membuat aplikasi utuh tanpa harus membuat
semua kodenya dari awal (Basuki, 2010: 3).
19
2.7. Konsep Model-View-Controller (MVC)
MVC adalah sebuah pola pemrograman yang bertujuan memisahkan logika
bisnis, logika data, dan logika tampilan (interface), atau secara sederhana
memisahkan antara proses, data, dan tampilan. MVC mengatur arsitektur sebuah
aplikasi. Umumnya aplikasi yang dibangun dengan konsep MVC adalah aplikasi
yang cukup besar, karena salah satu keuntungan dari MVC itu adalah kemudahan
maintenance, dan pengembangan aplikasi tersebut (Wardana, 2010: 52).
Gambar 2.2 Model Hubungan MVC (Sumber: Wardana, 2010: 53)
1. View adalah komponen dari MVC yang bertugas menampilkan apa
yang harus ditampilkan ke pengunjung website. Isinya dapat berupa
form, tabel, gambar, animasi ataupun lainnya yang boleh dilihat oleh
user (pengunjung). Jadi, view mengatur bagaimana suatu data yang
diperoleh dari controller ditampilkan untuk user. View mencakup
20
semua proses yang terkait layout output. Tempat menaruh template
interface website atau aplikasi. View merupakan informasi yang
ditampilkan kepada pengunjung dari website.
2. Model adalah komponen MVC yang bertugas mengambil data dari
database dan juga memasukkan data ke database. Isi utamanya berupa
perintah SQL. Hasilnya dikirimkan ke controller.
3. Controller adalah komponen MVC yang bertugas mengirim perintah ke
model untuk mendapatkan data yang diinginkan. Controller tidak
mengetahui bagaimana data tersebut diambil dari database, karena
controller tidak berisi kode perintah SQL. Controller mengolah data
dari input-an user dan data dari model, kemudian data olahan tersebut
dikirimkan ke view untuk ditampilkan sesuai aturan controller.
Controller merupakan penghubung antara model dan view dan
mengatur hubungan tersebut (Wardana, 2010: 53).
2.8. Bahasa Pemrograman yang Digunakan
2.8.1. CSS
CSS (Cascading Style Sheets) adalah salah satu bahasa
pemrograman desain web (style sheet language) yang mengontrol format
tampilan sebuah halaman web yang ditulis dengan menggunakan bahasa
penanda (markup language). Biasanya CSS digunakan untuk mendesain
sebuah halaman HTML, dan XHTML, tetapi sekarang bahasa pemrograman
21
CSS bisa diaplikasikan untuk segala dokumen XML, termasuk SVG dan
XUL.
CSS dibuat untuk memisahkan konten utama (biasanya dibuat
dengan menggunakan bahasa HTML atau sejenisnya) dengan tampilan
dokumen yang meliputi layout, warna, dan font. Pemisahan ini dapat
meningkatkan daya akses konten pada web, menyediakan lebih banyak
fleksibilitas dan kontrol dalam spesifikasi dari sebuah karakteristik dari
sebuah tampilan, memungkinkan untuk membagi banyak halaman untuk
sebuah formatting dan mengurangi kerumitan dalam penulisan kode dan
struktur dari konten, contohnya teknik tableless pada layout desain web
(layout tanpa tabel).
Tujuan utama CSS diciptakan adalah untuk membedakan konten dari
dokumen dan tampilan dari dokumen, dengan itu pembuatan ataupun
pemrograman ulang web akan lebih mudah dilakukan. Hal yang termasuk
dalam desain web diantaranya adalah warna, ukuran, dan formatting.
Dengan adanya CSS, konten dan desain web akan mudah dibedakan, jadi
memungkinkan untuk melakukan pengulangan pada tampilan-tampilan
tertentu dalam suatu halaman web, sehingga akan memudahkan dalam
membuat halaman web yang banyak, sehingga membuat waktu dalam
membuat web jauh lebih cepat (Wismakarma, 2010: 2).
22
2.8.2. HTML
Hypertext Markup Language (HTML) adalah sekumpulan perintah
khusus (disebut “tag” atau “markup”) yang dipakai untuk menentukan
struktur, bentuk, dan link pada dokumen ke dokumen multimedia lain di
web. Extensible hypertext markup language (XHTML) adalah pengganti
dan merupakan versi HTML yang sering dipakai. Kebutuhan untuk
membuat HTML yang lebih sempit dianggap cukup penting karena isi
World Wide Web saat ini harus bisa diteruskan ke banyak peranti (misalnya
peranti bergerak) yang memiliki sedikit sumber daya dibandingkan
komputer tradisional (Williams & Sawyer, 2007: 67-68).
2.8.3. PHP
PHP (Hypertext Preprocessor) dikembangkan pertama kali tahun
1995 oleh Rasmus Lerdorf yang merupakan salah satu anggota group
Apache. PHP pertama kali didesain sebagai alat tracking pengunjung web
site Lerdorf. Kemudian, fungsinya diperlebar dan dihubungkan dengan
Apache. PHP dikembangkan sepenuhnya untuk bahasa skrip side-server
programming. PHP bersifat open-source dan dapat digabungkan dengan
berbagai server yang berbeda-beda.
PHP mempunyai kemampuan dapat mengakses database dan
diintegrasikan dengan HTML. Berdasarkan hasil survei yang dilakukan
Netcraft (http://www.netcraft.com), PHP lebih popular dalam jumlah
pemakai dibanding dengan modul perl, CGI, dan ASP.
23
PHP adalah bahasa server-side programming yang power full untuk
membuat halaman web yang dinamis dan interaktif. Sintak PHP mirip
dengan bahasa Perl dan C. PHP biasanya sering digunakan bersama web
server Apache di beragam sistem operasi. PHP juga men-support ISAPI dan
dapat digunakan bersama dengan Microsoft IIS di Windows.
PHP merupakan software open source, dapat digunakan dengan
gratis dan dapat dijadikan alternatif selain side-server programming yang
lain (Microsoft ASP). Sintak PHP dapat dituliskan langsung di antara kode
HTML (Sunyoto, 2007: 119).
PHP semakin popular karena memiliki beberapa kelebihan, antara
lain:
1. Mudah dibuat dan dijalankan.
2. Mampu berjalan pada web server dengan sistem operasi yang
berbeda-beda: PHP mampu berjalan pada sistem operasi UNIX,
keluarga Windows, dan Machintosh.
3. PHP bisa didapatkan secara gratis.
4. Dapat berjalan pada web server yang berbeda: PHP mampu
berjalan pada web server yang berbeda-beda, seperti Microsoft
personal Web Server, Apache, IIS, Xitami, dll.
5. Dapat di-embedded: PHP dapat diletakkan dalam tag HTML
(Sunyoto, 2007: 121).
24
2.9. Perangkat Lunak yang Digunakan
2.9.1. CodeIgniter
CodeIgniter adalah sebuah framework PHP yang dapat membantu
mempercepat developer dalam pengembangan aplikasi web berbasis PHP
dibandingkan jika menulis semua kode program dari awal. CodeIgniter
menyediakan banyak library untuk mengerjakan tugas-tugas yang umumnya
ada pada sebuah aplikasi berbasis web (Basuki, 2010: 8).
Adapun beberapa keuntungan menggunakan CodeIgniter,
diantaranya:
1. Gratis
2. Ditulis Menggunakan PHP 4
3. Berukuran Kecil
4. Menggunakan Konsep M-V-C (Model-View-Controller)
5. URL yang Sederhana
6. Memiliki Paket Library yang Lengkap
7. Extensible
8. Tidak Memerlukan Template Engine
9. Dokumentasi Lengkap dan Jelas
10. Komunitas (Basuki, 2010: 9)
2.9.2. XAMPP
XAMPP merupakan pengembangan dari LAMP (Linux Apache,
MySQL, PHP and PERL). XAMPP ini merupakan project non-profit yang
dikembangkan oleh Apache Friends yang didirikan oleh Kai ‘Oswalad’
25
Seidler dan Kay Vogelgesang pada tahun 2002, project mereka ini
bertujuan mempromosikan penggunaan Apache web server. XAMPP
merupakan sebuah paket instalasi untuk PHP, APACHE dan MySQL
(Ibrahim, 2008: 3).
2.10. Incremental Process Models
Model incremental menggabungkan elemen-elemen dari alur proses linear
dan parallel. Model incremental mengaplikasikan urutan linier dalam bentuk
bergiliran seperti berlangsungnya waktu kalender. Setiap urutan linier
menghasilkan penyampaian "increments" dari perangkat lunak dalam sebuah cara
yang mirip dengan peningkatan yang dihasilkan oleh aliran proses evolusi.
Sebagai contoh, perangkat lunak pengolah kata yang dikembangkan dengan
menggunakan paradigma increment mungkin akan memberikan dasar manajemen
file, mengedit, dan fungsi produksi dokumen dalam increment pertama;
kemampuan lebih baik untuk mengedit dan produksi dokumen pada increment
kedua; memeriksa ejaan dan tata bahasa pada increment ketiga dan kemampuan
tata letak halaman yang lebih baik pada increment selanjutnya. Perlu dicatat
bahwa proses aliran untuk setiap kenaikan dapat memasukkan paradigma
prototyping (Pressman, 2010: 41).
26
Gambar 2.3 The Incremental Model (Sumber: Pressman, 2010: 42)
Increment pertama sering berupa sebuah produk inti. Artinya, kebutuhan
dasar dikembangkan tapi banyak fitur tambahan belum dikembangkan. Produk
inti digunakan oleh pelanggan. Setelah digunakan dan dievaluasi, rencana
dikembangkan untuk increment berikutnya. Rencana untuk modifikasi produk inti
dibuat untuk lebih memenuhi kebutuhan pelanggan dengan adanya tambahan fitur
dan fungsionalitas. Proses ini terus diulangi pada setiap increment, sampai produk
sempurna selesai diproduksi.
Model proses incremental berfokus pada penyampaian produk operasional
pada setiap increment. Increment awal adalah versi stripped-down dari produk
akhir, tetapi produk tersebut memberikan kemampuan yang melayani pengguna
dan juga menyediakan platform untuk evaluasi oleh pengguna.
27
Pengembangan incremental terutama berguna ketika staf tidak tersedia
untuk implementasi lengkap dengan tenggat waktu yang telah ditetapkan untuk
proyek. Awal increment dapat diimplementasikan dengan lebih sedikit orang. Jika
produk inti diterima dengan baik, maka staf dapat ditambahkan untuk
mengimplementasikan peningkatan berikutnya. Selain itu, penambahan dapat
direncanakan untuk mengelola resiko teknis.
Sebagai contoh, sebuah sistem utama mungkin memerlukan ketersediaan
hardware yang baru dalam pengembangan dan jadwal penyelesaian produk yang
tidak pasti. Sangatlah mungkin untuk merencanakan increment awal dengan cara
yang menghindari penggunaan hardware yang baru, sehingga memungkinkan
fungsi yang tidak lengkap untuk diberikan kepada pengguna akhir tanpa
penundaan berlebihan (Pressman, 2010 : 42).
Menurut Pressman (2010 : 15) pemodelan ini menyangkut aktifitas berikut:
2.10.1. Communication
Sebelum kerja teknis apapun dapat dimulai, secara kritis sangat
penting untuk berkomunikasi dan berkolaborasi dengan pelanggan dan
stakeholder yang lain. Tujuannya adalah untuk memahami tujuan proyek
pelanggan dan untuk mengumpulkan persyaratan yang membantu
mendefinisikan fitur dan fungsi perangkat lunak.
2.10.2. Planning
Sebuah proyek perangkat lunak adalah sebuah perjalanan yang
kompleks, dan kegiatan perencanaan menciptakan sebuah “peta” yang dapat
28
membantu memandu tim seperti melakukan sebuah perjalanan. Peta yang
dimaksud disebut sebagai software project plan, yang mendefinisikan kerja
pembangunan perangkat lunak dengan mendeskripsikan tugas-tugas teknis
untuk diadakan, resiko-resiko yang mungkin terjadi, sumber-sumber yang
akan dibutuhkan, berbagai kerja yang akan dilaksanakan, dan jadwal kerja.
2.10.3. Modelling
Seorang teknisi perangkat lunak menciptakan model-model untuk
mengerti kebutuhan-kebutuhan perangkat lunak dengan lebih baik, dan
model yang akan mencapai kebutuhan-kebutuhan tersebut.
2.10.4. Construction
Kegiatan konstruksi meliputi serangkaian pengkodean dan
pengujian yang mengarah ke pekerjaan rekayasa perangkat lunak, mungkin
coding penciptaan langsung dari bahasa pemrograman source code
(misalnya Java), pembangkitan otomatis dari source code menggunakan
representasi desain tingkat menengah dari komponen yang akan dibangun,
atau pembangkitan otomatis dari executable menggunakan bahasa
"pemrograman generasi keempat" (misalnya Visual C++).
Fokus awal pengujian adalah pada tingkat komponen, biasanya
disebut unit testing. Tingkatan lain dalam pengujian termasuk pengujian
integrasi (yang dilakukan ketika sistem dibangun), pengujian validasi yang
menilai apakah persyaratan telah dipenuhi untuk sistem yang lengkap (atau
software increment), dan tes penerimaan yang dilakukan oleh pelanggan
29
dalam upaya untuk melaksanakan semua fitur dan fungsi yang diperlukan.
Jika pengujian berhasil dilakukan, pengujian ini akan menemukan kesalahan
dalam perangkat lunak.
Keuntungan lainnya, pengujian menunjukkan bahwa fungsi
perangkat lunak muncul untuk dapat bekerja sesuai dengan spesifikasi, dan
bahwa persyaratan kinerja dan perilaku tampaknya telah dipenuhi. Selain
itu, data yang dikumpulkan sebagai pengujian memberikan indikasi yang
baik pada kehandalan perangkat lunak dan beberapa indikasi kualitas
perangkat lunak secara keseluruhan. Tetapi pengujian tidak bisa
menunjukkan adanya kesalahan dan cacat. Ini hanya dapat menunjukkan
kesalahan dan cacat yang terjadi pada perangkat lunak.
2.10.5. Deployment
Kegiatan pengembangan meliputi tiga tindakan: pengiriman,
dukungan, dan umpan balik. Karena model proses perangkat lunak modern
adalah evolusi atau bertahap di alam, penyebaran terjadi tidak hanya sekali,
tapi beberapa kali selama perangkat lunak bergerak ke arah penyelesaian.
Setiap siklus pengiriman menyediakan pengguna dan pelanggan increment
operasional perangkat lunak yang menyediakan fungsi dan fitur yang dapat
digunakan.
Setiap siklus dukungan menyediakan dokumentasi dan bantuan
manusia untuk semua fungsi dan fitur yang diperkenalkan selama seluruh
siklus dikembangkan. Setiap umpan balik pada siklus menyediakan tim
perangkat lunak dengan panduan penting bahwa hasil harus dilakukan
30
modifikasi pada fungsi, fitur, dan pendekatan yang diambil untuk increment
berikutnya.
Perangkat lunak yang dikirimkan memberikan manfaat bagi
pengguna akhir, tapi juga memberikan umpan balik yang berguna untuk tim
perangkat lunak. Ketika suatu increment mulai digunakan, pengguna akhir
harus didorong untuk mengomentari fitur dan fungsi, kemudahan
penggunaan, kehandalan, dan karakteristik lain yang sesuai.
2.11. Pengujian
2.11.1. Pengujian Fungsional
Pengujian fungsional, atau lebih tepatnya, desain uji kasus
fungsional hanya mempertimbangkan spesifikasi program dan bukan
rancangan atau struktur implementasi. Berdasarkan pada spesifikasi
program dan bukan pada kode internal, pengujian fungsional juga disebut
basis spesifikasi atau black-box testing (Pezze & Young, 2008: 161).
2.11.2. Pengujian Non Fungsional
Pengujian non-fungsional adalah topik yang luas yang mencakup
berbagai aspek perilaku sistem. Beberapa tes non-fungsional yang paling
umum yang secara rutin diidentifikasi dan dilakukan adalah kinerja,
failover, dan tes kapasitas, namun banyak proyek lalai untuk tambahan
pengujian sifat-sifat non-fungsional dari sistem yang mereka terapkan,
31
seperti tes keberlanjutan/kebocoran, operabilitas dan pemulihan (Ford, et al.,
2008: 17).
2.11.3. Pengujian Black-Box (Black-Box Testing)
Black-box testing, juga yang dikenal dengan behavioral testing,
berfokus pada kebutuhan-kebutuhan fungsional dari perangkat lunak.
Pengujian black-box berupaya untuk menemukan kesalahan dalam
kategori berikut: (1) fungsi yang tidak tepat atau hilang, (2) kesalahan
interface, (3) kesalahan pada struktur data atau akses database eksternal, (4)
kesalahan perilaku atau kinerja, (5) kesalahan inisialisasi dan penghentian
(Pressman, 2010: 495).
Tujuan dari pengujian black-box adalah untuk memverifikasi
kebenaran perilaku perangkat lunak yang secara langsung mendukung
kegiatan bisnis sehari-hari. Tujuan ini sering disebut sebagai cakupan
perilaku. Persyaratan untuk pengujian black-box adalah kebutuhan
perangkat lunak, use case, program yang dieksekusi, dan data (Everett &
McLeod, 2007: 131-132).
2.11.4. Pengujian White-Box (White-Box Testing)
White-box testing, terkadang disebut glass-box testing, adalah
sebuah filosofi desain kasus pengujian yang menggunakan struktur kontrol
yang digambarkan sebagai bagian dari desain level komponen untuk
menurunkan kasus uji (Pressman, 2010: 485).
Tujuan dari pengujian white-box adalah untuk memverifikasi
kebenaran pernyataan perangkat lunak, alur kode program, kondisi, loop,
32
dan aliran data. Tujuan ini sering disebut sebagai cakupan logika.
Persyaratan untuk pengujian white-box mencakup persyaratan perangkat
lunak, use case, program yang dieksekusi, data, dan kode sumbernya
(Everett & McLeod, 2007: 107).
2.12. Unified Modelling Language (UML)
Unified Modeling Language (UML) adalah bahasa pemodelan visual untuk
tujuan umum yang digunakan untuk menentukan, memvisualisasi, membangun,
dan mendokumentasikan artefak dari perangkat lunak sistem. UML digunakan
untuk memahami, mendesain, menjelajah, mengonfigurasi, memelihara
dan mengontrol informasi tentang sistem tersebut. UML dimaksudkan untuk
digunakan dengan semua metode pengembangan, tahapan-tahapan siklus hidup,
domain-domain aplikasi dan media. Pemodelan bahasa ini dimaksudkan untuk
menyatukan pengalaman masa lalu tentang teknik pemodelan dan untuk
memasukkan praktik-praktik terbaik perangkat lunak saat ini menjadi pendekatan
standar.
Spesifikasi UML tidak mendefinisikan proses standar tetapi dimaksudkan
untuk menjadi berguna dengan proses pengembangan berulang. Hal ini
dimaksudkan untuk mendukung proses pengembangan dengan object oriented.
UML menyimpan informasi tentang struktur statis dan perilaku dinamis suatu
sistem. Sebuah sistem dimodelkan sebagai koleksi benda-benda diskrit yang
berinteraksi untuk melakukan kerja yang pada akhirnya bermanfaat. Struktur statis
mendefinisikan jenis-jenis objek penting untuk sistem dan pelaksanaannya, serta
33
sebagai hubungan antara objek-objek. Perilaku dinamis mendefinisikan sejarah
obyek dari waktu ke waktu dan komunikasi antara objek-objek untuk mencapai
tujuan (Rumbaugh, et al., 2006: 3).
UML bukanlah bahasa pemrograman. UML dapat digunakan untuk
menulis program, tetapi tidak memiliki kemudahan sintak dan semantik yang
mana kebanyakan bahasa pemrograman menyediakan untuk memudahkan tugas
pemrograman. Beberapa tools dapat menyediakan generator kode dari UML ke
dalam berbagai bahasa pemrograman, serta membangun reverse engineered
model dari program yang ada. UML adalah bahasa pemodelan untuk tujuan
umum. Untuk domain khusus, seperti tata letak GUI, desain sirkuit VLSI, atau
kecerdasan buatan berbasis aturan, sebuah alat yang lebih khusus dengan bahasa
khusus yang lebih tepat. UML merupakan bahasa pemodelan diskrit. Hal ini tidak
dimaksudkan untuk model sistem berkesinambungan seperti yang ditemukan di
bidang teknik dan fisika. UML dimaksudkan untuk menjadi tujuan universal
bahasa pemodelan untuk sistem diskrit seperti yang terbuat dari perangkat lunak,
firmware atau logika digital (Rumbaugh, et al., 2006: 4).
2.12.1. Use Case Diagram
Use case diagram menggambarkan fungsionalitas yang diharapkan
dari sebuah sistem. Dalam pembuatan Use Case Diagram, yang ditekankan
adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use
case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use
case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng-
create sebuah daftar belanja, dan sebagainya. Seorang/sebuah aktor adalah
34
sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk
melakukan pekerjaan-pekerjaan tertentu.
Sebuah use case dapat meng-include fungsionalitas use case lain
sebagai bagian dari proses dalam dirinya. Secara umum diasumsikan bahwa
use case yang di-include akan dipanggil setiap kali use case yang meng-
include dieksekusi secara normal. Sebuah use case dapat di-include oleh
lebih dari satu use case lain, sehingga duplikasi fungsionalitas dapat
dihindari dengan cara menarik keluar fungsionalitas yang umum. Sebuah
use case juga dapat meng-extend use case lain dengan behaviour-nya
sendiri. Sementara hubungan generalisasi antar use case menunjukkan
bahwa use case yang satu merupakan spesialisasi dari yang lain
(Dharwiyanti & Wahono, 2003: 4).
Gambar 2.4 Contoh Use Case Diagram (Sumber: Rumbaugh, et al., 2006: 695)
35
2.12.2. Class Diagram
Class adalah sebuah spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan dan
desain berorientasi objek. Class menggambarkan keadaan (atribut/properti)
suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan
tersebut (metoda/fungsi).
Class diagram menggambarkan struktur dan deskripsi class,
package, dan objek beserta hubungan satu sama lain seperti containment,
pewarisan, asosiasi, dan lain-lain.
Class memiliki tiga area pokok:
1. Nama (dan stereotype)
2. Atribut
3. Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut:
1. Private, tidak dapat dipanggil dari luar class yang
bersangkutan.
2. Protected, hanya dapat dipanggil oleh class yang bersangkutan
dan anak-anak yang mewarisinya.
3. Public, dapat dipanggil oleh siapa saja.
Class dapat merupakan implementasi dari sebuah interface, yaitu
class abstrak yang hanya memiliki metoda. Interface tidak dapat langsung
diinstansiasikan, tetapi harus diimplementasikan dahulu menjadi sebuah
36
class. Dengan demikian interface mendukung resolusi metoda pada saat
run-time (Dharwiyanti & Wahono, 2003: 5).
Hubungan Antar Class:
1. Asosiasi, yaitu hubungan statis antar class. Umumnya
menggambarkan class yang memiliki atribut berupa class lain,
atau class yang harus mengetahui eksistensi class lain. Panah
navigability menunjukkan arah query antar class.
2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri
atas..”).
3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat
diturunkan dari class lain dan mewarisi semua atribut dan
metoda class asalnya dan menambahkan fungsionalitas baru,
sehingga ia disebut anak dari class yang diwarisinya.
Kebalikan dari pewarisan adalah generalisasi.
4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-
passing dari satu class kepada class lain (Dharwiyanti &
Wahono, 2003: 6).
37
Gambar 2.5 Contoh Class Diagram
(Sumber: Dharwiyanti & Wahono, 2003: 6)
2.12.3. Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam
sistem yang sedang dirancang, bagaimana masing-masing alir berawal,
decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity
diagram juga dapat menggambarkan proses paralel yang mungkin terjadi
pada beberapa eksekusi. Activity diagram merupakan state diagram khusus,
di mana sebagian besar state adalah action dan sebagian besar transisi di-
trigger oleh selesainya state sebelumnya (internal processing). Oleh karena
itu activity diagram tidak menggambarkan behaviour internal sebuah sistem
(dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan
proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah
aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas
menggambarkan proses yang berjalan, sementara use case menggambarkan
38
bagaimana aktor menggunakan sistem untuk melakukan aktivitas
(Dharwiyanti & Wahono, 2003: 7).
Gambar 2.6 Contoh Activity Diagram (Sumber: Rumbaugh, et al., 2006: 699)
39
2.12.4. Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di dalam
dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa
message yang digambarkan terhadap waktu. Sequence diagram terdiri atas
dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait).
Sequence diagram biasa digunakan untuk menggambarkan skenario atau
rangkaian langkah-langkah yang dilakukan sebagai tanggapan dari sebuah
event untuk menghasilkan output tertentu. Diawali dari apa yang men-
trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara
internal dan output apa yang dihasilkan. Masing-masing objek, termasuk
aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis
berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya,
message akan dipetakan menjadi operasi/metode dari class. Activation bar
menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan
diterimanya sebuah message (Dharwiyanti & Wahono, 2003: 8).
41
2.12.5. Deployment Diagram
Deployment diagram menggambarkan detail bagaimana komponen
di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada
mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada
lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal.
Sebuah node adalah server, workstation, atau piranti keras lain yang
digunakan untuk men-deploy komponen dalam lingkungan sebenarnya.
Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga
didefinisikan dalam diagram ini (Dharwiyanti & Wahono, 2003: 10).
Gambar 2.8 Contoh Deployment Diagram (Sumber: Rumbaugh, et al., 2006: 701)
42
2.13. Tinjauan Umum PDAM Provinsi DKI Jakarta (PAM JAYA)
2.13.1. Sejarah
1. Tahun 1843
Untuk memenuhi kebutuhan air kota Jakarta (Batavia) oleh
Pemerintah Hindia Belanda pengadaan air bersih berasal dari
sumur bor/artesis.
2. Tahun 1918-1920
Ditemukan sumber mata air Ciburial di daerah Ciomas Bogor
oleh Pemerintah Hindia Belanda dengan kapasitas 484 l/dt.
Dan tahun berdirinya Gementeestaat-waterleidengen van
Batavia.
3. Tahun 1922
Pada tanggal 23 Desember untuk pertama kalinya air yang
berasal dari Ciburial Bogor dialirkan ke kota Batavia (Jakarta),
dan pada tanggal tersebut dijadikan sebagai hari jadi PAM
JAYA.
4. Tahun 1945 - 1963
Pelayanan air minum dilaksanakan oleh Dinas Saluran Air
Minum Kota Praja dibawah Kesatuan Pekerjaan Umum Kota
Praja.
5. Tahun 1977
a. Tanggal 30 April 1977 PAM JAYA disahkan berdasarkan
PERDA DKI Jakarta No. 3/1977.
43
b. Tanggal 2 November 1977 PAM JAYA dikukuhkan oleh
SK Mendagri No. PEM/10/53/13350 diundangkan dalam
Lembaran DKI Jakarta No. 74 tahun 1977.
6. Tahun 1997
Tanggal 6 Juni 1997, penandatanganan perjanjian kerjasama
PAM JAYA dengan 2 mitra swasta selama 25 tahun yaitu PT.
Garuda Dipta Semesta yang saat ini menjadi PT. PAM
LYONNAISE JAYA (PT. PALYJA) dan PT. Kekar Pola
Airindo yang saat ini menjadi PT. THAMES PAM JAYA (PT.
TPJ).
7. Tahun 1988
Tanggal 1 Februari 1998, operasional secara penuh pelayanan
air minum pada wilayah usaha dilaksanakan oleh 2 mitra
swasta.
8. Tahun 2001
Setelah melalui negosiasi Perjanjian Kerjasama direvisi
dinyatakan kembali (Amended & Restated) dengan Perjanjian
Kerjasama 22 Oktober 2001.
9. Tahun 2004 - 2005
a. Tanggal 24 Desember 2004 penandatangan kesepakatan
Addendum Perjanjian Kerjasama 2001 untuk Wilayah
Barat (PT. PALYJA).
44
b. Tanggal 7 Oktober 2005 penandatangan kesepakatan
Addendum Perjanjian Kerjasama 2001 untuk Wilayah
Timur (PT. TPJ).
2.13.2. Visi dan Misi
Visi PAM JAYA adalah terwujudnya PAM JAYA sebagai
perusahaan yang memberikan pelayanan air minum kepada masyarakat DKI
Jakarta secara menyeluruh dan berkualitas yang berorientasi pada kepuasaan
pelanggan (total quality customer service).
Misi PAM JAYA adalah melaksanakan pelayanan air minum yang
berkesinambungan kualitas, kuantitas, dan kontinuitas, guna mendukung
program Pemerintah Provinsi DKI Jakarta mewujudkan Kota Jakarta
sebagai kota pelayanan.
45
2.13.3. Struktur Organisasi
Gambar 2.9 Struktur Organisasi PAM JAYA
Penulis melakukan penelitian tugas akhir di Divisi Bina Program.
BAB III
METODE PENELITIAN
3.1. Kerangka Berpikir
Dalam melakukan penelitian ini, penulis melakukan tahapan-tahapan
kegiatan dengan mengikuti rencana kegiatan yang tertuang dalam kerangka
berpikir yang meliputi metode pengumpulan data dan metode pengembangan
aplikasi.
Gambar 3.1 Kerangka Berpikir (Sumber: data diolah)
46
47
3.2. Metode Pengumpulan Data
3.2.1. Wawancara
Penulis melakukan pertemuan dan wawancara kepada pihak yang
terkait untuk mendapatkan informasi sehingga mengerti permasalahan dan
hal-hal yang dibutuhkan untuk pembuatan dan pengembangan aplikasi.
Daftar pertanyaan dan jawaban wawancara terdapat di lampiran 5.
3.2.2. Studi Pustaka
Tahapan pengumpulan data dilakukan dengan cara studi pustaka,
penulis mencari referensi-referensi yang relevan dengan objek yang akan
diteliti. Pencarian referensi dilakukan di perpustakaan, toko buku, maupun
secara online melalui internet. Setelah mendapatkan referensi-referensi yang
relevan tersebut, penulis lalu mencari informasi-informasi yang dibutuhkan
dalam penelitian ini dari referensi-referensi tersebut. Informasi yang
didapatkan digunakan dalam penyusunan landasan teori, metode penelitian
serta pengembangan aplikasinya secara langsung. Pustaka-pustaka yang
dijadikan acuan dapat dilihat di Daftar Pustaka.
3.2.3. Studi Sejenis
Pada tahap ini diadakan studi sejenis yang berkaitan dengan
penelitian yang dilakukan oleh penulis. Studi sejenis yang digunakan dapat
berupa jurnal, artikel ilmiah, maupun dari studi kasus yang pernah ada.
Dibawah ini terdapat karya tulis yang pernah ada sebagai bahan
perbandingan penelitian penulis.
48
Tabel 3.1 Studi Sejenis
Nama Penulis Judul Karya Tulis Kelebihan Kekurangan Pribadiyono Aplikasi Sistem Pengukuran
Produktivitas Kaitannya dengan Pengupahan. 2006. Universitas Petra: Surabaya.
Menampilkan informasi indikator-indikator yang menyebabkan naik dan turunnya prestasi kerja individu, persentase karyawan yang memenuhi standar prestasi perusahaan, dan perencanaan perhitungan bonus prestasi kerja individu berdasarkan pencapaian produktivitasnya.
Hanya berfokus pada pengukuran produktivitas individu karyawan dalam perusahaan, tidak berfokus kepada mitra perusahaan.
Fikri Kharisma (Penulis)
Aplikasi Monitoring Produktivitas Kinerja Mitra Perusahaan (Studi Kasus: PDAM Provinsi DKI Jakarta)
Menampilkan informasi produktivitas kinerja mitra perusahaan berdasarkan parameter perbandingan nilai realisasi yang dicapai dengan nilai target, dan terlihat progress kinerja mitra perusahaan dari grafik statistik yang ada.
Hanya berfokus kepada pemantauan produktivitas kinerja mitra perusahaan, tidak berfokus kepada produktivitas kayawan dalam perusahaan.
3.3. Metode Pengembangan Aplikasi
Metode pengembangan aplikasi yang penulis gunakan dalam penelitian ini
adalah metode incremental process model. Pemilihan metode ini dilakukan
dengan alasan metode ini cocok untuk pengembangan aplikasi dalam waktu yang
singkat, dan adanya perbaikan serta pengembangan aplikasi pada tahap-tahap
increment berikutnya sesuai dengan kebutuhan user atau pengguna.
Gambar 3.2 The Incremental Model (Sumber: Pressman, 2010: 42)
Tahapan-tahapan yang dilakukan oleh penulis dalam melakukan
pengembangan aplikasi ini adalah:
3.3.1. Communication
Tahap ini berupa aktivitas komunikasi dengan client atau user yang
akan menggunakan aplikasi ini.
50
Pada tahap ini penulis melakukan wawancara dengan pihak
perusahaan yaitu PDAM mengenai hal-hal yang terkait untuk pembuatan
dan pengembangan aplikasi.
3.3.2. Planning
Tahap ini berupa perencanaan proyek perangkat lunak dengan
menggambarkan tugas-tugas teknis yang dilakukan, berbagai kerja yang
akan dilaksanakan, manajemen resiko, dan sumber-sumber yang
dibutuhkan.
3.3.2.1. Menggambarkan Tugas Teknis
Tugas-tugas teknis yang dilakukan antara lain:
1. Pengumpulan user requirement sehingga output yang
dihasilkan dari sistem atau aplikasi sesuai dengan
keinginan pengguna.
2. Perancangan aplikasi yang meliputi modelling aplikasi
dengan menggunakan UML, perancangan database,
dan perancangan tampilan antarmuka (interface).
3. Coding dan testing aplikasi.
4. Deploying aplikasi yang telah dikembangkan, yaitu
melakukan instalasi aplikasi pada komputer internal
perusahaan.
51
3.3.2.2. Sumber Daya
Sumber daya yang digunakan oleh penulis untuk membuat
aplikasi ini adalah:
1. Komputer
Komputer yang digunakan oleh penulis mempunyai
spesifikasi sebagai berikut:
a. Processor AMD Athlon64 3000+ 1.81 GHz
b. RAM 3 GB DDR2
c. Harddisk 320 GB
3.3.3. Modelling
Setelah mendefinisikan perencanaan dan tugas-tugas teknis yang
akan dilakukan, maka tahapan berikutnya adalah melakukan analisis dan
perancangan (design). Perancangan yang dimaksud meliputi modelling
aplikasi, perancangan database, dan perancangan tampilan antarmuka
(interface) dengan melakukan perancangan Graphical User Interface (GUI)
dari aplikasi ini.
3.3.3.1. Modelling Aplikasi
Untuk modelling aplikasi, penulis menggunakan alat bantu
(tools) yaitu Unified Modelling Language (UML). Hal ini dilakukan
untuk memudahkan pengembangan aplikasi selanjutnya, sehingga
ada dokumentasi yang baik untuk menggambarkan aplikasi, selain
itu penggunaan UML lebih cocok digunakan dalam perancangan
aplikasi yang bersifat object oriented.
52
Modelling aplikasi yang penulis lakukan dengan
menggunakan tools UML ini meliputi:
1. Perancangan Use Case Diagram
2. Perancangan Class Diagram
3. Perancangan Activity Diagram
4. Perancangan Sequence Diagram
5. Perancangan Deployment Diagram
Implementasi modelling aplikasi dapat dilihat di subbab
4.3.1.
3.3.3.2. Perancangan Database
Pada tahap ini penulis melakukan:
1. Penerjemahan entity ke dalam database
2. Menampilkan struktur database
Implementasi perancangan database dapat dilihat di subbab
4.3.2.
3.3.3.3. Perancangan Tampilan
Pada tahap ini, penulis melakukan perancangan terhadap
tampilan atau layout antarmuka (interface) dari aplikasi ini.
Perancangan yang dilakukan meliputi perancangan layout halaman-
halaman yang ada di dalam aplikasi. Implementasi perancangan
tampilan dapat dilihat di subbab 4.3.3.
53
3.3.4. Construction
Pada tahap ini ada dua tahap kegiatan yang dilakukan yaitu coding
dan testing.
3.3.4.1. Coding
Desain database yang telah dibuat, diimplementasikan
langsung, dalam hal ini penulis menggunakan database MySQL
dengan interface phpMyAdmin. Setelah implementasi database
selesai dilakukan, implementasi aplikasi juga dilakukan. Pada
implementasi aplikasi, penulis melakukan pengembangan aplikasi
dengan mengacu pada desain aplikasi ke dalam bahasa pemrograman
yang telah ditentukan. Hal ini dapat dilihat di subbab 4.4.1.
3.3.4.2. Testing
Tahap selanjutnya dilakukan pengujian atau testing secara
keseluruhan dari aplikasi yang telah dibuat. Adapun testing terhadap
aplikasi dilakukan dengan menggunakan metode black-box. Adapun
yang melakukan pengujian terhadap aplikasi adalah penulis dan
pegawai PDAM. Pengujian aplikasi dapat dilihat di subbab 4.4.2.
3.3.5. Deployment
Pada tahap ini penulis melakukan instalasi aplikasi pada komputer
internal perusahaan untuk memberikan umpan balik atau feedback dari aplikasi
yang telah dibuat.
BAB IV
ANALISIS DAN PEMBAHASAN
Bab ini akan membahas secara rinci mengenai pengembangan aplikasi
dengan menerapkan metode penelitian yang telah diuraikan pada bab sebelumnya.
Metode pengembangan aplikasi yang dipakai dalam penelitian ini adalah
Incremental Process Model. Berikut adalah pembahasan tahapan-tahapan yang
digunakan dalam pengembangan aplikasi ini.
4.1. Communication
Penulis melakukan wawancara dengan pihak perusahaan yaitu PDAM
mengenai hal-hal yang terkait untuk pembuatan dan pengembangan aplikasi.
Wawancara awal penelitian dapat dilihat di lampiran 5.
4.2. Planning
4.2.1. Menggambarkan Tugas Teknis
Tugas-tugas teknis yang dilakukan untuk pembuatan dan
pengembangan aplikasi antara lain:
4.2.1.1. Persyaratan Pengguna (User Requirement)
Persyaratan pengguna untuk aplikasi yang akan
dikembangkan seperti yang tertera pada wawancara awal penelitian
yaitu:
54
55
1. Pengaturan manajamen user yang akan menggunakan
aplikasi, hanya terdiri dari satu orang sebagai admin.
2. Aplikasi dapat memasukkan data target dan realisasi
dari masing-masing mitra perusahaan.
3. Aplikasi dapat menampilkan laporan rekapitulasi dari
masing-masing mitra dan dapat disimpan dalam bentuk
file Microsoft Excel.
4. Aplikasi dapat menampilkan evaluasi dari masing-
masing mitra dalam bentuk grafik statistik dan grafik
tersebut dapat disimpan dalam bentuk image atau
gambar.
4.2.1.2. Pemodelan (Modelling)
Perancangan aplikasi yang meliputi modelling aplikasi
dengan menggunakan UML, perancangan database, dan
perancangan tampilan antarmuka (interface). Hal ini dapat dilihat di
subbab 4.3.
4.2.1.3. Coding dan Testing
Pada tahap ini terdiri dari dua bagian, yaitu penulisan kode
program dan dilanjutkan dengan pengujian pada aplikasi. Hal ini
dapat dilihat di subbab 4.4.
56
4.2.1.4. Deploying Aplikasi
Pada tahap ini terdapat proses instalasi aplikasi pada
komputer internal perusahaan untuk memberikan umpan balik dari
aplikasi yang telah dibuat.
4.2.2. Sumber Daya
4.2.2.1. Perangkat Lunak
Aplikasi ini merupakan aplikasi yang berjalan pada web
browser dengan menampilkan data-data dari database pada web
server, dan menampilkan grafik statistik. Kemudian aplikasi ini
dibuat dengan konsep pemrograman Model-View-Controller (MVC),
dengan tujuan kemudahan pengembangan ke depannya. Berdasarkan
kebutuhan tersebut, perangkat lunak yang diperlukan dalam
pengembangan aplikasi ini adalah:
1. Web server dengan database server yang sudah
terintegrasi di dalamnya.
2. Framework untuk menerapkan konsep pemrograman
Model-View-Controller (MVC).
3. Web browser dengan dukungan pemutar Flash (Flash
Player) untuk dapat menampilkan grafik statistik.
4. Editor untuk melakukan penulisan kode pada file PHP
dan HTML.
57
4.2.2.2. Perangkat Keras
Perangkat keras yang digunakan oleh penulis untuk
membuat aplikasi ini adalah:
1. Komputer
Komputer yang digunakan oleh penulis mempunyai
spesifikasi sebagai berikut:
d. Processor AMD Athlon64 3000+ 1.81 GHz
e. RAM 3 GB DDR2
f. Harddisk 320 GB
4.3. Modelling
Tahapan-tahapan pemodelan yang dibutuhkan penulis dalam membangun
aplikasi ini, yaitu:
4.3.1. Modelling Aplikasi
Modelling aplikasi yang penulis lakukan dengan diagram UML ini
meliputi:
4.3.1.1. Use Case Diagram
Penulis merencanakan urutan kegiatan yang dilakukan actor
dan sistem untuk mencapai suatu tujuan tertentu. Walaupun
menjelaskan kegiatan namun use case hanya menjelaskan apa yang
dilakukan actor dan sistem, bukan bagaimana actor dan sistem
melakukan kegiatan.
59
Tabel 4.1 Tabel Use Case Diagram Aplikasi Monitoring
No. Requirement Actor Use Case
1. Melakukan penambahan data target
mitra perusahaan PALYJA dengan
mengisi field air baku, air produksi, air
terdistribusi, air terjual, dan ufw/nrw
Admin Tambah Data Target
PALYJA
2. Melakukan perubahan data target
mitra perusahaan PALYJA dengan
mengganti field air baku, air produksi,
air terdistribusi, air terjual, dan
ufw/nrw
Admin Update Data Target
PALYJA
3. Melakukan penghapusan data target
mitra perusahaan PALYJA
Admin Hapus Data Target
PALYJA
4. Melakukan penambahan data realisasi
mitra perusahaan PALYJA dengan
mengisi field air baku, air produksi, air
terdistribusi, air terjual, dan ufw/nrw
Admin Tambah Data Realisasi
PALYJA
5. Melakukan perubahan data realisasi
mitra perusahaan PALYJA dengan
mengganti field air baku, air produksi,
air terdistribusi, air terjual, dan
ufw/nrw
Admin Update Data Realisasi
PALYJA
6. Melakukan penghapusan data realisasi
mitra perusahaan PALYJA
Admin Hapus Data Realisasi
PALYJA
7. Melakukan rekapitulasi data realisasi
mitra perusahaan PALYJA
berdasarkan kategori yang dipilih
Admin Rekap PALYJA
8. Melakukan evaluasi data realisasi
mitra perusahaan PALYJA dengan
menampilkan grafik berdasarkan
Admin Evaluasi PALYJA
60
kategori air yang dipilih
9. Melakukan penambahan data target
mitra perusahaan AETRA dengan
mengisi field air baku, air produksi, air
terdistribusi, air terjual, dan ufw/nrw
Admin Tambah Data Target
AETRA
10. Melakukan perubahan data target
mitra perusahaan AETRA dengan
mengganti field air baku, air produksi,
air terdistribusi, air terjual, dan
ufw/nrw
Admin Update Data Target
AETRA
11. Melakukan penghapusan data target
mitra perusahaan AETRA
Admin Hapus Data Target
AETRA
12. Melakukan penambahan data realisasi
mitra perusahaan AETRA dengan
mengisi field air baku, air produksi, air
terdistribusi, air terjual, dan ufw/nrw
Admin Tambah Data Realisasi
AETRA
13. Melakukan perubahan data realisasi
mitra perusahaan AETRA dengan
mengganti field air baku, air produksi,
air terdistribusi, air terjual, dan
ufw/nrw
Admin Update Data Realisasi
AETRA
14. Melakukan penghapusan data realisasi
mitra perusahaan AETRA
Admin Hapus Data Realisasi
AETRA
15. Melakukan rekapitulasi data realisasi
mitra perusahaan AETRA berdasarkan
kategori yang dipilih
Admin Rekap AETRA
16. Melakukan evaluasi data realisasi
mitra perusahaan AETRA dengan
menampilkan grafik berdasarkan
kategori air yang dipilih
Admin Evaluasi AETRA
61
4.3.1.2. Class Diagram
Class diagram aplikasi seperti pada gambar 4.2.
Gambar 4.2 Class Diagram Aplikasi Monitoring
62
4.3.1.3. Activity Diagram
Activity diagram aplikasi seperti pada gambar 4.3, gambar
4.4, gambar 4.5, gambar 4.6, gambar 4.7, gambar 4.8, gambar 4.9,
dan gambar 4.10.
Gambar 4.3 Activity Diagram Target Aetra
70
4.3.1.4. Sequence Diagram
Sequence diagram aplikasi seperti pada gambar 4.11,
gambar 4.12, gambar 4.13, gambar 4.14, gambar 4.15, gambar 4.16,
gambar 4.17, dan gambar 4.18.
Gambar 4.11 Sequence Diagram Target Aetra
78
4.3.1.5. Deployment Diagram
Deployment diagram aplikasi seperti pada gambar 4.19 di
bawah ini.
Gambar 4.19 Deployment Diagram Aplikasi Monitoring
79
4.3.2. Perancangan Database
Berikut ini adalah perancangan database yang digunakan di dalam
aplikasi.
4.3.2.1. Spesifikasi Database
Tabel-tabel yang digunakan dalam database seperti pada
tabel 4.2, tabel 4.3, tabel 4.4, tabel 4.5, tabel 4.6, tabel 4.7, tabel 4.8,
tabel 4.9, dan tabel 4.10.
1. Tabel bulan
Tabel yang digunakan untuk menyimpan data bulan.
Tabel ini memiliki 2 field, yaitu id_bulan dan bulan.
Tabel 4.2 Tabel bulan
Nama Field Tipe Panjang Keterangan
id_bulan* int 2 Id bulan, primary key
bulan varchar 15 Nama bulan
bulan_singkat varchar 5 Nama bulan yang disingkat
2. Tabel kategori
Tabel yang digunakan untuk menyimpan data kategori
air. Tabel ini memiliki 2 field, yaitu id_kategori dan
kategori.
Tabel 4.3 Tabel kategori
Nama Field Tipe Panjang Keterangan
id_kategori* int 2 Id kategori, primary key
kategori varchar 60 Nama kategori air
80
3. Tabel monitor_aetra
Tabel yang digunakan untuk menyimpan data realisasi
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan AETRA. Tabel ini memiliki 8 field, yaitu
id_mtraetra, id_tahun, id_bulan, air_baku, air_produksi,
air_distribusi, air_terjual, dan ufw_nrw.
Tabel 4.4 Tabel monitor_aetra
Nama Field Tipe Panjang Keterangan
id_mtraetra* int 5 Id monitor realisasi AETRA,
primary key
id_tahun** int 2 Id tahun, foreign key
id_bulan** int 2 Id bulan, foreign key
air_baku double Besar realisasi air baku setiap
bulan
air_produksi double Besar realisasi air produksi
setiap bulan
air_distribusi double Besar realisasi air terdistribusi
setiap bulan
air_terjual double Besar realisasi air terjual setiap
bulan
ufw_nrw double Besar realisasi nilai tingkat
kehilangan air atau
unaccounted for water (UFW),
maupun nilai air non rekening
atau non revenue water (NRW)
setiap bulan
81
4. Tabel monitor_palyja
Tabel yang digunakan untuk menyimpan data realisasi
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan PALYJA. Tabel ini memiliki 8 field, yaitu
id_mtrpalyja, id_tahun, id_bulan, air_baku, air_produksi,
air_distribusi, air_terjual, dan ufw_nrw.
Tabel 4.5 Tabel monitor_palyja
Nama Field Tipe Panjang Keterangan
id_mtrpalyja* int 5 Id monitor realisasi PALYJA,
primary key
id_tahun** int 2 Id tahun, foreign key
id_bulan** int 2 Id bulan, foreign key
air_baku double Besar realisasi air baku setiap
bulan
air_produksi double Besar realisasi air produksi
setiap bulan
air_distribusi double Besar realisasi air terdistribusi
setiap bulan
air_terjual double Besar realisasi air terjual setiap
bulan
ufw_nrw double Besar realisasi nilai tingkat
kehilangan air atau
unaccounted for water (UFW),
maupun nilai air non rekening
atau non revenue water (NRW)
setiap bulan
82
5. Tabel tahun
Tabel yang digunakan untuk menyimpan data tahun.
Tabel ini memiliki 2 field, yaitu id_tahun dan tahun.
Tabel 4.6 Tabel tahun
Nama Field Tipe Panjang Keterangan
id_ tahun* int 2 Id tahun, primary key
tahun varchar 5 Nama tahun
6. Tabel target_aetra
Tabel yang digunakan untuk menyimpan data target
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan AETRA. Tabel ini memiliki 8 field, yaitu
id_targetaetra, id_tahun, id_bulan, air_baku, air_produksi,
air_distribusi, air_terjual, dan ufw_nrw.
Tabel 4.7 Tabel target_aetra
Nama Field Tipe Panjang Keterangan
id_ targetaetra* int 5 Id target AETRA, primary key
id_tahun** int 2 Id tahun, foreign key
id_bulan** int 2 Id bulan, foreign key
air_baku double Besar target air baku setiap
bulan
air_produksi double Besar target air produksi setiap
bulan
air_distribusi double Besar target air terdistribusi
setiap bulan
air_terjual double Besar target air terjual setiap
83
bulan
ufw_nrw double Besar target nilai tingkat
kehilangan air atau
unaccounted for water (UFW),
maupun nilai air non rekening
atau non revenue water (NRW)
setiap bulan
7. Tabel target_palyja
Tabel yang digunakan untuk menyimpan data target
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan PALYJA. Tabel ini memiliki 8 field, yaitu
id_targetpalyja, id_tahun, id_bulan, air_baku, air_produksi,
air_distribusi, air_terjual, dan ufw_nrw.
Tabel 4.8 Tabel target_palyja
Nama Field Tipe Panjang Keterangan
id_ targetpalyja* int 5 Id target PALYJA, primary key
id_tahun** int 2 Id tahun, foreign key
id_bulan** int 2 Id bulan, foreign key
air_baku double Besar target air baku setiap
bulan
air_produksi double Besar target air produksi setiap
bulan
air_distribusi double Besar target air terdistribusi
setiap bulan
air_terjual double Besar target air terjual setiap
bulan
ufw_nrw double Besar target nilai tingkat
84
kehilangan air atau unaccounted
for water (UFW), maupun nilai
air non rekening atau non
revenue water (NRW) setiap
bulan
8. Tabel triwulan
Tabel yang digunakan untuk menyimpan data triwulan.
Tabel ini memiliki 2 field, yaitu id_triwulan dan triwulan.
Tabel 4.9 Tabel triwulan
Nama Field Tipe Panjang Keterangan
id_ triwulan* int 2 Id triwulan, primary key
triwulan varchar 10 Nama triwulan
9. Tabel user
Tabel yang digunakan untuk menyimpan data user atau
pengguna. Tabel ini memiliki 3 field, yaitu id_user,
username, dan password.
Tabel 4.10 Tabel user
Nama Field Tipe Panjang Keterangan
id_ user* int 2 Id pengguna, primary key
username varchar 20 Nama pengguna
password varchar 20 Password pengguna
85
4.3.2.2. Entity Relationship Diagram (ERD)
Entity relationship diagram (ERD) seperti pada gambar
4.20 di bawah ini.
user
target_palyja target_aetra monitor_palyja monitor_aetra
CRUD
1
M M M M
tahun
menggunakan
M MM
1
menggunakan
bulan
1
M
M
M M M
Gambar 4.20 Entity Relationship Diagram (ERD)
86
4.3.2.3. Logical Record Structure (LRS)
Logical Record Structure (LRS) dari hasil penerjemahan
ERD seperti pada gambar 4.21 di bawah ini.
Gambar 4.21 Logical Record Structure (LRS)
87
4.3.3. Perancangan Tampilan
4.3.3.1. Perancangan Interface Aplikasi
Penulis merancang tampilan untuk interface aplikasi yang
terdiri dari dua bagian utama yaitu interface bagian login dan
halaman utama aplikasi.
Header
Form Login
Footer
Gambar 4.22 Rancang Tampilan Login
Keterangan gambar:
1. Header : judul keterangan interface login
2. Form Login : form login untuk pengguna
3. Footer : berupa gambar dan alamat perusahaan.
Header
Menu Content
Footer
Gambar 4.23 Rancang Tampilan Halaman Aplikasi
88
Keterangan gambar :
1. Header : berupa gambar dan logo perusahaan
2. Menu : berupa menu-menu dari aplikasi.
3. Content : Ruang utama dimana informasi dan data
akan ditampilkan secara menyeluruh sesuai
dengan masing-masing menu aplikasi.
4. Footer : berupa gambar dan alamat perusahaan.
4.3.3.2. Implementasi Interface Aplikasi pada Web
Aplikasi ini digunakan oleh pengguna atau user untuk
melakukan kegiatan monitoring dan evaluasi kedua mitra
perusahaan.
4.3.3.2.1. Halaman Login
Halaman ini bertujuan sebagai halaman
penyeleksi pengguna untuk akses masuk ke aplikasi.
Gambar 4.24 Halaman Login Aplikasi
89
4.3.3.2.2. Halaman Home
Halaman ini merupakan halaman awal dalam
aplikasi, dan pengguna sebagai admin dapat memilih salah
satu dari kedua mitra perusahaan untuk dilakukan kegiatan
monitoring dan evaluasi.
Gambar 4.25 Halaman Home Aplikasi
90
4.3.3.2.3. Halaman Aetra
Halaman ini merupakan halaman mitra
perusahaan Aetra dan terdapat menu target, realisasi, rekap,
serta evaluasi yang dapat diplih oleh admin untuk
melakukan kegiatan monitoring dan evaluasi terhadap mitra
perusahaan ini.
Gambar 4.26 Halaman Aetra
91
1. Halaman Target Aetra
Halaman ini merupakan halaman untuk menampilkan,
menambah, meng-update, dan menghapus data target
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan Aetra.
Gambar 4.27 Halaman Target Aetra
93
2. Halaman Realisasi Aetra
Halaman ini merupakan halaman untuk menampilkan,
menambah, meng-update, dan menghapus data realisasi
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan Aetra.
Gambar 4.30 Halaman Realisasi Aetra
95
3. Halaman Rekapitulasi Aetra
Halaman ini merupakan halaman untuk menampilkan
rekapitulasi dari data target dan realisasi produktivitas air
tahun dan kategori tertentu pada mitra perusahaan Aetra,
serta admin dapat mendownload hasil rekapitulasi yang
dalam bentuk file Excel.
Gambar 4.33 Halaman Rekapitulasi Aetra
97
4. Halaman Grafik Evaluasi Aetra
Halaman ini merupakan halaman untuk menampilkan
grafik dari data target dan realisasi produktivitas air
berdasarkan tahun dan kategori air tertentu pada mitra
perusahaan Aetra.
Gambar 4.35 Halaman Grafik Evaluasi Aetra
98
4.3.3.2.4. Halaman Palyja
Halaman ini merupakan halaman mitra
perusahaan Palyja dan terdapat menu target, realisasi, rekap,
serta evaluasi yang dapat diplih oleh admin untuk
melakukan kegiatan monitoring dan evaluasi terhadap mitra
perusahaan ini.
Gambar 4.36 Halaman Palyja
99
1. Halaman Target Palyja
Halaman ini merupakan halaman untuk menampilkan,
menambah, meng-update, dan menghapus data target
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan Palyja.
Gambar 4.37 Halaman Target Palyja
101
2. Halaman Realisasi Palyja
Halaman ini merupakan halaman untuk menampilkan,
menambah, meng-update, dan menghapus data realisasi
produktivitas air tahun dan bulan tertentu pada mitra
perusahaan Palyja.
Gambar 4.40 Halaman Realisasi Palyja
102
Gambar 4.41 Halaman Tambah Data Realisasi Palyja
Gambar 4.42 Halaman Update Data Realisasi Palyja
103
3. Halaman Rekapitulasi Palyja
Halaman ini merupakan halaman untuk menampilkan
rekapitulasi dari data target dan realisasi produktivitas air
tahun dan kategori tertentu pada mitra perusahaan Palya,
serta admin dapat mendownload hasil rekapitulasi yang
dalam bentuk file Excel.
Gambar 4.43 Halaman Rekapitulasi Palyja
105
4. Halaman Grafik Evaluasi Palyja
Halaman ini merupakan halaman untuk menampilkan
grafik dari data target dan realisasi produktivitas air
berdasarkan tahun dan kategori air tertentu pada mitra
perusahaan Palyja.
Gambar 4.45 Halaman Grafik Evaluasi Palyja
106
4.4. Construction
4.4.1. Coding
Pada tahap ini dilakukan proses coding atau penulisan kode program
untuk aplikasi dengan menggunakan bahasa pemrograman PHP. Selain itu
dalam membangun aplikasi ini penulis menggunakan framework
CodeIgniter dan menggunakan konsep Model-View-Controller (MVC).
Untuk penjelasan mengenai konsep Model-View-Controller (MVC) dapat
dilihat di subbab 2.7.
4.4.1.1. Framework CodeIgniter
Framework CodeIgniter yang digunakan dalam pembuatan
aplikasi yaitu CodeIgniter versi 1.7.2. Berikut ini adalah tampilan
CodeIgniter ketika dijalankan di web browser sebelum dilakukan
perubahan untuk membuat website atau aplikasi web.
Gambar 4.46 CodeIgniter 1.7.2
107
Berikut ini adalah kode-kode php yang digunakan di dalam
aplikasi, yang terdapat pada framework CodeIgniter.
1. Bagian Otentikasi/Login
Terdapat tiga file php untuk proses login yang terdapat
di direktori models, views, dan controllers. Pada direktori
models terdapat file login_model.php, yang berisi kode
untuk proses pengecekan ke database bagi user yang login
ke dalam aplikasi.
Gambar 4.47 login_model.php
Selanjutnya file login_view.php pada direktori views
untuk menampilkan halaman login di web browser.
Gambar 4.48 login_view.php
108
Berikutnya file login.php yang terdapat pada direktori
controllers untuk memproses login dari user dan sebagai
penghubung antara models dan views.
Gambar 4.49 login.php
2. Bagian Target untuk masing-masing mitra
perusahaan
Terdapat file-file php untuk proses bagian target untuk
masing-masing mitra perusahaan yang berada di direktori
models, views, dan controllers. Pada direktori models
terdapat file aetratgt_model.php dan palyjatgt_model.php,
yang berisi kode untuk proses menampilkan data target dari
database, menambah data target ke dalam database, meng-
update data target ke dalam database, dan menghapus data
target dari database pada masing-masing mitra perusahaan,
seperti pada gambar 4.50 dan 4.51 di bawah ini.
109
Gambar 4.50 aetratgt_model.php
Gambar 4.51 palyjatgt_model.php
Selanjutnya terdapat file target.php pada direktori views
untuk masing-masing mitra perusahaan, untuk
menampilkan halaman target pada web browser, seperti
pada gambar 4.52 dan 4.53 di bawah ini.
111
Berikutnya, pada direktori controllers terdapat file
aetra_target.php dan palyja_target.php untuk memproses
penampilan data target, penambahan data target, update
data target, dan penghapusan data target pada masing-
masing mitra perusahaan, serta sebagai penghubung antara
models dan views seperti pada gambar 4.54 dan 4.55 di
bawah ini.
Gambar 4.54 aetra_target.php
Gambar 4.55 palyja_target.php
112
3. Bagian Realisasi untuk masing-masing mitra
perusahaan
Terdapat file-file php untuk proses bagian realisasi
untuk masing-masing mitra perusahaan yang berada di
direktori models, views, dan controllers. Pada direktori
models terdapat file aetrareal_model.php dan
palyjareal_model.php, yang berisi kode untuk proses
menampilkan data realisasi dari database, menambah data
realisasi ke dalam database, meng-update data realisasi ke
dalam database, dan menghapus data realisasi dari database
pada masing-masing mitra perusahaan, seperti pada gambar
4.56 dan 4.57 di bawah ini.
Gambar 4.56 aetrareal_model.php
113
Gambar 4.57 palyjareal_model.php
Selanjutnya terdapat file realisasi.php pada direktori
views untuk masing-masing mitra perusahaan, untuk
menampilkan halaman realisasi pada web browser, seperti
pada gambar 4.58 dan 4.59 di bawah ini.
Gambar 4.58 realisasi.php untuk view bagian Aetra
114
Gambar 4.59 realisasi.php untuk view bagian Palyja
Berikutnya, pada direktori controllers terdapat file
aetra_realisasi.php dan palyja_realisasi.php untuk
memproses penampilan data realisasi, penambahan data
realisasi, update data realisasi, dan penghapusan data
realisasi pada masing-masing mitra perusahaan, serta
sebagai penghubung antara models dan views seperti pada
gambar 4.60 dan 4.61 di bawah ini.
Gambar 4.60 aetra_realisasi.php
115
Gambar 4.61 palyja_realisasi.php
4. Bagian Rekapitulasi untuk masing-masing mitra
perusahaan
Terdapat file-file php untuk proses bagian rekapitulasi
untuk masing-masing mitra perusahaan yang berada di
direktori models, views, dan controllers. Pada direktori
models terdapat file aetrarekap_model.php dan
palyjarekap_model.php, yang berisi kode untuk proses
menampilkan rekapitulasi dari data target dan realisasi
produktivitas air berdasarkan tahun dan kategori tertentu
dari database, pada masing-masing mitra perusahaan,
seperti pada gambar 4.62 dan 4.63 di bawah ini.
117
Selanjutnya terdapat file rekap.php pada direktori views
untuk masing-masing mitra perusahaan, untuk
menampilkan halaman rekapitulasi pada web browser,
seperti pada gambar 4.64 dan 4.65 di bawah ini.
Gambar 4.64 rekap.php untuk view bagian Aetra
Gambar 4.65 rekap.php untuk view bagian Palyja
118
Berikutnya, pada direktori controllers terdapat file
aetra_rekap.php dan palyja_rekap.php untuk memproses
penampilan rekapitulasi dari data target dan realisasi pada
masing-masing mitra perusahaan, serta sebagai penghubung
antara models dan views seperti pada gambar 4.66 dan 4.67
di bawah ini.
Gambar 4.66 aetra_rekap.php
Gambar 4.67 palyja_rekap.php
119
5. Bagian Evaluasi untuk masing-masing mitra
perusahaan
Terdapat file-file php untuk proses bagian evaluasi
untuk masing-masing mitra perusahaan yang berada di
direktori models, views, dan controllers. Pada direktori
models terdapat file aetragrafik_model.php dan
palyjagrafik_model.php, yang berisi kode untuk proses
menampilkan grafik dari data target dan realisasi
produktivitas air berdasarkan tahun dan kategori tertentu
dari database, pada masing-masing mitra perusahaan,
seperti pada gambar 4.68 dan 4.69 di bawah ini.
Gambar 4.68 aetragrafik_model.php
120
Gambar 4.69 palyjagrafik_model.php
Selanjutnya terdapat file grafik.php pada direktori views
untuk masing-masing mitra perusahaan, untuk
menampilkan halaman grafik evaluasi pada web browser,
seperti pada gambar 4.70 dan 4.71 di bawah ini.
Gambar 4.70 grafik.php untuk view bagian Aetra
121
Gambar 4.71 grafik.php untuk view bagian Palyja
Berikutnya, pada direktori controllers terdapat file
aetra_grafik.php dan palyja_grafik.php untuk memproses
penampilan grafik dari data target dan realisasi pada
masing-masing mitra perusahaan, serta sebagai penghubung
antara models dan views seperti pada gambar 4.72 dan 4.73
di bawah ini.
Gambar 4.72 aetra_grafik.php
122
Gambar 4.73 palyja_grafik.php
4.4.1.2. Web Server
Untuk menjalankan aplikasi pada web browser secara
offline, digunakan XAMPP versi 1.7.2. Berikut ini adalah rincian
web server dan database yang terdapat dalam XAMPP versi 1.7.2.
1. Web server : Apache 2.2.12
2. Database : MySQL 5.1.37 dengan interface
phpMyAdmin 3.2.0.1
123
4.4.2. Pengujian Aplikasi (Testing)
4.4.2.1. Pengujian Fungsionalitas
Pengujian dibutuhkan untuk menguji apakah aplikasi sudah
memenuhi persyaratan atau belum, dan untuk menentukan perbedaan
antara hasil yang diharapkan dengan hasil sebenarnya. Pengujian
dilakukan secara mandiri oleh peneliti menggunakan metode black-
box dan juga dilakukan pengujian di lapangan oleh pegawai PDAM.
4.4.2.1.1. Pengujian Mandiri
Pengujian aplikasi secara mandiri oleh peneliti
dilakukan dengan metode black-box, yaitu hanya
difokuskan pada fungsionalitas sistem tanpa mengetahui
struktur internal program. Dalam metode ini kebenaran
aplikasi yang diuji hanya dilihat berdasarkan keluaran yang
dihasilkan dari data atau kondisi masukan yang diberikan
untuk fungsi yang ada tanpa melihat bagaimana proses
untuk mendapatkan keluaran tersebut.
Pengujian mandiri yang bersifat pengujian
fungsional dapat dilihat pada tabel 4.11 berikut ini.
Tabel 4.11 Pengujian Mandiri
Kelas Uji Butir Uji Bukti Uji Otentikasi Sistem
Masukkan username dan password yang benar
Dapat dilihat pada gambar 4.74 dan 4.75 (hasil login dengan benar)
Masukkan username dan password yang salah
Dapat dilihat pada gambar 4.76
124
Tidak memasukkan username dan password
Dapat dilihat pada gambar 4.77
Menampilkan dan mengubah data target Palyja
Tampil data target Palyja Dapat dilihat pada gambar 4.78 Tambah data target Palyja dengan data yang belum dimasukkan
Dapat dilihat pada gambar 4.79
Tambah data target Palyja dengan data yang sudah dimasukkan
Dapat dilihat pada gambar 4.80
Tambah data target Palyja dengan data kosong dimasukkan
Dapat dilihat pada gambar 4.81
Update data target Palyja Dapat dilihat pada gambar 4.82 Hapus data target Palyja Dapat dilihat pada gambar 4.83
Menampilkan dan mengubah data realisasi Palyja
Tampilkan data realisasi Palyja
Dapat dilihat pada gambar 4.84
Tambah data realisasi Palyja dengan data yang belum dimasukkan
Dapat dilihat pada gambar 4.85
Tambah data realisasi Palyja dengan data yang sudah dimasukkan
Dapat dilihat pada gambar 4.86
Tambah data realisasi Palyja dengan data kosong dimasukkan
Dapat dilihat pada gambar 4.87
Update data realisasi Palyja Dapat dilihat pada gambar 4.88 Hapus data realisasi Palyja Dapat dilihat pada gambar 4.89
Menampilkan rekapitulasi Palyja
Tampil rekapitulasi Palyja Dapat dilihat pada gambar 4.90
Menampilkan grafik evaluasi Palyja
Tampil grafik evaluasi Palyja
Dapat dilihat pada gambar 4.91
Menampilkan dan mengubah data target Aetra
Tampil data target Aetra Dapat dilihat pada gambar 4.92 Tambah data target Aetra dengan data yang belum dimasukkan
Dapat dilihat pada gambar 4.93
Tambah data target Aetra dengan data yang sudah
Dapat dilihat pada gambar 4.94
125
dimasukkan Tambah data target Aetra dengan data kosong dimasukkan
Dapat dilihat pada gambar 4.95
Update data target Aetra Dapat dilihat pada gambar 4.96 Hapus data target Aetra Dapat dilihat pada gambar 4.97
Menampilkan dan mengubah data realisasi Aetra
Tampilkan data realisasi Aetra
Dapat dilihat pada gambar 4.98
Tambah data realisasi Aetra dengan data yang belum dimasukkan
Dapat dilihat pada gambar 4.99
Tambah data realisasi Aetra dengan data yang sudah dimasukkan
Dapat dilihat pada gambar 4.100
Tambah data realisasi Aetra dengan data kosong dimasukkan
Dapat dilihat pada gambar 4.101
Update data realisasi Aetra Dapat dilihat pada gambar 4.102 Hapus data realisasi Aetra Dapat dilihat pada gambar 4.103
Menampilkan rekapitulasi AETRA
Tampil rekapitulasi Aetra Dapat dilihat pada gambar 4.104
Menampilkan grafik evaluasi AETRA
Tampil grafik evaluasi Aetra Dapat dilihat pada gambar 4.105
126
4.4.2.1.2. Hasil Pengujian Mandiri
Gambar 4.74 Login dengan benar
Gambar 4.75 Halaman home (setelah login dengan benar)
129
Gambar 4.80 Tambah target Palyja data sudah tercatat
Gambar 4.81 Tambah target Palyja data kosong
132
Gambar 4.86 Tambah realisasi Palyja data sudah tercatat
Gambar 4.87 Tambah realisasi Palyja data kosong
139
Gambar 4.100 Tambah realisasi Aetra data sudah tercatat
Gambar 4.101 Tambah realisasi Aetra data kosong
142
4.4.2.1.3. Pengujian Lapangan
Pada tahap ini pengujian dilakukan oleh satu
orang pegawai Divisi Bina Program PDAM untuk
melakukan uji coba terhadap aplikasi ini.
Setelah dilakukan uji coba terhadap aplikasi,
terdapat wawancara akhir penelitian yang juga merupakan
hasil pengujian aplikasi yang dilakukan oleh pegawai
PDAM. Wawancara akhir penelitian terdapat pada lampiran
6. Secara ringkas hasil pengujian dapat dilihat pada tabel
4.12 di bawah ini.
Tabel 4.12 Hasil Pengujian Lapangan
No Butir Uji Penilaian 1. Fitur aplikasi secara keseluruhan Baik 2. Fitur untuk mitra Palyja Baik 3. Fitur untuk mitra Aetra Baik 4. Keamanan aplikasi Baik 5. Kesesuaian dengan kebutuhan Baik
4.4.2.1.4. Kesimpulan Pengujian
Dari hasil pengujian mandiri dan pengujian
lapangan tersebut di atas, dapat ditarik kesimpulan bahwa
aplikasi dapat diimplementasikan dengan baik.
4.4.2.2. Pengujian Non Fungsionalitas
Pengujian ini merupakan pengujian terhadap fitur-fitur lain
yang diperlukan oleh aplikasi agar dapat lebih memuaskan user atau
143
pengguna. Berikut ini adalah pengujian non fungsionalitas yang
dilakukan oleh peneliti terhadap aplikasi ini dengan berdasarkan
beberapa faktor yang ada.
Tabel 4.13 Pengujian Non Fungsionalitas
No Faktor Uji Sub Atribut Penjelasan Hasil Bukti Uji 1. Usability Understandability Kemampuan
untuk memahami penggunaan aplikasi oleh pengguna
Tampilan aplikasi yang user friendly menjadikan pengguna dapat memahami penggunaan aplikasi
Dapat dilihat pada gambar 4.106
Learnability Kemampuan untuk mempelajari penggunaan aplikasi
Tidak diperlukan pengetahuan khusus untuk mempelajari apikasi, sehingga pengguna dapat dengan mudah mempelajari penggunaan aplikasi
Dapat dilihat pada gambar 4.107
Operability Kemampuan untuk mengoperasikan aplikasi
Menu-menu yang sangat jelas yang terdapat di dalam aplikasi dan tampilan aplikasi yang user friendly menjadikan pengguna dapat mengoperasikan aplikasi dengan baik
Dapat dilihat pada gambar 4.108
2. Reliability Maturity Subkarakteristik yang berfokus pada tingkat kegagalan perangkat lunak
Kegagalan pada aplikasi hanya terjadi kepada web browser yang belum mendukung kemampuan pemutar Flash, dan gangguan dari web server
Dapat dilihat pada gambar 4.109 dan 4.110
Fault Tolerance Kemampuan untuk bertahan dari kesalahan
Aplikasi tetap dapat berjalan ketika digunakan pada web server versi yang
Dapat dilihat pada gambar 4.111
144
lebih lama dari yang digunakan pada pembuatan dan pengujian aplikasi
Recoverability Kemampuan untuk bangkit dari kegagalan dan kembali berjalan secara optimal
Apabila terjadi kegagalan dalam komunikasi data dengan web server, maka diperlukan restart web server
Dapat dilihat pada gambar 4.112
3. Efficiency Time behavior Menghitung waktu respon dari proses yang dilakukan
Waktu respon untuk memproses data dan menampilkannya cukup baik
Dapat dilihat pada gambar 4.113
Resource behavior
Menghitung resource yang digunakan
Dalam hal ini, setelah dilakukan pengecekan memory yang digunakan, aplikasi ini hanya menggunakan sekitar 5% dari memory resource yang ada
Dapat dilihat pada gambar 4.114
4. Maintainability Analyzability Kemampuan untuk menganalisa akar masalah yang terdapat dalam kegagalan aplikasi
Apabila terdapat kegagalan dalam pemrosesan akan muncul pesan kegagalan
Dapat dilihat pada gambar 4.115
Changeability Mengarakterkan usaha yang dibutuhkan untuk merubah aplikasi
Untuk merubah aplikasi, tidak diperlukan usaha yang cukup sulit, karena aplikasi ini dibuat dengan konsep pemrograman Model-View-Controller (MVC)
Dapat dilihat pada gambar 4.116
Stability Mengarakterkan dampak negatif dari perubahan aplikasi yang terjadi
Dalam hal ini, apabila terjadi kegagalan dalam perubahan aplikasi, maka akan muncul pesan kesalahan
Dapat dilihat pada gambar 4.117
145
beserta penjelasan kesalahannya
Testability Mengarakterkan usaha yang diperlukan untuk menguji perubahan aplikasi
Dalam hal ini, pengujian dapat dilakukan langsung pada perangkat lunak yang ada
Dapat dilihat pada gambar 4.118
5. Portability Adaptability Kemampuan untuk beradaptasi pada lingkungan yang baru
Setelah dilakukan pengujian aplikasi pada sistem operasi yang berbeda, aplikasi dapat beradaptasi dan berjalan dengan baik karena aplikasi ini bersifat web application, sehingga aplikasi dapat berjalan di web browser apapun sistem operasinya
Dapat dilihat pada gambar 4.119
Installability Kemampuan untuk dengan cepat meng-install ke device
Dalam hal ini, tidak diperlukan pemasangan yang rumit, cukup install web server dan jalankan aplikasi di web browser
Dapat dilihat pada gambar 4.120
Conformance Karakteristik kesesuaian yang berkaitan dengan portabilitas
Aplikasi dapat berjalan di web browser apapun sistem operasinya, dan export file Excel dan gambar dari aplikasi dapat dibuka dengan aplikasi office dan gambar apapun
Dapat dilihat pada gambar 4.121 dan 4.122
Replaceability Bagaimana mudahnya untuk melakukan pertukaran komponen
Sesuai dengan faktor di atas, aplikasi dengan mudah dapat dijalankan di perangkat lunak yang
Dapat dilihat pada gambar 4.123
146
perangkat lunak yang diberikan dalam lingkungan tertentu
berbeda dengan lingkungan atau sistem operasi yang berbeda
4.4.2.2.1. Hasil Pengujian Non Fungsionalitas
Gambar 4.106 Tampilan aplikasi user friendly
147
Gambar 4.107 Mudah mempelajari penggunaan aplikasi
Gambar 4.108 Pengguna dapat mengoperasikan aplikasi dengan baik
149
Gambar 4.111 Aplikasi berjalan pada web server versi tahun 2007
Gambar 4.112 Restart pada web server
151
Gambar 4.115 Kegagalan dalam pemrosesan data
Gambar 4.116 Perubahan aplikasi pada direktori models-views-controllers
152
Gambar 4.117 Penghapusan bagian persentase dan pesan kesalahan
Gambar 4.118 Bagian persentase terhapus
153
Gambar 4.119 Aplikasi berjalan di sistem operasi Linux
Gambar 4.120 Aplikasi berjalan setelah instalasi web server
154
Gambar 4.121 Export file Excel pada sistem operasi Linux
Gambar 4.122 File Excel dapat terbuka pada sistem operasi Linux
155
Gambar 4.123 Aplikasi dapat berjalan pada sistem operasi yang lain
4.5. Deployment
Penulis melakukan instalasi aplikasi pada komputer internal perusahaan
PDAM untuk memberikan umpan balik atau feedback dari aplikasi yang telah
diuji dan digunakan oleh pegawai PDAM.
BAB V
PENUTUP
5.1. Kesimpulan
Berdasarkan pembahasan pengembangan aplikasi monitoring secara
keseluruhan dapat ditarik kesimpulan sebagai berikut:
1. Aplikasi ini dapat mengurangi terjadinya duplikasi dan
ketidakakurasian data dalam proses monitoring produktivitas kinerja
mitra PDAM. Hal ini dapat dilihat pada gambar 4.80 dan 4.94 di
subbab 4.4.2.1.2.
2. Sesuai pengujian dan wawancara akhir penelitian, aplikasi ini dapat
memudahkan dan mempercepat proses dalam melakukan evaluasi
kinerja mitra PDAM berdasarkan parameter perbandingan nilai realisasi
yang dicapai dengan nilai target yang sudah ditentukan, sehingga
terlihat tercapai atau tidaknya kinerja mitra PDAM, hal ini dapat dilihat
pada gambar 4.90 dan 4.104 di subbab 4.4.2.1.2. Kemudian dengan
tampilan grafik terlihat juga progress kinerja mitra PDAM, hal ini dapat
dilihat pada gambar 4.91 dan 4.105 di subbab 4.4.2.1.2.
156
157
5.2. Saran
Saran yang dapat penulis berikan terhadap pengembangan aplikasi ini ke
depannya, yaitu aplikasi ini diharapkan dapat melakukan proses monitoring
laporan kinerja dalam skala besar selain dari keempat laporan kinerja dalam
aplikasi ini.
DAFTAR PUSTAKA
Basuki, A. P. 2010. Membangun Web Berbasis PHP Dengan Framework
CodeIgniter. Penerbit Lokomedia, Yogyakarta: xiii + 212 hlm.
Connolly, T. M. & C. E. Begg. 2002. Database Systems: A Practical Approach to
Design, Implementation, and Management. Pearson Education Inc.,
London: xlix + 1236 hlm.
Dharwiyanti, S. & R. S. Wahono. 2003. Pengantar Unified Modeling Language
(UML): 13 hlm. http://standy-oei.web.ugm.ac.id/
ppl/MateriSuplemenUml.pdf, 03 Agustus 2010, pk. 14.45 WIB.
Everett, G. D. & R. McLeod Jr. 2007. Software Testing: Testing Across The
Entire Software Development Life. John Wiley & Sons, Inc. New Jersey: xv
+ 261 hlm.
Ford, C., I. Gileadi, S. Purba & M. Moerman. 2008. Patterns for Performance and
Operability: Building and Testing Enterprise Software. Taylor Francis and
Group, New York: xix + 317 hlm.
Greenlaw, R. & E. Hepp. 2002. In-line/On-line: Fundamentals of The Internet
and The World Wide Web. Mc Graw Hill Companies Inc., New York: xvi +
696 hlm.
Ibrahim, Ali. 2008. Cara Praktis Membuat Website Dinamis Menggunakan
XAMPP. Neotekno, Yogyakarta: viii + 146 hlm.
Mata-Toledo, R. A. & P. K. Cushman. 2007. Schaum's Outlines Dasar-Dasar
Database Relasional. Penerbit Erlangga, Jakarta: viii + 157 hlm.
158
Nader, J. C. 1992. Prentice Hall’s Illustrated Dictionary of Computing. Prentice
Hall Inc., New South Wales: viii + 526 hlm.
Peraturan Walikota Jogjakarta. 2007. Standar Operasional Dan Prosedur
Manajemen Pengaman Sistem Informasi Dan Komunikasi Pada Pemerintah
Kota Yogyakarta: 9 hlm. http://www.hukum.jogjakota.go.id/upload
/Perwal%20No_%2076%20Th%202007.pdf, 22 Mei 2010, pk. 20.15 WIB.
Pezze, M. & M. Young. 2008. Software Testing and Analysis-Process, Principles,
and Techniques. John Wiley & Sons, Inc. New Jersey: vii + 488 hlm.
Presmann, R. S. 2010. Software Engineering: A Practitioner’s Approach. Mc
Graw Hill Companies Inc., New York: xxviii + 895 hlm.
Pribadiyono. 2006. Aplikasi Sistem Pengukuran Produktivitas Kaitannya dengan
Pengupahan: 8 hlm. http://puslit.petra.ac.id/journals/pdf.php?
PublishedID=IND06080203, 10 Januari 2011, pk. 20.35 WIB.
Rumbaugh, J., I. Jacobson & G. Booch. 2006. The Unified Modeling Language
Reference Manual. Pearson Education Inc., Westford: xiii + 721 hlm.
Sumiyati. 2009. Monitoring Dan Evaluasi Pelaksanaan Standar Isi: 1 hlm.
http://www.puskur.net/index.php?option=com_content&view=article&id=7
3:wawasan-4&catid=37:wawasan&Itemid=65, 03 Agustus 2010, pk. 14.31
WIB.
Sunyoto, Andi. 2007. AJAX Membangun Web dengan Teknologi Asynchronouse
JavaScript dan XML. Penerbit Andi, Yogyakarta: xiv + 226 hlm.
Wardana. 2010. Menjadi Master PHP dengan Framework Codeigniter. Elex
Media Komputindo, Jakarta: ix + 249 hlm.
Williams, B. K. & S. C. Sawyer. 2007. Using Information Technology:
Pengenalan Praktis Dunia Komputer dan Komunikasi. Penerbit Andi,
Yogyakarta: xxii + 586 hlm.
Wismakarma, Komang. 2010. Panduan Lengkap Menguasai Pemrograman CSS.
Penerbit Lokomedia, Yogyakarta: xiv + 204 hlm.
Penanya : Fikri Kharisma
Narasumber : Enar Legowo, S.Kom
Jabatan : Staf Divisi Bina Program
Tanggal : 11 Oktober 2010
Tempat : Divisi Bina Program PDAM Provinsi DKI Jakarta
Tujuan : Mengetahui proses monitoring kinerja mitra perusahaan yang
berlangsung di PDAM, dan mengetahui spesifikasi kebutuhan
dari PDAM yang akan diimplementasikan ke dalam aplikasi
Dengan hormat, saya Fikri Kharisma mahasiswa UIN Syarif Hidayatullah Jakarta
program studi Teknik Informatika, sedang mengadakan penelitian di PDAM
bermaksud bertanya mengenai hal-hal yang terkait dengan penelitian yang akan
saya lakukan. Terima kasih atas waktu dan kesempatan yang bapak berikan.
Fikri : Bagaimana proses monitoring kinerja mitra perusahaan PDAM
yang berlangsung selama ini?
Bpk. Enar : Kami dari PDAM setiap bulannya mendapatkan laporan kinerja
dari masing-masing mitra, kemudian laporan-laporan tersebut
direkap secara manual dengan membuat laporan rekap melalui
software Microsoft Excel.
Fikri : Berapa jumlah mitra perusahaan PDAM?
Bpk. Enar : PDAM mempunyai dua mitra perusahaan yaitu PALYA atau PT.
PAM Lyonnaise Jaya dan AETRA atau PT. Aetra Air Jakarta.
Fikri : Apa tujuan yang diharapkan oleh PDAM dengan adanya aplikasi
monitoring ini?
Bpk. Enar : Tujuan dibuatnya aplikasi ini untuk memudahkan pegawai PDAM
dalam memasukkan atau menginput data target dan realisasi dari
masing-masing mitra, kemudian mendapatkan laporan rekapitulasi
dari masing-masing mitra dan dapat disimpan dalam bentuk file
Microsoft Excel, selain itu juga penampilan evaluasi dari masing-
masing mitra dalam bentuk grafik statistik dan grafik tersebut dapat
disimpan dalam bentuk image atau gambar.
Fikri : Apakah boleh setiap pegawai menggunakan aplikasi ini?
Bpk. Enar : Tidak semua pegawai dapat menggunakan aplikasi ini, hanya
seorang pegawai dari Divisi Bina Program saja yang dapat
menggunakan aplikasi ini.
Fikri : Terima kasih untuk waktu dan kesempatan yang bapak berikan.
Bpk. Enar : Ya, semoga sukses dalam membuat aplikasi ini.
Penanya : Fikri Kharisma
Narasumber : Enar Legowo, S.Kom
Jabatan : Staf Divisi Bina Program
Tanggal : 12 Nopember 2010
Tempat : Divisi Bina Program PDAM Provinsi DKI Jakarta
Tujuan : Mengetahui hasil pengujian aplikasi dan kesimpulan setelah
pengujian aplikasi
Terima kasih atas waktu dan kesediaan bapak untuk menggunakan dan menguji
aplikasi yang telah saya buat. Selanjutnya saya ingin bertanya kepada bapak
mengenai proses penggunaan dan pengujian aplikasi ini.
Fikri : Bagaimana proses untuk masuk atau login ke dalam aplikasi ini?
Bpk. Enar : Cukup mudah, tampilan interface login awal dari aplikasi ini user
friendly, saya tinggal memasukkan username dan password.
Fikri : Bagaimana dengan halaman awal atau home aplikasi ini, apakah
ada hambatan bagi bapak dalam menggunakan aplikasi ini dari
halaman awal?
Bpk. Enar : Tidak, dari tampilannya cukup sederhana dan mudah untuk
menggunakan aplikasi ini dari halaman awal, bagian atas dan
bawah berupa gambar logo dan alamat PDAM. Kemudian bagian
sebelah kiri terdapat menu bagi saya untuk dapat kembali ke
halaman awal, dan menu jika saya ingin keluar dari aplikasi ini.
Selain itu di bagian tengah terdapat dua tombol dari masing-masing
mitra PDAM yaitu PALYJA dan AETRA, sehingga saya dapat
memilih salah satu dari kedua mitra tersebut untuk selanjutnya
melakukan proses kegiatan monitoring.
Fikri : Setelah bapak memilih tombol salah satu dari kedua mitra, bapak
akan masuk ke halaman selanjutnya yang berisi empat tombol
menu, yaitu TARGET, REALISASI, REKAP, dan EVALUASI,
bagaimana proses bapak dalam melakukan kegiatan monitoring?
Bpk. Enar : Ya setelah memilih salah satu mitra tersebut, untuk memasukkan
data target saya menekan tombol TARGET, selanjutnya setelah
memasuki halaman berikutnya saya dapat memasukkan data target,
jika ada kesalahan terhadap data yang dimasukkan saya dapat
mengubah dengan menekan tombol update, dan jika ingin
menghapus saya dapat menekan tombol hapus. Untuk memasukkan
data realisasi dari mitra tersebut, saya menekan tombol
REALISASI, kemudian proses yang terjadi selanjutnya sama
seperti ketika saya memasukan data target.
Fikri : Bagaimana dengan proses rekap dan penampilan grafik statistik?
Bpk. Enar : Ya untuk menampilkan rekap dari mitra tersebut saya menekan
tombol REKAP, selanjutnya saya dapat memilih tahun dan kategori
apakah itu triwulan 1 atau keseluruhan tahun, dan hal ini cukup
bagus karena dalam penampilan rekap terdapat perbandingan
antara target dan realisasi, dan yang penting juga saya dapat
menyimpan atau mendownload rekap tersebut kedalam file
Microsoft Excel. Kemudian untuk grafik evaluasi, setelah saya
menekan tombol EVALUASI saya juga dapat memilih tahun dan
kategori air apa yang ingin ditampilkan ke dalam grafik tersebut,
dan juga grafik ini dapat disimpan ke dalam bentuk gambar atau
image.
Fikri : Bagaimana pendapat bapak setelah menguji dan menggunakan
aplikasi ini?
Bpk. Enar : Aplikasi ini cukup membantu memudahkan dan mempercepat
proses dalam melakukan evaluasi kinerja mitra PDAM berdasarkan
parameter perbandingan nilai realisasi yang dicapai dengan nilai
target yang sudah ditentukan, sehingga terlihat tercapai atau
tidaknya kinerja mitra PDAM. Kemudian dengan tampilan grafik
terlihat juga progress kinerja mitra PDAM.
Fikri : Terima kasih untuk waktu dan kesempatan yang bapak berikan
untuk menggunakan dan menguji aplikasi ini.
Bpk. Enar : Ya, saya berharap semoga ke depannya aplikasi ini dapat
dikembangkan untuk memonitor kinerja yang lain dari masing-masing mitra.
INDEKS KODE PROGRAM
No. Nama Keterangan
8.1. login.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan dalam proses login dan logout
8.2. home.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan untuk mengirimkan perintah ke “view” untuk menampilkan halaman home
8.3. palyja.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan untuk mengirimkan perintah ke “view” untuk menampilkan halaman palyja
8.4. palyja_target.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan dalam proses tambah, update, dan hapus dalam halaman target palyja
8.5. palyja_realisasi.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan dalam proses tambah, update, dan hapus dalam halaman realisasi palyja
8.6. palyja_rekap.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan untuk menampilkan tabel rekapitulasi dalam halaman rekapitulasi palyja
8.7. aetra.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan untuk mengirimkan perintah ke “view” untuk menampilkan halaman aetra
8.8. aetra_target.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan dalam proses tambah, update, dan hapus dalam halaman target aetra
8.9. aetra_realisasi.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan dalam proses tambah, update, dan hapus dalam halaman realisasi aetra
8.10. aetra_rekap.php Kode php di dalam bagian “controller” yang berisi fungsi-fungsi yang digunakan untuk menampilkan tabel rekapitulasi dalam halaman rekapitulasi aetra
8.1. login.php <?php /** * Login Class */ class Login extends Controller { /** * Constructor */ function Login() { parent::Controller(); $this‐>load‐>model('Login_model', '', TRUE); } /** * Memeriksa user state, jika dalam keadaan login akan menampilkan halaman home, * jika tidak akan meload halaman login */ function index() { if ($this‐>session‐>userdata('login') == TRUE) { redirect('home'); } else { $this‐>load‐>view('login/login_view'); } } /** * Memproses login */ function process_login() { $this‐>form_validation‐>set_rules('username', 'Username', 'required'); $this‐>form_validation‐>set_rules('password', 'Password', 'required'); if ($this‐>form_validation‐>run() == TRUE) { $username = $this‐>input‐>post('username'); $password = $this‐>input‐>post('password'); if ($this‐>Login_model‐>check_user($username, $password) == TRUE) { $data = array('username' => $username, 'login' => TRUE); $this‐>session‐>set_userdata($data); redirect('home'); } else { $this‐>session‐>set_flashdata('message', 'Maaf, username dan atau password Anda salah'); redirect('login/index');
} } else { $this‐>load‐>view('login/login_view'); } } /** * Memproses logout */ function process_logout() { $this‐>session‐>sess_destroy(); redirect('login', 'refresh'); } } // END Login Class /* End of file login.php */ /* Location: ./system/application/controllers/login.php */
8.2. home.php <?php /** * Home Class */ class Home extends Controller { /** * Constructor */ function Home() { parent::Controller(); } /** * Memeriksa user state, jika dalam keadaan login akan menampilkan halaman home * Jika tidak akan meredirect ke halaman login */ function index() { $this‐>session‐>unset_userdata('username'); $this‐>session‐>unset_userdata('password'); if ($this‐>session‐>userdata('login') == TRUE) { $this‐>load‐>view('home'); } else { redirect('login'); } } } // END Home Class /* End of file home.php */ /* Location: ./system/application/controllers/home.php
*/
8.3. palyja.php <?php /** * Palyja Class */ class Palyja extends Controller { /** * Constructor */ function Palyja() { parent::Controller(); } function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>load‐>view('palyja/palyja'); } else { redirect('login'); } } } // END Palyja Class /* End of file palyja.php */ /* Location: ./system/application/controllers/palyja.php */
8.4. palyja_target.php <?php /** * Palyja_target Class */ class Palyja_target extends Controller { /** * Constructor, load Palyjatgt_model */ function Palyja_target() { parent::Controller(); $this‐>load‐>model('Palyjatgt_model', '', TRUE); $this‐>load‐>model('Tahun_model', '', TRUE); $this‐>load‐>model('Bulan_model', '', TRUE); } /** * Inisialisasi variabel untuk $title(untuk id element <body>), dan * $limit untuk membatasi penampilan data di tabel */ var $limit = 12; var $title = 'Monitoring PAM JAYA ‐ PALYJA'; /** * Memeriksa user state, jika dalam keadaan login akan menjalankan fungsi get_all() * Jika tidak akan meredirect ke halaman login */
function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>get_all(); } else { redirect('login'); } } /** * Mendapatkan semua data target di database dan menampilkannya di tabel */ function get_all() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET PALYJA'; $data['main_view'] = 'palyja/target'; /* Offset */ $uri_segment = 3; $offset = $this‐>uri‐>segment($uri_segment); /* Load data */ $targets = $this‐>Palyjatgt_model‐>get_all($this‐>limit, $offset); $num_rows = $this‐>Palyjatgt_model‐>count_all(); if ($num_rows > 0) { /* Generate pagination */ $config['base_url'] = site_url('palyja_target/get_all'); $config['total_rows'] = $num_rows; $config['per_page'] = $this‐>limit; $config['uri_segment'] = $uri_segment; $this‐>pagination‐>initialize($config); $data['pagination'] = $this‐>pagination‐>create_links(); /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array( 'table_open' => '<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start' => '<tr class="zebra">', 'row_alt_end' => '</tr>' ); $this‐>table‐>set_template($tmpl); /*Set table heading */
$this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('No', '<CENTER>Tahun</CENTER>', '<CENTER>Bulan</CENTER>', '<CENTER>Air Baku<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>UFW/NRW<BR>(%)</CENTER>', '<CENTER>Actions</CENTER>'); $i = 0 + $offset; foreach ($targets as $row) { $baku = number_format($row‐>air_baku,0,",","."); $produksi = number_format($row‐>air_produksi,0,",","."); $distribusi = number_format($row‐>air_distribusi,0,",","."); $terjual = number_format($row‐>air_terjual,0,",","."); $this‐>table‐>add_row(++$i, $row‐>tahun, $row‐>bulan, $baku, $produksi, $distribusi, $terjual, $row‐>ufw_nrw." %", anchor('palyja_target/update/'.$row‐>id_targetpalyja,'update',array('class' => 'update')).' '. anchor('palyja_target/delete/'.$row‐>id_targetpalyja,'hapus',array('class'=> 'delete','onclick'=>"return confirm('Anda yakin akan menghapus data ini?')")) ); } $data['table'] = $this‐>table‐>generate(); } else { $data['message'] = 'Tidak ditemukan satupun data target!'; } $data['link'] = array('link_add' => anchor('palyja_target/add/','Tambah data', array('class' => 'add'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); // Load view $this‐>load‐>view('palyja/target', $data); } /** * Menghapus data target dengan ID Target tertentu */ function delete($id_targetpalyja) { $this‐>Palyjatgt_model‐>delete($id_targetpalyja);
$this‐>session‐>set_flashdata('message', 'Satu data target berhasil dihapus'); redirect('palyja_target'); } /** * Menampilkan form tambah target */ function add() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET PALYJA > Tambah Data'; $data['main_view'] = 'palyja/target_form'; $data['form_action'] = site_url('palyja_target/add_process'); $data['link'] = array('link_back' => anchor('palyja_target','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } $this‐>load‐>view('palyja/target_form', $data); } /** * Proses tambah data target */ function add_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET PALYJA > Tambah Data'; $data['main_view'] = 'palyja/target_form'; $data['form_action'] = site_url('palyja_target/add_process'); $data['link'] = array('link_back' => anchor('palyja_target','Kembali', array('class' =>'back'))); // data tahun untuk dropdown menu
$tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); if ($this‐>form_validation‐>run() == TRUE) { // Save data $target = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Palyjatgt_model‐>add($target);
$this‐>session‐>set_flashdata('message', 'Satu data target berhasil disimpan!'); redirect('palyja_target/add'); } else { $this‐>load‐>view('palyja/target_form', $data); } } /** * Menampilkan form update data target */ function update($id_targetpalyja) { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET PALYJA > Update'; $data['main_view'] = 'palyja/target_form'; $data['form_action'] = site_url('palyja_target/update_process'); $data['link'] = array('link_back' => anchor('palyja_target','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // cari data dari database $target = $this‐>Palyjatgt_model‐>get_target_by_id($id_targetpalyja); // buat session untuk menyimpan data primary key (id_targetpalyja) $this‐>session‐>set_userdata('id_targetpalyja', $target‐>id_targetpalyja); // Data untuk mengisi field2 form $data['default']['id_tahun'] = $target‐>id_tahun; $data['default']['id_bulan'] = $target‐>id_bulan; $data['default']['air_baku'] = $target‐>air_baku;
$data['default']['air_produksi'] = $target‐>air_produksi; $data['default']['air_distribusi'] = $target‐>air_distribusi; $data['default']['air_terjual'] = $target‐>air_terjual; $data['default']['ufw_nrw'] = $target‐>ufw_nrw; $this‐>load‐>view('palyja/target_form', $data); } /** * Proses update data target */ function update_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET PALYJA > Update'; $data['main_view'] = 'palyja/target_form'; $data['form_action'] = site_url('palyja_target/update_process'); $data['link'] = array('link_back' => anchor('palyja_target','kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural');
$this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); // jika proses validasi sukses, maka lanjut mengupdate data if ($this‐>form_validation‐>run() == TRUE) { // Save data $target = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Palyjatgt_model‐>update($this‐>session‐>userdata('id_targetpalyja'), $target); // Set pesan $this‐>session‐>set_flashdata('message', 'Satu data target berhasil diupdate!'); redirect('palyja_target'); } else { $this‐>load‐>view('palyja/target_form', $data); } } /** * Proses validasi data target agar tidak ada duplikasi data */ function valid_entry() { $tahun = $this‐>input‐>post('id_tahun'); $bulan = $this‐>input‐>post('id_bulan'); if ($this‐>Palyjatgt_model‐>valid_entry($tahun, $bulan) == FALSE) { $this‐>form_validation‐>set_message('valid_entry', 'Data sudah tercatat pada tabel. Silahkan ulangi lagi'); return FALSE; } else { return TRUE; }
} } // END Palyja_target Class /* End of file palyja_target.php */ /* Location: ./system/application/controllers/palyja_target.php */
8.5. palyja_realisasi.php
<?php /** * Palyja_realisasi Class */ class Palyja_realisasi extends Controller { /** * Constructor, load Palyjareal_model */ function Palyja_realisasi() { parent::Controller(); $this‐>load‐>model('Palyjareal_model', '', TRUE); $this‐>load‐>model('Tahun_model', '', TRUE); $this‐>load‐>model('Bulan_model', '', TRUE); } /** * Inisialisasi variabel untuk $title(untuk id element <body>), dan * $limit untuk membatasi penampilan data di tabel */ var $limit = 12; var $title = 'Monitoring PAM JAYA ‐ PALYJA'; /** * Memeriksa user state, jika dalam keadaan login akan menjalankan fungsi get_all() * Jika tidak akan meredirect ke halaman login */ function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>get_all(); } else { redirect('login'); } } /** * Mendapatkan semua data target di database dan menampilkannya di tabel */ function get_all() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI PALYJA'; $data['main_view'] = 'palyja/realisasi'; /* Offset */ $uri_segment = 3; $offset = $this‐>uri‐>segment($uri_segment);
/* Load data */ $reals = $this‐>Palyjareal_model‐>get_all($this‐>limit, $offset); $num_rows = $this‐>Palyjareal_model‐>count_all(); if ($num_rows > 0) { /* Generate pagination */ $config['base_url'] = site_url('palyja_realisasi/get_all'); $config['total_rows'] = $num_rows; $config['per_page'] = $this‐>limit; $config['uri_segment'] = $uri_segment; $this‐>pagination‐>initialize($config); $data['pagination'] = $this‐>pagination‐>create_links(); /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array( 'table_open' => '<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start' => '<tr class="zebra">', 'row_alt_end' => '</tr>' ); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('No', '<CENTER>Tahun</CENTER>', '<CENTER>Bulan</CENTER>', '<CENTER>Air Baku<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>UFW/NRW<BR>(%)</CENTER>', '<CENTER>Actions</CENTER>'); $i = 0 + $offset; foreach ($reals as $row) { $baku = number_format($row‐>air_baku,0,",","."); $produksi = number_format($row‐>air_produksi,0,",","."); $distribusi = number_format($row‐>air_distribusi,0,",","."); $terjual = number_format($row‐>air_terjual,0,",","."); $this‐>table‐>add_row(++$i, $row‐>tahun, $row‐>bulan, $baku, $produksi, $distribusi, $terjual, $row‐>ufw_nrw." %", anchor('palyja_realisasi/update/'.$row‐>id_mtrpalyja,'update',array('class' => 'update')).' '. anchor('palyja_realisasi/delete/'.$row‐
>id_mtrpalyja,'hapus',array('class'=> 'delete','onclick'=>"return confirm('Anda yakin akan menghapus data ini?')")) ); } $data['table'] = $this‐>table‐>generate(); } else { $data['message'] = 'Tidak ditemukan satupun data realisasi!'; } $data['link'] = array('link_add' => anchor('palyja_realisasi/add/','Tambah data', array('class' => 'add'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); // Load view $this‐>load‐>view('palyja/realisasi', $data); } /** * Menghapus data realisasi dengan ID realisasi tertentu */ function delete($id_mtrpalyja) { $this‐>Palyjareal_model‐>delete($id_mtrpalyja); $this‐>session‐>set_flashdata('message', 'Satu data realisasi berhasil dihapus'); redirect('palyja_realisasi'); } /** * Menampilkan form tambah realisasi */ function add() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI PALYJA > Tambah Data'; $data['main_view'] = 'palyja/realisasi_form'; $data['form_action'] = site_url('palyja_realisasi/add_process'); $data['link'] = array('link_back' => anchor('palyja_realisasi','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) {
$data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } $this‐>load‐>view('palyja/realisasi_form', $data); } /** * Proses tambah data realisasi */ function add_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI PALYJA > Tambah Data'; $data['main_view'] = 'palyja/realisasi_form'; $data['form_action'] = site_url('palyja_realisasi/add_process'); $data['link'] = array('link_back' => anchor('palyja_realisasi','Kembali', array('class' =>'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); if ($this‐>form_validation‐>run() == TRUE) { // Save data $realisasi = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'),
'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Palyjareal_model‐>add($realisasi); $this‐>session‐>set_flashdata('message', 'Satu data realisasi berhasil disimpan!'); redirect('palyja_realisasi/add'); } else { $this‐>load‐>view('palyja/realisasi_form', $data); } } /** * Menampilkan form update data realisasi */ function update($id_mtrpalyja) { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI PALYJA > Update'; $data['main_view'] = 'palyja/realisasi_form'; $data['form_action'] = site_url('palyja_realisasi/update_process'); $data['link'] = array('link_back' => anchor('palyja_realisasi','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // cari data dari database $realisasi = $this‐>Palyjareal_model‐>get_realisasi_by_id($id_mtrpalyja); // buat session untuk menyimpan data primary key (id_mtrpalyja)
$this‐>session‐>set_userdata('id_mtrpalyja', $realisasi‐>id_mtrpalyja); // Data untuk mengisi field2 form $data['default']['id_tahun'] = $realisasi‐>id_tahun; $data['default']['id_bulan'] = $realisasi‐>id_bulan; $data['default']['air_baku'] = $realisasi‐>air_baku; $data['default']['air_produksi'] = $realisasi‐>air_produksi; $data['default']['air_distribusi'] = $realisasi‐>air_distribusi; $data['default']['air_terjual'] = $realisasi‐>air_terjual; $data['default']['ufw_nrw'] = $realisasi‐>ufw_nrw; $this‐>load‐>view('palyja/realisasi_form', $data); } /** * Proses update data realisasi */ function update_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI PALYJA > Update'; $data['main_view'] = 'palyja/realisasi_form'; $data['form_action'] = site_url('palyja_realisasi/update_process'); $data['link'] = array('link_back' => anchor('palyja_realisasi','kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural');
$this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); // jika proses validasi sukses, maka lanjut mengupdate data if ($this‐>form_validation‐>run() == TRUE) { // Save data $realisasi = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Palyjareal_model‐>update($this‐>session‐>userdata('id_mtrpalyja'), $realisasi); // Set pesan $this‐>session‐>set_flashdata('message', 'Satu data realisasi berhasil diupdate!'); redirect('palyja_realisasi'); } else { $this‐>load‐>view('palyja/realisasi_form', $data); } } /** * Proses validasi data target agar tidak ada duplikasi data */ function valid_entry() { $tahun = $this‐>input‐>post('id_tahun'); $bulan = $this‐>input‐>post('id_bulan'); if ($this‐>Palyjareal_model‐>valid_entry($tahun, $bulan) == FALSE) { $this‐>form_validation‐>set_message('valid_entry', 'Data sudah tercatat pada tabel. Silahkan ulangi lagi'); return FALSE; } else { return TRUE; }
} } // END Palyja_realisasi Class /* End of file palyja_realisasi.php */ /* Location: ./system/application/controllers/palyja_realisasi.php */
8.6. palyja_rekap.php
<?php /** * Palyja_rekap Class */ class Palyja_rekap extends Controller { /** * Constructor, load Palyjarekap_model */ function Palyja_rekap() { parent::Controller(); $this‐>load‐>model('Palyjarekap_model', '', TRUE); $this‐>load‐>model('Tahun_model', '', TRUE); $this‐>load‐>model('Triwulan_model', '', TRUE); // Load to_excelp_pi plugins //$this‐>load‐>plugin('to_excelp'); } /** * Inisialisasi variabel untuk $title(untuk id element <body>) */ var $title = 'Monitoring PAM JAYA ‐ PALYJA'; /** * Memeriksa user state, jika dalam keadaan login akan menjalankan fungsi main() * Jika tidak akan meredirect ke halaman login */ function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>main(); } else { redirect('login'); } } /** * Menampilkan halaman utama rekap palyja */ function main() { $data['title'] = $this‐>title; $data['h2_title'] = 'REKAPITULASI PALYJA'; $data['main_view'] = 'palyja/rekap'; $data['form_action'] = site_url('palyja_rekap/get_rekap'); // data tahun untuk dropdown menu $query_tahun = $this‐>Tahun_model‐>get_tahun();
$tahun = $query_tahun‐>result(); $num_rows = $query_tahun‐>num_rows(); if ($num_rows > 0) { foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } } else { $data['options_tahun'][''] = ''; } // data triwulan untuk dropdown menu $query_triwulan = $this‐>Triwulan_model‐>get_triwulan(); $triwulan = $query_triwulan‐>result(); $num_rows = $query_triwulan‐>num_rows(); if ($num_rows > 0) { foreach($triwulan as $row) { $data['options_triwulan'][$row‐>id_triwulan] = $row‐>triwulan; } } else { $data['options_triwulan'][''] = ''; } $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); // Load view $this‐>load‐>view('palyja/rekap', $data); } /** * Mendapatkan data rekap dari database, kemudian menampilkan di halaman */ function get_rekap($id_tahun = 0, $id_triwulan = 0) { $data['title'] = $this‐>title; $data['h2_title'] = 'REKAPITULASI PALYJA'; $data['main_view'] = 'palyja/rekap'; $data['form_action'] = site_url('palyja_rekap/get_rekap'); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data triwulan untuk dropdown menu $triwulan = $this‐>Triwulan_model‐>get_triwulan()‐>result(); foreach($triwulan as $row) {
$data['options_triwulan'][$row‐>id_triwulan] = $row‐>triwulan; } // untuk tahun yang terpilih $data['default']['id_tahun'] = $id_tahun; // untuk triwulan yang terpilih $data['default']['id_triwulan'] = $id_triwulan; // cek input parameter fungsi get_rekap() if ( !($id_tahun == 0) && !($id_triwulan == 0) ) { // data tahun, untuk tahun terpilih $thn = $this‐>Tahun_model‐>get_tahun_by_id($id_tahun); $data['active_year'] = $thn‐>tahun; // data triwulan, untuk triwulan terpilih $trw = $this‐>Triwulan_model‐>get_triwulan_by_id($id_triwulan); $data['active_triwulan'] = $trw‐>triwulan; // load data from database $rekap = $this‐>Palyjarekap_model‐>get_rekap($id_tahun, $id_triwulan)‐>result(); $num_rows = $this‐>Palyjarekap_model‐>get_rekap($id_tahun, $id_triwulan)‐>num_rows(); // jika query > 0 if ($num_rows > 0) { if ($id_triwulan == 1) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0;
foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐
>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("palyja_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('palyja/rekap', $data); } else if ($id_triwulan == 2) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air
Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100;
$persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("palyja_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('palyja/rekap', $data); }
else if ($id_triwulan == 3) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) {
$persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("palyja_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR>
2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('palyja/rekap', $data); } else if ($id_triwulan == 4) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",",".");
$distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } }
$data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("palyja_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('palyja/rekap', $data); } else if ($id_triwulan == 5) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>');
$i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); }
else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("palyja_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('palyja','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('palyja/rekap', $data); } else { $this‐>session‐>set_flashdata('message', 'Data tidak ditemukan!'); redirect('palyja_rekap'); } } // jika query < 0 else { $this‐>session‐>set_flashdata('message', 'Data tidak ditemukan!'); redirect('palyja_rekap'); } }
else { $id_tahun = $this‐>input‐>post('id_tahun'); $id_triwulan = $this‐>input‐>post('id_triwulan'); if ( !($id_tahun == 0) && !($id_triwulan == 0) ) { redirect("palyja_rekap/get_rekap/$id_tahun/$id_triwulan"); } else { redirect('palyja_rekap'); } } } // Download excel function download($id_tahun, $id_triwulan) { $file_name = 'Rekapitulasi_Air_Palyja'; $query = $this‐>Palyjarekap_model‐>get_rekap($id_tahun, $id_triwulan); $data['query'] = $query; $this‐>load‐>view('to_excelp',$data); //to_excel($query, $file_name); } } // END Palyja_rekap Class /* End of file palyja_rekap.php */ /* Location: ./system/application/controllers/palyja_rekap.php */
8.7. aetra.php
<?php /** * Aetra Class */ class Aetra extends Controller { /** * Constructor */ function Aetra() { parent::Controller(); } function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>load‐>view('aetra/aetra'); } else { redirect('login'); } } } // END Aetra Class /* End of file aetra.php */
/* Location: ./system/application/controllers/aetra.php */
8.8. aetra_target.php
<?php /** * Aetra_target Class */ class Aetra_target extends Controller { /** * Constructor, load Aetratgt_model */ function Aetra_target() { parent::Controller(); $this‐>load‐>model('Aetratgt_model', '', TRUE); $this‐>load‐>model('Tahun_model', '', TRUE); $this‐>load‐>model('Bulan_model', '', TRUE); } /** * Inisialisasi variabel untuk $title(untuk id element <body>), dan * $limit untuk membatasi penampilan data di tabel */ var $limit = 12; var $title = 'Monitoring PAM JAYA ‐ AETRA'; /** * Memeriksa user state, jika dalam keadaan login akan menjalankan fungsi get_all() * Jika tidak akan meredirect ke halaman login */ function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>get_all(); } else { redirect('login'); } } /** * Mendapatkan semua data target di database dan menampilkannya di tabel */ function get_all() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET AETRA'; $data['main_view'] = 'aetra/target'; /* Offset */ $uri_segment = 3; $offset = $this‐>uri‐>segment($uri_segment); /* Load data */ $targets = $this‐>Aetratgt_model‐>get_all($this‐>limit, $offset); $num_rows = $this‐>Aetratgt_model‐>count_all();
if ($num_rows > 0) { /* Generate pagination */ $config['base_url'] = site_url('aetra_target/get_all'); $config['total_rows'] = $num_rows; $config['per_page'] = $this‐>limit; $config['uri_segment'] = $uri_segment; $this‐>pagination‐>initialize($config); $data['pagination'] = $this‐>pagination‐>create_links(); /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array( 'table_open' => '<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start' => '<tr class="zebra">', 'row_alt_end' => '</tr>' ); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('No', '<CENTER>Tahun</CENTER>', '<CENTER>Bulan</CENTER>', '<CENTER>Air Baku<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>UFW/NRW<BR>(%)</CENTER>', '<CENTER>Actions</CENTER>'); $i = 0 + $offset; foreach ($targets as $row) { $baku = number_format($row‐>air_baku,0,",","."); $produksi = number_format($row‐>air_produksi,0,",","."); $distribusi = number_format($row‐>air_distribusi,0,",","."); $terjual = number_format($row‐>air_terjual,0,",","."); $this‐>table‐>add_row(++$i, $row‐>tahun, $row‐>bulan, $baku, $produksi, $distribusi, $terjual, $row‐>ufw_nrw." %", anchor('aetra_target/update/'.$row‐>id_targetaetra,'update',array('class' => 'update')).' '. anchor('aetra_target/delete/'.$row‐>id_targetaetra,'hapus',array('class'=> 'delete','onclick'=>"return confirm('Anda yakin akan menghapus data ini?')")) );
} $data['table'] = $this‐>table‐>generate(); } else { $data['message'] = 'Tidak ditemukan satupun data target!'; } $data['link'] = array('link_add' => anchor('aetra_target/add/','Tambah data', array('class' => 'add'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); // Load view $this‐>load‐>view('aetra/target', $data); } /** * Menghapus data target dengan ID Target tertentu */ function delete($id_targetaetra) { $this‐>Aetratgt_model‐>delete($id_targetaetra); $this‐>session‐>set_flashdata('message', 'Satu data target berhasil dihapus'); redirect('aetra_target'); } /** * Menampilkan form tambah target */ function add() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET AETRA > Tambah Data'; $data['main_view'] = 'aetra/target_form'; $data['form_action'] = site_url('aetra_target/add_process'); $data['link'] = array('link_back' => anchor('aetra_target','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } $this‐>load‐>view('aetra/target_form', $data); }
/** * Proses tambah data target */ function add_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET AETRA > Tambah Data'; $data['main_view'] = 'aetra/target_form'; $data['form_action'] = site_url('aetra_target/add_process'); $data['link'] = array('link_back' => anchor('aetra_target','Kembali', array('class' =>'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); if ($this‐>form_validation‐>run() == TRUE) { // Save data $target = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'),
'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Aetratgt_model‐>add($target); $this‐>session‐>set_flashdata('message', 'Satu data target berhasil disimpan!'); redirect('aetra_target/add'); } else { $this‐>load‐>view('aetra/target_form', $data); } } /** * Menampilkan form update data target */ function update($id_targetaetra) { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET AETRA > Update'; $data['main_view'] = 'aetra/target_form'; $data['form_action'] = site_url('aetra_target/update_process'); $data['link'] = array('link_back' => anchor('aetra_target','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // cari data dari database $target = $this‐>Aetratgt_model‐>get_target_by_id($id_targetaetra); // buat session untuk menyimpan data primary key (id_targetaetra) $this‐>session‐>set_userdata('id_targetaetra', $target‐>id_targetaetra); /// Data untuk mengisi field2 form $data['default']['id_tahun'] = $target‐>id_tahun;
$data['default']['id_bulan'] = $target‐>id_bulan; $data['default']['air_baku'] = $target‐>air_baku; $data['default']['air_produksi'] = $target‐>air_produksi; $data['default']['air_distribusi'] = $target‐>air_distribusi; $data['default']['air_terjual'] = $target‐>air_terjual; $data['default']['ufw_nrw'] = $target‐>ufw_nrw; $this‐>load‐>view('aetra/target_form', $data); } /** * Proses update data target */ function update_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'TARGET AETRA > Update'; $data['main_view'] = 'aetra/target_form'; $data['form_action'] = site_url('aetra_target/update_process'); $data['link'] = array('link_back' => anchor('aetra_target','kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive');
// jika proses validasi sukses, maka lanjut mengupdate data if ($this‐>form_validation‐>run() == TRUE) { // Save data $target = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Aetratgt_model‐>update($this‐>session‐>userdata('id_targetaetra'), $target); // Set pesan $this‐>session‐>set_flashdata('message', 'Satu data target berhasil diupdate!'); redirect('aetra_target'); } else { $this‐>load‐>view('aetra/target_form', $data); } } /** * Proses validasi data target agar tidak ada duplikasi data */ function valid_entry() { $tahun = $this‐>input‐>post('id_tahun'); $bulan = $this‐>input‐>post('id_bulan'); if ($this‐>Aetratgt_model‐>valid_entry($tahun, $bulan) == FALSE) { $this‐>form_validation‐>set_message('valid_entry', 'Data sudah tercatat pada tabel. Silahkan ulangi lagi'); return FALSE; } else { return TRUE; } } } // END Aetra_target Class /* End of file aetra_target.php */ /* Location: ./system/application/controllers/aetra_target.php */
8.9. aetra_realisasi.php
<?php /** * Aetra_realisasi Class */ class Aetra_realisasi extends Controller { /** * Constructor, load Aetrareal_model */ function Aetra_realisasi() { parent::Controller(); $this‐>load‐>model('Aetrareal_model', '', TRUE); $this‐>load‐>model('Tahun_model', '', TRUE); $this‐>load‐>model('Bulan_model', '', TRUE); } /** * Inisialisasi variabel untuk $title(untuk id element <body>), dan * $limit untuk membatasi penampilan data di tabel */ var $limit = 12; var $title = 'Monitoring PAM JAYA ‐ AETRA'; /** * Memeriksa user state, jika dalam keadaan login akan menjalankan fungsi get_all() * Jika tidak akan meredirect ke halaman login */ function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>get_all(); } else { redirect('login'); } } /** * Mendapatkan semua data target di database dan menampilkannya di tabel */ function get_all() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI AETRA'; $data['main_view'] = 'aetra/realisasi'; /* Offset */ $uri_segment = 3; $offset = $this‐>uri‐>segment($uri_segment); /* Load data */ $reals = $this‐>Aetrareal_model‐>get_all($this‐>limit, $offset); $num_rows = $this‐>Aetrareal_model‐>count_all(); if ($num_rows > 0) { /* Generate pagination */
$config['base_url'] = site_url('aetra_realisasi/get_all'); $config['total_rows'] = $num_rows; $config['per_page'] = $this‐>limit; $config['uri_segment'] = $uri_segment; $this‐>pagination‐>initialize($config); $data['pagination'] = $this‐>pagination‐>create_links(); /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array( 'table_open' => '<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start' => '<tr class="zebra">', 'row_alt_end' => '</tr>' ); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('No', '<CENTER>Tahun</CENTER>', '<CENTER>Bulan</CENTER>', '<CENTER>Air Baku<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>UFW/NRW<BR>(%)</CENTER>', '<CENTER>Actions</CENTER>'); $i = 0 + $offset; foreach ($reals as $row) { $baku = number_format($row‐>air_baku,0,",","."); $produksi = number_format($row‐>air_produksi,0,",","."); $distribusi = number_format($row‐>air_distribusi,0,",","."); $terjual = number_format($row‐>air_terjual,0,",","."); $this‐>table‐>add_row(++$i, $row‐>tahun, $row‐>bulan, $baku, $produksi, $distribusi, $terjual, $row‐>ufw_nrw." %", anchor('aetra_realisasi/update/'.$row‐>id_mtraetra,'update',array('class' => 'update')).' '. anchor('aetra_realisasi/delete/'.$row‐>id_mtraetra,'hapus',array('class'=> 'delete','onclick'=>"return confirm('Anda yakin akan menghapus data ini?')")) ); } $data['table'] = $this‐>table‐>generate(); } else
{ $data['message'] = 'Tidak ditemukan satupun data realisasi!'; } $data['link'] = array('link_add' => anchor('aetra_realisasi/add/','Tambah data', array('class' => 'add'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); // Load view $this‐>load‐>view('aetra/realisasi', $data); } /** * Menghapus data realisasi dengan ID realisasi tertentu */ function delete($id_mtraetra) { $this‐>Aetrareal_model‐>delete($id_mtraetra); $this‐>session‐>set_flashdata('message', 'Satu data realisasi berhasil dihapus'); redirect('aetra_realisasi'); } /** * Menampilkan form tambah realisasi */ function add() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI AETRA > Tambah Data'; $data['main_view'] = 'aetra/realisasi_form'; $data['form_action'] = site_url('aetra_realisasi/add_process'); $data['link'] = array('link_back' => anchor('aetra_realisasi','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } $this‐>load‐>view('aetra/realisasi_form', $data); } /** * Proses tambah data realisasi */
function add_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI AETRA > Tambah Data'; $data['main_view'] = 'aetra/realisasi_form'; $data['form_action'] = site_url('aetra_realisasi/add_process'); $data['link'] = array('link_back' => anchor('aetra_realisasi','Kembali', array('class' =>'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required|callback_valid_entry'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); if ($this‐>form_validation‐>run() == TRUE) { // Save data $realisasi = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'),
'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Aetrareal_model‐>add($realisasi); $this‐>session‐>set_flashdata('message', 'Satu data realisasi berhasil disimpan!'); redirect('aetra_realisasi/add'); } else { $this‐>load‐>view('aetra/realisasi_form', $data); } } /** * Menampilkan form update data realisasi */ function update($id_mtraetra) { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI AETRA > Update'; $data['main_view'] = 'aetra/realisasi_form'; $data['form_action'] = site_url('aetra_realisasi/update_process'); $data['link'] = array('link_back' => anchor('aetra_realisasi','Kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // cari data dari database $realisasi = $this‐>Aetrareal_model‐>get_realisasi_by_id($id_mtraetra); // buat session untuk menyimpan data primary key (id_mtraetra) $this‐>session‐>set_userdata('id_mtraetra', $realisasi‐>id_mtraetra); // Data untuk mengisi field2 form $data['default']['id_tahun'] = $realisasi‐>id_tahun; $data['default']['id_bulan'] = $realisasi‐>id_bulan; $data['default']['air_baku'] = $realisasi‐>air_baku;
$data['default']['air_produksi'] = $realisasi‐>air_produksi; $data['default']['air_distribusi'] = $realisasi‐>air_distribusi; $data['default']['air_terjual'] = $realisasi‐>air_terjual; $data['default']['ufw_nrw'] = $realisasi‐>ufw_nrw; $this‐>load‐>view('aetra/realisasi_form', $data); } /** * Proses update data realisasi */ function update_process() { $data['title'] = $this‐>title; $data['h2_title'] = 'REALISASI AETRA > Update'; $data['main_view'] = 'aetra/realisasi_form'; $data['form_action'] = site_url('aetra_realisasi/update_process'); $data['link'] = array('link_back' => anchor('aetra_realisasi','kembali', array('class' => 'back'))); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data bulan untuk dropdown menu $bulan = $this‐>Bulan_model‐>get_bulan()‐>result(); foreach($bulan as $row) { $data['options_bulan'][$row‐>id_bulan] = $row‐>bulan; } // Set validation rules $this‐>form_validation‐>set_rules('id_tahun', 'Tahun', 'required'); $this‐>form_validation‐>set_rules('id_bulan', 'Bulan', 'required'); $this‐>form_validation‐>set_rules('air_baku', 'Air Baku', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_produksi', 'Air Produksi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_distribusi', 'Air Terdistribusi', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('air_terjual', 'Air Terjual', 'required|numeric|is_natural'); $this‐>form_validation‐>set_rules('ufw_nrw', 'UFW/NRW', 'required|numeric|numeric_positive'); // jika proses validasi sukses, maka lanjut mengupdate data if ($this‐>form_validation‐>run() == TRUE)
{ // Save data $realisasi = array('id_tahun' => $this‐>input‐>post('id_tahun'), 'id_bulan' => $this‐>input‐>post('id_bulan'), 'air_baku' => $this‐>input‐>post('air_baku'), 'air_produksi' => $this‐>input‐>post('air_produksi'), 'air_distribusi'=> $this‐>input‐>post('air_distribusi'), 'air_terjual' => $this‐>input‐>post('air_terjual'), 'ufw_nrw' => $this‐>input‐>post('ufw_nrw')); $this‐>Aetrareal_model‐>update($this‐>session‐>userdata('id_mtraetra'), $realisasi); // Set pesan $this‐>session‐>set_flashdata('message', 'Satu data realisasi berhasil diupdate!'); redirect('aetra_realisasi'); } else { $this‐>load‐>view('aetra/realisasi_form', $data); } } /** * Proses validasi data target agar tidak ada duplikasi data */ function valid_entry() { $tahun = $this‐>input‐>post('id_tahun'); $bulan = $this‐>input‐>post('id_bulan'); if ($this‐>Aetrareal_model‐>valid_entry($tahun, $bulan) == FALSE) { $this‐>form_validation‐>set_message('valid_entry', 'Data sudah tercatat pada tabel. Silahkan ulangi lagi'); return FALSE; } else { return TRUE; } } } // END Aetra_realisasi Class /* End of file aetra_realisasi.php */ /* Location: ./system/application/controllers/aetra_realisasi.php */
8.10. aetra_rekap.php
<?php /** * Aetra_rekap Class */ class Aetra_rekap extends Controller { /** * Constructor, load Aetrarekap_model */ function Aetra_rekap() { parent::Controller(); $this‐>load‐>model('Aetrarekap_model', '', TRUE); $this‐>load‐>model('Tahun_model', '', TRUE); $this‐>load‐>model('Triwulan_model', '', TRUE); // Load to_excela_pi plugins //$this‐>load‐>plugin('to_excela'); } /** * Inisialisasi variabel untuk $title(untuk id element <body>) */ var $title = 'Monitoring PAM JAYA ‐ AETRA'; /** * Memeriksa user state, jika dalam keadaan login akan menjalankan fungsi main() * Jika tidak akan meredirect ke halaman login */ function index() { if ($this‐>session‐>userdata('login') == TRUE) { $this‐>main(); } else { redirect('login'); } } /** * Menampilkan halaman utama rekap aetra */ function main() { $data['title'] = $this‐>title; $data['h2_title'] = 'REKAPITULASI AETRA'; $data['main_view'] = 'aetra/rekap'; $data['form_action'] = site_url('aetra_rekap/get_rekap'); // data tahun untuk dropdown menu $query_tahun = $this‐>Tahun_model‐>get_tahun(); $tahun = $query_tahun‐>result(); $num_rows = $query_tahun‐>num_rows(); if ($num_rows > 0) { foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; }
} else { $data['options_tahun'][''] = ''; } // data triwulan untuk dropdown menu $query_triwulan = $this‐>Triwulan_model‐>get_triwulan(); $triwulan = $query_triwulan‐>result(); $num_rows = $query_triwulan‐>num_rows(); if ($num_rows > 0) { foreach($triwulan as $row) { $data['options_triwulan'][$row‐>id_triwulan] = $row‐>triwulan; } } else { $data['options_triwulan'][''] = ''; } $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); // Load view $this‐>load‐>view('aetra/rekap', $data); } /** * Mendapatkan data rekap dari database, kemudian menampilkan di halaman */ function get_rekap($id_tahun = 0, $id_triwulan = 0) { $data['title'] = $this‐>title; $data['h2_title'] = 'REKAPITULASI AETRA'; $data['main_view'] = 'aetra/rekap'; $data['form_action'] = site_url('aetra_rekap/get_rekap'); // data tahun untuk dropdown menu $tahun = $this‐>Tahun_model‐>get_tahun()‐>result(); foreach($tahun as $row) { $data['options_tahun'][$row‐>id_tahun] = $row‐>tahun; } // data triwulan untuk dropdown menu $triwulan = $this‐>Triwulan_model‐>get_triwulan()‐>result(); foreach($triwulan as $row) { $data['options_triwulan'][$row‐>id_triwulan] = $row‐>triwulan; } // untuk tahun yang terpilih $data['default']['id_tahun'] = $id_tahun; // untuk triwulan yang terpilih $data['default']['id_triwulan'] = $id_triwulan; // cek input parameter fungsi get_rekap()
if ( !($id_tahun == 0) && !($id_triwulan == 0) ) { // data tahun, untuk tahun terpilih $thn = $this‐>Tahun_model‐>get_tahun_by_id($id_tahun); $data['active_year'] = $thn‐>tahun; // data triwulan, untuk triwulan terpilih $trw = $this‐>Triwulan_model‐>get_triwulan_by_id($id_triwulan); $data['active_triwulan'] = $trw‐>triwulan; // load data from database $rekap = $this‐>Aetrarekap_model‐>get_rekap($id_tahun, $id_triwulan)‐>result(); $num_rows = $this‐>Aetrarekap_model‐>get_rekap($id_tahun, $id_triwulan)‐>num_rows(); // jika query > 0 if ($num_rows > 0) { if ($id_triwulan == 1) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",",".");
$produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep,
$distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("aetra_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('aetra/rekap', $data); } else if ($id_triwulan == 2) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air
Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t,
$baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("aetra_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('aetra/rekap', $data); } else if ($id_triwulan == 3) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl);
/*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2);
$persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("aetra_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra');
// Load view $this‐>load‐>view('aetra/rekap', $data); } else if ($id_triwulan == 4) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",","."); $produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",",".");
if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep, $distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("aetra_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2>
Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('aetra/rekap', $data); } else if ($id_triwulan == 5) { /* Table */ /*Set table template for alternating row 'zebra'*/ $tmpl = array('table_open'=>'<table border="1" cellpadding="0" cellspacing="0">', 'row_alt_start'=>'<tr class="zebra">', 'row_alt_end'=>'</tr>'); $this‐>table‐>set_template($tmpl); /*Set table heading */ $this‐>table‐>set_empty(" "); $this‐>table‐>set_heading('<CENTER>Bulan</CENTER>', '<CENTER>Air Baku Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Baku Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Produksi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Produksi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terdistribusi Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terdistribusi Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>', '<CENTER>Air Terjual Target<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Air Terjual Realisasi<BR>(M<sup>3</sup>)</CENTER>', '<CENTER>Persentase Pencapaian<BR>(%)</CENTER>'); $i = 0; foreach ($rekap as $row) { $baku_t = number_format($row‐>Air_Baku_Target,0,",","."); $baku_r = number_format($row‐>Air_Baku_Realisasi,0,",",".");
$produksi_t = number_format($row‐>Air_Produksi_Target,0,",","."); $produksi_r = number_format($row‐>Air_Produksi_Realisasi,0,",","."); $distribusi_t = number_format($row‐>Air_Terdistribusi_Target,0,",","."); $distribusi_r = number_format($row‐>Air_Terdistribusi_Realisasi,0,",","."); $terjual_t = number_format($row‐>Air_Terjual_Target,0,",","."); $terjual_r = number_format($row‐>Air_Terjual_Realisasi,0,",","."); if (($row‐>Air_Baku_Target!=0) && ($row‐>Air_Produksi_Target!=0) && ($row‐>Air_Terdistribusi_Target!=0) && ($row‐>Air_Terjual_Target!=0)) { $persen1 = ($row‐>Air_Baku_Realisasi/$row‐>Air_Baku_Target)*100; $persen_baku = number_format($persen1, 2); $persen2 = ($row‐>Air_Produksi_Realisasi/$row‐>Air_Produksi_Target)*100; $persen_produksi = number_format($persen2, 2); $persen3 = ($row‐>Air_Terdistribusi_Realisasi/$row‐>Air_Terdistribusi_Target)*100; $persen_distribusi = number_format($persen3, 2); $persen4 = ($row‐>Air_Terjual_Realisasi/$row‐>Air_Terjual_Target)*100; $persen_terjual = number_format($persen4, 2); $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $persen_baku." %", $produksi_t, $produksi_r, $persen_produksi." %", $distribusi_t, $distribusi_r, $persen_distribusi." %", $terjual_t, $terjual_r, $persen_terjual." %"); } else if (($row‐>Air_Baku_Target == 0) && ($row‐>Air_Produksi_Target == 0) && ($row‐>Air_Terdistribusi_Target == 0) && ($row‐>Air_Terjual_Target == 0)) { $exep = "0"; $this‐>table‐>add_row($row‐>Bulan, $baku_t, $baku_r, $exep, $produksi_t, $produksi_r, $exep,
$distribusi_t, $distribusi_r, $exep, $terjual_t, $terjual_r, $exep); } } $data['table'] = $this‐>table‐>generate(); $data['link'] = array('link_add' => anchor("aetra_rekap/download/$id_tahun/$id_triwulan",'Download EXCEL', array('class' => 'excel'))); $data['link2'] = array('link_back' => anchor('aetra','Kembali', array('class' => 'back'))); $data['info'] = ('<BR><BR><H2> ‐‐ INFORMASI & KETERANGAN ‐‐</H2> Persentase Pencapaian = (Realisasi/Target**) x 100%<BR> 1. Persentase < 100% : Target tidak tercapai, ada denda*<BR> 2. Persentase >= 100% : Target tercapai, tidak ada denda<BR> * Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR> ** Besar nilai target ditentukan langsung setiap bulan berdasarkan kesepakatan antara PDAM dan Mitra'); // Load view $this‐>load‐>view('aetra/rekap', $data); } else { $this‐>session‐>set_flashdata('message', 'Data tidak ditemukan!'); redirect('aetra_rekap'); } } // jika query < 0 else { $this‐>session‐>set_flashdata('message', 'Data tidak ditemukan!'); redirect('aetra_rekap'); } } else { $id_tahun = $this‐>input‐>post('id_tahun'); $id_triwulan = $this‐>input‐>post('id_triwulan'); if ( !($id_tahun == 0) && !($id_triwulan == 0) ) {
redirect("aetra_rekap/get_rekap/$id_tahun/$id_triwulan"); } else { redirect('aetra_rekap'); } } } // Download excel function download($id_tahun, $id_triwulan) { $file_name = 'Rekapitulasi_Air_Aetra'; $query = $this‐>Aetrarekap_model‐>get_rekap($id_tahun, $id_triwulan); $data['query'] = $query; $this‐>load‐>view('to_excela',$data); //to_excel($query, $file_name); } } // END Aetra_rekap Class /* End of file aetra_rekap.php */ /* Location: ./system/application/controllers/aetra_rekap.php */