4. IMPLEMENTASI SISTEM
Pada bab ini akan dijelaskan mengenai implementasi sistem berdasarkan
analisis dan desain yang telah dibuat pada bab sebelumnya. Penjelasan tentang
implementasi program berdasarkan data flow diagram, file controller dan segmen
programnya dapat dilihat pada Tabel 4.1
.
Tabel 4. 1
.
Daftar Fitur, File Controller, Data Flow Diagram, dan Segmen
Program
Proses
DFD
Menu
File
Segmen
Program
Keterangan
Proses
1.5
Pembelian
ke
supplier
pembelian_insert1.php
Segmen
Program
4.11
Memiliki
fungsi
melakukan
pembelian
ke
supplier.
Proses
1.7
Stock
Opname
stockopname_insert1.php
Segmen
Program
4.15
Memiliki
fungsi
penyesuaian stok
fisik
dan
stok
laporan.
Proses
1.8
Penjualan
Swalayan
pos1.php
Segmen
Program
4.16
Memiliki
fungsi
melakukan
penjualan barang
ke customer.
Proses
1.4
Integrasi
Data
Simpan
Pinjam
shu_insert1.php
Segmen
Program
4.18
Mengintegrasikan
data
simpan
pinjam
anggota
untuk menghitung
sisa hasil usaha.
Proses
1.4
Sisa Hasil
Usaha
shu_insert1.php
Segmen
Program
4.18
Memiliki
fungsi
melakukan
penghitungan sisa
hasil usaha.
4.1
Implementasi Program
Implementasi program merupakan tahap penerapan sistem sesuai dengan
rancangan yang telah dibuat pada bab sebelumnya. Pembuatan program dimulai
mulai dari pembuatan menu Login hingga pembuatan semua menu yang menjadi
fitur program.
4.1.1
Menu Pendaftaran Produk dan Bundle
Untuk melakukan penjualan dan pembelian, pengguna harus mendaftarkan
data produk terlebih dahulu. Terdapat dua jenis produk, yaitu produk satuan dan
produk bundle. Source code fungsi pendaftaran produk dapat dilihat pada Segmen
Program 4. 1 dan Segmen Program 4. 2.
Segmen Program 4. 1. Source Code Pendaftaran Produk Satuan
<?php include "connect.php"; $nama_produk=$_POST['nama_produk']; $satuan=$_POST['satuan']; $kategori=$_POST['kategori']; $deskripsi=$_POST['deskripsi']; $barcode=$_POST['barcode']; $satuan=$_POST['satuan']; $jumlah=$_POST['jumlah']; $harga_beli=$_POST['harga_beli']; $harga_jual=$_POST['harga_jual']; $minimal=$_POST['minimal']; $date = date('Y-m-d');
$sql2 = "SELECT * FROM barang WHERE BARCODE='$barcode'"; $result2 = mysqli_query($con, $sql2);
if(mysqli_num_rows($result2) > 0) {
echo "
<script type='text/javascript'> alert('Barcode telah terdaftar!');
location.href='javascript:history.go(-1);'; </script> "; } else{ $query=mysqli_query($con,"INSERT INTO barangVALUES('','$satuan','$kategori','$nama_produk','$deskripsi','$barcode','0' );"); $sql1 = "SELECT * FROM barang ORDER BY ID_BARANG DESC LIMIT 1";
$result1 = mysqli_query($con, $sql1); $row1 = mysqli_fetch_array($result1);
$query1=mysqli_query($con,"INSERT INTO
detail_barangVALUES('','$row1[0]','$harga_beli','$harga_jual','$jumlah','$minima l');");
$query=mysqli_query($con,"INSERT INTO kartu_stok
VALUES('','$row1[0]','$date','$jumlah','$harga_beli','','','$jumlah','$harga_bel i');");?>
Segmen Program 4. 2. Source Code Pendaftaran Produk Bundle
<?php include "connect.php"; $nama_paket=$_POST['nama_paket']; $kategori=$_POST['kategori']; $deskripsi=$_POST['deskripsi']; $barcode=$_POST['barcode']; $harga_jual=$_POST['harga_jual']; $satuan=$_POST['satuan']; $minimal=$_POST['minimal']; $jumlah_bundle=$_POST['jumlah_bundle']; $count=count($_POST["produk_bundle"]); $date = date('Y-m-d'); $harga_beli=0; $harga_beli1=0; $a=0;//cek apakah stok barang mencukupi untuk dibundle for($i=0; $i<$count; $i++)
{ $stok_krg=0; $stok_krg1=0; $jumlah_produk=mysqli_real_escape_string($con, $_POST["jumlah_produk"][$i]); $barang=mysqli_real_escape_string($con, $_POST["produk_bundle"][$i]);
$query=mysqli_query($con,"SELECT * FROM detail_barang WHERE
ID_BARANG='$barang';"); $row=mysqli_fetch_array($query); $harga_beli=$row[2]*$jumlah_produk; $harga_beli1=$harga_beli1+$harga_beli; $stok_krg1=$jumlah_bundle*$jumlah_produk; if($row[4]<$stok_krg1){ $a++; } } if($a>0){ echo " <script type='text/javascript'>
alert('Stok barang tidak mencukupi!'); location.href='javascript:history.go(-1);'; </script>
"; }
else{
$query=mysqli_query($con,"INSERT INTO barang
VALUES('','$satuan','$kategori','$nama_paket','$deskripsi','$barcode','1');"); $sql1 = "SELECT * FROM barang ORDER BY ID_BARANG DESC LIMIT 1";
$result1 = mysqli_query($con, $sql1); $row1 = mysqli_fetch_array($result1);
$query1=mysqli_query($con,"INSERT INTO detail_barang VALUES('','$row1[0]','$harga_beli1','$harga_jual','$jumlah_bundle','$minimal');" ); $id_barang=$row1[0]; $harga_beli=0; $harga_beli1=0;
for($i=0; $i<$count; $i++) {
Segmen Program 4.2. Source Code Pendaftaran Produk Bundle (sambungan)
$stok_krg=0; $stok_krg1=0; $barang=mysqli_real_escape_string($con, $_POST["produk_bundle"][$i]); $jumlah_produk=mysqli_real_escape_string($con, $_POST["jumlah_produk"][$i]);$query2=mysqli_query($con,"INSERT INTO bundle
VALUES('$id_barang','$barang','$jumlah_produk');");
$query=mysqli_query($con,"SELECT * FROM detail_barang WHERE
ID_BARANG='$barang';"); $row=mysqli_fetch_array($query); $harga_beli=$row[2]*$jumlah_produk; $harga_beli1=$harga_beli1+$harga_beli; $stok_krg=$jumlah_bundle*$jumlah_produk; $stok_krg1=$row[4]-$stok_krg;
$query3=mysqli_query($con,"UPDATE detail_barang SET JUMLAH='$stok_krg1' WHERE ID_BARANG='$row[0]';");
//kartu stok pengurangan item yang dibundle $query5 = "
SELECT * FROM kartu_stok WHERE ID_BARANG='$barang' ORDER BY ID_KARTU_STOK DESC LIMIT 1
";
$result5 = mysqli_query($con, $query5); $row5 = mysqli_fetch_array($result5); $selisih=($row5[7]-$stok_krg);
$hpp=$row5[8]; $saldo=$row5[8];
$query4=mysqli_query($con,"INSERT INTO kartu_stok
VALUES('','$barang','$date','','','$stok_krg','$hpp','$selisih','$saldo');"); }
//kartu stok penambahan paket bundle $query5 = "
SELECT * FROM kartu_stok WHERE ID_BARANG='$id_barang' ORDER BY ID_KARTU_STOK DESC LIMIT 1
";
$result5 = mysqli_query($con, $query5); $row5 = mysqli_fetch_array($result5); $selisih=$row5[7]+$jumlah_bundle;
$saldo=($row5[7]*$row5[8])+($jumlah_bundle*$harga_beli);
$saldo1=$saldo/($row5[7]+$jumlah_bundle); $query6=mysqli_query($con,"INSERT INTO kartu_stok
VALUES('','$id_barang','$date','$jumlah_bundle','$harga_beli1','','','$jumlah_bu ndle','$harga_beli1');");
?>
4.1.2
Menu Pembelian
Untuk melakukan proses pembelian, pengurus akan memasukkan data
supplier dan data barang yang akan dibeli. Source code fungsi pembelian dapat
Segmen Program 4. 3. Source Code Pembelian
<?php include "connect.php"; $supplier=$_POST['supplier']; $tgl_beli=$_POST['tgl_beli']; $catatan=$_POST['catatan']; $jatuh_tempo=$_POST['jatuh_tempo']; $count=count($_POST["nama_produk"]); $date = date('Y-m-d'); $total_beli=0; $total_beli1=0; $total_beli2=0;for($i=0; $i<$count; $i++) { $pajak=mysqli_real_escape_string($con, $_POST["pajak"][$i]); $harga_beli=mysqli_real_escape_string($con, $_POST["harga_beli"][$i]); $diskon=mysqli_real_escape_string($con, $_POST["diskon"][$i]); $jumlah_beli=mysqli_real_escape_string($con, $_POST["jumlah"][$i]); if (strpos($pajak, '%') !== false) { $total_beli=($jumlah_beli*$harga_beli)+(($jumlah_beli*$harga_beli)*($pajak/100)) ; } else{ $total_beli=($jumlah_beli*$harga_beli)+$pajak; } if (strpos($diskon, '%') !== false) { $total_beli1=$total_beli-($total_beli*($diskon/100)); } else{ $total_beli1=$total_beli-$diskon; } $total_beli2=$total_beli2+$total_beli1; }
$query=mysqli_query($con,"INSERT INTO pembelian
VALUES('','$supplier','$date','$jatuh_tempo','$catatan','','$total_beli2');");
$query1=mysqli_query($con,"SELECT * FROM pembelian ORDER BY ID_PEMBELIAN DESC LIMIT 1;");
$row=mysqli_fetch_array($query1); $id_pemb=$row[0];
for($i=0; $i<$count; $i++) { $pajak=mysqli_real_escape_string($con, $_POST["pajak"][$i]); $harga_beli=mysqli_real_escape_string($con, $_POST["harga_beli"][$i]); $diskon=mysqli_real_escape_string($con, $_POST["diskon"][$i]); $jumlah_beli=mysqli_real_escape_string($con, $_POST["jumlah"][$i]);
Segmen Program 4.3. Source Code Pembelian (sambungan)
if (strpos($pajak, '%') !== false) { $harga_beli_bersih=$harga_beli+($harga_beli*($pajak/100)); } else{ $harga_beli_bersih=$harga_beli+($pajak/$jumlah_beli); } if (strpos($diskon, '%') !== false) { $harga_beli_bersih=$harga_beli_bersih-($harga_beli_bersih*($diskon/100)); } else{ $harga_beli_bersih=$harga_beli_bersih-($diskon/$jumlah_beli); }$sql = mysqli_query($con, "INSERT INTO detail_pembelian VALUES('','".mysqli_real_escape_string($con,
$_POST["nama_produk"][$i])."','$id_pemb', '".mysqli_real_escape_string($con, $_POST["harga_beli"][$i])."','".mysqli_real_escape_string($con,
$_POST["jumlah"][$i])."','$pajak','$diskon','$harga_beli_bersih');");
$query2=mysqli_query($con,"SELECT * FROM detail_barang
WHERE ID_BARANG='".mysqli_real_escape_string($con,
$_POST["nama_produk"][$i])."';");
$row2=mysqli_fetch_array($query2); if($row2[2]!=$harga_beli_bersih){
$query3=mysqli_query($con,"SELECT * FROM barang WHERE ID_BARANG='".mysqli_real_escape_string($con, $_POST["nama_produk"][$i])."';"); $row3=mysqli_fetch_array($query3);
echo "
<script type='text/javascript'>
alert('Ada perubahan harga beli pada produk ".$row3[3]." segera lakukan penyesuaian harga jual bila perlu!');
</script> "; } ?>
4.1.3
Penghitungan Harga Pokok Penjualan Metode Average
Penghitungan harga pokok penjualan dilakukan untuk mengetahui modal
suatu barang dengan menggunakan metode average. Harga pokok penjualan ini
kemudian akan dicatat pada kartu stok bersamaan dengan jumlah stoknya
sekarang. Hal ini memudahkan pengguna dalam menentukan harga jual suatu
barang dan untuk melihat mutasi stok suatu barang. Source code penghitungan
harga pokok penjualan dapat dilihat pada Segmen Program 4. 4.
Segmen Program 4. 4. Source Code Penghitungan Harga Pokok Penjualan
$query3 = "
SELECT * FROM detail_pembelian WHERE
ID_DETAIL_PEM='".mysqli_real_escape_string($con, $_POST["id_detail_pem"][$i])."' ";
$result3 = mysqli_query($con, $query3); $row3 = mysqli_fetch_array($result3); $idbrg=$row3[1];
$query5 = "
SELECT * FROM kartu_stok WHERE ID_BARANG='$idbrg' ORDER BY ID_KARTU_STOK DESC LIMIT 1
";
$result5 = mysqli_query($con, $query5); $row5 = mysqli_fetch_array($result5); $jumlah_terima=mysqli_real_escape_string($con, $_POST["jumlah_terima"][$i]); $harga_beli=mysqli_real_escape_string($con, $_POST["harga_beli"][$i]); $selisih=($row5[7]+mysqli_real_escape_string($con, $_POST["jumlah_terima"][$i])); $saldo=($row5[7]*$row5[8])+($jumlah_terima*$harga_beli); $saldo1=$saldo/($row5[7]+$jumlah_terima);
$query4=mysqli_query($con,"INSERT INTO kartu_stok
VALUES('','$idbrg','$date','".mysqli_real_escape_string($con, $_POST["jumlah_terima"][$i])."','".mysqli_real_escape_string($con, $_POST["harga_beli"][$i])."','','','$selisih','$saldo1');"); $query6 = "
SELECT * FROM detail_barang WHERE ID_BARANG='$idbrg' ";
$result6 = mysqli_query($con, $query6); $row6 = mysqli_fetch_array($result6); $stok = $row6[4];
$tambah = $stok+$jumlah_terima;
$query7=mysqli_query($con,"UPDATE detail_barang SET JUMLAH='$tambah', HARGA_BELI='$saldo1' WHERE ID_BARANG='$idbrg';");
4.1.4
Menu Penjualan (Point of Sales)
Untuk melakukan penambahan data penjualan, pengurus akan memasukan
data anggota dan data barang yang dijual. Source code fungsi penjualan dapat
dilihat pada Segmen Program 4. 5.
Segmen Program 4. 5. Source Code Penjualan
if (strpos($diskonbrg, '%') !== false) { $subtotal=$hargabrg-($hargabrg*($diskonbrg/100)); } else{ $subtotal=$hargabrg-$diskonbrg; } if (strpos($diskonkat, '%') !== false) { $subtotal1=$subtotal-($subtotal*($diskonkat/100)); }
Segmen Program 4. 6. Source Code Penjualan (sambungan)
else{ $subtotal1=$subtotal-$diskonkat; } if (strpos($diskongrosir, '%') !== false) { $subtotal2=$subtotal1-($subtotal1*($diskongrosir/100)); } else{ $subtotal2=$subtotal1-$diskongrosir; } $subtotal2=$subtotal2*$qty;$query1=mysqli_query($con,"INSERT INTO detail_penjualan
VALUES('','$id_jual','$idbrg','$qty','$hargabrg','$subtotal2','$diskonkat','$dis konbrg','$diskongrosir','0');");
4.1.5
Menu Sisa Hasil Usaha
Setelah pengurus memasukkan pembagian laba tahun berjalan, maka
penghitungan sisa hasil usaha sudah dapat dilakukan. Source code sisa hasil usaha
dapat dilihat pada
Segmen Program 4. 7.
Segmen Program 4. 7. Source Code Sisa Hasil Usaha
$sql1 = "SELECT * FROM anggota WHERE STATUS='APPROVED'"; $result1 = mysqli_query($con, $sql1); while($row = mysqli_fetch_array($result1)){ $ksp1=0;
$sql3 = "SELECT * FROM pinjaman_uang WHERE ID_ANGGOTA='$row[0]' AND Year(TGL_PINJAMAN) = '$year'";
$result3 = mysqli_query($con, $sql3);
while($row3 = mysqli_fetch_array($result3)){
if($row3[14]!='MASIH DIPROSES' OR $row3[14]!='DITOLAK'){
$bunga_ksp=$row3[7];
$sql6 = "SELECT * FROM detail_pinjaman WHERE ID_PINJAMAN='$row3[0]'"; $result6 = mysqli_query($con, $sql6); while($row6 = mysqli_fetch_array($result6)){ if($row6[5]==1){ $ksp=0; } else{ $ksp=($row6[3]-($row6[3]*($bunga_ksp/100)))*($bunga_ksp/100); } $ksp1=$ksp1+$ksp; } } } $pokok1=0;
Segmen Program 4. 8. Source Code Sisa Hasil Usaha (sambungan)
$pokok=$row4[3];
$pokok1=$pokok1+$pokok; }
$wajib1=0;
$sql5 = "SELECT * FROM wajib WHERE ID_ANGGOTA='$row[0]' AND Year(TGL_WAJIB) = '$year'";
$result5 = mysqli_query($con, $sql5); while($row5 = mysqli_fetch_array($result5)){ $wajib=$row5[3]; $wajib1=$wajib1+$wajib; } $toko1=0;
$sql6 = "SELECT * FROM penjualan WHERE
ID_ANGGOTA='$row[0]' AND STATUS='1' AND Year(TGL_JUAL) = '$year'"; $result6 = mysqli_query($con, $sql6); while($row6 = mysqli_fetch_array($result6)){ $toko=$row6[4]; $toko1=$toko1+$toko; } $masuk1=0;
$sql7 = "SELECT * FROM penjualan WHERE STATUS='1' AND Year(TGL_JUAL) = '$year'"; $result7 = mysqli_query($con, $sql7); while($row7 = mysqli_fetch_array($result7)){ $masuk=$row7[4]; $masuk1=$masuk1+$masuk; } $keluar1=0;
$sql8 = "SELECT * FROM pembayaran WHERE Year(TGL_BAYAR) = '$year'"; $result8 = mysqli_query($con, $sql8); while($row8 = mysqli_fetch_array($result8)){ $keluar=$row8[4]; $keluar1=$keluar1+$keluar; } $untung=$masuk1-$keluar1; $untung_toko=$toko1*(0.125/100); $hasil_usaha=(($ksp1+$pokok1+$wajib1+$untung_toko)/$jumlah_seluruh1)*100; $shu_diterima=$shu_dibagikan*($hasil_usaha/100);
$query=mysqli_query($con,"INSERT INTO shu
VALUES('','$row[0]','$id_periode','$ksp1','$wajib1','$pokok1','$untung_toko','$h asil_usaha','$shu_diterima');");
echo "
<script type='text/javascript'>
alert('Data SHU telah berhasil ditambahkan!'); location.href='index.php';
</script> ";
4.1.6
Laporan Laba Rugi
Pada menu laporan laba rugi, program akan otomatis mencari riwayat
pemasukan dan pengeluaran dan secara otomatis akan menampilkan total
keuntungan yang diperoleh koperasi pada periode tertentu. Source code fungsi
laporan laba rugi dapat dilihat pada Segmen Program 4. 9.
Segmen Program 4. 9. Source Code Laporan Laba Rugi
$sql1 = "SELECT * FROM penjualan WHERE STATUS='1' AND TGL_JUAL BETWEEN '$fromdate' AND '$todate'";
$result1 = mysqli_query($con, $sql1); while($row1 = mysqli_fetch_array($result1)){ $penjualan=$row1[4]; $penjualan1=$penjualan1+$penjualan; } $aset1=0;
$sql1 = "SELECT * FROM barang"; $result1 = mysqli_query($con, $sql1);
while($row1 = mysqli_fetch_array($result1)){
$sql2 = "SELECT * FROM kartu_stok WHERE ID_BARANG=$row1[0] ORDER BY ID_KARTU_STOK DESC LIMIT 1";
$result2 = mysqli_query($con, $sql2); while($row2 = mysqli_fetch_array($result2)){ $aset=$row2[7]*$row2[8]; $aset1=$aset1+$aset; } $pemasukan1=0;
$sql2 = "SELECT * FROM pemasukan WHERE TANGGAL BETWEEN '$fromdate' AND '$todate'";
$result2 = mysqli_query($con, $sql2);
while($row2 = mysqli_fetch_array($result2)){ $pemasukan=$row2[3];
$pokok1=0;
$sql3 = "SELECT * FROM pokok WHERE TGL_POKOK BETWEEN '$fromdate' AND '$todate'"; $result3 = mysqli_query($con, $sql3); while($row3 = mysqli_fetch_array($result3)){ $pokok=$row3[3]; $pokok1=$pokok1+$pokok; $wajib1=0;
$sql4 = "SELECT * FROM wajib WHERE TGL_WAJIB BETWEEN '$fromdate' AND '$todate'"; $result4 = mysqli_query($con, $sql4); while($row4 = mysqli_fetch_array($result4)){ $wajib=$row4[3]; $wajib1=$wajib1+$wajib; $ksp1=0; $pinalti1=0; $pinalti=0;
$sql5 = "SELECT * FROM detail_pinjaman WHERE TGL_BAYAR BETWEEN '$fromdate' AND '$todate'";
$result5 = mysqli_query($con, $sql5);
while($row5 = mysqli_fetch_array($result5)){ $query6 = "
Segmen Program 4. 10. Source Code Laporan Laba Rugi (sambungan)
$result6 = mysqli_query($con, $query6);
$row6 = mysqli_fetch_array($result6); if($row5[5]==1){ $pinalti=$row5[3]; } else{ $ksp=$row5[3]*($row6[7]/100); } $ksp1=$ksp1+$ksp; $pinalti1=$pinalti1+$pinalti; } $pembayaran1=0;
$sql7 = "SELECT * FROM pembayaran WHERE TGL_BAYAR BETWEEN '$fromdate' AND '$todate'"; $result7 = mysqli_query($con, $sql7); while($row7 = mysqli_fetch_array($result7)){ $pembayaran=$row7[4]; $pembayaran1=$pembayaran1+$pembayaran; } $pengeluaran1=0;
$sql8 = "SELECT * FROM pengeluaran WHERE TANGGAL BETWEEN '$fromdate' AND '$todate'"; $result8 = mysqli_query($con, $sql8); while($row8 = mysqli_fetch_array($result8)){ $pengeluaran=$row8[3]; $pengeluaran1=$pengeluaran1+$pengeluaran; $bayar1=0;
$sql9 = "SELECT * FROM detail_pinjaman WHERE TGL_BAYAR BETWEEN '$fromdate' AND '$todate'";
$result9 = mysqli_query($con, $sql9);
while($row9 = mysqli_fetch_array($result9)){ $query10 = "
SELECT * FROM pinjaman_uang WHERE
ID_PINJAMAN='$row9[1]'
";
$result10 = mysqli_query($con, $query10);
while($row10 = mysqli_fetch_array($result10)) { if($row10[6]!=0){ $bayar=($row9[3]*($row10[7]/100)); $bayar1=$bayar1+$bayar; } } $laba_rugi=$pendapatan-$expense;