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 setiap kali mengkoneksikan dengan database MySQL. 40
<?php $connect = mysql_connect("localhost","root",'') or die("cannot connect"); $selectdata = mysql_select_db("karunia_komputer");?> 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) Proses 1 Proses Pembayaran Proses 2 Proses Laporan Proses 3 Proses Pembelian Menu Prosedur Segmen Program Login/Pemilihan barang/atur Pengiriman/Metode Pembayaran Login/Laporan Login/Pemilihan barang cart/atur Pengiriman/ Pemilihan Metode Pembayaran/Konfirmasi Email Login.php Payment.php Login.php Lap_jual.php Lap_kirim.php Lap_stok.php Laporanpenjualan.php Laporanpengiriman.php Laporanstok.php Login.php Products.php Product_summary.php Confirm_purchase.php Payment.php Kelola_jual.php 4.6 4.16 4.9 4.10 4.11 4.12 4.13 4.3 4.4 4.5 4.7 4.8 4.14 4.15 41
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. <?php include "header.php"; if(!isset($_session['iduser'])) {if(isset($_post['login'])) Segmen Program 4.2. Pengecekan 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>";} 42
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 sub-kategori Daftar user Daftar Testimoni Daftar_kategori Daftar_sub_kategori Daftar_user Daftar_testimoni Pembelian Daftar Cart Daftar_cart Daftar Wishlist Daftar Pembayaran Daftar_wishlist 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 Daftar Produk Keterangan Menambah, mengubah dan menghapus data produk 43
Tabel 4.3. Menu Master (Sambungan) Sub Menu Keterangan Daftar Kategori Menambah, mengubah dan menghapus data kategori Daftar Sub-Kategori Daftar User Daftar Testimoni Menambah, mengubah dan menghapus data subkategori Menambah dan menghapus data user 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 Daftar Cart Daftar Wishlist Daftar Pembayaran Keterangan Menambah, mengubah dan menghapus data produk yang ada dalam cart Menambah, mengubah, dan menghapus data produk yang ada dalam wishlist user. Menambah dan mengubah data pesanan yang dilakukan oleh user. 44
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 5. Pengiriman e-mail penjualan 4.7 45
if(isset($_get['cmd'])) {if($_get['cmd']=="clear") Segmen Program 4.3. Pemilihan Produk {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);} 46
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> 47
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-wwwform-urlencoded","key: c24896ea63f841b6c369bda084a83279" ),)); 48
Segmen Program 4.5. Pemilihan Pengiriman (Sambungan) $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>'.$data->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++; }?> Segmen Program 4.6. Pemilihan Jenis Pembayaran <?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')"; 49
Segmen Program 4.7. Pengiriman e-mail penjualan $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 <noreply@karuniakomputer.hol.es>'. "\r\n";mail($to, $subject, $message, $headers); 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 50
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(totallharga+quantity*harga,0); document.getelementbyid("berat").innerhtml=formatnumber(bbparsefloat(lberat)+quantity*berat,2); document.getelementbyid("totalberat").innerhtml=formatnumber(bbparsefloat(lberat)+quantity*berat,2); document.getelementbyid("finalprice").innerhtml=formatnumber(docum ent.getelementbyid("total").innerhtml,0); }else{alert("anda salah dalam penulisan jumlah barang");}}); 51
Segmen Program 4.8. Perhitungan penjualan barang (Sambungan) $('.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();} 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 Laporan Penjualan Laporan Pengiriman Laporan Stok Keterangan Digunakan untuk melihat laporan penjualan pada tanggal tertentu Digunakan untuk melihat laporan pengiriman penjualan Digunakan untuk melihat laporan jumlah stok yang dimiliki 52
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()); 53
Segmen Program 4.9 Laporan Penjualan (Sambungan) $('#date1').datepicker('setenddate', mindate); $('#search').focus();});}); Segmen Program 4.10. Pembuatan Laporan Penjualan $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" rowspan="'.$bnyk.'">'; 54
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="textalign:right"><span style="font-weight: bold;"><strong>laporan Penjualan</strong></span><br>Generate : '.date('d-m, H:i').'<br>Printed by :'.$_SESSION['usernameadmin'].'<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; 55
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); }); 56
Segmen Program 4.11 Laporan Pengiriman (Sambungan) 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.12 Pembuatan Laporan Pengiriman <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">'; 57
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="textalign:center">'.$r2['service'].'<br>'.$r2['nomor_resi '].'</td><td class="right" style="textalign:right">'.number_format($r2['total_biaya']).'</t d></tr>';$html.='</tbody><script>$("[datatoggle=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="textalign:right"><span style="font-weight: bold;"><strong>laporan Pengiriman</strong></span><br>Generate : '.date('d-m, H:i').'<br>Printed by :'.$_SESSION['usernameadmin'].'<br>Periode : '.$tglawal." s.d. ".$tglakhir.'</td></tr></table></div>'.$html; 58
Segmen Program 4.12 Pembuatan Laporan Pengiriman (Sambungan) 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'); 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 $(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');});}); 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 59
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 $(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'); });});}); Segmen Program 4.15. Konfirmasi E-mail Pending Order 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']; $to=$email;$subject="pesanan ".$namabarang." telah dalam pengemasan"; 60
Segmen Program 4.15. Konfirmasi E-mail Pending Order (Sambungan) $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']."'");}} 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. $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); 61
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 <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' type='application/atom+xml'/> Selain dengan penggunaan meta dalam sebuah website, dapat dilakukan juga natural listing dengan mendaftarkan website pada search engine untuk 62
diindex dalam database search engine tersebut. Pendaftaran dapat dilihat pada Gambar 4.2. Gambar 4.2. Pendaftaran Natural Listing pada Google Setelah melakukan natural listing dan penambahan meta pada website, diperlukan juga penggunaan HTML5 dalam pembuatan website. Hal ini akan menunjang isi dari website sehingga sesuai dengan keywords atau kata pencarian yang dilakukan oleh customer/user pada search engine. 63