4. IMPLEMENTASI SISTEM
4.1 Koneksi Web dan Database
Koneksi database diperlukan agar aplikasi atau web dapat terhubung dengan database. Source code koneksi database berada di dalam file bernama “db- config.php” yang disimpan didalam folder “config”. Source code untuk koneksi dengan database dapat dilihat pada Segmen Program 4.1.
Segmen Program 4.1 Source code koneksi web dan database
<?php
$db_servername = "127.0.0.1";
$db_username = "root";
$db_password = "";
$db_name = "pelangi";
$conn = new mysqli($db_servername, $db_username, $db_password, $db_name);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
Perintah new mysqli digunakan untuk membuat koneksi baru, db_name menunjukkan variabel yang menyimpan nama database yang akan dikoneksikan dengan aplikasi atau web.
4.2 Implementasi Program
Pada setiap halaman program diawali dengan source code untuk menghubungkan web dengan database. Source code untuk menghubungkan database dan program dalam dilihat pada Segmen Program 4.2
Segmen Program 4.2 Source code penghubung database dan program
<?php
require '../config/db-config.php';
session_start();
include 'sidebarbelibarang.php';
?>
4.2.1 Hak Akses Login
Menu Login digunakan untuk membedakan user yang satu dengan user yang lain, menu login pada aplikasi ini terdapat dalam dua halaman login, halaman yang pertama digunakan untuk login sebagai customer, sedangkan halaman login yang kedua digunakan untuk membedakan hak akses Admin dan Karyawan. Source code login untuk customer dan admin bisa dilihat pada Segmen Program 4.3 dan 4.4
Segmen Program 4.3 Source code cek Login Customer
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { $email_post = $_POST["email"];
$pass_word_post = $_POST["pass_word"];
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "pelangi";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM users where email = '$email_post' AND pass_word = '$pass_word_post' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { $_SESSION["id"]=$row["user_id"];
$_SESSION["isLoggedIn"] = TRUE;
$_SESSION["nama"] = $row["nama"];
echo "Halo ".$row["nama"]." ".$row["email"]."
".$row["pass_word"];
header("Location:home.php");
} } else {
echo "<script>alert('Email / Password salah')</script>";
//"0 results";
}
$conn->close();
}
?>
Segmen Program 4.4 Source code cek Login Admin
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email_post = $_POST["email"];
$pass_word_post = $_POST["pass_word"];
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "pelangi";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM admin where email = '$email_post' AND pass_word = '$pass_word_post' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$_SESSION["isLoggedIn2"] = TRUE;
$_SESSION["nama"] = $row["nama"];
if($row["nama"]=='admin'){
$_SESSION["cekadmin"]=TRUE; } else{
$_SESSION["cekadmin"]=FALSE; }
echo "Halo ".$row["nama"]." ".$row["email"]."
".$row["pass_word"];
header("Location:index.php");
} } else {
echo "<script>alert('Email / Password salah')</script>";
}
$conn->close();
}
?>
Segmen Program 4.5 adalah Source code halaman “home.php” dimana
halaman ini adalah halaman awal atau halaman yang pertama terbuka saat customer
berhasil melakukan login di halaman login, pada halaman ini dilakukan pengecekan
apakah customer sudah melakukan proses login atau belum, jika belum maka
customer hanya dapat melihat produk yang dijual di toko pelangi, namun customer
tidak bisa melakukan proses pembelian atau penambahan barang didalam halaman
keranjang.
Segmen Program 4.5 Source code halaman Home Customer
<div class="container" >
<div class="row">
<?php
$sql = "SELECT * FROM barang";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$post_link_detail = 'item-detail.php?id='.$row["barang_id"];
?>
<div class="col-sm-3">
<div class="panel panel-default card">
<div class="panel-heading post-thumb">
<center>
<img src='<?=$row["gambar"]?>' class="card-image"><br>
</center>
</div>
<div class="panel-body post-body">
<div class="post-title">
<center><h4><?=$row["nama_barang"]?></h4>
<center><h3>Rp. <?=number_format($row["harga_barang"])?></h3>
<a href='<?=$post_link_detail?>'><button type="button" class="btn btn-primary glyphicon glyphicon-search" id="edit_btn">Detail</button></a>
<?php
if (isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn'] == TRUE) {
?>
<form action ="process/addkeranjang.php">
<input type="hidden" name="id" value="<?php echo
$row["barang_id"];?>"/>
<input type="hidden" name="hargas" value="<?php echo
$row["harga_barang"];?>"/>
<input type="hidden" id="namabarang" name="namabarang" value="<?php echo
$row["nama_barang"];?>"/>
<input type="number" name="quantity" value="">
<button type="submit" class="btn btn-danger glyphicon glyphicon- plus" id="delete_btn">Beli</button>
</form>
</center>
<?php } else {
?>
<?php }
?>
</div>
</div>
</div>
</div>
<?php }
} //else {
echo "Tidak ada barang yang terdaftar";
$conn->close();
?>
</div>
</div>
Pada Segmen Program diatas terbagi menjadi dua bagian , bagian pertama
adalah gambar dan nama produk yang ditampilkan kepada semua customer, baik
yang sudah login atau belum, sedangkan untuk menampilkan pilihan pembelian dan
quantity, customer perlu melakukan login terlebih dahulu.
Segmen Program 4.6 adalah source code halaman “index.php” dimana halaman ini adalah halaman awal yang terbuka pada saat admin atau karyawan berhasil melakukan proses login. Pada halaman ini hak akses untuk admin dan karyawan tidaklah sama, admin memiliki hak akses untuk melihat setiap laporan yang ada beserta melakukan perubahan data karyawan yang ada didalam toko, sedangkan karyawan hanya memiliki hak akses untuk mengelola pesanan melihat data master yang ada didalam database.
Segmen Program 4.6 Source code halaman awal admin dan karyawan
<?php
if ((isset($_SESSION['isLoggedIn2']) && $_SESSION['isLoggedIn2'] &&
$_SESSION["cekadmin"] == TRUE )) {
?>
<a href=""><span class="glyphicon glyphicon-user"></span> Selamat Datang
<?=$_SESSION['nama']?></a>
<a href="../process/logout-admin.php"><span class="glyphicon glyphicon- log-out"></span> Logout</a>
<?php
} elseif (isset($_SESSION['isLoggedIn2']) && $_SESSION['isLoggedIn2'] &&
$_SESSION["cekadmin"] == FALSE) {
?>
<a href="../process/logout-admin.php"><span class="glyphicon glyphicon- log-in"></span> Logout</a>
<?php } else { ?>
<?php
header('Location:admin-login.php');
}
?>
<?php
if ((isset($_SESSION['isLoggedIn2']) && $_SESSION['isLoggedIn2'] &&
$_SESSION["cekadmin"] == TRUE )) {
<?php
} elseif (isset($_SESSION['isLoggedIn2']) && $_SESSION['isLoggedIn2'] &&
$_SESSION["cekadmin"] == FALSE) {
?>
</ul>
<?php }
Segmen Program 4.6 Source code halaman awal admin dan karyawan (Lanjutan)
else { ?>
<?php
header('Location:admin-login.php');
}
?>
</div>
Pada halaman ini dilakukan pengecekan apakah admin atau karyawan yang mengakses halam ini telah melakukan login atau belum , jika belum maka semua fitur didalam halaman ini tidak dapat diakses oleh user.
4.2.2 Hak Akses Register
Menu Register digunakan untuk customer baru yang ingin melakukan proses belanja, customer hanya bisa berbelanja setelah memiliki akun yang dibuat pada halaman register. Source code register bisa dilihat pada Segmen Program 4.7.
Segmen Program 4.7 Source code Register user
<?php
require '../config/db-config.php';
require '../config/constant-config.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nama_post = $_POST["nama"];
$tanggal_lahir_post = $_POST["tanggal_lahir"];
$alamat_post = $_POST["alamat"];
$no_hp_post = $_POST["no_hp"];
$email_post = $_POST["email"];
$pass_word_post = $_POST["pass_word"];
$sql = "INSERT INTO users (nama, tanggal_lahir, alamat ,no_hp, email, pass_word)
VALUES ('$nama_post', '$tanggal_lahir_post'
,'$alamat_post','$no_hp_post','$email_post','$pass_word_post')";
if ($conn->query($sql) === TRUE) {
header('Location: '.URL.'home.php', TRUE, 302);
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
Segmen Program 4.7 Source code Register user (Lanjutan)
$conn->close();
}
?>
4.2.3 Hak Akses Logout
Fitur Logout digunakan ketika customer ingin keluar dari aplikasi, semua fitur-fitur yang ada di dalam aplikasi akan tidak dapat digunakan lagi oleh customer apabila customer telah melakukan proses Logout, yang terjadi pada saat Fitur logout digunakan adalah semua SESSION id dari customer akan dihapus. Source code hak akses Logout bisa dilihat pada Segmen Program 4.8.
Segmen Program 4.8 Source code Hak Akses Logout
<?php
session_start();
require '../config/constant-config.php';
// remove all session variables session_unset();
// destroy the session session_destroy();
header("location:../home.php");
?>
4.2.4 Cetak Spanduk
Menu cetak spanduk adalah fitur untuk customer yang ingin melakukan
percetakan spanduk, pada halaman menu ini customer dapat melakukan proses
upload gambar sendiri atau memasukan alamat URL gambar yang ingin dicetak
menjadi spanduk beserta Panjang dan lebarnya, perhitungan harga pada fitur cetak
spanduk adalah Rp.20.000 per meternya (((Panjang x lebar) x jumlah ) x harga per
meter). Source code untuk menambah cetakan spanduk dapat dilihat pada Segmen
Program 4.9.
Segmen Program 4.9 Source code tambah cetakan spanduk
<?php
require '../config/db-config.php';
session_start();
$sid = session_id()."".$_SESSION["id"];
$sql = "SELECT * FROM keranjang WHERE cetakan_id='$_GET[id]' AND
id_session='$sid' AND panjang = '$_GET[panjang]' AND lebar = '$_GET[lebar]'" ; echo $sql;
$hasil=$conn->query($sql);
print_r($hasil);
$harga=$_GET["panjang"] * $_GET["lebar"];
$totalsatuan=str_replace(",","",$_GET["hargaspanduk"]);
if (mysqli_num_rows($hasil)>0) {
$sql2 = ("UPDATE keranjang
SET jumlah_barang = jumlah_barang +
".$_GET["quantity"].",sub_total = sub_total + (harga_satuan *
".$_GET["quantity"]." )
WHERE id_session ='$sid' AND barang_id='$_GET[id]'");
$conn->query($sql2);
} else {
// kalau barang ada, jalankan perintah insert $getid = $_GET["id"];
$getid++;
//$totalsatuan = $_GET["quantity"] * ($_GET["hargaspanduk"] * ($_GET["panjang"] * $_GET["lebar"])) * 1000;
$harga=$_GET["hargaspanduk"] * ($_GET["panjang"] * $_GET["lebar"]);
$totalsatuan = $_GET["quantity"] * $harga ; $sql2 = "INSERT INTO keranjang
(user_id,id_session,cetakan_id,gambar,jumlah_barang,harga_satuan,sub_total,statu s_bayar,nama_barang,panjang,lebar)
VALUES ('$_SESSION[id]','$sid','$getid','$_GET[gambar]', '$_GET[quantity]','$harga','$totalsatuan','0','$_GET[namabarang]','$_GET[panjang ]','$_GET[lebar]')";
echo $sql;
echo $sql2;
$conn->query($sql2);
}
header('Location:../keranjang.php');
?>
4.2.5 Custom Bingkai Foto
Menu custom bingkai foto adalah fitur untuk customer yang ingin melakukan pembelian bingkai dengan ukuran yang diinginkan oleh customer, customer dapat memilih desain bingkai yang diinginkan beserta memasukkan ukuran Panjang dan lebar yang diinginkan dalam satuan centimeter. Source code untuk menambah bingkai foto kedalam pembelian bisa dilihat pada Segmen Program 4.10.
Segmen Program 4.10 Source code tambah bingkai foto
<?php
require '../config/db-config.php';
session_start();
$sid = session_id()."".$_SESSION["id"];
$sql = "SELECT * FROM keranjang WHERE bingkai_id='$_GET[id]' AND
id_session='$sid' AND id_session='$sid' AND panjang = '$_GET[panjang]' AND lebar
= '$_GET[lebar]'";
$hasil=$conn->query($sql);
print_r($hasil);
$harga=$_GET["panjang"] * $_GET["lebar"];
if (mysqli_num_rows($hasil)>0) {
$sql2 = ("UPDATE keranjang
SET jumlah_barang = jumlah_barang + $_GET[quantity],sub_total = sub_total + ($harga * $_GET[hargabingkai] * $_GET[quantity])
WHERE id_session ='$sid' AND bingkai_id='$_GET[id]'");
echo $sql2;
$conn->query($sql2);
} else {
$harga=$_GET["hargabingkai"] * ($_GET["panjang"] * $_GET["lebar"]);
$totalsatuan = $_GET["quantity"] * $harga ; $sql2 = "INSERT INTO keranjang
(user_id,id_session,bingkai_id,jumlah_barang,harga_satuan,sub_total,status_bayar ,nama_barang,panjang,lebar)
VALUES ('$_SESSION[id]','$sid','$_GET[id]',
'$_GET[quantity]','$harga','$totalsatuan','0','$_GET[namabingkai]','$_GET[panjan g]','$_GET[lebar]')";
echo $sql;
echo $sql2;
$conn->query($sql2);
}
header('Location:../keranjang.php');
?>
4.2.6 Pembayaran
Menu pembayaran adalah menu yang menyediakan fitur untuk customer melakukan upload gambar yang berupa bukti struk pembayaran atau transfer dana ke rekening pemilik toko, pada menu ini ditampilkan keseluruhan total belanja dan total pembayaran yang harus dibayarkan oleh customer, Source code fungsi upload bukti pembayaran dapat dilihat pada Segmen Program 4.11.
Segmen Program 4.11 Source code fungsi upload bukti pembayaran
<?php
function rstring() {
$rs=md5(date("Ymdhis").rand(1,1000));
return substr($rs,0,10);
}
function prosesgambar($idx) {
$namaakhir="";
if (isset($_FILES[$idx])) {
$fl=explode(".",$_FILES[$idx]["name"]);
$extension=$fl[count($fl)-1];
$name =rstring().".".$extension;
move_uploaded_file($_FILES[$idx]["tmp_name"],"uploads/".$name);
if ($name=="") {
$namaakhir="";
} else {
$namaakhir=$name;
} }
return $namaakhir;
}
?>
4.2.7 Estimasi Waktu
Setelah customer melakukan pembayaran, akan dijalankan fitur perhitungan
estimasi waktu pengambilan cetakan ataupun pembuatan bingkai, barang pesanan
customer akan ditampilkan ke menu barang yang sudah berhasil dibayar, pada
menu ini ditampilkan estimasi waktu pengambilan cetakan dan bingkai yang dipesan oleh customer. Estimasi waktu untuk cetakan dan pembuatan bingkai sebelumnya yang belum selesai akan ditambahkan secara otomatis untuk cetakan dan pembuatan bingkai pada pesanan selanjutnya. Source code perhitungan estimasi waktu cetak spanduk dan buat bingkai bisa dilihat pada Segmen Program 4.12 dan 4.13
Segmen Program 4.12 Source code Perhitungan estimasi waktu cetak spanduk
$totalAkhir=0;
$q="SELECT * FROM keranjang WHERE user_id='". $_SESSION["id"] ."' AND status_bayar='0'";
echo $q;
$result = $conn->query($q);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { $totalAkhir+=$row["sub_total"];
$q="UPDATE keranjang SET status_bayar='1',transaksi_id='$kode' WHERE keranjang_id='". $row["keranjang_id"] ."'" ;
$conn->query($q);
if ($row["panjang"]!=null && $row["lebar"]!=null &&
$row["cetakan_id"]!=null) {
echo $row["panjang"].",".$row["lebar"];
$lama=$row["panjang"]*$row["lebar"]*20;
if ($first) {
$first=false;
echo "di sini <br/>";
$q="UPDATE keranjang SET estimasi_waktu=DATE_ADD(SYSDATE(),INTERVAL ".$lama." MINUTE) WHERE keranjang_id='". $row["keranjang_id"] ."'" ;
$conn->query($q);
Segmen Program 4.13 Source code perhitungan estimasi waktu buat bingkai
if ($row["panjang"]!=null && $row["lebar"]!=null && $row["bingkai_id"]!=null) {
echo $row["panjang"].",".$row["lebar"];
$lama2=(($row["jumlah_barang"]))*60;
Segmen Program 4.13 Source code perhitungan estimasi waktu buat bingkai (Lanjutan)
if ($first) {
$first=false;
$q="UPDATE keranjang SET estimasi_waktu=DATE_ADD(SYSDATE(),INTERVAL
".$lama2." MINUTE) WHERE keranjang_id='". $row["keranjang_id"] ."'" ;
$conn->query($q);
$q="SELECT * FROM keranjang WHERE keranjang_id='".
$row["keranjang_id"] ."'";
$result2=$conn->query($q);
if ($result2->num_rows > 0) {
while($row2 = $result2->fetch_assoc()) {
$tanggal=$row2["estimasi_waktu"];
} } } else {
$q="UPDATE keranjang SET
estimasi_waktu=DATE_ADD('".$tanggal."',INTERVAL ".$lama2." MINUTE) WHERE keranjang_id='". $row["keranjang_id"] ."'" ;
$conn->query($q); }
}
4.2.8 Ubah Status Pesanan
Setelah customer melakukan proses beli barang, cetak spanduk, atau buat
bingkai, pesanan customer akan terlihat di menu admin, admin dapat mengganti
status pesanan customer dengan status yang ada di dalam tabel “statusorder”. Status
pesanan ini berguna agar customer mengetahui sudah sampai tahap mana pesanan
customer tersebut diproses. Source code ubah status pesanan customer bisa dilihat
pada Segmen Program 4.14.
Segmen Program 4.14 Source code ubah status pesanan customer
<?php
for ($i=0;$i<count($arrValue);$i++){
$sel="";
if ($arrValue[$i]==$row["status_pesanan"]) {
$sel="selected";
} ?>
<option <?php echo $sel; ?> value="<?php echo
$arrValue[$i]?>">
<?php
echo $arrIsi[$i];
?>
</option>
<?php } ?>
<?php
require '../config/db-config.php';
$id=$_POST["id"];
$status=$_POST["status"];
$statusbayar=$_POST["statusbayar"];
$statusSebelum="";
$q="SELECT * FROM keranjang WHERE keranjang_id='$id'";
$conn->query($q);
$barangID="";
$jumlah="";
$harga="";
$result = $conn->query($q);
if ($result->num_rows > 0) {
while($dataS = $result->fetch_assoc()) {
$statusSebelum=$dataS["status_pesanan"];
$barangID=$dataS["barang_id"];
$jumlah=$dataS["jumlah_barang"]*1;
$harga=$dataS["harga_satuan"]*1;
} }
$q="UPDATE keranjang SET status_pesanan='$status',status_bayar ='$statusbayar' WHERE keranjang_id='$id'";
$conn->query($q);
4.2.9 Insert penjualan kedalam kartu stok
Setiap customer melakukan proses pembelian barang, transaksi dari customer akan tercatat didalam tabel kartu stok, data akan masuk dan stok akan berkurang setelah admin atau karyawan mengubah status transaksi menjadi “proses desain selesai” yang menandakan bahwa customer pasti sudah berhasil melakukan proses pembayaran dan terjadi terjadi pengurangan terhadap stok barang yang tersedia didalam toko. Source code insert penjualan kedalam kartu stok dapat diliaht pada Segmen program 4.15.
Segmen program 4.15 Source code insert penjualan kedalam kartu stok
if ($status=="Proses desain selesai" && $statusSebelum==null) {
$stokSebelum=0;
$hargaSebelum=0;
$sql = "SELECT * FROM kartustok WHERE id_barang='". $barangID ."' ORDER BY tanggal DESC LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
if ($row = $result->fetch_assoc()) { $stokSebelum=$row["saldo_akhir"];
$hargaSebelum=$row["hpp"];
} }
echo $stokSebelum.",".$hargaSebelum;
$saldoAkhir=$stokSebelum-$jumlah;
$q="INSERT INTO kartustok
(tanggal,keterangan,perubahan,saldo_akhir,harga,hpp,id_barang) ".
"VALUES (SYSDATE(),'Penjualan ".date("d-M-Y")."',".($jumlah*- 1).",$saldoAkhir,$harga,$hargaSebelum,$barangID)";
echo $q;
$conn->query($q);
}
header("location:kelolapesanan.php");
?>
4.2.10 Beli barang
Admin dapat melakukan input transaksi pembelian dari supplier barang. Stok barang akan bertambah sesuai dengan jumlah barang yang dibeli oleh admin, hpp barang juga terupdate setiap kali proses pembelian barang terjadi. Source code beli barang dapat dilihat pada Segmen program 4.16.
Segmen program 4.16 Source code fitur beli barang
$sql = "SELECT * FROM kartustok WHERE id_barang='$barang' ORDER BY tanggal DESC LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
if ($row = $result->fetch_assoc()) { $stokSebelum=$row["saldo_akhir"];
$hargaSebelum=$row["hpp"];
} }
$hppBaru=(($stokSebelum*$hargaSebelum)+($jumlah*$harga))/($stokSebelum+$
jumlah);
$stokBaru=$stokSebelum+$jumlah;
$q="SELECT DATE_FORMAT(SYSDATE(),'%d-%M-%Y') as tgl";
$tgl="";
$result = $conn->query($q);
if ($result->num_rows > 0) {
if ($row = $result->fetch_assoc()) { $tgl=$row["tgl"];
} }
$q="INSERT INTO kartustok
(tanggal,keterangan,perubahan,saldo_akhir,hpp,id_barang,harga) ".
"VALUES (SYSDATE(),'Pembelian ".$tgl."
','$jumlah','$stokBaru','$hppBaru','$barang','$harga')";
$conn->query($q);
?>
4.2.11 Laporan Penjualan
Laporan penjualan menampilkan data barang-barang yang terjual beserta
pemasukkan yang didapat oleh toko pada periode tertentu. Source code laporan
penjualan dapat dilihat pada Segmen program 4.17.
Segmen program 4.17 Source code Laporan penjualan
<?php
$sql = "
SELECT DATE_FORMAT(tanggal,'%M-%Y') as Periode,SUM(total) as Total
FROM transaksi GROUP BY
DATE_FORMAT(tanggal,'%M-%Y') ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { ?>
<tr>
<td style="font-weight:bold;">
<?php
echo $row["Periode"];
?>
</td>
<td style="text-align:right">
<?php
echo number_format($row["Total"]);
?>
</td>
</tr>
<?php $q="
SELECT SUM(total) as Total,b.kode_barang,b.nama_barang FROM
transaksi t
INNER JOIN keranjang k ON (k.transaksi_id=t.transaksi_id) INNER JOIN barang b ON (k.barang_id=b.barang_id)
WHERE DATE_FORMAT(tanggal,'%M-%Y')='". $row["Periode"] ."' GROUP BY b.barang_id
";
$result2 = $conn->query($q);
if ($result2->num_rows > 0) {
while($row2 = $result2->fetch_assoc()) { ?>
<tr>
<td>
<?php
echo $row2["kode_barang"]."
".$row2["nama_barang"];
?>
</td>
<td style="text-align:right">
Segmen program 4.17 Source code Laporan penjualan (Lanjutan)
<?php echo number_format($row2["Total"]);
?>
</td>
</tr>
<?php
} } echo "<tr><td colspan=2><br/></td></tr>";
} } ?>
4.2.12 Laporan Pembelian
Laporan pembelian menampilkan data pembelian barang berupa pengeluaran yang dikeluarkan oleh toko pada periode tertentu. Source code laporan pembelian dapat dilihat pada Segmen program 4.18.
Segmen program 4.18 Source code Laporan pembelian
<?php
$sql = "
SELECT id,DATE_FORMAT(tanggal,'%M-%Y') as Periode,keterangan,SUM(harga) as Total
FROM kartustok GROUP BY
DATE_FORMAT(tanggal,'%M-%Y') ";
$result = $conn->query($sql);
if ($result->num_rows > 0) { // output data of each row
while($row = $result->fetch_assoc()) { ?>
<tr>
<td>
<?php
echo $row["Periode"];
?>
</td>
<td style="text-align:right">
<?php
Segmen program 4.18 Source code Laporan pembelian (Lanjutan)
echo number_format($row["Total"]);
?>
</td>
</tr>
<?php } } ?>
4.2.13 Laporan stok barang
Laporan stok barang menampilkan data keluar masuk barang didalam toko beserta stok akhir barang yang tersedia di toko dan hpp terakhir yang dihitung dengan menggunakan metode average, juga harga jual dan harga beli barang tersebut. Pada laporan stok barang juga tercatat tanggal terjadinya suatu aktivitas keluar atau masuk barang didalam toko. Source code laporan stok barang dapat dilihat pada Segmen program 4.19.
Segmen program 4.19 Source code laporan stok barang
<?php
$sql = "
SELECT ks.tanggal ,ks.keterangan ,ks.perubahan
,ks.saldo_akhir ,ks.harga ,ks.hpp ,ks.id_barang ,b.nama_barang as nama from
`kartustok` ks INNER JOIN barang b on (ks.id_barang = b.barang_id) order by tanggal desc ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { ?>
<tr>
<td>
<?php
echo $row["tanggal"];
?>
</td>
<td>
<?php
echo $row["keterangan"];
?>
</td>
<td style="text-align:center">
<?php
Segmen program 4.19 Source code laporan stok barang (Lanjutan)
echo $row["perubahan"];
?>
</td>
<td style="text-align:center">
<?php
echo $row["saldo_akhir"];
?>
</td>
<td style="text-align:right">
<?php
echo $row["harga"];
?>
</td>
<td style="text-align:right">
<?php
echo $row["hpp"];
?>
</td>
<td style="text-align:center">
<?php
echo $row["id_barang"];
?> </td>
<td>
<?php
echo $row["nama"];
?>
</td>
</tr>
<?php } } ?>