4. IMPLEMENTASI SISTEM
4.1. Gambaran Umum Program
Setelah melakukan analisis pada bab sebelumnya, pada bab ini akan dijelaskan
mengenai implementasi sistem dari aplikasi yang telah dibuat. Program ini dibuat
dengan menggunakan database MySQL dan bahasa PHP.
4.2. Koneksi Database
Pembuatan aplikasi ini menggunakan XAMPP Server sebagai sarana untuk
melakukan koneksi dengan MySQL Server. Untuk menjalankan XAMPP Server
tekan tombol start pada modul MySQL, Apache dan Mercury dapat dilihat pada
Gambar 4.1.
Gambar 4.1. Connect XAMPP Server
Untuk mengkoneksikan antara PHP dengan MySQL server, maka diperlukan
syntax pada halaman awal PHP seperti pada Segmen 4.1. Coding tersebut harus ada
41
Segmen Program 4.1. Connect Database
4.3. Hubungan Proses DFD dengan Segmen Program
Dalam pembuatan sistem online perusahaan, program dijalankan sesuai dengan
proses bisnis yang dilakukan. Hubungan antara alur proses bisnis dengan program
dapat dilihat pada Tabel 4.1.
Tabel 4.1. Hubungan Proses DFD dengan Segmen Program
Proses Data
Flow
Diagram
(DFD)
Menu
Prosedur
Segmen
Program
Proses
1
Proses
Pembayaran
Login/Pemilihan
barang/Atur
Pengiriman/Metode
Pembayaran
Login.php
Payment.php
4.6
4.16
Proses
2
Proses
Laporan
Login/Laporan
Login.php
Lap_jual.php
Lap_kirim.php
Lap_stok.php
Laporanpenjualan.php
Laporanpengiriman.php
Laporanstok.php
4.9
4.10
4.11
4.12
4.13
Proses
3
Proses
Pembelian
Login/Pemilihan barang
cart/Atur
Pengiriman/
Pemilihan
Metode
Pembayaran/Konfirmasi
Login.php
Products.php
Product_summary.php
Confirm_purchase.php
Payment.php
Kelola_jual.php
4.3
4.4
4.5
4.7
4.8
4.14
4.15
<?php $connect = mysql_connect("localhost","root",'') or die("cannot connect"); $selectdata = mysql_select_db("karunia_komputer"); ?>42
4.4. Implementasi Program
Implementasi program merupakan rancangan dari desain sistem yang telah
dibuat. Program diawali dengan halaman home. Source code home dapat dilihat pad
Segmen 4.2.
Segmen Program 4.2. Pengecekan Login
<?phpinclude "header.php";
if(!isset($_SESSION['iduser'])) {if(isset($_POST['login']))
{$q="Select * from m_user where (username = '".$_POST['username']."' or email_user = '".$_POST['username']."') AND password_user = '".md5($_POST['password'])."'"; $qr=mysql_query($q);if(mysql_num_rows($qr)>0) {$r=mysql_fetch_array($qr);$_SESSION['iduser']=$r['id_user']; $_SESSION['nama']=$r['nama_user']; if(isset($_GET['cmd'])) {if($_GET['cmd']=="cart") {echo"<script>window.location.href='product_summary.php'</scri pt>";}}else echo "<script>window.location.href='index.php'</script>";
}else {echo "<script>alert('Username / Email tidak ditemukan atau password tidak cocok')</script>";
}} }}elseif(isset($_GET['cmd'])) {if($_GET['cmd']=="shipping") echo"<script>window.location.href='confirm_purchase.php'</scri pt>";elseif($_GET['cmd']=="checkout") {$_SESSION['service']=$_POST['service'];$_SESSION['hrgship']=$ _POST['hrgship'];echo"<script>window.location.href='payment.ph p'</script>";}elseif($_GET['cmd']=="cart"){echo "<script>window.location.href='product_summary.php'</script>"; }elseif($_GET['cmd']=="logout") {session_unset();session_destroy();$_SESSION = array();echo "<script>window.location.href='index.php'</script>";} } else
43
Setelah melakukan login maka user dapat memilih menu dalam program ,
terdapat 3 menu utama dan tiap-tiap menu memiliki beberapa sub-menu. Dapat
dilihat pada Tabel 4.2.
Tabel 4.2. Tabel Menu
Nama Menu
Sub Menu
Nama Form yang Digunakan
Master Data
Daftar Produk
Daftar_produk
Daftar kategori
Daftar_kategori
Daftar sub-kategori
Daftar_sub_kategori
Daftar user
Daftar_user
Daftar Testimoni
Daftar_testimoni
Pembelian
Daftar Cart
Daftar_cart
Daftar Wishlist
Daftar_wishlist
Daftar Pembayaran
Daftar_pembayaran
Laporan
Laporan
4.4.1. Menu Master
Menu ini berisi segmen program yang mengatur master produk, user,
kategori, sub-kategori dan testimoni. Menu master dapat dilihat pada Tabel 4.3.
Tabel 4.3. Menu Master
Sub Menu
Keterangan
Tabel 4.3. Menu Master (Sambungan)
Sub Menu
Keterangan
Daftar Kategori
Menambah, mengubah dan menghapus data
kategori
Daftar Sub-Kategori
Menambah, mengubah dan menghapus data
sub-kategori
Daftar User
Menambah dan menghapus data user
Daftar Testimoni
Menambah dan menghapus testimoni
4.4.2. Menu Pembelian
Menu ini digunakan oleh user untuk mencatat transaksi yang berhubungan
dengan pembelian. Transaksi tersebut mencakup pemesanan barang, pembelian,
pembayaran dan barang yang diinginkan. Penjelasan mengenai menu pembelian
dapat dilihat pada Tabel 4.4.
Tabel 4.4. Tabel Menu Pembelian
Sub Menu
Keterangan
Daftar Cart
Menambah, mengubah dan menghapus data produk
yang ada dalam cart
Daftar Wishlist
Menambah, mengubah, dan menghapus data produk
yang ada dalam wishlist user.
Daftar Pembayaran
Menambah dan mengubah data pesanan yang dilakukan
oleh user.
45
4.4.2.1. Transaksi Pembelian
Pada menu pembelian, user memilih produk yang ingin dibeli,
pemilihan dimasukkan ke dalam cart tiap user yang telah melakukan
login. Jika user belum melakukan login, maka akan dimunculkan halaman
login. Langkah-langkah untuk melakukam pembelian dapat dilihat pada
Tabel 4.5.
Tabel 4.5. Menu Pembelian
No. Keterangan
Segmen
1.
Pemilihan produk
4.3
2.
Pengisian tujuan pengiriman
4.4
3.
Pemilihan jenis pengiriman
4.5
4.
Pemilihan jenis pembayaran kartu
kredit/transfer
4.6
Segmen Program 4.3. Pemilihan Produk
if(isset($_GET['cmd'])) {if($_GET['cmd']=="clear")
{unset($_SESSION['cart']);unset($_SESSION['total']); mysql_query("DELETE FROM m_cart WHERE user_id = '".$_SESSION['iduser']."'");}
elseif($_GET['cmd']=="delete")
{$id=$_GET['id']; unset($_SESSION['cart'][$id]); $_SESSION['cart']=array_values($_SESSION['cart']);
}elseif($_GET['cmd']=="UpdateQty"){$_SESSION['cart'][$_GET['nomor' ]]['qty']=$_GET['qty']; mysql_query("UPDATE m_cart SET
total_produk ='".$_GET['qty']."' where
user_id='".$_SESSION['iduser']."' AND produk_id
='".$_GET['produk']."'");}}elseif(isset($_GET['idproduk'])) {if(isset($_GET['qty']))$qty=$_GET['qty'];else $qty=1;$tmbhan=array("id_produk"=>$_GET['idproduk'],"qty"=>$qty); $a=0; if(isset($_SESSION['cart'])) {$brg=$_SESSION['cart'];for($i=0;$i<count($brg);$i++) {if($brg[$i]['id_produk']==$_GET['idproduk']) {$a=1;$brg[$i]['qty']=$brg[$i]['qty']+$tmbhan['qty'];}} if($a==0) {array_push($brg,$tmbhan);} $_SESSION['cart']=$brg;} Else $_SESSION['cart']=array($tmbhan);}
47
Segmen Program 4.4. Pengisian Tujuan Pengiriman
<label class="control-label" for="inputCountry">Nama Penerima</label>
<div class="controls">
<input type="text" id="nama" name="nama" placeholder="nama" value="<?php if(isset($_POST['nama'])) echo $_POST['nama']; else echo $_SESSION['nama']; $q="Select * from m_user where id_user = '".$_SESSION['iduser']."'";
$qr=mysql_query($q);$r=mysql_fetch_array($qr);?>">
</div><label class="control-label" for="inputCountry">Alamat Pengiriman</label><div class="controls">
<input type="text" id="alamat" name="alamat" placeholder="Alamat Lengkap" value="<?php
if(isset($_POST['alamat'])) echo $_POST['alamat']; else echo $r['alamat_user']?>">
</div><label class="control-label" for="inputCountry">Kota </label><div class="controls"><input type="text" id="kota" name="kota" placeholder="Kota" value="<?php
if(isset($_POST['kota'])) echo $_POST['kota']; else echo $r['kota_user']?>"></div>
<label class="control-label" for="inputCountry">Propinsi </label><div class="controls">
<input type="text" id="propinsi" name="propinsi" placeholder="Propinsi" value="<?php
if(isset($_POST['propinsi'])) echo $_POST['propinsi']; else echo $r['provinsi_user']?>">
</div><label class="control-label" for="inputCountry">Kode Pos </label><div class="controls"><input type="text"
id="zip" name="zip" placeholder="Kode Pos" value="<?php if(isset($_POST['zip'])) echo $_POST['zip']; else echo $r['kodepos_user']?>"></div><label class="control-label" for="inputCountry">Nomor HP </label><div class="controls"> <input type="text" id="nohp" name="nohp"
placeholder="081xxxx" value="<?php if(isset($_POST['nohp'])) echo $_POST['nohp']; else echo $r['phone_user']?>"></div>
Segmen Program 4.5. Pemilihan Jenis Pengiriman
if(isset($_POST['ongkir'])) {$_SESSION['datakirim']=$_POST;$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://localhost/hans3/jne_city.txt", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array("key: c24896ea63f841b6c369bda084a83279" ), ));$response = curl_exec($curl); $response=json_decode($response);$hasil=$response->rajaongkir->results;foreach($hasil as $data) {if(strtoupper($data->city_name) == strtoupper($_POST['kota'])) {$tujuan=$data->city_id;$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://api.rajaongkir.com/starter/cost", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "origin=386&destination=".$tujuan."&weight=".$_POST['kilo']." &courier=jne",CURLOPT_HTTPHEADER => array("content-type: application/x-www-form-urlencoded","key: c24896ea63f841b6c369bda084a83279" ),));
49
Segmen Program 4.5. Pemilihan Pengiriman (Sambungan)
Segmen Program 4.6. Pemilihan Jenis Pembayaran
$response = curl_exec($curl); $result=json_decode($response);
$hasil=$result->rajaongkir->results[0]->costs;}} $err = curl_error($curl);
curl_close($curl);}
$x=1;foreach ($hasil as $data){$etd=$data->cost[0]->etd; if(trim($etd) != '')$etd=$etd.' hari';if($x==1)
{$check='checked';$service=$data->service;$hrgship=$data->cost[0]->value;}else
$check='';echo '<tr><td>>service.' | '.$data- >description.'</td><td>'.number_format($data->cost[0]->value,0).'</td><td>'.$etd.'</td><td><input type="radio" name="ship"'.$check.' value="'.$data->service.'###'.$data->cost[0]->value.'" data-shipservice="'.$data->service.'" data-shipprice="'.$data->cost[0]->value.'"></td></tr>';$x++; }?> <?php include "koneksi.php";
$q="Select * from cc_simulasi where nocc='".$_GET['nomor']."' AND cvv ='".$_GET['cvv']."' AND
expired='".$_GET['expired']."' AND aktif='true' and sisalimit >= '".str_replace(',','',$_GET['tagihan'])."'";
$qr=mysql_query($q);if(mysql_num_rows($qr)>0)echo "1";else echo $q;if($status=="PENDING")
$q="INSERT into laporan_pengiriman
(nomor_resi,tujuan,service,total_biaya,keterangan) VALUES ('PENDING','".serialize(json_encode($_SESSION['datakirim'])). "','".$service."','".$hrgship."','".$_POST['bank']." |
".$_POST['namarek']." | ".$_POST['tagihan']."')"; elseif($status=="OK")
$q="INSERT into laporan_pengiriman
(nomor_resi,tujuan,service,total_biaya,keterangan) VALUES ('PENDING','".serialize(json_encode($_SESSION['datakirim'])). "','".$service."','".$hrgship."','CREDIT CARD CONFIRMED')";
Segmen Program 4.7. Pengiriman e-mail penjualan
4.4.2.2. Perhitungan Penjualan Barang
Dalam menu pembelian terdapat perhitungan yang dilakukan
untuk menghitung sub total barang yang akan dibeli dan juga tambahan
$q="select * from m_tracking where id_tracking = '".$_POST['status']."'";
$qr=mysql_query($q);$r=mysql_fetch_assoc($qr);$status=$r['keterang an'];$q="select * from laporan_penjualan where pengiriman_id = '".$_POST['id']."'";$qr=mysql_query($q);$tbl="<table
border='1'><tr><th>No.</th><th>Nama Barang</th><th>Qty</th></tr>"; $i=0;while($r=mysql_fetch_assoc($qr)){$i++;$q2="select * from m_produk where id_produk = '".$r['produk_id']."'";
$qr2=mysql_query($q2);$r2=mysql_fetch_assoc($qr2);$tbl.="<tr><td>" .$i."</td><td>".$r2['nama_produk']."</td><td>".$r['jumlah_produk'] ."</td></tr>";$q3="select * from m_user where id_user =
'".$r['user_id']."'";
$qr3=mysql_query($q3);$r3=mysql_fetch_assoc($qr3);$nama=$r3['nama_ user'];}$tbl.="</table>";
$to=$email;
$subject="Barang Anda berstatus ".$status; $html="Halo ".$nama.",<br>";
$html.="Pesanan Anda saat ini berstatus ".$status.". Pesanan Anda adalah sebagai berikut :<br>".$tbl."<br>";
if(isset($tambahan))
$html.="<B>Nomor Resi : ".$tambahan."<BR></B>";
$html.="<br>Demikian informasi yang dapat kami berikan untuk status pembayaran Anda. Semoga informasi ini
bermanfaat.<br><br>www.karuniakomputer.com";
$message=$html;$headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";$headers .= 'To: '.$nama.'<'.$email.'>' . "\r\n"; $headers .= 'BCC: adminkaruniakomputer@ymail.com' . "\r\n"; $headers .= 'From: Karunia Komputer
<no-reply@karuniakomputer.hol.es>' . "\r\n";mail($to, $subject, $message, $headers);
51
biaya untuk pengiriman dengan pemilihan paket. Query perhitungan dapat
dilihat di Segmen 4.8.
Segmen Program 4.8. Perhitungan penjualan barang
jQuery(".cqty").on("change",function(){ quantity=$(this).val();if(!isNaN(quantity)) {nomor=$(this).data("nomor");produkid=$(this).data("produk"); berat=document.getElementById("berat"+nomor).innerHTML; harga=document.getElementById("hrg"+nomor).innerHTML; totalberat=berat*quantity;totalberat=totalberat.toFixed(2); lberat=document.getElementById("tberat"+nomor).innerHTML; lharga=document.getElementById("thrg"+nomor).innerHTML; lharga=parseInt(lharga.replace(/,/g,"")); lharga=parseInt(lharga);total=document.getElementById("total").inn erHTML;total=total.replace("Rp.","")total=parseInt(total.replace(/ ,/g,""));var xhttp = new XMLHttpRequest();
xhttp.open("GET",
"product_summary.php?cmd=UpdateQty&produk=&"+produkid+"&nomor="+no mor+"&qty="+quantity, true);
xhttp.send();xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { }};bb=document.getElementById("totalberat").innerHTML; bb=parseFloat(bb); document.getElementById("tberat"+nomor).innerHTML=totalberat; document.getElementById("thrg"+nomor).innerHTML=formatNumber(quant ity*harga,0); document.getElementById("total").innerHTML=formatNumber(total-lharga+quantity*harga,0); document.getElementById("berat").innerHTML=formatNumber(bb-parseFloat(lberat)+quantity*berat,2); document.getElementById("totalberat").innerHTML=formatNumber(bb-parseFloat(lberat)+quantity*berat,2); document.getElementById("finalprice").innerHTML=formatNumber(docum ent.getElementById("total").innerHTML,0);
Segmen Program 4.8 . Perhitungan penjualan barang (Sambungan)
4.4.3. Menu Laporan
Menu ini berisi laporan-laporan yang disediakan oleh sistem. Laporan
tersebut meliputi laporan penjualan, laporan pengiriman, dan laporan stok.
Penjelasan mengenai menu laporan dapat dilihat pada Tabel 4.6.
Tabel 4.6. Menu Laporan
Sub Menu
Keterangan
Laporan Penjualan
Digunakan untuk melihat laporan penjualan pada tanggal
tertentu
Laporan
Pengiriman
Digunakan untuk melihat laporan pengiriman penjualan
Laporan Stok
Digunakan untuk melihat laporan jumlah stok yang
dimiliki
$('.favku').click(function() {var xhttp = new XMLHttpRequest(); xhttp.open("GET", "addwishlist.php?id=<?php
if(isset($_SESSION['iduser'])) echo
$_SESSION['iduser'];?>&produk="+($(this).data("id")), true); xhttp.send();});};
function formatNumber (number,desimal) { var num = new NumberFormat();
num.setInputDecimal('.'); num.setNumber(number); num.setPlaces(desimal, false); num.setCurrencyValue(''); num.setCurrency(true); return num.toFormatted();}
53
Universitas Kristen Petra
4.4.3.1. Laporan Penjualan
Laporan penjualan berguna untuk user / manager melihat
penjualan yang dilakukan dalam kurun waktu tertentu, hal ini digunakan
untuk perkiraan persediaan barang atau penjualan ke depannya. Query
untuk menampilkan laporan penjualan dapat dilihat pada Segmen 4.9.
Sedangkan untuk pembuatan file pdf yang digunakan untuk pencetakan
laporan dapat dilihat pada Segmen 4.10.
Segmen Program 4.9 Laporan Penjualan
$(document).ready(function () { $('#onLoad').modal('show'); $("#lapstok").load("laporanpenjualan.php", function(data) {$("#lapstok").html(data); $('#onLoad').modal('hide'); }); jQuery("#search").click(function(){jQuery("#onLoad").mo dal('show');$("#lapstok").load("laporanpenjualan.php",{ date1: $('#date1').val(),date2: $('#date2').val()} , function(data){$("#lapstok").html(data);$('#onLoad').mo dal('hide'); });});
$(document).on("click", '#print', function()
{$('#onLoad').modal('show');window.open('laporanpenjual an.php?print=yes&date1='+$('#date1').val()+"&date2="+$( '#date2').val(), '_blank', "height=600,width=800,scrollbars=1,location=no,menubar= no,resizable=1,status=no,toolbar=no"); $('#onLoad').modal('hide');}); jQuery("#date1").datepicker({
endDate: "0d",format: "yyyy-mm-dd",
orientation: "bottom auto",autoclose: true, changeMonth: true,changeYear: true,
}).change().on('changeDate', function(selected){ var minDate = new Date(selected.date.valueOf()); $('#date2').datepicker('setStartDate', minDate);}); jQuery( "#date2" ).datepicker({endDate: "0d",format: "yyyy-mm-dd",changeMonth: true,changeYear:
true,autoclose: true,orientation: "bottom
auto",}).on('changeDate', function(selected){var minDate = new Date(selected.date.valueOf());
$('#date1').datepicker('setEndDate', minDate); $('#search').focus();
Segmen Program 4.9 Laporan Penjualan (Sambungan)
Segmen Program 4.10. Pembuatan Laporan Penjualan
$('#date1').datepicker('setEndDate', minDate); $('#search').focus();});});
$q2="Select * from laporan_pengiriman JOIN
laporan_penjualan B ON id_pengiriman=B.pengiriman_id WHERE B.tanggal_penjualan >= '".$tglawal." 00:00:00' and B.tanggal_penjualan <= '".$tglakhir." 23:59:59' and status > 1 and status <> 6 GROUP BY
id_pengiriman";$qr2=mysql_query($q2);$a=0; while($r2=mysql_fetch_array($qr2,MYSQL_ASSOC)) {$q="Select * from laporan_penjualan where pengiriman_id ='".$r2['id_pengiriman']."'"; $qr=mysql_query($q);$bnyk=mysql_num_rows($qr); $a++;$uname=mysql_query("Select * from m_user where id_user = '".$r2['user_id']."'");$runame=mysql_fetch_assoc($una me); $html.='<tr class="odd gradeX"><td rowspan="'.$bnyk.'" class="center"><span class="center">'.$a.'</span></td> <td rowspan="'.$bnyk.'" class="center">'.$r2['tanggal_penjualan'].'</td> <td rowspan="'.$bnyk.'" class="center">'.$runame['username'].'</td>'; $b=0;while($r=mysql_fetch_array($qr,MYSQL_ASSOC)) {$b++;$h="Select * from m_produk where id_produk = '".$r['produk_id']."'";$hr=mysql_query($h); if(mysql_num_rows($hr)>0) {$produk=mysql_fetch_array($hr,MYSQL_ASSOC);} Else $produk=array(""); if($b==1) {$html.='<td align="center" style="vertical-align: middle" valign="middle" class="center"
55
Segmen Program 4.10. Pembuatan Laporan Penjualan (Sambungan)
$stat=mysql_query("Select * from m_tracking where id_tracking = '".$r['status']."'");
$rstat=mysql_fetch_array($stat,MYSQL_ASSOC); $html.='<span class="label
label-'.$rstat['bantuan'].'
changebtn">'.$rstat['keterangan'].'<br>'.'</span></t d>';
}$html.='</tr>';
$html2='<div class="col-lg-12">
<table width="100%"><tr><td width="20%"><img align="middle" border=""
src="../../themes/images/logo.png" width="96px" ></td><td class="col-md-8" width="80%" style="text-align:right"><span style="font-weight: bold;"><strong>Laporan Penjualan</strong></span><br>Generate : '.date('d-M, H:i').'<br>Printed by :'.$_SESSION['username-admin'].'<br>Periode : '.$tglawal." s.d. ".$tglakhir.'</td></tr></table></div>'.$html; if(isset($_GET['print'])) {include("../../assets/mpdf/mpdf.php"); $mpdf=new mPDF('c','A4','','',10,10,0,0,0,0); $mpdf->SetDisplayMode('fullpage'); $mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list $stylesheet =
file_get_contents('../bower_components/bootstrap/dis t/css/bootstrap.min.css');
$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no
body/html/text
$mpdf->WriteHTML($html2);
$namafile='jual'.date('Ymd His');
$mpdf->Output('../laporan/'.$namafile.'.pdf','I'); echo $html;
4.4.3.2. Laporan Pengiriman
Laporan Pengiriman berguna untuk manager yang ingin melihat
kegiatan pengiriman yang dilakukan oleh toko, sehingga tidak terjadi
kekeliruan pengiriman kepada customer. Laporan dapat dipilih sesuai
dengan tanggal yang diinginkan Query pembuatan laporan pengiriman
dapat dilihat pada Segmen 4.11. Sedangkan pembuatan laporan
pengiriman dapat dilihat pada Segmen 4.12.
Segmen Program 4.11 Laporan Pengiriman
$(document).ready(function () { $('#onLoad').modal('show'); $("#lapstok").load("laporanpengiriman.php", function(data) {$("#lapstok").html(data); $('#onLoad').modal('hide'); }); jQuery("#search").click(function(){ jQuery("#onLoad").modal('show'); $("#lapstok").load("laporanpengiriman.php",{date1: $('#date1').val(),date2: $('#date2').val()} , function(data) {$("#lapstok").html(data); $('#onLoad').modal('hide'); });});
$(document).on("click", '#print', function() {
$('#onLoad').modal('show');window.open('laporanpengir iman.php?print=yes&date1='+$('#date1').val()+"&date2= "+$('#date2').val(), '_blank', "height=600,width=800,scrollbars=1,location=no,menuba r=no,resizable=1,status=no,toolbar=no"); $('#onLoad').modal('hide');}); jQuery("#date1").datepicker({
endDate: "0d",format: "yyyy-mm-dd",
orientation: "bottom auto",autoclose: true, changeMonth: true,changeYear:
true,}).change().on('changeDate', function(selected){ var minDate = new Date(selected.date.valueOf()); $('#date2').datepicker('setStartDate', minDate);
57
Segmen Program 4.11 Laporan Pengiriman (Sambungan)
Segmen Program 4.12 Pembuatan Laporan Pengiriman
jQuery( "#date2" ).datepicker({endDate: "0d", format: "yyyy-mm-dd",
changeMonth: true, changeYear: true, autoclose: true,
orientation: "bottom auto",
}).on('changeDate', function(selected){
var minDate = new Date(selected.date.valueOf()); $('#date1').datepicker('setEndDate', minDate); $('#search').focus();});});
<tbody>’;$q2="Select * from laporan_pengiriman JOIN laporan_penjualan B ON
id_pengiriman=B.pengiriman_id WHERE status >=4 and waktu_kirim >= '".$tglawal."' and waktu_kirim <= '".$tglakhir."' GROUP BY id_pengiriman
";$qr2=mysql_query($q2);
$a=0;while($r2=mysql_fetch_array($qr2,MYSQL_ASSOC)) {$q="Select * from laporan_penjualan where
pengiriman_id
='".$r2['id_pengiriman']."'";$qr=mysql_query($q);$b nyk=mysql_num_rows($qr);
$b=0;$brg='';while($r=mysql_fetch_array($qr,MYSQL_A SSOC)){$b++;
$h="Select * from m_produk where id_produk = '".$r['produk_id']."'";$hr=mysql_query($h);
if(mysql_num_rows($hr)>0){$produk=mysql_fetch_array ($hr,MYSQL_ASSOC);}
else $produk=array("");
$brg.=$produk['nama_produk']."<BR>";} $a++;$html.='<tr class="odd gradeX"> <td class="center"><span
class="center">'.$a.'</span></td>
<td class="center">'.$r2['tanggal_penjualan'].' </td><td class="center">';
Segmen Program 4.12 Pembuatan Laporan Pengiriman (Sambungan)
$html.="<span data-toggle='popover' data-html='true' data-content='".$brg."' title='List
Barang'>".$r2['waktu_kirim']."<BR>";
$stat=mysql_query("Select * from m_tracking where id_tracking = '".$r2['status']."'");
$rstat=mysql_fetch_array($stat,MYSQL_ASSOC); $html.='<span class="label
label-'.$rstat['bantuan'].'
changebtn">'.$rstat['keterangan'].'</span></span></td ><td class="center">';
$html.="<span data-toggle='popover' data-html='true' data-content='".$brg."' title='List
Barang'>".$r2['waktu_kirim']."<BR>";
$stat=mysql_query("Select * from m_tracking where id_tracking = '".$r2['status']."'");
$rstat=mysql_fetch_array($stat,MYSQL_ASSOC); $html.='<span class="label
label-'.$rstat['bantuan'].'
changebtn">'.$rstat['keterangan'].'</span></span></td ><td class="center">';
$tujuan=json_decode(unserialize($r2['tujuan'])); foreach ($tujuan as $key=>$value)
if($key=="nama" || $key=="alamat" || $key=="kota" || $key=="propinsi" || $key=="zip") $html.=$value."<br>";}$html.='</td> <td class="center" style="text-align:center">'.$r2['service'].'<br>'.$r2['nomor_resi '].'</td><td class="right" style="text-align:right">'.number_format($r2['total_biaya']).'</t d></tr>';$html.='</tbody><script>$("[data-toggle=popover]").popover()</script>';$html2='<div class="col-lg-12">
<table width="100%"><tr><td width="20%"><img align="middle" border=""
src="../../themes/images/logo.png" width="96px" ></td><td class="col-md-8" width="80%" style="text-align:right"><span style="font-weight:
bold;"><strong>Laporan
Pengiriman</strong></span><br>Generate : '.date('d-M, H:i').'<br>Printed by
59
Segmen Program 4.12 Pembuatan Laporan Pengiriman (Sambungan)
4.4.3.3. Laporan Stok
Laporan stok digunakan oleh manager untuk mengetahui berapa
jumlah barang yang dimiliki dan siap untuk dijual, perubahan stok terjadi
ketika customer melakukan konfirmasi pemesanan. Laporan yang
diberikan merupakan laporan terakhir dari stok barang yang ada. Query
pembuatan laporan stok dapat dilihat pada Segmen 4.13.
Segmen Program 4.13 Laporan Stok
4.4.4. Menu Pending Order
Menu pending order digunakan untuk penjualan barang yang lebih dari
jumlah stok yang ada. Dengan menu ini, customer tetap dapat melakukan
pembelian barang, dengan peringatan bahwa barang tersebut kurang dari jumlah
if(isset($_GET['print'])){include("../../assets/mpdf/ mpdf.php");$mpdf=new mPDF('c','A4','','',10,10,0,0,0,0); $mpdf->SetDisplayMode('fullpage');$mpdf->list_indent_first_level = 0; $stylesheet = file_get_contents('../bower_components/bootstrap/dist /css/bootstrap.min.css');
$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no
body/html/text $mpdf->WriteHTML($html2); $namafile='kirim'.date('Ymd His');$mpdf->Output('../laporan/'.$namafile.'.pdf','I'); $(document).ready(function () { $('#onLoad').modal('show');$("#lapstok").load("laporanstok.php", function(data){$("#lapstok").html(data);$('#onLoad').modal('hide') ;});$(document).on("click", '#print', function()
{$('#onLoad').modal('show');window.open('laporanstok.php?print=yes ', '_blank',
"height=600,width=800,scrollbars=1,location=no,menubar=no,resizabl e=1,status=no,toolbar=no");$('#onLoad').modal('hide');});});
yang diinginkan. Jika admin menambahkan stok barang, maka akan pending
order dapat dijalankan untuk pengiriman kepada customer dengan memberikan
konfirmasi berupa e-mail kepada customer. Query untuk pending order dapat
dilihat pada Segmen 4.14. Konfirmasi e-mail kepada customer dapat dilihat pada
Segment 4.15.
Segmen Program 4.14. Pending Order
Segmen Program 4.15. Konfirmasi E-mail Pending Order
$(document).ready(function () {
$('#onLoad').modal('show');$("#lapstok").load("lap_pendingorders.p hp", function(data) {$("#lapstok").html(data);
$('#onLoad').modal('hide');
});$(document).on("click", '.pendingbtn', function() {
$('#onLoad').modal('show');yesno=confirm("Barang akan diproses pengemasan dan dikirim?");if(yesno)
{$.post("lap_pendingorders.php",
{"id":$(this).data("id"),"produk":$(this).data('produk'),"qty":$(t his).data("qty")} , function( data )
{$("#lapstok").load("lap_pendingorders.php", function(data) { $("#lapstok").html(data); $('#onLoad').modal('hide');
}); });}$("#lapstok").load("lap_pendingorders.php", function(data) {$("#lapstok").html(data); $('#onLoad').modal('hide'); });});});
if(isset($_POST['id'])){$q="Select * from pesan_produk JOIN m_produk B ON produk_id=B.id_produk where id_pemesanan ='".$_POST['id']."'";
$qr=mysql_query($q);if($r=mysql_fetch_array($qr,MYSQL_ASSOC)) {$minta=$r['jumlah_pesanan'];$user=$r['user_id'];
$stokskrg=$r['jumlah_produk'];$namabarang=$r['nama_produk']; $q2="Select * from m_user where id_user='".$user."'";
$qr2=mysql_query($q2);$r2=mysql_fetch_assoc($qr2); $nama=$r2['nama_user'];
$email=$r2['email_user'];
61
Segmen Program 4.15. Konfirmasi E-mail Pending Order (Sambungan)
4.4.5. Perubahan Status Penjualan
Dalam setiap pembelian oleh customer, terdapat kondisi bahwa barang
tersebut masuk ke dalam pemesanan. Ketika pemesanan dilakukan lebih dari dua
hari dan tidak ada konfirmasi pembayaran, maka pemesanan yang dilakukan
akan dibatalkan atau dianggap kadaluarsa. Query untuk perubahan status
pemesanan dapat dilihat pada Segmen 4.16.
Segmen Program 4.16. Perubahan Status Pemesanan.
$html="Halo ".$nama.",<br>";
$html.="Pesanan Anda ".$namabarang." telah siap dikirim. Kami akan segera mengirim pemesanan Anda.";
$html.="<br>Demikian informasi yang dapat kami berikan untuk status pembayaran Anda. Semoga informasi ini
bermanfaat.<br><br>www.karuniakomputer.com"; $message=$html; $headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: '.$nama.' <'.$email.'>' . "\r\n";
$headers .= 'From: Karunia Komputer <no-reply@yahoo.co.id>' . "\r\n";
mail($to, $subject, $message, $headers); mysql_query("Delete from pesan_produk where id_pemesanan='".$_POST['id']."' and
produk_id='".$_POST['produk']."'");
mysql_query("UPDATE m_produk SET jumlah_produk='".($stokskrg-$_POST['qty'])."' where id_produk='".$_POST['produk']."'");}}
$date=date('Y-m-d H:i:s',strtotime('-2 day',strtotime(date('d-M-Y H:i:s'))));
$q="UPDATE laporan_penjualan set Status = '6' where tanggal_penjualan <= '".$date."' and Status = '1'"; mysql_query($q);
4.4.6. Pengoptimasian Website
Dalam penambahan rating untuk pencarian kata kunci di google/search
engine, maka dilakukan penambahan meta yang berguna sebagai pencarian.
Penambahan meta dilakukan sesuai dengan kata kunci barang yang dijual atau
kata-kata yang berkaitan dengan toko tersebut. Dengan demikian ketika
customer melakukan pencarian, maka rating website dapat muncul di bagian
utama. Penambahan meta website dapat dilihat pada Segmen 4.17.
Segmen Program 4.17. Penambahan Meta untuk SEO
Selain dengan penggunaan meta dalam sebuah website, dapat dilakukan
juga natural listing dengan mendaftarkan website pada search engine untuk
<meta charset="utf-8">
<title>Karunia Komputer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Karunia Komputer adalah sebuah perusahaan yang menjual aksesories komputer di kota salatiga dengan harga yang kompetitif">
<meta name="keywords" content="aksesories
komputer,karunia komputer,komputer salatiga,aksesories salatiga,toko aksesories komputer,karunia
salatiga,aksesories karunia,kabel
LAN,mouse,keyboard,cartridge,cooling fan,aksesoris komputer salatiga">
<meta name="author" content="aksesories karunia komputer">
<meta name="robots" content="index,follow" /> <meta name="googlebot" content="index,follow" /> <meta name="msnbot" content="index,follow" /> <link href='http://www.karuniakomputer.hol.es' rel='alternate' title='RSS Feeds'