bab iii pembahasan - repository.bsi.ac.id...aktifitas dan efesiensi organisasi sesuai visi dan misi...
TRANSCRIPT
18
BAB III
PEMBAHASAN
3.1 Analisa Kebutuhan Software
A. Tinjauan Perusahaan
Dalam pelaksanaan kegiatan rutin di PT Santika Liem Bogor terdapat aturan yang
ditentukan, dalam hal ini struktur organisasi yang menggambarkan garis perintah dan
penerimaan perintah serta fungsi-fungsi pelaksanaan tersebut sehingga semua menjadi
lancar. Penulis akan menerangkan sejarah dan struktur organisasi di tempat penulis
mengadakan riset untuk pembuatan Tugas Akhir sebagai berikut :
1. Sejarah Perusahaan
PT Santika Liem Bogor adalah perusahaan yang berdiri pada 13 November 2016
dengan nomor Akta 627 yang berkedudukan di kabupaten bogor tepatnya ber alamat di
Jl. Arzimar I No. 30, Bogor 16152. Bergerak dalam bidang Manajemen Konsultan
Akuntansi PT Santika Liem Bogor yang bekerjasama dengan beberapa kantor akuntan
publik yang mana dipimpin oleh Erni Nuraeni sebagai Direktur dan Drs. Arthawan
Santika sebagai komisaris utama. Maksud dan tujuan kegiatan usaha ialah berusaha di
bidang perdagangan, jasa dan konsultasi, pertambangan, pembangunan, industri,
pembengkelan, pertanian, percetakan dan transportasi.
19
2. Struktur Organisasi dan Fungsi
Didalam suatu organisasi perusahaan, manajemen memegang peranan yang
sangat penting karena semua aktifitas dan kegiatan perusahaan untuk mencapai tujuan
harus dilandasi dengan prinsip-prinsip manajemen. Dengan manajemen yang baik
didalam suatu perusahaan maka akan memudahkan pemimpin melakukan proses
perencanaan, pengorganisasian, penggerakan dan pengawasan para pegawai agar
bekerja lebih baik untuk mencapai tujuan perusahaan.
Struktur organisasi merupakan alat perusahaan untuk memastikan tercapainya
aktifitas dan efesiensi organisasi sesuai visi dan misi perusahaan karena dengan adanya
struktur organisasi dalam perusahaan maka pembagian tugas, wewenang dan tanggung
jawab setiap karyawan lebih jelas. Sehubung dengan kegiatan proses Pendapatan Jasa
Audit PT Santika Liem Bogor berikut akan penulis gambarkan dan jelaskan struktur
organisasi PT Santika Liem Bogor.
Sumber : PT Santika Liem Bogor
Gambar III.1
Stuktur Organisasi PT Santika Liem Bogor
20
Berikut ini adalah uraian tugas dan fungsi masing-masing terkait yang terdapat di
PT Santika Liem Bogor, yaitu :
a. Komisaris Utama
Tugas Komisaris Utama
1) Pelaksanaan rapat secara berkala satu bulan sekali.
2) Pemberian nasihat, tanggapan dan/atau persetujuan secara tepat
waktu dan berdasarkan pertimbangan yang memadai.
3) Pemberdayaan komite-komite yang dimiliki Komisaris. Contohnya
Komite Audit, Komite Nominasi dll.
4) Mendorong terlaksananya implementasi good corporate governance.
b. Direktur
Tugas Direktur
1) Menentukan kebijakan tertinggi perusahaan.
2) Bertanggung jawab terhadap keuntungan dan kerugian perusahaan.
3) Mengangkat dan memberhentikan karyawan perusahaan.
4) Memelihara dan mengawasi kekayaan peseroaan terbatas.
5) Bertanggung jawab dalam memimpin dan membina perusahaan
secara efektif dan efesien.
6) Mewakili perusahaan, mengadakan perjanjian-perjanjian,
merencanakan dan mengawasi pelaksanaan tugas personalia yang
bekerja pada perusahaan.
7) Menyusun dan melaksanakan kebijakan umum sesuai dengan
kebijakan RUPS (Rapat Umum Pemegang Saham).
21
8) Menetapkan besarnya deviden perusahaan.
c. Divisi Audit Keuangan Kepatuhan
Tugas Audit Keuangan Kepatuhan
1) Melakukan verifikasi dan pelaksana Anggaran di Bagian Keuangan
pada Biro Perencanaan dan Keuangan.
2) Menganalisa data perusahaan kolega.
3) Membuat Laporan Audit
4) Melakukan pekerjaan cek fisik di lapangan.
d. Divisi Audit Khusus
Tugas Audit Khusus
1) Melalukan pendampingan manakala auditor eksternal masuk
melakukan audit.
2) Melakukan perjanjian kontrak dengan kolega.
3) Melakukan Komunikasi dan Mengkoordinasikan Kantor Akuntan
Publik (KAP) yang akan kerjasama.
4) Mereviu laporan keuangan internal sebelum di submit ke pihak
eksternal.
e. Divisi Accounting
Tugas Akunting
1) Membuat Pembukuan Keuangan Kantor.
2) Melakukan Posting jurnal operasional.
3) Membuat Laporan keuangan.
22
4) Menginput data jurnal akuntansi ke dalam sistem yang dimiliki
perusahaan.
5) Memeriksa dan melakukan verifikasi kelengkapan dokumen yang
berhubungan dengan transaksi keuangan.
6) Rekonsiliasi dan penyesuaian data finansial.
f. Divisi Admin dan Penatausahaan Audit
Tugas Admin dan Penatausahaan Audit
1) Membuat Surat Perjanjian kontrak dan invoice
2) Membuat kelengkapan dokumen Audit
3) Memastikan data di Komputer sama dengan data di fisik
4) Mengarsipkan Semua Dokumen.
B. Proses Bisnis
Adapun didalam menyelesaikan atau menjabarkan sistem yang sedang berjalan di
PT Santika Liem Bogor penulis mencoba menggambarkan dan menggunakan alat bantu
berupa Activity Diagram. Proses bisnis berjalan dijelaskan sebagai berikut :
1. Sistem Proses Pemesanan
Kolega menyepakati penawaran kerja lalu Divisi Audit Khusus menerima
penawaran yang sudah disepakati oleh kedua belah pihak. Kemudian Divisi Audit Khusus
menginformasikan ke Divisi Admin dan Penatausahaan Audit untuk membuat surat
perjanjian kontrak kerja (SPKK) dan invoice uang muka. Lalu Divisi Admin dan
Penatausahaan Audit melakukan membuat SPKK dan Invoice uang muka sesuai
penawaran yang sudah disepakati. Setelah selesai membuat SPKK dan Invoice uang muka
lalu print, setelah data terprint SPKK dan Invoice uang muka lalu dibubuhi materai untuk
23
ditandatangani oleh Direktur. Setelah Direktur menandatangani maka SPKK dan Invoice
uang muka dikirim ke Kolega melalui Email dan Kurir, setelah SPKK dan Invoice uang
muka diterima Kolega melakukan pembayaran untuk proses Audit.
2. Proses Audit dan Pelunasan
Kolega melakukan pembayaran uang muka lalu Divisi Accounting mendapatkan
bukti pembayaran uang muka. Kemudian memberikan salinan bukti masuk pembayaran
dan SPKK yang sudah di tandatangani kolega ke Divisi Audit Keuangan Kepatuhan
sebagai bukti perintah kerja audit keuangan Kolega, lalu Divisi Audit Keuangan
Kepatuhan menyelesaikan pekerjaannya dan menyerahkan Report Audit ke Divisi Audit
Khusus untuk di review. Lalu Divisi Audit Khusus mereview Report Audit sebelum
dikirim ke Kolega, setelah di review Report Audit diserahkan ke Divisi Admin dan
Penatausahaan Audit untuk di buatkan Invoice pelunasan dan Divisi Admin dan
Penatausahaan Audit membuat Invoice pelunasan dengan dibubuhi materai, lalu
diserahkan ke Direktur untuk ditandatangani. Setelah Direktur menandatangani maka
Invoice dan Report Audit dikirim ke Kolega melalui Email dan Kurir, setelah Kolega
menerima Invoice pelunasan dan Report Audit, maka Kolega melakukan pembayaran
pelunasan dan proses audit selesai.
3. Proses Pembuatan Laporan
Divisi Admin dan Penatausahaan Audit membuka rekap invoice, lalu melakukan
rekap invoice uang muka dan pelunasan selama satu tahun. Setelah rekap invoice di buat
maka rekap invoice diserahkan ke Divisi Accounting untuk di jadikan Laporan Keuangan
Perusahaan sebagai bukti pendapatan dan Direktur mendapatkan Laporan Keuangan
Perusahaan untuk di review.
24
act Proses Pemesanan
DirekturDiv isi Admin dan Penatausahaan AuditDiv isi Audit KhususKolega
Mulai
Menyepakati
penawaran kerja
Menerima
penawaran kerja
yang sudah
disepakati
Menginformasikan
kesepakatan untuk
dijadikan SPKK dan
Inv oice uang muka
Menandatangani
SPKK dan Inv oice
uang muka
Mengirimkan SPKK dan
Inv oice uang muka
yang sudah
ditandatangani ke
Kolega melalui emai
dan kurir
Menerima SPKK dan
Inv oice uang muka
Selesai
Membuat SPKK dan
inv oice uang muka
dengan dibubuhi materai
Penggunaan Activity Diagram Data ini dimaksudkan untuk mempermudah
didalam memahami suatu sistem yang terdiri dari beberapa diagram yang menggambarkan
tingkat proses yang terdapat dalam sistem yang digambarkan sebagai berikut :
C. Activity Diagram Sistem Berjalan
1. Activity Diagram Sistem Berjalan Proses Pemesanan
Gambar III.2
Activity Diagram Sistem Berjalan Proses Pemesanan
2. Activity Diagram Sistem Berjalan Proses Audit dan Pelunasan
act Proses Audit (Pelunasan)
Kolega
Membayar uang
muka
DirekturDiv isi Admin dan Penatausahaan AuditDiv isi Audit KhususDiv isi Audit Keuangan KepatuhanDiv isi Accounting
Mulai
Mendapatkan bukti
pembayaran uang
muka
25
act Proses Pembuatan Laporan
DirekturDiv isi AccountingDiv isi Admin dan Penatausahaan Audit
Mulai
Membuka rekapan
inv oice
Gambar III.3
Activity Diagram Sistem Berjalan Proses Audit dan Pelunasan
3. Activity Diagram Sistem Berjalan Proses Pembuatan Laporan
26
Gambar III.4
Activity Diagram Sistem Berjalan Proses Pembuatan Laporan
D. Analisa Kebutuhan
Sesuai judul yang diambil yaitu hanya menyangkup ruang lingkup pembuatan
invoice dan SPKK yang mana sistem pembuatan invoice dan SPKK hanya memiliki satu
aktor yaitu Divisi Admin, dan utuk menyelesaikan atau menjabarkan sistem yang sedang
berjalan secara logis penulis mencoba menggambarkan dan menggunakan alat bantu
berupa Activity Diagram dan diuraikan dengan Use Case beserta Deskripsinya. Analisa
kebutuhan dijelaskan sebagai berikut :
1. Sistem Usulan Proses Pemesanan
Kolega menyepakati penawaran kerja lalu Divisi Audit Khusus menerima
penawaran yang sudah disepakati oleh kedua belah pihak. Kemudian Divisi Audit Khusus
27
menginformasikan ke Divisi Admin dan Penatausahaan Audit untuk membuat surat
perjanjian kontrak kerja (SPKK) dan invoice uang muka. Lalu Divisi Admin dan
Penatausahaan Audit melakukan login sistem untuk membuat SPKK dan Invoice uang
muka setelah login berhasil lalu sistem menampilkan menu utama kemudian memilih
menu SPKK terlebih dahulu maka sistem akan menampilkan form SPKK lalu melakukan
penginputan data sesuai penawaran yang sudah disepakati dan setelah selesai penginputan
data lalu mensubmit data dan sistem akan menampilkan data yang dapat disimpan serta
diprint. Setelah selesai membuat SPKK lalu kembali lagi kemenu utama dan memilih
menu invoice maka sistem akan menampilkan form invoice lalu setelah itu melakukan
penginputan data yang diperlukan setelah selesai menginput data lalu mensubmit data dan
sistem akan akan menampilkan data yang dapat disimpan serta diprint, setelah data
terprint SPKK dan Invoice uang muka lalu dibubuhi materai untuk ditandatangani oleh
Direktur. Setelah Direktur menandatangani maka SPKK dan Invoice uang muka dikirim
ke Kolega melalui Email dan Kurir, setelah SPKK dan Invoice uang muka diterima Kolega
melakukan pembayaran untuk proses Audit.
2. Sistem Usulan Proses Audit dan Pelunasan
Kolega melakukan pembayaran uang muka lalu Divisi Accounting mendapatkan
bukti pembayaran uang muka. Kemudian memberikan salinan bukti masuk pembayaran
dan SPKK yang sudah di tandatangani kolega ke Divisi Audit Keuangan Kepatuhan
sebagai bukti perintah kerja audit keuangan Kolega, lalu Divisi Audit Keuangan
Kepatuhan menyelesaikan pekerjaannya dan menyerahkan Report Audit ke Divisi Audit
Khusus untuk di review. Lalu Divisi Audit Khusus mereview Report Audit sebelum
dikirim ke Kolega, setelah di review Report Audit diserahkan ke Divisi Admin dan
28
Penatausahaan Audit untuk di buatkan Invoice pelunasan dan Divisi Admin dan
Penatausahaan Audit melakukan login sitem maka sistem akan menampilakan menu
utama, kemudian memilih menu invoice maka sistem aka menampilkan form invoice
kemudian mengisi form sesuai data SPKK setelah selesai menginput kemudian
mensubmit data maka sistem akan menampilkan data yang dapat disimpan serta diprint
lalu dibubuhi materai. Setelah selesai diprint dan dibubuhi materai kemudian diserahkan
ke Direktur untuk ditandatangani. Setelah Direktur menandatangani maka Invoice dan
Report Audit dikirim ke Kolega melalui Email dan Kurir, setelah Kolega menerima
Invoice pelunasan dan Report Audit, maka Kolega melakukan pembayaran pelunasan dan
proses audit selesai.
3. Sistem Usulan Proses Pembuatan Laporan
Divisi Admin dan Penatausahaan Audit melakukan login sitem maka sistem akan
menampilkan menu utama kemudian memilih menu laporan maka sistem akan
menampilkan semua rekap SPKK dan invoice kemudian mengklik tombol filter invoice
atau SPKK maka sistem akan menampilkan rekap invoice atau rekap SPKK pertahun
kemudian memilih PDF untuk dijadikan dokumentasi soft copy format PDF dan memilih
print untuk mendokumentasi hard copy, setelah proses dokumentasi dilakukan diserahkan
ke Divisi Accounting untuk di jadikan Laporan Keuangan Perusahaan sebagai bukti
pendapatan dan Direktur mendapatkan Laporan Keuangan Perusahaan untuk di review.
Penggunaan Activity Diagram dan diuraikan dengan Use Case beserta
Deskripsinya ini dimaksudkan untuk mempermudah didalam memahami suatu sistem
yang terdiri dari beberapa diagram yang menggambarkan tingkat proses yang terdapat
dalam sistem yang digambarkan sebagai berikut :
29
uc Use Case Diagram Pendapatan Jasa Audit
Sistem Proses Pendapatan Jasa Audit PT Santika Liem Bogor
Div isi Admin dan
Penatausahaan
Audit
Login
Menu utama Menu SPKK
Menu Inv oice
Rekap Invoice
New Invoice
New SPKK
Rekap SPKK
Form SPKK
Filter
Buat
Print Rekap
Akun Bank
Filter Print Rekap
Div isi Accounting
Direktur
Kolega
Print SPKK
Form InvoiceBuat
List Akun
Bank
Print Invoice
Buat akun
bank
Logout
Profile
Struktur
Organisasi
Visi Misi
«extend»
«include»
«include»
«include»
«extend»
«extend»
«include»«include»
«extend»
«extend»
«include»
«include»
«include»
«extend»
E. Usecase Diagram
Use Case Diagram disini berguna untuk menggambarkan perilaku, prosedur-
prosedur serta pengguna atau aktor yang terlibat pada sistem informasi pembuatan
dokumen pendapatan audit berbasis web pada PT Santika Liem Bogor :
1. Use Case Diagram Pembuatan Dokumen Pendapatan Audit.
Gambar III.5
Use Case Diagram Pendapatan Jasa Audit
Tabel III.1
Deskripsi Use Case Diagram Pendapatan Jasa Audit
Use Case Name Use Case Diagram Pembuatan Dokumen Pendapatan Audit.
30
act Sistem Usulan Proses Pemesanan
Kolega Div isi Audit Khusus Div isi Admin dan Penatausahaan Audit DirekturSistem
Mulai
Menyepakati penawaran
kerja
Menerima penawaran
kerja yang sudah
disepakati
Membuat SPKK dan
inv oice uang muka
Menampilkan menu
utama
Melakukan login sistem
Requirements Admin dapat membuat SPKK, invoice, laporan SPKK dan
laporan invoice.
Goal Admin dapat login, input data SPKK, input data invoice,
membuat laporan SPKK dan membuat laporan invoice.
Pre-Condition Admin telah login.
Post-Condition Admin dapat login, input data SPKK, input data invoice,
membuat laporan SPKK dan membuat laporan invoice.
Failed end
Condition
Admin gagal login.
Primary Actor Admin
Main Flow/Basic
Path
1. Admin memasukkan alamat web.
2. Admin mengisi user dan password.
3. Admin memilih menu SPKK.
4. Admin menginput data.
5. Admin mendapatkan print SPKK.
6. Admin memilih menu invoice.
7. Admin menginput data.
8. Admin mendapatkan print invoice.
9. Admin dapat membuat laporan rekapan SPKK atau invoice.
Invariant -
F. Activity Diagram Sistem Usulan
1. Activity Diagram Sistem Usulan Proses Pemesanan
31
act Sistem Usulan Proses Audit (Pelunasan)
Sistem
Mengaudit keuang
kolega
DirekturDiv isi Admin dan Penatausahaan AuditDiv isi Audit KhususDiv isi Audit Keuangan KepatuhanDiv isi Accounting
Mendapatkan bukti
pembayaran uang
muka
Kolega
Mulai
Membayar uang
muka
Memberikan salinan
bukti pembayaran
masuk dan SPKK
sebagai perintah
kerja
Mendapatkan
perintah kerja
Gambar III.6
Activity Diagram Sistem Usulan Proses Pemesanan
2. Activity Diagram Sistem Usulan Proses Audit dan Pelunasan
32
act Sistem Usulan Proses Pembuatan Laporan
Div isi AccountingDiv isi Admin dan Penatausahaan Audit
Mulai
DirekturSistem
Membuka rekap inv oice
Melakukan login sistem
Menampilkan semua
rekap inv oice
Memampilkan menu
utama
Gambar III.7
Activity Diagram Sistem Usulan Proses Audit dan Pelunasan
3. Activity Diagram Sistem Usulan Proses Pembuatan Laporan
33
sd Sequence Login
Admin
Form Login Menu UtamaCek Validasi
Melakukan Login()
Gambar III.8
Activity Diagram Sistem Usulan Proses Pembuatan Laporan
G. Sequence Diagram
1. Sequence Login
34
sd Sequence SPKK
Admin
New SPKKMenu Utama Sistem Database Sistem Controller Sistem View Rekap SPKK
Memilih New SPKK()
mengambil
jumlah data
dibulan dan
tahun
melalui table
spkk()
pembuatan nomor
Gambar III.9
Sequence Diagram Login
2. Sequence SPKK
35
sd Sequence Inv oice
Admin
Menu Utama New Inv oice Rekap Inv oiceSistem Database Sistem Controller Sistem View Ajax
mengambil
jumlah data
dibulan dan
tahun melalui
table spkk()
mengambil
semua data
Memilih new invoice()
Gambar III.10
Sequence Diagram SPKK
3. Sequence Invoice
36
deployment Deployment Diagram Web
Web Serv erDatabase Serv er
Serv er
{Apache
2.4.4.41}
MySQL
Database
{santika}
Application Serv er
Application
{PHP
7.3.12}
Xampp
control
panel
Xampp
control
panel
Gambar III.11
Sequence Diagram Invoice
H. Deployment Diagram
37
Gambar III.12
Deployment Diagram PT Santika Liem Bogor
3.2. Desain
A. Struktur Navigasi
38
class Class Model
Login_model
Bank_model
- id
- order
- table
+ delete(): var
CI_Model
Gambar III.13
Struktur Navigasi
B. Class Diagram
1. Class Diagram Model
39
Gambar III.14
Class Diagram Model
C. Spesifikasi File
Untuk pembuatan spesifikasi file dilihat dari database yang dibuat. Nama database
yang dibuat adalah santika dengan tabel login, spkk, invoice, dan bank.
40
1. Spesifikasi File Data Login
Nama Database : santika
Nama Tabel : login
Fungsi File : Masuk ke menu utama
Tipe File : File Login
Akses File : Random
Panjang Record : 321
Kunci Field : id_admin
Tabel III.2
Spesifikasi File Data Login
No Elemen Data Akronim Tipe Data Panjang Keterangan
1 User Id id_admin Int 2 Primary Key
2 Nama User username Varchar 32
3 Password password Varchar 255
4 Nama nama Varchar 32
2. Spesifikasi File Data SPKK
Nama Database : santika
Nama Tabel : spkk
Fungsi File : Membuat SPKK
Tipe File : File SPKK
Akses File : Random
41
Panjang Record : 313
Kunci Field : id_spkk
Tabel III.3
Spesifikasi Data SPKK
No Elemen Data Akronim Tipe Data Panjang Keterangan
1 Id SPKK id_spkk Int 4 Primary Key
2 No SPKK no_spkk Varchar 20
3 Nama Nama_pihak_1 Varchar 55
4 Jabatan jabatan_pihak_1 Varchar 32
5 Alamat alamat_pihak_1 Varchar 100
6 Nama Perusahaan perusahaan_pihak_1 Varchar 100
7 Tanggal SPKK tanggal_spkk Date
8 Tahun Buku tahun_buku Date
9 Jenis Bayar jenis_bayar Int 1
10 Jumlah Bayar jumlah_bayar Double
11 Status status Int 1
12 PPN ppn Double
13 Pph 23 pph_23 Double
14 Total Bayar total_bayar Double
15 Tempat TTD tempat_ttd Enum
3. Spesifikasi File Data Invoice
42
Nama Database : santika
Nama Tabel : invoice
Fungsi File : Membuat Invoice
Tipe File : File Invoice
Akses File : Random
Panjang Record : 30
Kunci Field : id_invoice
Tabel III.4
Spesifikasi Data Invoice
No Elemen Data Akronim Tipe Data Panjang Keterangan
1 Id Invoice id_invoice Int 4 Primary Key
2 Uraian uraian Enum
3 No Invoice no_invoice Varchar 20
4 Tanggal Invoice tanggal_invoice Date
5 Id SPKK id_spkk_invoice Int 4 Foreign Key
6 Id Bank id_bank_invoice Int 2 Foreign Key
4. Spesifikasi File Data Bank
Nama Database : santika
Nama Tabel : bank
Fungsi File : Membuat data rekening bank
43
Tipe File : File Bank
Akses File : Random
Panjang Record : 141
Kunci Field : id_bank
Tabel III.5
Spesifikasi Data Bank
No Elemen Data Akronim Tipe Data Panjang Keterangan
1 Id Bank id_bank Int 2 Primary Key
2 Nama Bank nama_bank Varchar 55
3 Nomor Rekening nomor_rekening Varchar 20
4 Cabang cabang Varchar 32
5 Atas Nama atas_nama Varchar 32
D. User Interface
1. Halaman Menu Utama Web PT Santika Liem Bogor
44
Halaman menu utama merupakan halaman utama web PT Santika Liem Bogor,
yang dimana dihalaman menu utama ini bisa melihat beberapa keterangan yang di berikan
seperti : Alamat, Beberapa Menu, Quotes, dan Tentang PT Santika Liem Bogor.
Gambar III.16
User Interface Menu Utama Web
2. Halaman Login
45
Pada halaman login ini Admin dapat melakukan login ke dalam web menu
utama.
Gambar III.17
User Interface Login
3. Halaman New SPKK
46
Pada halaman new SPKK ini Admin dapat melakukan penginputan data.
Gambar III.18
User Interface New SPKK
4. Halaman Rekap SPKK
47
Pada halaman rekap SPKK Admin dapat melihat, mengedit dan membatalkan
SPKK yang sudah tersubmit.
Gambar III.19
User Interface Rekap SPKK
5. Halaman PDF SPKK
Pada halaman ini Admin dapat menyimpan dan mencetak SPKK.
Gambar III.20
User Interface PDF SPKK
6. Halaman New Invoice
48
Pada halaman ini Admin dapat melakukan penginputan data.
Gambar III.21
User Interface New Invoice
7. Halaman Rekap Invoice
Pada halaman rekap invoice Admin dapat melihat, mengedit dan membatalkan
invoice yang sudah tersubmit.
Gambar III.22
User Interface Rekap Invoice
8. Halaman Rekap Invoice
49
Pada halaman ini Admin dapat menyimpan dan mencetak invoice .
Gambar III.23
User Interface PDF Invoice
9. Halaman Filter
Pada halaman ini Admin dapat memisahkan nama perusahaan kolega atau tanggal
yang dapat menampilkan list filter dan dapat mencetak.
Gambar III.24
User Interface Form Filter
50
Gambar III.25
User Interface List Filter
Gambar III.26
User Interface Print Filter
51
Gambar III.27
User Interface Form Laporan
Gambar III.28
User Interface Form Pembayaran
52
3.3. Implementasi
A. Code
1. Code Igniter
a. Halaman Utama Web
<div class="container">
<div class="responsive">
<div class="gallery">
<div class="row">
<div class="col-md">
<a target="_blank" href="<?php echo
base_url('img/0_home.jpeg') ?>">
<img class="img-fluid" src="<?php echo
base_url('img/0_home.jpeg') ?>">
</a>
</div>
<div class="col-md">
<a target="_blank" href="<?php echo
base_url('img/1_home.jpeg') ?>">
<img class="img-fluid" src="<?php echo
base_url('img/1_home.jpeg') ?>">
</a>
</div>
53
<div class="col-md">
<a target="_blank" href="<?php echo
base_url('img/2_home.jpeg') ?>">
<img class="img-fluid" src="<?php echo
base_url('img/2_home.jpeg') ?>">
</a>
</div>
</div>
</div>
</div>
<br>
<br>
<div class="profil mx-5">
<h1 class="text-center"> PT Santika Liem Bogor </h1>
<p class="text-justify">
PT Santika Liem Bogor adalah perusahaan yang berdiri pada 13
November 2016 dengan nomor Akta 627 yang berkedudukan di kabupaten
bogor tepatnya ber alamat di Jl. Arzimar I No. 30, Bogor 16152. Bergerak
dalam bidang Manajemen Konsultan Akuntansi PT Santika Liem Bogor
yang bekerjasama dengan beberapa kantor akuntan publik yang mana
dipimpin oleh Erni Nuraeni sebagai Direktur dan Drs. Arthawan Santika
54
sebagai komisaris utama. Maksud dan tujuan kegiatan usaha ialah berusaha
di bidang perdagangan, jasa dan konsultasi, pertambangan, pembangunan,
industri, pembengkelan, pertanian, percetakan dan transportasi.
</p>
</div>
</div>
b. SPKK
1) SPKK_controller
<?php if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Spkk_controller extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('Spkk_model');
$this->load->library('form_validation');
$admin = array(
'judul' => 'SPKK',
);
$this->load->view('inc/link-head-admin', $admin);
55
$this->load->view('user/nav');
}
public function index()
{
$q = urldecode($this->input->get('q', TRUE));
$start = intval($this->input->get('start'));
if ($q <> '') {
$config['base_url'] = base_url() . 'spkk_controller/index.html?q='
. urlencode($q);
$config['first_url'] = base_url() . 'spkk_controller/index.html?q='
. urlencode($q);
} else {
$config['base_url'] = base_url() . 'spkk_controller/index.html';
$config['first_url'] = base_url() . 'spkk_controller/index.html';
}
$config['per_page'] = 10;
$config['page_query_string'] = TRUE;
$config['total_rows'] = $this->Spkk_model->total_rows($q);
$spkk_controller = $this->Spkk_model-
>get_limit_data($config['per_page'], $start, $q);
56
$this->load->library('pagination');
$this->pagination->initialize($config);
$data = array(
'spkk_controller_data' => $spkk_controller,
'q' => $q,
'pagination' => $this->pagination->create_links(),
'total_rows' => $config['total_rows'],
'start' => $start,
);
$this->load->view('spkk_controller/spkk_list', $data);
$this->load->view('inc/footer-js-admin');
}
public function read($id)
{
$row = $this->Spkk_model->get_by_id($id);
if ($row) {
$data = array(
'id_spkk' => $row->id_spkk,
'no_spk' => $row->no_spk,
57
'Nama_pihak_1' => $row->Nama_pihak_1,
'jabatan_pihak_1' => $row->jabatan_pihak_1,
'alamat_pihak_1' => $row->alamat_pihak_1,
'perusahaan_pihak_1' => $row->perusahaan_pihak_1,
'tanggal_spk' => $row->tanggal_spk,
'tahun_buku' => $row->tahun_buku,
'jenis_bayar' => $row->jenis_bayar,
'jumlah_bayar' => $row->jumlah_bayar,
'status' => $row->status,
'ppn' => $row->ppn,
'pph_23' => $row->pph_23,
'tempat_ttd' => $row->tempat_ttd,
);
$this->load->view('spkk_controller/spkk_read', $data);
$this->load->view('inc/footer-js-admin');
} else {
$this->session->set_flashdata('pesan', 'Data tidak ditemukan');
redirect(site_url('spkk_controller'));
}
}
public function create()
{
58
// 35A-PK.Au-09.2019
$max_spkk_data = $this->Spkk_model->total_rows(date('m') . "." .
date('Y'));
if ($max_spkk_data) {
$hasil_data_nomor = intval($max_spkk_data) + 1;
$no_urut = sprintf("%'.02d", $hasil_data_nomor);
} else {
$no_urut = "01";
}
$noSpk = $no_urut . "A-PK.Au-" . date('m') . "." . date('Y');
$data = array(
'button' => 'Buat',
'action' => site_url('spkk_controller/create_action'),
'id_spkk' => set_value('id_spkk'),
'no_spk' => $noSpk,
'Nama_pihak_1' => set_value('Nama_pihak_1'),
'jabatan_pihak_1' => set_value('jabatan_pihak_1'),
'alamat_pihak_1' => set_value('alamat_pihak_1'),
'perusahaan_pihak_1' => set_value('perusahaan_pihak_1'),
'tanggal_spk' => set_value('tanggal_spk'),
59
'tahun_buku' => set_value('tahun_buku'),
'jenis_bayar' => set_value('jenis_bayar'),
'jumlah_bayar' => set_value('jumlah_bayar'),
'status' => set_value('status'),
'ppn' => set_value('ppn'),
'pph_23' => set_value('pph_23'),
'tempat_ttd' => set_value('tempat_ttd'),
);
$this->load->view('spkk_controller/spkk_form', $data);
$this->load->view('inc/footer-js-admin');
}
public function create_action()
{
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->create();
} else {
if ($this->input->post('ppn', TRUE)) {
$ppn = doubleval(($this->input->post('jumlah_bayar', TRUE)
* 10 / 100));
60
} else {
$ppn = doubleval($this->input->post('ppn', TRUE));
}
if ($this->input->post('pph_23', TRUE)) {
$pph_23 = doubleval(($this->input->post('jumlah_bayar',
TRUE) * 2 / 100));
} else {
$pph_23 = doubleval($this->input->post('pph_23', TRUE));
}
$total_bayar = $this->input->post('jumlah_bayar', TRUE) +
$ppn - $pph_23;
$data = array(
'no_spk' => $this->input->post('no_spk', TRUE),
'Nama_pihak_1' => $this->input->post('Nama_pihak_1',
TRUE),
'jabatan_pihak_1' => $this->input->post('jabatan_pihak_1',
TRUE),
'alamat_pihak_1' => $this->input->post('alamat_pihak_1',
TRUE),
61
'perusahaan_pihak_1' => $this->input-
>post('perusahaan_pihak_1', TRUE),
'tanggal_spk' => $this->input->post('tanggal_spk', TRUE),
'tahun_buku' => $this->input->post('tahun_buku', TRUE),
'jenis_bayar' => $this->input->post('jenis_bayar', TRUE),
'jumlah_bayar' => $this->input->post('jumlah_bayar', TRUE),
'status' => $this->input->post('status', TRUE),
'ppn' => $ppn,
'pph_23' => $pph_23,
'total_bayar' => $total_bayar,
'tempat_ttd' => $this->input->post('tempat_ttd', TRUE),
);
$insert_data = $this->Spkk_model->insert($data);
$last_data = $this->Spkk_model->get_limit_data(1);
if ($insert_data) {
$this->session->set_flashdata('pesan', 'Berhasil Membuat
SPKK');
$this->session->set_flashdata('pdf', true);
$this->session->set_flashdata('id', $last_data[0]->id_spkk);
redirect(site_url('spkk_controller'));
62
} else {
$this->session->set_flashdata('pesan', 'Terjadi Kesalahan saat
input data');
redirect(site_url('spkk_controller'));
}
}
}
public function update($id)
{
$row = $this->Spkk_model->get_by_id($id);
if ($row) {
$data = array(
'button' => 'Ubah',
'action' => site_url('spkk_controller/update_action'),
'id_spkk' => set_value('id_spkk', $row->id_spkk),
'no_spk' => set_value('no_spk', $row->no_spk),
'Nama_pihak_1' => set_value('Nama_pihak_1', $row-
>Nama_pihak_1),
'jabatan_pihak_1' => set_value('jabatan_pihak_1', $row-
>jabatan_pihak_1),
63
'alamat_pihak_1' => set_value('alamat_pihak_1', $row-
>alamat_pihak_1),
'perusahaan_pihak_1' => set_value('perusahaan_pihak_1',
$row->perusahaan_pihak_1),
'tanggal_spk' => set_value('tanggal_spk', $row->tanggal_spk),
'tahun_buku' => set_value('tahun_buku', $row->tahun_buku),
'jenis_bayar' => set_value('jenis_bayar', $row->jenis_bayar),
'jumlah_bayar' => set_value('jumlah_bayar', $row-
>jumlah_bayar),
'status' => set_value('status', $row->status),
'ppn' => set_value('ppn', $row->ppn),
'pph_23' => set_value('pph_23', $row->pph_23),
'tempat_ttd' => set_value('tempat_ttd', $row->tempat_ttd),
);
$this->load->view('spkk_controller/spkk_form', $data);
$this->load->view('inc/footer-js-admin');
} else {
$this->session->set_flashdata('pesan', 'Data tidak ditemukan');
redirect(site_url('spkk_controller'));
}
}
public function update_action()
64
{
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->update($this->input->post('id_spkk', TRUE));
} else {
if ($this->input->post('ppn', TRUE)) {
$ppn = doubleval(($this->input->post('jumlah_bayar', TRUE)
* 10 / 100));
} else {
$ppn = doubleval($this->input->post('ppn', TRUE));
}
if ($this->input->post('pph_23', TRUE)) {
$pph_23 = doubleval(($this->input->post('jumlah_bayar',
TRUE) * 2 / 100));
} else {
$pph_23 = doubleval($this->input->post('pph_23', TRUE));
}
$total_bayar = $this->input->post('jumlah_bayar', TRUE) +
$ppn - $pph_23;
65
$data = array(
'no_spk' => $this->input->post('no_spk', TRUE),
'Nama_pihak_1' => $this->input->post('Nama_pihak_1',
TRUE),
'jabatan_pihak_1' => $this->input->post('jabatan_pihak_1',
TRUE),
'alamat_pihak_1' => $this->input->post('alamat_pihak_1',
TRUE),
'perusahaan_pihak_1' => $this->input-
>post('perusahaan_pihak_1', TRUE),
'tanggal_spk' => $this->input->post('tanggal_spk', TRUE),
'tahun_buku' => $this->input->post('tahun_buku', TRUE),
'jenis_bayar' => $this->input->post('jenis_bayar', TRUE),
'jumlah_bayar' => $this->input->post('jumlah_bayar', TRUE),
'status' => $this->input->post('status', TRUE),
'ppn' => $ppn,
'pph_23' => $pph_23,
'total_bayar' => $total_bayar,
'tempat_ttd' => $this->input->post('tempat_ttd', TRUE),
);
66
$this->Spkk_model->update($this->input->post('id_spkk',
TRUE), $data);
$this->session->set_flashdata('pesan', 'Berhasil Ubah Data');
redirect(site_url('spkk_controller'));
}
}
public function delete($id)
{
$row = $this->Spkk_model->get_by_id($id);
if ($row) {
$data = array(
'status' => 2,
);
$this->Spkk_model->update($id, $data);
$this->session->set_flashdata('pesan', 'Berhasil BATAL SPKK');
redirect(site_url('spkk_controller'));
} else {
$this->session->set_flashdata('pesan', 'Data tidak ditemukan');
redirect(site_url('spkk_controller'));
}
67
}
public function _rules()
{
$this->form_validation->set_rules('no_spk', 'no spk',
'trim|required|is_unique[spkk.no_spk]');
$this->form_validation->set_rules('Nama_pihak_1', 'nama pihak 1',
'trim|required');
$this->form_validation->set_rules('jabatan_pihak_1', 'jabatan pihak
1', 'trim|required');
$this->form_validation->set_rules('alamat_pihak_1', 'alamat pihak
1', 'trim|required');
$this->form_validation->set_rules('perusahaan_pihak_1',
'perusahaan pihak 1', 'trim|required');
$this->form_validation->set_rules('tanggal_spk', 'tanggal spk',
'trim|required');
$this->form_validation->set_rules('tahun_buku', 'tahun buku',
'trim|required');
$this->form_validation->set_rules('jenis_bayar', 'jenis bayar',
'trim|required');
$this->form_validation->set_rules('jumlah_bayar', 'jumlah bayar',
'trim|required|numeric');
$this->form_validation->set_rules('status', 'status', 'trim|required');
68
$this->form_validation->set_rules('ppn', 'ppn', 'trim|required');
$this->form_validation->set_rules('pph_23', 'pph 23',
'trim|required');
$this->form_validation->set_rules('tempat_ttd', 'tempat ttd',
'trim|required');
$this->form_validation->set_rules('id_spkk', 'id_spkk', 'trim');
$this->form_validation->set_error_delimiters('<span class="text-
danger">', '</span>');
}
public function pdf($id = '')
{
if ($id) {
$this->load->library('pdf');
$this->load->helper("terbilang");
$this->load->helper("currency");
$this->load->helper('tgl_indo');
$html_content = '<h3 align="center"></h3>';
69
$this->load->model('Spkk_model');
$row = $this->Spkk_model->get_by_id($id);
if ($row) {
$data = array(
'id_spkk' => $row->id_spkk,
'no_spk' => $row->no_spk,
'Nama_pihak_1' => $row->Nama_pihak_1,
'jabatan_pihak_1' => $row->jabatan_pihak_1,
'alamat_pihak_1' => $row->alamat_pihak_1,
'perusahaan_pihak_1' => $row->perusahaan_pihak_1,
'tanggal_spk' => longdate_indo($row->tanggal_spk),
'tahun_buku' => longdate_indo($row->tahun_buku),
'jenis_bayar' => $row->jenis_bayar,
'jumlah_bayar' => rupiah($row->jumlah_bayar),
'jumlah_bayar_terbilang' =>
ucwords(number_to_words($row->jumlah_bayar)),
'termin' => rupiah($row->jumlah_bayar / 2),
'termin_terbilang' => ucwords((number_to_words($row-
>jumlah_bayar / 2))),
'status' => $row->status,
'ppn' => $row->ppn,
'pph_23' => $row->pph_23,
'tempat_ttd' => $row->tempat_ttd,
70
);
$html_content .= $this->load->view('pdf/spkk', $data, true);
// echo $html_content;
}
$this->pdf->generate($html_content, 'spkk-' . $row->no_spk,
true, 'A4', 'portrait');
} else {
echo "tidak ada variable id?";
}
}
public function word()
{
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=spkk.doc");
$data = array(
'spkk_data' => $this->Spkk_model->get_all(),
'start' => 0
);
$this->load->view('spkk_controller/spkk_doc', $data);
}
}
71
2) Form SPKK
<h2 style="margin-top:0px"><?= $button ?> Spkk </h2>
<form action="<?php echo $action; ?>" method="post">
<div class="form-group">
<label for="varchar">No Spk <?php echo form_error('no_spk')
?></label>
<input type="text" class="form-control" name="no_spk"
id="Masukan no_spk" placeholder="No Spk" value="<?php echo
$no_spk; ?>" />
</div>
<div class="form-group">
<label for="varchar">Nama Pihak 1 <?php echo
form_error('Nama_pihak_1') ?></label>
<input type="text" class="form-control" name="Nama_pihak_1"
id="Masukan Nama_pihak_1" placeholder="hgihihbi Pihak 1"
value="<?php echo $Nama_pihak_1; ?>" />
</div>
<div class="form-group">
<label for="varchar">Jabatan Pihak 1 <?php echo
form_error('jabatan_pihak_1') ?></label>
<input type="text" class="form-control" name="jabatan_pihak_1"
id="Masukan jabatan_pihak_1" placeholder="Jabatan Pihak 1"
value="<?php echo $jabatan_pihak_1; ?>" />
72
</div>
<div class="form-group">
<label for="varchar">Alamat Pihak 1 <?php echo
form_error('alamat_pihak_1') ?></label>
<input type="text" class="form-control" name="alamat_pihak_1"
id="Masukan alamat_pihak_1" placeholder="Alamat Pihak 1"
value="<?php echo $alamat_pihak_1; ?>" />
</div>
<div class="form-gr`oup">
<label for="varchar">Perusahaan Pihak 1 <?php echo
form_error('perusahaan_pihak_1') ?></label>
<input type="text" class="form-control"
name="perusahaan_pihak_1" id="Masukan perusahaan_pihak_1"
placeholder="Perusahaan Pihak 1" value="<?php echo
$perusahaan_pihak_1; ?>" />
</div>
<div class="form-group">
<label for="date">Tanggal Spk <?php echo form_error('tanggal_spk')
?></label>
<input type="text" class="form-control datepicker"
name="tanggal_spk" id="Masukan tanggal_spk" placeholder="Tanggal
Spk" data-value="<?php echo str_replace('-', '/', $tanggal_spk); ?>"
value="<?php echo $tanggal_spk; ?>" />
73
</div>
<div class="form-group">
<label for="date">Tahun Buku <?php echo form_error('tahun_buku')
?></label>
<input type="text" class="form-control datepicker"
name="tahun_buku" id="Masukan tahun_buku" placeholder="Tahun
Buku" data-value="<?php echo str_replace('-', '/', $tahun_buku); ?>"
value="<?php echo $tahun_buku; ?>" />
</div>
<div class="form-group">
<label for="int">Jenis Bayar <?php echo form_error('jenis_bayar')
?></label>
<!-- <input type="text" class="form-control" name="jenis_bayar"
id="Masukan jenis_bayar" placeholder="Jenis Bayar" value="<?php
echo $jenis_bayar; ?>" /> -->
<select class="browser-default custom-select" name="jenis_bayar"
id="jenis_bayar">
<option value="">Pilih Jenis Bayar</option>
<option <?php if ("1" == $jenis_bayar) : ?> selected <?php endif ?>
value="1">Cash</option>
<option <?php if ("2" == $jenis_bayar) : ?> selected <?php endif ?>
value="2">Termin</option>
</select>
74
</div>
<div class="form-group">
<label for="double">Jumlah Bayar <?php echo
form_error('jumlah_bayar') ?></label>
<input type="number" class="form-control" name="jumlah_bayar"
id="Masukan jumlah_bayar" placeholder="Jumlah Bayar"
value="<?php echo $jumlah_bayar; ?>" />
</div>
<div class="form-group d-none">
<label for="int">Status <?php echo form_error('status') ?></label>
<input type="text" class="form-control" name="status" id="Masukan
status" placeholder="Status" value="<?php echo $status = ($status) ? '1'
: '0'; ?>" />
</div>
<div class="form-group">
<label for="int">Ppn <?php echo form_error('ppn') ?></label>
<!-- <input type="text" class="form-control" name="ppn"
id="Masukan ppn" placeholder="Ppn" value="<?php echo $ppn; ?>" />
-->
<select class="browser-default custom-select" name="ppn"
id="ppn">
<option value="">Pilih PPN 10%</option>
75
<?php if ($this->uri->segment(2) == 'update' or $this->uri-
>segment(2) == 'update_action') : ?>
<option <?php if ("0" != $ppn) : ?> selected <?php endif ?>
value="1">EXCLUDE</option>
<option <?php if ("0" == $ppn) : ?> selected <?php endif ?>
value="0">TIDAK EXCLUDE</option>
<?php else : ?>
<option <?php if ("1" == $ppn) : ?> selected <?php endif ?>
value="1">EXCLUDE</option>
<option <?php if ("0" == $ppn) : ?> selected <?php endif ?>
value="0">TIDAK EXCLUDE</option>
<?php endif ?>
</select>
</div>
<div class="form-group">
<label for="int">Pph 23 <?php echo form_error('pph_23') ?></label>
<!-- <input type="text" class="form-control" name="pph_23"
id="Masukan pph_23" placeholder="Pph 23" value="<?php echo
$pph_23; ?>" /> -->
<select class="browser-default custom-select" name="pph_23"
id="pph_23">
<option value="">Pilih PPH 23</option>
76
<?php if ($this->uri->segment(2) == 'update' or $this->uri-
>segment(2) == 'update_action') : ?>
<option <?php if ("0" != $pph_23) : ?> selected <?php endif ?>
value="1">INCLUDE</option>
<option <?php if ("0" == $pph_23) : ?> selected <?php endif ?>
value="0">TIDAK INCLUDE</option>
<?php else : ?>
<option <?php if ("1" == $pph_23) : ?> selected <?php endif ?>
value="1">INCLUDE</option>
<option <?php if ("0" == $pph_23) : ?> selected <?php endif ?>
value="0">TIDAK INCLUDE</option>
<?php endif ?>
</select>
</div>
<div class="form-group">
<label for="varchar">Tempat Ttd <?php echo
form_error('tempat_ttd') ?></label>
<!-- <input type="text" class="form-control" name="tempat_ttd"
id="Masukan tempat_ttd" placeholder="Tempat Ttd" value="<?php
echo $tempat_ttd; ?>" /> -->
<select class="browser-default custom-select" name="tempat_ttd"
id="tempat_ttd">
<option value="">Pilih Tempat Ttd</option>
77
<option <?php if ("Bogor" == $tempat_ttd) : ?> selected <?php
endif ?> value="Bogor">Bogor</option>
<option <?php if ("Surabaya" == $tempat_ttd) : ?> selected <?php
endif ?> value="Surabaya">Surabaya</option>
</select>
</div>
<input type="hidden" name="id_spkk" value="<?php echo $id_spkk;
?>" />
<button type="submit" class="btn btn-primary btn-rounded"><?php
echo $button ?></button>
<a href="<?php echo site_url('spkk_controller') ?>" class="btn btn-
danger btn-rounded">Batal</a>
</form>
3) List SPKK
<?php
if ($this->session->flashdata('pdf')) {
echo "<script>";
echo "window.open('spkk_controller/pdf/" . $this->session-
>flashdata('id') . "', '_blank')";
echo "</script>";
}
?>
78
<div class="row">
<div class="col-md-1 text-center mt-2">
<button class="btn btn-flat btn-rounded hoverable btn-kembali">
<!-- <h4><i class="fas fa-chevron-circle-left"></i></h4> -->
</button>
</div>
<div class="col-md-3 text-center mt-2">
<?php echo anchor(site_url('spkk_controller/create'), 'Buat Spkk',
'class="btn btn-primary btn-rounded d-inline"'); ?>
<br>
<br>
</div>
<div class="col-md-4 text-center">
<h2 style="margin-top:0px">Daftar Spkk</h2>
</div>
<div class="col-md-4 text-right">
<form action="<?php echo site_url('spkk_controller/index'); ?>"
class="form-group" method="get">
<div class="input-group">
<input type="text" class="form-control mt-2" name="q"
value="<?php echo $q; ?>">
79
<span class="input-group-btn">
<?php
if ($q <> '') {
?>
<a href="<?php echo site_url('spkk_controller'); ?>"
class="btn btn-amber">Ulangi</a>
<?php
}
?>
<button class="btn btn-dark-green"
type="submit">Cari</button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive">
<table class="table table-hover table-bordered text-nowrap table-sm
text-center" style="margin-bottom: 10px">
<tr>
<th class="th-sm">No</th>
<th class="th-sm">Tanggal Spk</th>
<th class="th-sm">No Spk</th>
80
<!-- <th class="th-sm">Nama Pihak 1</th> -->
<!-- <th class="th-sm">Jabatan Pihak 1</th> -->
<th class="th-sm">Perusahaan Pihak 1</th>
<th class="th-sm">Tahun Buku</th>
<th class="th-sm">Alamat Pihak 1</th>
<!-- <th class="th-sm">Jenis Bayar</th> -->
<th class="th-sm">Jumlah Bayar</th>
<!-- <th class="th-sm">Status</th> -->
<!-- <th class="th-sm">Ppn</th> -->
<!-- <th class="th-sm">Pph 23</th> -->
<th class="th-sm">Total Bayar</th>
<!-- <th class="th-sm">Tempat Ttd</th> -->
<th class="th-sm">Aksi</th>
</tr><?php
foreach ($spkk_controller_data as $spkk_controller) {
?>
<tr>
<td width="80px"><?php echo ++$start ?></td>
<td><?php echo $spkk_controller->tanggal_spk ?></td>
<td><?php echo $spkk_controller->no_spk ?></td>
<!-- <td><?php echo $spkk_controller->Nama_pihak_1
?></td> -->
81
<!-- <td><?php echo $spkk_controller->jabatan_pihak_1
?></td> -->
<td class="text-left"><?php echo $spkk_controller-
>perusahaan_pihak_1 ?></td>
<td><?php echo $spkk_controller->tahun_buku ?></td>
<td class="text-left"><?php echo $spkk_controller-
>alamat_pihak_1 ?></td>
<!-- <td><?php echo $spkk_controller->jenis_bayar ?></td> -
->
<td><?php echo format_uang_standar($spkk_controller-
>jumlah_bayar) ?></td>
<!-- <td><?php echo $spkk_controller->status ?></td> -->
<!-- <td><?php echo $spkk_controller->ppn ?></td> -->
<!-- <td><?php echo $spkk_controller->pph_23 ?></td> -->
<td><?php echo format_uang_standar($spkk_controller-
>total_bayar) ?></td>
<!-- <td><?php echo $spkk_controller->tempat_ttd ?></td> --
>
<td style="text-align:center" width="120px">
<a href="<?php echo base_url() . 'spkk_controller/PDF/' .
$spkk_controller->id_spkk ?>" class="btn btn-sm btn-info" data-
toggle="tooltip" title="Lihat">
<span class="fa fa-eye"></span>
82
</a>
<a onclick="alert('Anda akan diarahkan ke form Ubah
data')" href="<?php echo base_url() . 'spkk_controller/update/' .
$spkk_controller->id_spkk ?>" class="btn btn-sm btn-warning" data-
toggle="tooltip" title="Ubah">
<span class="fa fa-edit"></span>
</a>
<a onclick="return confirm('anda yakin akan membatalkan
data?')" href="<?php echo 'spkk_controller/delete/' . $spkk_controller-
>id_spkk ?>" class="btn btn-sm btn-danger" data-toggle="tooltip"
title="Batal">
<span class="fa fa-trash"></span>
</a>
</td>
</tr>
<?php
}
if ($start == 0) {
?>
<script>
alert('Data tidak ditemukan');
</script>
<?php } ?>
83
</table>
</div>
<div class="row mt-2">
<div class="col-md-4">
<a href="#" class="btn btn-elegant btn-sm disabled ">Jumlah Data
Spkk : <?php echo $total_rows ?></a>
<?php echo anchor(site_url('filter/formRekap/spkk'), 'Filter',
'class="btn btn-secondary"'); ?>
</div>
<div class="col-md-8 text-right">
<?php echo $pagination ?>
</div>
</div>
4) SPKK Model
<?php if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Spkk_model extends CI_Model
{
public $table = 'spkk';
public $id = 'id_spkk';
public $order = 'DESC';
84
function __construct()
{
parent::__construct();
}
// get all
function get_all()
{
$this->db->order_by($this->id, $this->order);
return $this->db->get($this->table)->result();
}
// get data by id
function get_by_id($id)
{
$this->db->where('id_spkk', $id);
return $this->db->get($this->table)->row();
} // get data by id
function get_by_id_no_spk($id)
{
$this->db->where('no_spk', $id);
return $this->db->get($this->table)->row();
}
85
// get total rows
function total_rows($q = NULL)
{
$this->db->like('id_spkk', $q);
$this->db->or_like('no_spk', $q);
$this->db->or_like('Nama_pihak_1', $q);
$this->db->or_like('jabatan_pihak_1', $q);
$this->db->or_like('alamat_pihak_1', $q);
$this->db->or_like('perusahaan_pihak_1', $q);
$this->db->or_like('tanggal_spk', $q);
$this->db->or_like('tahun_buku', $q);
$this->db->or_like('jenis_bayar', $q);
$this->db->or_like('jumlah_bayar', $q);
$this->db->or_like('status', $q);
$this->db->or_like('ppn', $q);
$this->db->or_like('pph_23', $q);
$this->db->or_like('tempat_ttd', $q);
$this->db->from($this->table);
return $this->db->count_all_results();
}
// get data with limit and search
86
function get_limit_data($limit, $start = 0, $q = NULL)
{
$this->db->order_by($this->id, $this->order);
$this->db->like('id_spkk', $q);
$this->db->or_like('no_spk', $q);
$this->db->or_like('Nama_pihak_1', $q);
$this->db->or_like('jabatan_pihak_1', $q);
$this->db->or_like('alamat_pihak_1', $q);
$this->db->or_like('perusahaan_pihak_1', $q);
$this->db->or_like('tanggal_spk', $q);
$this->db->or_like('tahun_buku', $q);
$this->db->or_like('jenis_bayar', $q);
$this->db->or_like('jumlah_bayar', $q);
$this->db->or_like('status', $q);
$this->db->or_like('ppn', $q);
$this->db->or_like('pph_23', $q);
$this->db->or_like('tempat_ttd', $q);
$this->db->limit($limit, $start);
return $this->db->get($this->table)->result();
}
// get total rows
87
function total_rows_laporan($first_date, $second_date,
$jenisLaporan, $nama)
{
if ($nama != '') {
$this->db->or_like('perusahaan_pihak_1', $nama);
}
if ($first_date) {
$this->db->where($jenisLaporan . '>=', $first_date);
}
if ($second_date) {
$this->db->where($jenisLaporan . '<=', $second_date);
}
$this->db->from($this->table);
return $this->db->count_all_results();
}
// get data with limit and search
function get_limit_data_laporan($limit, $first_date, $second_date,
$jenisLaporan, $nama)
{
if ($nama != '') {
$this->db->or_like('perusahaan_pihak_1', $nama);
}
88
$this->db->order_by($jenisLaporan, $this->order);
if ($first_date) {
$this->db->where($jenisLaporan . '>=', $first_date);
}
if ($second_date) {
$this->db->where($jenisLaporan . '<=', $second_date);
}
$this->db->limit($limit, 0);
return $this->db->get($this->table)->result();
}
public function total_filter($limit, $first_date, $second_date,
$jenisLaporan, $nama, $sum)
{
if ($nama != '') {
$this->db->or_like('perusahaan_pihak_1', $nama);
}
$this->db->order_by($jenisLaporan, $this->order);
if ($first_date) {
$this->db->where($jenisLaporan . '>=', $first_date);
}
if ($second_date) {
89
$this->db->where($jenisLaporan . '<=', $second_date);
}
$this->db->limit($limit, 0);
$this->db->select_sum($sum);
return $this->db->get($this->table)->row()->$sum;
}
public function get_all_no_spkk($keyword)
{
$this->db->or_like('no_spk', $keyword);
return $this->db->get($this->table)->result();
}
// insert data
function insert($data)
{
$this->db->insert($this->table, $data);
return true;
}
// update data
90
function update($id, $data)
{
$this->db->where('id_spkk', $id);
$this->db->update($this->table, $data);
}
// delete data
function delete($id)
{
$this->db->where('id_spkk', $id);
$this->db->delete($this->table);
}
}
c. Invoice
1) Invoice Controller
<?php if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Invoice_controller extends CI_Controller
{
function __construct()
{
91
parent::__construct();
$this->load->model('Invoice_model');
$this->load->library('form_validation');
$admin = array(
'judul' => 'INVOICE',
);
$this->load->view('inc/link-head-admin', $admin);
$this->load->view('user/nav');
}
public function index()
{
$q = urldecode($this->input->get('q', TRUE));
$start = intval($this->input->get('start'));
if ($q <> '') {
$config['base_url'] = base_url() .
'invoice_controller/index.html?q=' . urlencode($q);
$config['first_url'] = base_url() .
'invoice_controller/index.html?q=' . urlencode($q);
} else {
$config['base_url'] = base_url() . 'invoice_controller/index.html';
92
$config['first_url'] = base_url() . 'invoice_controller/index.html';
}
$config['per_page'] = 10;
$config['page_query_string'] = TRUE;
$config['total_rows'] = $this->Invoice_model->total_rows($q);
$invoice_controller = $this->Invoice_model-
>get_limit_data($config['per_page'], $start, $q);
$this->load->library('pagination');
$this->pagination->initialize($config);
// ambil data spkk
$this->load->model('Spkk_model');
$data_spkk = $this->Spkk_model->get_all();
// ambil data bank
$this->load->model('Bank_model');
$data_bank = $this->Bank_model->get_all();
$data = array(
'invoice_controller_data' => $invoice_controller,
'q' => $q,
93
'pagination' => $this->pagination->create_links(),
'total_rows' => $config['total_rows'],
'start' => $start,
'data_spkk' => $data_spkk,
'data_bank' => $data_bank,
);
$this->load->view('invoice_controller/invoice_list', $data);
$this->load->view('inc/footer-js-admin');
}
public function read($id)
{
$row = $this->Invoice_model->get_by_id($id);
if ($row) {
$data = array(
'id_invoice' => $row->id_invoice,
'uraian' => $row->uraian,
'no_invoice' => $row->no_invoice,
'tanggal_invoice' => $row->tanggal_invoice,
'id_spkk_invoice' => $row->id_spkk_invoice,
'id_bank_invoice' => $row->id_bank_invoice,
94
'data_spkk' => $row->no_spk,
'data_bank' => $row->nama_bank,
);
$this->load->view('invoice_controller/invoice_read', $data);
$this->load->view('inc/footer-js-admin');
} else {
$this->session->set_flashdata('pesan', 'Data tidak ditemukan');
redirect(site_url('invoice_controller'));
}
}
public function create()
{
// No. 70/SCM/09/2019
$max_invoice_data = $this->Invoice_model->total_rows(date('m')
. "/" . date('Y'));
if ($max_invoice_data) {
$hasil_data_nomor = intval($max_invoice_data) + 1;
$no_urut = sprintf("%'.02d", $hasil_data_nomor);
} else {
$no_urut = "01";
}
95
$noInvoice = "No. " . $no_urut . "/SCM" . "/" . date('m') . "/" .
date('Y');
// ambil data spkk
$this->load->model('Spkk_model');
$data_spkk = $this->Spkk_model->get_all();
// ambil data bank
$this->load->model('Bank_model');
$data_bank = $this->Bank_model->get_all();
$data = array(
'button' => 'Buat',
'action' => site_url('invoice_controller/create_action'),
'id_invoice' => set_value('id_invoice'),
'uraian' => set_value('uraian'),
'no_invoice' => $noInvoice,
'tanggal_invoice' => set_value('tanggal_invoice'),
'id_spkk_invoice' => set_value('id_spkk_invoice'),
'id_bank_invoice' => set_value('id_bank_invoice'),
'data_spkk' => $data_spkk,
'data_bank' => $data_bank,
);
96
$this->load->view('invoice_controller/invoice_form', $data);
$this->load->view('inc/footer-js-admin');
$this->load->view('inc/function-js-admin');
}
public function create_action()
{
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->create();
} else {
$this->load->model('Spkk_model');
$row = $this->Spkk_model->get_by_id_no_spk($this-
>input->post('id_spkk_invoice', TRUE));
if ($row) {
$id_spkk = $row->id_spkk;
$uraian = $row->uraian;
}
$data = array(
'uraian' => $this->input->post('uraian', TRUE),
'no_invoice' => $this->input->post('no_invoice', TRUE),
97
'tanggal_invoice' => $this->input->post('tanggal_invoice',
TRUE),
'id_spkk_invoice' => $id_spkk,
'id_bank_invoice' => $this->input->post('id_bank_invoice',
TRUE),
);
$insert_data = $this->Invoice_model->insert($data);
$last_data = $this->Invoice_model->get_limit_data(1);
if ($insert_data) {
$this->session->set_flashdata('pesan', 'Berhasil Membuat
Invoice');
$this->session->set_flashdata('pdf', true);
$this->session->set_flashdata('id', $last_data[0]->id_invoice);
redirect(site_url('invoice_controller'));
} else {
$this->session->set_flashdata('pesan', 'Terjadi Kesalahan saat
input data');
redirect(site_url('invoice_controller'));
}
}
98
}
public function update($id)
{
$row = $this->Invoice_model->get_by_id($id);
// ambil data spkk
$this->load->model('Spkk_model');
$data_spkk = $this->Spkk_model->get_all();
// ambil data bank
$this->load->model('Bank_model');
$data_bank = $this->Bank_model->get_all();
if ($row) {
$data = array(
'button' => 'Ubah',
'action' => site_url('invoice_controller/update_action'),
'id_invoice' => set_value('id_invoice', $row->id_invoice),
'uraian' => set_value('uraian', $row->uraian),
'no_invoice' => set_value('no_invoice', $row->no_invoice),
'tanggal_invoice' => set_value('tanggal_invoice', $row-
>tanggal_invoice),
99
'id_spkk_invoice' => set_value('id_spkk_invoice', $row-
>id_spkk_invoice),
'id_bank_invoice' => set_value('id_bank_invoice', $row-
>id_bank_invoice),
'data_spkk' => $data_spkk,
'data_bank' => $data_bank,
);
$this->load->view('invoice_controller/invoice_form', $data);
$this->load->view('inc/footer-js-admin');
$this->load->view('inc/function-js-admin');
} else {
$this->session->set_flashdata('pesan', 'Data tidak ditemukan');
redirect(site_url('invoice_controller'));
}
}
public function update_action()
{
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->update($this->input->post('id_invoice', TRUE));
} else {
100
$data = array(
'uraian' => $this->input->post('uraian', TRUE),
'no_invoice' => $this->input->post('no_invoice', TRUE),
'tanggal_invoice' => $this->input->post('tanggal_invoice',
TRUE),
'id_spkk_invoice' => $this->input->post('id_spkk_invoice',
TRUE),
'id_bank_invoice' => $this->input->post('id_bank_invoice',
TRUE),
);
$this->Invoice_model->update($this->input->post('id_invoice',
TRUE), $data);
$this->session->set_flashdata('pesan', 'Berhasil Ubah Data');
redirect(site_url('invoice_controller'));
}
}
public function delete($id)
{
$row = $this->Invoice_model->get_by_id($id);
if ($row) {
101
$this->Invoice_model->delete($id);
$this->session->set_flashdata('pesan', 'Berhasil Hapus Data');
redirect(site_url('invoice_controller'));
} else {
$this->session->set_flashdata('pesan', 'Data tidak ditemukan');
redirect(site_url('invoice_controller'));
}
}
public function _rules()
{
$this->form_validation->set_rules('uraian', 'uraian', 'trim|required');
$this->form_validation->set_rules('no_invoice', 'no invoice',
'trim|required');
$this->form_validation->set_rules('tanggal_invoice', 'tanggal
invoice', 'trim|required');
$this->form_validation->set_rules('id_spkk_invoice', 'id spkk
invoice', 'callback_spk_check');
$this->form_validation->set_rules('id_bank_invoice', 'id bank
invoice', 'trim|required');
$this->form_validation->set_rules('id_invoice', 'id_invoice', 'trim');
102
$this->form_validation->set_error_delimiters('<span class="text-
danger">', '</span>');
}
function spk_check($str)
{
$cek = $this->Invoice_model->hasSameName($str);
if ($cek == false)
{
$this->form_validation->set_message('spk_check', 'No SPKK
tidak bisa digunakan');
return FALSE;
}
else
{
return TRUE;
}
}
103
public function pdf($id = '')
{
$this->load->library('pdf');
$this->load->helper("terbilang");
$this->load->helper("currency");
$this->load->helper('tgl_indo');
$html_content = '<h3 align="center"></h3>';
$this->load->model('Invoice_model');
$row = $this->Invoice_model->get_by_id($id);
if ($row) {
$data = array(
'id_invoice' => $row->id_invoice,
'uraian' => $row->uraian,
'no_invoice' => $row->no_invoice,
'tanggal_invoice' => longdate_indo($row->tanggal_invoice),
'id_spkk_invoice' => $row->id_spkk_invoice,
'id_bank_invoice' => $row->id_bank_invoice,
'data_no_spkk' => $row->no_spk,
104
'data_tahun_buku' => longdate_indo($row->tahun_buku),
'data_perusahaan_pihak_1' => $row->perusahaan_pihak_1,
'data_jenis_bayar' => $row->jenis_bayar,
'data_jumlah_bayar' => $row->jumlah_bayar,
'data_ppn' => $row->ppn,
'data_pph_23' => $row->pph_23,
'data_total_bayar' => format_uang($row->total_bayar),
// 'data_total_bayar_terbilang' =>
strtoupper(number_to_words($row->total_bayar)),
'data_nama_bank' => $row->nama_bank,
'data_nomor_rekening' => $row->nomor_rekening,
'data_cabang' => $row->cabang,
'data_atas_nama' => $row->atas_nama,
);
$html_content .= $this->load->view('pdf/invoice', $data, true);
}
$this->pdf->generate($html_content, 'INV-' . str_replace('/', '_',
$row->no_invoice), true, 'A4', 'portrait');
}
public function word()
{
header("Content-type: application/vnd.ms-word");
105
header("Content-Disposition: attachment;Filename=invoice.doc");
$data = array(
'invoice_data' => $this->Invoice_model->get_all(),
'start' => 0
);
$this->load->view('invoice_controller/invoice_doc', $data);
}
}
2) Form Invoice
<h2 style="margin-top:0px"><?php echo $button ?> Invoice </h2>
<form action="<?php echo $action; ?>" method="post">
<div class="form-group">
<label for="int">Uraian <?php echo form_error('uraian') ?></label>
<!-- <input type="text" class="form-control" name="uraian"
id="Masukan uraian" placeholder="Uraian" value="<?php echo
$uraian; ?>" /> -->
<select class="browser-default custom-select" name="uraian"
id="uraian">
<option value="">Pilih Uraian</option>
<option <?php if ("Fee" == $uraian) : ?> selected <?php endif ?>
value="Fee">Fee</option>
106
<option <?php if ("Uang Muka" == $uraian) : ?> selected <?php
endif ?> value="Uang Muka">Uang Muka</option>
<option <?php if ("Pelunasan" == $uraian) : ?> selected <?php endif
?> value="Pelunasan">Pelunasan</option>
</select>
</div>
<div class="form-group">
<label for="varchar">No Invoice <?php echo
form_error('no_invoice') ?></label>
<input type="text" class="form-control" name="no_invoice"
id="Masukan no_invoice" placeholder="No Invoice" value="<?php
echo $no_invoice; ?>" />
</div>
<div class="form-group">
<label for="date">Tanggal Invoice <?php echo
form_error('tanggal_invoice') ?></label>
<input type="text" class="form-control datepicker"
name="tanggal_invoice" id="Masukan tanggal_invoice"
placeholder="Tanggal Invoice" data-value="<?php echo str_replace('-',
'/', $tanggal_invoice); ?>" value="<?php echo $tanggal_invoice; ?>" />
</div>
<div class="form-group">
107
<label for="int">No Spkk Invoice <?php echo
form_error('id_spkk_invoice') ?></label>
<!-- <input type="text" class="form-control"
name="id_spkk_invoice" id="Masukan id_spkk_invoice"
placeholder="Id Spkk Invoice" value="<?php echo $id_spkk_invoice;
?>" /> -->
<!-- <select class="browser-default custom-select"
name="id_spkk_invoice" id="id_spkk_invoice">
<option value="">Pilih</option>
<?php foreach ($data_spkk as $data) { ?>
<option <?php if (isset($id_spkk_invoice)) : ?> <?php if ($data-
>id_spkk == $id_spkk_invoice) : ?> selected <?php endif ?> <?php
endif ?> value="<?php echo $data->id_spkk ?>">
<?php echo $data->no_spk ?>
</option>
<?php } ?>
</select> -->
<input type="text" class="form-control" name="id_spkk_invoice"
id="id_no_invoice" placeholder="Masukan No SPKK" value="<?php
echo $id_spkk_invoice; ?>" />
</div>
<div class="form-group">
108
<label for="int">Nama Bank <?php echo
form_error('id_bank_invoice') ?></label>
<!-- <input type="text" class="form-control"
name="id_bank_invoice" id="Masukan id_bank_invoice"
placeholder="Id Bank Invoice" value="<?php echo $id_bank_invoice;
?>" /> -->
<select class="browser-default custom-select"
name="id_bank_invoice" id="id_bank_invoice">
<option value="">Pilih</option>
<?php foreach ($data_bank as $data) { ?>
<option <?php if (isset($id_bank_invoice)) : ?> <?php if ($data-
>id_bank == $id_bank_invoice) : ?> selected <?php endif ?> <?php
endif ?> value="<?php echo $data->id_bank ?>">
<?php echo $data->nama_bank ?>
</option>
<?php } ?>
</select>
</div>
<input type="hidden" name="id_invoice" value="<?php echo
$id_invoice; ?>" />
<button type="submit" id="SUBMIT" class="d-none btn btn-primary
btn-rounded"><?php echo $button ?></button>
109
<a href="<?php echo site_url('invoice_controller') ?>" class="btn btn-
danger btn-rounded">Batal</a>
</form>
3) List Invoice
<?php
if ($this->session->flashdata('pdf')) {
echo "<script>";
echo "window.open('invoice_controller/pdf/" . $this->session-
>flashdata('id') . "', '_blank')";
echo "</script>";
}
?>
<div class="row">
<div class="col-md-1 text-center mt-2">
<button class="btn btn-flat btn-rounded hoverable btn-kembali">
<!-- <h4><i class="fas fa-chevron-circle-left"></i></h4> -->
</button>
</div>
<div class="col-md-3 text-center mt-2">
<?php echo anchor(site_url('invoice_controller/create'), 'Buat
Invoice', 'class="btn btn-primary btn-rounded d-inline"'); ?>
<br>
110
<br>
</div>
<div class="col-md-4 text-center">
<h2 style="margin-top:0px">Daftar Invoice</h2>
</div>
<div class="col-md-4 text-right">
<form action="<?php echo site_url('invoice_controller/index');
?>" class="form-group" method="get">
<div class="input-group">
<input type="text" class="form-control mt-2" name="q"
value="<?php echo $q; ?>">
<span class="input-group-btn">
<?php
if ($q <> '') {
?>
<a href="<?php echo site_url('invoice_controller'); ?>"
class="btn btn-amber">Ulangi</a>
<?php
}
?>
<button class="btn btn-dark-green"
type="submit">Cari</button>
111
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive">
<table class="table table-hover table-bordered text-nowrap table-sm
text-center" style="margin-bottom: 10px">
<tr>
<th class="th-sm">No</th>
<th class="th-sm">Tanggal Invoice</th>
<th class="th-sm">No Invoice</th>
<th class="th-sm">No Spkk</th>
<th class="th-sm">Nama Perusahaan</th>
<th class="th-sm">Jumlah</th>
<th class="th-sm">PPN 10%</th>
<th class="th-sm">PPH -2%</th>
<th class="th-sm">Jumlah Fee</th>
<th class="th-sm">Uang Muka / Pelunasan / Fee</th>
<th class="th-sm">Tahun Buku</th>
<th class="th-sm">Rekening</th>
<th class="th-sm">Aksi</th>
</tr><?php
112
foreach ($invoice_controller_data as $invoice_controller) {
?>
<tr>
<td width="80px"><?php echo ++$start ?></td>
<td><?php echo $invoice_controller->tanggal_invoice
?></td>
<td><?php echo $invoice_controller->no_invoice ?></td>
<td><?php echo $invoice_controller->no_spk ?></td>
<td class="text-left"><?php echo $invoice_controller-
>perusahaan_pihak_1 ?></td>
<td><?php echo format_uang_standar($invoice_controller-
>jumlah_bayar) ?></td>
<td><?php echo format_uang_standar($invoice_controller-
>ppn) ?></td>
<td><?php echo format_uang_standar($invoice_controller-
>pph_23) ?></td>
<td><?php echo format_uang_standar($invoice_controller-
>total_bayar) ?></td>
<td><?php echo $invoice_controller->uraian ?></td>
<td><?php echo $invoice_controller->tahun_buku ?></td>
<td><?php echo $invoice_controller->atas_nama . '-' .
$invoice_controller->nama_bank ?></td>
<td style="text-align:center" width="120px">
113
<a href="<?php echo base_url() .
'invoice_controller/PDF/' . $invoice_controller->id_invoice ?>"
class="btn btn-sm btn-info" data-toggle="tooltip" title="Lihat">
<span class="fa fa-eye"></span>
</a>
<a onclick="alert('Anda akan diarahkan ke form Ubah
data')" href="<?php echo base_url() . 'invoice_controller/update/' .
$invoice_controller->id_invoice ?>" class="btn btn-sm btn-warning"
data-toggle="tooltip" title="Ubah">
<span class="fa fa-edit"></span></a>
<a onclick="return confirm('anda yakin akan menghapus
data?')" href="<?php echo 'invoice_controller/delete/' .
$invoice_controller->id_invoice ?>" class="btn btn-sm btn-danger"
data-toggle="tooltip" title="Hapus">
<span class="fa fa-trash"></span>
</a>
</td>
</tr>
<?php
}
if ($start == 0) {
?>
<script>
114
alert('Data tidak ditemukan');
</script>
<?php } ?>
</table>
</div>
<div class="row mt-2">
<div class="col-md-4">
<a href="#" class="btn btn-elegant btn-sm disabled ">Jumlah
Data Invoice : <?php echo $total_rows ?></a>
<?php echo anchor(site_url('filter/formRekap/invoice'), 'Filter',
'class="btn btn-secondary"'); ?>
</div>
<div class="col-md-8 text-right">
<?php echo $pagination ?>
</div>
</div>
4) Invoice Model
<?php if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Invoice_model extends CI_Model
{
115
public $table = 'invoice';
public $id = 'id_invoice';
public $order = 'DESC';
function __construct()
{
parent::__construct();
}
// get all
function get_all()
{
$this->db->order_by($this->id, $this->order);
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
return $this->db->get($this->table)->result();
}
// get data by id
function get_by_id($id)
{
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
116
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
$this->db->where('id_invoice', $id);
return $this->db->get($this->table)->row();
}
// get total rows
function total_rows($q = NULL)
{
$this->db->like('id_invoice', $q);
$this->db->or_like('uraian', $q);
$this->db->or_like('no_invoice', $q);
$this->db->or_like('tanggal_invoice', $q);
$this->db->or_like('id_spkk_invoice', $q);
$this->db->or_like('id_bank_invoice', $q);
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
$this->db->from($this->table);
return $this->db->count_all_results();
}
// get data with limit and search
117
function get_limit_data($limit, $start = 0, $q = NULL)
{
$this->db->order_by($this->id, $this->order);
$this->db->like('id_invoice', $q);
$this->db->or_like('uraian', $q);
$this->db->or_like('no_invoice', $q);
$this->db->or_like('tanggal_invoice', $q);
$this->db->or_like('id_spkk_invoice', $q);
$this->db->or_like('id_bank_invoice', $q);
$this->db->limit($limit, $start);
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
return $this->db->get($this->table)->result();
}
// get total rows
function total_rows_laporan($first_date, $second_date,
$jenisLaporan, $nama)
{
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
118
if ($nama != '') {
$this->db->or_like('perusahaan_pihak_1', $nama);
}
if ($first_date) {
$this->db->where($jenisLaporan . '>=', $first_date);
}
if ($second_date) {
$this->db->where($jenisLaporan . '<=', $second_date);
}
$this->db->from($this->table);
return $this->db->count_all_results();
}
// get data with limit and search
function get_limit_data_laporan($limit, $first_date, $second_date,
$jenisLaporan, $nama)
{
if ($nama != '') {
$this->db->or_like('perusahaan_pihak_1', $nama);
}
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
119
$this->db->order_by($jenisLaporan, $this->order);
if ($first_date) {
$this->db->where($jenisLaporan . '>=', $first_date);
}
if ($second_date) {
$this->db->where($jenisLaporan . '<=', $second_date);
}
$this->db->limit($limit, 0);
return $this->db->get($this->table)->result();
}
function total_filter($limit, $first_date, $second_date, $jenisLaporan,
$nama)
{
if ($nama != '') {
$this->db->or_like('perusahaan_pihak_1', $nama);
}
$this->db->join('bank', 'bank.id_bank = invoice.id_bank_invoice');
$this->db->join('spkk', 'spkk.id_spkk = invoice.id_spkk_invoice');
$this->db->order_by($jenisLaporan, $this->order);
if ($first_date) {
$this->db->where($jenisLaporan . '>=', $first_date);
120
}
if ($second_date) {
$this->db->where($jenisLaporan . '<=', $second_date);
}
$this->db->limit($limit, 0);
$this->db->select_sum('ppn');
$this->db->select_sum('pph_23');
$this->db->select_sum('jumlah_bayar');
$this->db->select_sum('total_bayar');
return $this->db->get($this->table)->row();
}
function hasSameName($name){
$this->db->select('*');
$this->db->join('spkk', 'spkk.id_spkk =
invoice.id_spkk_invoice');
$this->db->from($this->table);
$this->db->where('no_spk',$name);
121
$data=$this->db->get();
$result=$data->row();
if(empty($result)){
$this->db->select('status');
// $this->db->join('invoice', 'spkk.id_spkk =
invoice.id_spkk_invoice');
$this->db->from('spkk');
$this->db->where('status',1);
$data=$this->db->get();
$result=$data->row();
122
if ($result->status==2) {
return true;
} else {
return false;
}
} else{
return false;
}
}
// insert data
function insert($data)
{
$this->db->insert($this->table, $data);
return true;
}
// update data
function update($id, $data)
{
123
$this->db->where('id_invoice', $id);
$this->db->update($this->table, $data);
}
// delete data
function delete($id)
{
$this->db->where('id_invoice', $id);
$this->db->delete($this->table);
}
}
d. Filter
1) Form Filter
<div class="row">
<div class="col-md-12">
<div class="container text-center">
<form action="<?php echo base_url('filter/tampilrekap') ?>"
method="post">
<fieldset class="mt-3">
<legend class="h4">Filter Rekap SPKK dan
Invoice</legend>
<div class="mt-3">
124
<p>PILIH REKAP <?= $filter ?></p>
<!-- Material unchecked -->
<div class="form-check form-check-inline">
<input type="radio" class="form-check-input" <?php
echo $data = ($filter == 'spkk') ? 'checked' : ''; ?> id="pilihLapSPKK"
name="pilihRekap" value="spkk">
<label class="form-check-label"
for="pilihLapSPKK">SPKK</label>
</div>
<!-- Material checked -->
<div class="form-check form-check-inline">
<input type="radio" class="form-check-input" <?php
echo $data = ($filter == 'invoice') ? 'checked' : ''; ?>
id="pilihLapInvoice" name="pilihRekap" value="invoice">
<label class="form-check-label"
for="pilihLapInvoice">Invoice</label>
</div>
</div>
<br>
<div class="row">
<div class="col-md ">
125
</div>
<div class="col-md d-none" id="formNama">
<div class=" form-group">
<label for="Nama">Nama</label>
<input type="text" class="form-control"
name="nama" id="nama" placeholder="Masukan Nama Perusahaan 1
atau kosongkan" value="" />
</div>
<p>Pilih tanggal awal dan akhir untuk filter atau
kosongkan</p>
</div>
<div class="col-md ">
</div>
</div>
<br>
<!--Grid row-->
<div class="row">
<!--Grid column-->
<div class="col-md-6 mb-4 d-none"
id="formTanggalAwal">
<p>PILIH TANGGAL AWAL</p>
126
<div class="md-form">
<!--The "from" Date Picker -->
<input placeholder="" type="text" id="startingDate"
class="form-control datepicker" name="tanggalAwal">
<label for="startingDate">Tanggal Awal</label>
</div>
</div>
<!--Grid column-->
<!--Grid column-->
<div class="col-md-6 mb-4 d-none"
id="formTanggalAkhir">
<p>PILIH TANGGAL AKHIR</p>
<div class="md-form">
<!--The "to" Date Picker -->
<input placeholder="" type="text" id="endingDate"
class="form-control datepicker" name="tanggalAkhir">
<label for="endingDate">Tanggal Akhir</label>
</div>
</div>
127
<!--Grid column-->
</div>
<!--Grid row-->
<button type="submit" class="btn btn-secondary btn-
rounded d-none" id="lihatLap">Lihat</button>
</fieldset>
</form>
</div>
</div>
</div>
<script>
$('#startingDate,#endingDate, #pilihLapSPKK, #pilihLapInvoice,
#nama').on('change keyup click', function() {
let pilihLap = $("input[name='pilihRekap']:checked").val();
if (pilihLap) {
$('#formTanggalAwal').removeClass('d-none');
128
$('#formNama').removeClass('d-none');
let from_input = $('#startingDate').pickadate(),
tanggalAwal = from_input.pickadate('picker');
let to_input = $('#endingDate').pickadate(),
tanggalAkhir = to_input.pickadate('picker');
if (pilihLap == 'spkk') {
if (tanggalAwal.get('value')) {
$('#formTanggalAkhir').removeClass('d-none');
// Get the elements
let from_input = $('#startingDate').pickadate(),
from_picker = from_input.pickadate('picker')
let to_input = $('#endingDate').pickadate(),
to_picker = to_input.pickadate('picker')
// Check if there’s a “from” or “to” date to start with and if
so, set their appropriate properties.
if (from_picker.get('value')) {
to_picker.set('min', from_picker.get('select'));
}
if (to_picker.get('value')) {
from_picker.set('max', to_picker.get('select'));
}
129
// Apply event listeners in case of setting new “from” / “to”
limits to have them update on the other end. If ‘clear’ button is pressed,
reset the value.
from_picker.on('set', function(event) {
if (event.select) {
to_picker.set('min', from_picker.get('select'));
} else if ('clear' in event) {
to_picker.set('min', false);
}
})
to_picker.on('set', function(event) {
if (event.select) {
from_picker.set('max', to_picker.get('select'));
} else if ('clear' in event) {
from_picker.set('max', false);
}
})
} else {
$('#formTanggalAkhir').addClass('d-none');
}
} else if (pilihLap == 'invoice') {
if (tanggalAwal.get('value')) {
$('#formTanggalAkhir').removeClass('d-none');
130
// Get the elements
let from_input = $('#startingDate').pickadate(),
from_picker = from_input.pickadate('picker')
let to_input = $('#endingDate').pickadate(),
to_picker = to_input.pickadate('picker')
// Check if there’s a “from” or “to” date to start with and if
so, set their appropriate properties.
if (from_picker.get('value')) {
to_picker.set('min', from_picker.get('select'));
}
if (to_picker.get('value')) {
from_picker.set('max', to_picker.get('select'));
}
// Apply event listeners in case of setting new “from” / “to”
limits to have them update on the other end. If ‘clear’ button is pressed,
reset the value.
from_picker.on('set', function(event) {
if (event.select) {
to_picker.set('min', from_picker.get('select'));
to_picker.set('max', false);
} else if ('clear' in event) {
to_picker.set('min', false);
}
131
})
to_picker.on('set', function(event) {
if (event.select) {
from_picker.set('max', to_picker.get('select'));
} else if ('clear' in event) {
from_picker.set('max', false);
}
})
} else {
$('#formTanggalAkhir').addClass('d-none');
}
}
if (tanggalAwal.get('value') && tanggalAkhir.get('value') &&
pilihLap) {
dataTanggalAwal = tanggalAwal.get('value');
dataTanggalAkhir = tanggalAkhir.get('value');
$('#lihatLap').removeClass('d-none');
} else if (nama != '' && pilihLap) {
$('#lihatLap').removeClass('d-none');
} else {
$('#lihatLap').addClass('d-none');
}
} else {
132
$('#formTanggalAwal').addClass('d-none');
$('#formNama').addClass('d-none');
}
});
$(document).ready(function() {
let pilihLap = $("input[name='pilihRekap']:checked").val();
if (pilihLap) {
$("input[name='pilihRekap']:checked").triggerHandler('click');
}
});
</script>
2) List Filter
<?php if ($pilihRekap == 'spkk') : ?>
<div class="row">
<div class="col-md-2">
<p class="text-center">Jumlah Data : <?= $total_rows ?></p>
<br>
<h5 class="h5 text-left">Nama : <?= $nama ?></h5>
</div>
<div class="col-md-8">
<div class="text-center py-3">
133
<h4 class="h4">REKAP SPKK</h4>
<p class="mb-2">PT SANTIKA LIEM BOGOR</p>
<h5 class="h5"><?php if ($tanggalAwal): ?>
Periode <?= $tanggalAwal ?> - <?= $tanggalAkhir ?>
<?php endif ?></h5>
<?php if ($nama) : ?>
<?php endif ?>
</div>
</div>
<div class="col-md-2">
<button class="btn btn-danger d-flex d-print-none"
onclick="window.print()">Print</button>
</div>
</div>
<div class="table-responsive">
<table class="table table-hover table-bordered table-sm text-center"
style="margin-bottom: 10px">
<tr>
<th class="">No</th>
<th class="th-sm">Tanggal Spk</th>
<th class="th-sm">No Spk</th>
<!-- <th class="th-sm">Nama Pihak 1</th> -->
134
<!-- <th class="th-sm">Jabatan Pihak 1</th> -->
<th class="th-sm">Nama Perusahaan</th>
<th class="th-sm">Tahun Buku</th>
<th class="th-sm">Alamat Perusahaan</th>
<!-- <th class="th-sm">Jenis Bayar</th> -->
<th class="th-sm">Jumlah Bayar</th>
<!-- <th class="th-sm">Status</th> -->
<!-- <th class="th-sm">Ppn</th> -->
<!-- <th class="th-sm">Pph 23</th> -->
<th class="th-sm">Total Bayar</th>
<!-- <th class="th-sm">Tempat Ttd</th> -->
<!-- <th class="th-sm">Aksi</th> -->
</tr><?php
foreach ($filter_data as $spkk_controller) {
?>
<tr>
<td width="40px"><?php echo ++$start ?></td>
<td><?php echo $spkk_controller->tanggal_spk ?></td>
<td><?php echo $spkk_controller->no_spk ?></td>
<!-- <td><?php echo $spkk_controller->Nama_pihak_1
?></td> -->
<!-- <td><?php echo $spkk_controller->jabatan_pihak_1
?></td> -->
135
<td class="text-left"><?php echo $spkk_controller-
>perusahaan_pihak_1 ?></td>
<td><?php echo $spkk_controller->tahun_buku ?></td>
<td class="text-left"><?php echo $spkk_controller-
>alamat_pihak_1 ?></td>
<!-- <td><?php echo $spkk_controller->jenis_bayar
?></td> -->
<td><?php echo format_uang_standar($spkk_controller-
>jumlah_bayar) ?></td>
<!-- <td><?php echo $spkk_controller->status ?></td> -->
<!-- <td><?php echo $spkk_controller->ppn ?></td> -->
<!-- <td><?php echo $spkk_controller->pph_23 ?></td> --
>
<td><?php echo format_uang_standar($spkk_controller-
>total_bayar) ?></td>
<!-- <td><?php echo $spkk_controller->tempat_ttd ?></td>
-->
</tr>
<?php
}
if ($start == 0) {
?>
<script>
136
alert('Data tidak ditemukan');
</script>
<?php } ?>
<tr>
<td colspan="6">Total</td>
<td><?= format_uang_standar($jumlahBayar) ?></td>
<td><?= format_uang_standar($totalBayar) ?></td>
</tr>
</table>
</div>
<?php elseif ($pilihRekap == 'invoice') : ?>
<div class="row">
<div class="col-md-2">
<p class="text-center">Jumlah Data : <?= $total_rows ?></p>
</div>
<div class="col-md-8">
<div class="text-center py-3">
<h4 class="h4">REKAP INVOICE </h4>
<p class="mb-2">PT SANTIKA LIEM BOGOR</p>
<?php if ($nama) : ?>
<h5 class="h5">Nama : <?= $nama ?></h5>
<?php endif ?>
<?php if ($tanggalAwal && $tanggalAkhir) : ?>
137
<h5 class="h5">Tanggal <?= $tanggalAwal ?> sampai <?=
$tanggalAkhir ?></h5>
<?php endif ?>
</div>
</div>
<div class="col-md-2">
<button class="btn btn-danger d-flex d-print-none"
onclick="window.print()">Print</button>
</div>
</div>
<style>
.th-sm,
.tableTd {
font-size: 10px;
border-spacing: 0px;
padding-top: 0px;
min-width: 0px;
}
table .th-sm {
min-width: 1rem;
}
</style>
<div class="">
138
<table class="table table-hover table-bordered table-sm text-center"
style="margin-bottom: 10px;">
<tr>
<th class="">No</th>
<th class="th-sm">Tanggal Invoice</th>
<th class="th-sm">No Invoice</th>
<th class="th-sm">No Spkk</th>
<th class="th-sm">Nama Perusahaan</th>
<th class="th-sm">Jumlah</th>
<th class="th-sm">PPN 10%</th>
<th class="th-sm">PPH -2%</th>
<th class="th-sm">Jumlah Fee</th>
<th class="th-sm">Uang Muka / Pelunasan / Fee</th>
<th class="th-sm">Tahun Buku</th>
<th class="th-sm">Rekening</th>
<!-- <th class="th-sm">Aksi</th> -->
</tr><?php
foreach ($filter_data as $invoice_controller) {
?>
<tr>
<td class="tableTd"><?php echo ++$start ?></td>
<td class="tableTd"><?php echo $invoice_controller-
>tanggal_invoice ?></td>
139
<td class="tableTd"><?php echo $invoice_controller-
>no_invoice ?></td>
<td class="tableTd"><?php echo $invoice_controller-
>no_spk ?></td>
<td class="tableTd"><?php echo $invoice_controller-
>perusahaan_pihak_1 ?></td>
<td class="tableTd"><?php echo
format_uang_standar($invoice_controller->jumlah_bayar) ?></td>
<td class="tableTd"><?php echo
format_uang_standar($invoice_controller->ppn) ?></td>
<td class="tableTd"><?php echo
format_uang_standar($invoice_controller->pph_23) ?></td>
<td class="tableTd"><?php echo
format_uang_standar($invoice_controller->total_bayar) ?></td>
<td class="tableTd"><?php echo $invoice_controller-
>uraian ?></td>
<td class="tableTd"><?php echo $invoice_controller-
>tahun_buku ?></td>
<td class="tableTd"><?php echo $invoice_controller-
>atas_nama . '-' . $invoice_controller->nama_bank ?></td>
</tr>
<?php
}
140
if ($start == 0) {
?>
<script>
alert('Data tidak ditemukan');
</script>
<?php } ?>
<tr>
<td colspan="5">Total</td>
<td colspan="1"><?= format_uang_standar($totalBayar-
>jumlah_bayar) ?></td>
<td colspan="1"><?= format_uang_standar($totalBayar->ppn)
?></td>
<td colspan="1"><?= format_uang_standar($totalBayar-
>pph_23) ?></td>
<td colspan="5"><?= format_uang_standar($totalBayar-
>total_bayar) ?></td>
</tr>
</table>
</div>
<?php else : ?>
gagal pilih rekap
<?php endif ?>
141
B. Blackbox Testing
1. Form Login
Tabel III.6
Hasil Pengujian Black Box Testing Form Login
No Skenario
Pengujian Test Case
Hasil yang
diharapkan
Hasil
pengujian Kesimpulan
1 Mengosongkan
semua isian
data Login dan
langsung klik
tombol
“LOGIN”
Username =
(kosong)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Username
atau
password
anda tidak
benar, ulangi
lagi”
Sesuai
Harapan
Valid
Password =
(kosong)
2 Mengosongkan
semua isian
data Login dan
langsung klik
tombol
“LOGIN”
Username =
admin(benar)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Username
atau
password
anda tidak
benar, ulangi
lagi”
Sesuai
Harapan
Valid
Password =
(salah)
3 Mengosongkan
semua isian
data Login dan
langsung klik
tombol
“LOGIN”
Username =
admin(benar)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Username
atau
Sesuai
Harapan
Valid
Password =
(kosong)
142
password
anda tidak
benar, ulangi
lagi”
4 Mengosongkan
semua isian
data Login dan
langsung klik
tombol
“LOGIN”
Username =
(kosong)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Username
atau
password
anda tidak
benar, ulangi
lagi”
Sesuai
Harapan
Valid
Password =
12345(benar)
5 Mengosongkan
semua isian
data Login dan
langsung klik
tombol
“LOGIN”
Username =
(salah)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Username
atau
password
anda tidak
benar, ulangi
lagi”
Sesuai
Harapan
Valid
Password =
12345(benar)
6 Mengosongkan
semua isian
data Login dan
langsung klik
tombol
“LOGIN”
Username =
admin(benar)
Sistem akan
menerima
akses dan
menampilkan
halaman
utama WEB
Sesuai
Harapan
Valid
Password = 12345(benar)
143
C. Hardware dan Software
Menjelaskan tentang kebutuhan hardware dan software standard yang akan
digunakan untuk dapat menjalankan sistem usulan. Kebutuhan hardware tersebut meliputi
: Processor, Memory, Harddisk, CPUz, Disk Space, Bandwith . Kebutuhan Software
tesebut meliputi :Sistem Operasi, Software Aplikasi dan Software Database.
Tabel III.7
Hardware dan Software
Hardware Software
Client
Ram minimal 1 Mb Browser Support HTML 5
Hardisk minimal 80 GB Sublime Text 3
Processor minimal Dual Core XAMPP Control Panel
Server
Ram minimal 1 GB Apache 2.4.41
CPUz minimal 2.4 Hz PHP 7.3.12
Disk Space 20 GB MySQL 5.0.12
Bandwith 1000 GB