APLIKASI MONITORING PRODUKTIVITAS KINERJA MITRA ...

240
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

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

 

 

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).

 

40  

Gambar 2.7 Contoh Sequence Diagram (Sumber: Rumbaugh, et al., 2006: 700)

 

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.

 

58  

Gambar 4.1 Use Case Diagram Aplikasi Monitoring

 

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 

63  

Gambar 4.4 Activity Diagram Realisasi Aetra 

64  

Gambar 4.5 Activity Diagram Rekapitulasi Aetra

 

65  

 

Gambar 4.6 Activity Diagram Evaluasi Aetra

66  

Gambar 4.7 Activity Diagram Target Palyja  

67  

 

Gambar 4.8 Activity Diagram Realisasi Palyja

68  

Gambar 4.9 Activity Diagram Rekapitulasi Palyja

 

69  

 

Gambar 4.10 Activity Diagram Evaluasi Palyja

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 

71  

Gambar 4.12 Sequence Diagram Realisasi Aetra  

72  

Gambar 4.13 Sequence Diagram Rekapitulasi Aetra

 

73  

 

Gambar 4.14 Sequence Diagram Evaluasi Aetra

74  

Gambar 4.15 Sequence Diagram Target Palyja  

75  

 

Gambar 4.16 Sequence Diagram Realisasi Palyja

76  

Gambar 4.17 Sequence Diagram Rekapitulasi Palyja

 

77  

Gambar 4.18 Sequence Diagram Evaluasi Palyja

 

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

 

92  

Gambar 4.28 Halaman Tambah Data Target Aetra

Gambar 4.29 Halaman Update Data 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

 

94  

Gambar 4.31 Halaman Tambah Data Realisasi Aetra

Gambar 4.32 Halaman Update Data 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

 

96  

Gambar 4.34 Download File 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

 

100  

Gambar 4.38 Halaman Tambah Data Target Palyja

Gambar 4.39 Halaman Update Data 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

 

104  

Gambar 4.44 Download File 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.

 

110  

Gambar 4.52 target.php untuk view bagian Aetra

Gambar 4.53 target.php untuk view bagian Palyja

 

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.

 

116  

Gambar 4.62 aetrarekap_model.php

Gambar 4.63 palyjarekap_model.php

 

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)

 

127  

Gambar 4.76 Login yang salah

Gambar 4.77 Login tanpa username dan password

 

128  

Gambar 4.78 Tampil data target Palyja

Gambar 4.79 Tambah target Palyja data baru

 

129  

Gambar 4.80 Tambah target Palyja data sudah tercatat

Gambar 4.81 Tambah target Palyja data kosong

 

130  

Gambar 4.82 Update data target Palyja

Gambar 4.83 Hapus data target Palyja

 

131  

Gambar 4.84 Tampil data realisasi Palyja

Gambar 4.85 Tambah realisasi Palyja data baru

 

132  

Gambar 4.86 Tambah realisasi Palyja data sudah tercatat

Gambar 4.87 Tambah realisasi Palyja data kosong

 

133  

Gambar 4.88 Update data realisasi Palyja

Gambar 4.89 Hapus data realisasi Palyja

 

134  

Gambar 4.90 Tampil rekapitulasi Palyja

Gambar 4.91 Tampil grafik evaluasi Palyja

 

135  

Gambar 4.92 Tampil data target Aetra

Gambar 4.93 Tambah target Aetra data baru

 

136  

Gambar 4.94 Tambah target Aetra data sudah tercatat

Gambar 4.95 Tambah target Aetra data kosong

 

137  

Gambar 4.96 Update data target Aetra

Gambar 4.97 Hapus data target Aetra

 

138  

Gambar 4.98 Tampil data realisasi Aetra

Gambar 4.99 Tambah realisasi Aetra data baru

 

139  

Gambar 4.100 Tambah realisasi Aetra data sudah tercatat

Gambar 4.101 Tambah realisasi Aetra data kosong

 

140  

Gambar 4.102 Update data realisasi Aetra

Gambar 4.103 Hapus data realisasi Aetra

 

141  

Gambar 4.104 Tampil rekapitulasi Aetra

Gambar 4.105 Tampil grafik evaluasi Aetra

 

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

 

148  

Gambar 4.109 Web browser tanpa pemutar Flash

Gambar 4.110 Gangguan pada web server

 

149  

Gambar 4.111 Aplikasi berjalan pada web server versi tahun 2007

Gambar 4.112 Restart pada web server

 

150  

Gambar 4.113 Waktu untuk memproses data

Gambar 4.114 Memory resource yang terpakai

 

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.

 

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

 

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.

 

Lampiran 6

Wawancara Akhir Penelitian dan Seusai Pengujian Aplikasi

B-2

 

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.

 

Lampiran 7

Kode Program

C-1

 

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("&nbsp;");       $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')).'&nbsp;'.                   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("&nbsp;");       $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')).'&nbsp;'.                   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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR> 

 

 

         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");       $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')).'&nbsp;'.                   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("&nbsp;");       $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')).'&nbsp;'.                   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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2> 

         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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("&nbsp;");           $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>&nbsp;&nbsp;&nbsp;&nbsp;‐‐ INFORMASI & KETERANGAN ‐‐</H2>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persentase Pencapaian = (Realisasi/Target**) x 100%<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Persentase < 100% &nbsp;&nbsp;: Target tidak tercapai, ada denda*<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Persentase >= 100% : Target tercapai, tidak ada denda<BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Denda merupakan kewenangan PDAM dan ditentukan oleh PDAM<BR><BR>          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;** 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 */