Sunteți pe pagina 1din 79

BAB 7

LETS DESIGN AND CODING

Sebagai awal langkah sebelum memulai coding ini, kita akan mengetahui skrip
dari desain template yang digunakan. Berikut masing-masing skripnya:
index.tpl (disimpan dalam folder templates pada smarty)

<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-
answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en">
<![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en">
<![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en">
<![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--
<![endif]-->
<head>
<meta charset="utf-8">

<!-- DNS prefetch -->


<link rel=dns-prefetch href="//fonts.googleapis.com">

<!-- Use the .htaccess and remove these lines to avoid edge case
issues.
More info: h5bp.com/b/378 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

<title>ASFA Jaya :: Professional Web Application - Inventory And


Point of Sales</title>
<meta name="description" content="">
<meta name="author" content="">

<!-- Mobile viewport optimized: j.mp/bplateviewport -->


<meta name="viewport" content="width=device-width,initial-
scale=1">

1
<!-- Place favicon.ico and apple-touch-icon.png in the root
directory: mathiasbynens.be/notes/touch-icons -->

<!-- CSS: implied media=all -->


<!-- CSS concatenated and minified via ant build script-->
<link rel="stylesheet" href="css/style.css"> <!-- Generic style
(Boilerplate) -->
<link rel="stylesheet" href="css/960.fluid.css"> <!-- 960.gs
Grid System -->
<link rel="stylesheet" href="css/main.css"> <!-- Complete Layout
and main styles -->
<link rel="stylesheet" href="css/buttons.css"> <!-- Buttons,
optional -->
<link rel="stylesheet" href="css/lists.css"> <!-- Lists,
optional -->
<link rel="stylesheet" href="css/icons.css"> <!-- Icons,
optional -->
<link rel="stylesheet" href="css/notifications.css"> <!--
Notifications, optional -->
<link rel="stylesheet" href="css/typography.css"> <!--
Typography -->
<link rel="stylesheet" href="css/forms.css"> <!-- Forms,
optional -->
<link rel="stylesheet" href="css/tables.css"> <!-- Tables,
optional -->
<link rel="stylesheet" href="css/charts.css"> <!-- Charts,
optional -->
<link rel="stylesheet" href="css/jquery-ui-1.8.15.custom.css">
<!-- jQuery UI, optional -->
<!-- end CSS-->

<!-- Fonts -->


<link href="//fonts.googleapis.com/css?family=PT+Sans"
rel="stylesheet" type="text/css">
<!-- end Fonts-->

<!-- More ideas for your <head> here: h5bp.com/d/head-Tips -->

<!-- All JavaScript at the bottom, except for Modernizr /


Respond.
Modernizr enables HTML5 elements & feature detects; Respond
is a polyfill for min/max-width CSS3 Media Queries
For optimal performance, use a custom Modernizr build:
www.modernizr.com/download/ -->
<script src="js/libs/modernizr-2.0.6.min.js"></script>
</head>

<body id="top">

<!-- Begin of #container -->


<div id="container">
<!-- Begin of #header -->
<div id="header-surround"><header id="header">

<!-- Place your logo here -->


<img src="img/logo.jpg" alt="Grape" class="logo"
width="200">

2
<!-- Divider between info-button and the toolbar-
icons -->
<div class="divider-header divider-vertical"></div>

<!-- Info-Button -->


<a href="javascript:void(0);" onclick="$('#info-
dialog').dialog({ modal: true });"><span class="btn-
info"></span></a>

<!-- Modal Box Content -->


<div id="info-dialog" title="About"
style="display: none;">
<p>
Hubungi kami: <br>
ASFA JAYA<br>
Jl. Ki Hajar Dewantara No.
132 Arjawinangun<br>
Cirebon 45162<br>
Telp (0231) 358630, Hp.
08562121141
</p>

</div> <!--! end of #info-dialog -->

<!-- Begin from Toolbox -->


<ul class="toolbox-header">
<!-- First entry -->

</ul>

<!-- Begin of #user-info -->


<div id="user-info">
<p>
<span class="messages">Hello
<b>{$name}</b> </span>
<a href="login.php?module=logout"
class="button red">Logout</a>
</p>
</div> <!--! end of #user-info -->

</header></div> <!--! end of #header -->

<div class="fix-shadow-bottom-height"></div>

<!-- Begin of Sidebar -->


<aside id="sidebar">

<!-- Search -->


<div id="search-bar">
<form id="search-form" name="search-form"
action="searchs.php" method="GET">
<input type="text" id="query"
name="product" autocomplete="off" placeholder="Search">
</form>
</div> <!--! end of #search-bar -->

<!-- Begin of #login-details -->


<section id="login-details">

3
{if $photo_ses != ''}
<img class="img-left framed"
src="img/photo/{$photo_ses}" alt="Hello Admin" width="80">
{else}
<img class="img-left framed"
src="img/misc/avatar_small.png" alt="Hello Admin">
{/if}

<h3>Logged in as</h3>
<h2><a class="user-button"
href="javascript:void(0);">
{if $level eq 'Administrator'}
Administrator
{else}
Sales
{/if}
&nbsp;<span class="arrow-link-
down"></span></a></h2>
<ul class="dropdown-username-menu">
<li><a
href="users.php?module=profile">Profile</a></li>
<li><a
href="login.php?module=logout">Logout</a></li>
</ul>

<div class="clearfix"></div>
</section> <!--! end of #login-details -->
<!-- Begin of Navigation -->
<nav id="nav">
<ul class="menu collapsible shadow-bottom">
<li><a href="index.php"><img
src="img/icons/packs/fugue/16x16/dashboard.png">Home<span
class="badge"></span></a></li>

<li><a href="#" class="current"><img


src="img/icons/packs/fugue/16x16/application-form.png">Management
Public</a>
<ul class="sub">
<li><a
href="users.php">Users</a></li>
<li><a
href="suppliers.php">Supplier</a></li>
</ul>
</li>
<li><a href="#"
class="current"><img src="img/icons/packs/fugue/16x16/application-
form.png">Management Products</a>
<ul class="sub">
<li><a
href="categories.php">Categories</a></li>
<!-- <li><a
href="merks.php">Merks</a></li> -->
<li><a
href="products.php">Products</a></li>
</ul>
</li>
<li><a href="#"><img
src="img/icons/packs/fugue/16x16/table.png">Transaction</a>

4
<ul class="sub">
<li><a
href="sales.php">Sales</a></li>
<li><a
href="buys.php">Buys</a></li>
</ul>
</li>
<li><a href="reports.php"><img
src="img/icons/packs/fugue/16x16/chart.png">Report</a></li>
<li><a href="login.php?module=logout"><img
src="img/icons/packs/fugue/16x16/dashboard.png">Logout</a></li>
</ul>
</nav> <!--! end of #nav -->

</aside> <!--! end of #sidebar -->

<!-- Begin of #main -->


<div id="main" role="main">

<!-- Begin of titlebar/breadcrumbs -->


<div id="title-bar">
<ul id="breadcrumbs">
<li><a href="index.php"
title="Home"><span id="bc-home"></span></a></li>
<li class="no-hover">Forms</li>
</ul>
</div> <!--! end of #title-bar -->

<div class="shadow-bottom shadow-titlebar"></div>

<!-- Begin of #main-content -->


<div id="main-content">
<div class="container_12">

{include file="content.tpl"}

<div class="clear"></div>

<div class="clear height-fix"></div>

</div></div> <!--! end of #main-content -->


</div> <!--! end of #main -->

<footer id="footer"><div class="container_12">


<div class="grid_12">
<div class="footer-icon align-center"><a
class="top" href="#top"></a></div>
</div>
</div></footer>
</div> <!--! end of #container -->

<!-- JavaScript at the bottom for fast page loading -->

5
<!-- Grab Google CDN's jQuery, with a protocol relative URL;
fall back to local if offline -->
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"><
/script>
<script>window.jQuery || document.write('<script
src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>

<!-- scripts concatenated and minified via ant build script-->


<script defer src="js/plugins.js"></script> <!-- lightweight
wrapper for consolelog, optional -->
<script defer src="js/mylibs/jquery-ui-
1.8.15.custom.min.js"></script> <!-- jQuery UI -->
<script defer src="js/mylibs/jquery.notifications.js"></script>
<!-- Notifications -->
<script defer src="js/mylibs/jquery.uniform.min.js"></script>
<!-- Uniform (Look & Feel from forms) -->
<script defer src="js/mylibs/jquery.validate.min.js"></script>
<!-- Validation from forms -->
<script defer src="js/mylibs/jquery.dataTables.min.js"></script>
<!-- Tables -->
<script defer src="js/mylibs/jquery.tipsy.js"></script> <!--
Tooltips -->
<script defer src="js/mylibs/excanvas.js"></script> <!-- Charts
-->
<script defer src="js/mylibs/jquery.visualize.js"></script> <!--
Charts -->
<script defer src="js/mylibs/jquery.slidernav.min.js"></script>
<!-- Contact List -->
<script defer src="js/common.js"></script> <!-- Generic
functions -->
<script defer src="js/script.js"></script> <!-- Generic scripts
-->

{literal}
<script type="text/javascript">
$().ready(function() {

/*
* Form Validation
*/
$.validator.setDefaults({
submitHandler: function(e) {
$.jGrowl("Form was successfully
submitted.", { theme: 'success' });
$(e).parent().parent().fadeOut();
v.resetForm();
v2.resetForm();
v3.resetForm();
}
});
var v = $("#create-user-form").validate();
jQuery("#reset").click(function() { v.resetForm();
$.jGrowl("User was not created!", { theme: 'error' }); });

var v2 = $("#write-message-form").validate();

6
jQuery("#reset2").click(function() {
v2.resetForm(); $.jGrowl("Message was not sent.", { theme: 'error'
}); });

var v3 = $("#create-folder-form").validate();
jQuery("#reset3").click(function() {
v3.resetForm(); $.jGrowl("Folder was not created!", { theme:
'error' }); });

var validateform = $("#validate-form").validate();


$("#reset-validate-form").click(function() {
validateform.resetForm();
$.jGrowl("You resetted the form.", { theme:
'error' });
});

/*
* Datepicker
*/
$( "#datepicker_awal" ).datepicker();
$( "#datepicker_akhir" ).datepicker();
});
</script>
<!-- end scripts-->

<!-- Prompt IE 6 users to install Chrome Frame. Remove this if


you want to support IE 6.
chromium.org/developers/how-tos/chrome-frame-getting-
started -->
<!--[if lt IE 7 ]>
<script src="//ajax.googleapis.com/ajax/libs/chrome-
frame/1.0.3/CFInstall.min.js"></script>

<script>window.attachEvent('onload',function(){CFInstall.check({mo
de:'overlay'})})</script>
<![endif]-->
{/literal}
</body>
</html>

content.tpl (disimpan dalam folder templates pada smarty, sama seperti skrip
diatas).

{if $content eq 'users'}


{include file="users.tpl"}

{elseif $content eq 'suppliers'}


{include file="suppliers.tpl"}

{elseif $content eq 'categories'}


{include file="categories.tpl"}

{elseif $content eq 'merks'}


{include file="merks.tpl"}

{elseif $content eq 'products'}


{include file="products.tpl"}

7
{elseif $content eq 'sales'}
{include file="sales.tpl"}

{elseif $content eq 'buys'}


{include file="buys.tpl"}

{elseif $content eq 'searchs'}


{include file="searchs.tpl"}

{elseif $content eq 'reports'}


{include file="reports.tpl"}

{else}
Hai, <b>{$name}</b>.<br>
Selamat datang di Aplikasi Point of Sales ASFA Jaya,
sebuah aplikasi yang dapat membantu anda untuk mengerjakan
transaksi
secara cepat dan mudah.<br>
Saat ini, Anda login sebagai {$level}
<br><br>
Persembahan dari ASFA Solution, best solution for your
business<br>
Website: <a href="http://www.agussaputra.com"
target="_blank">http://www.agussaputra.com</a>
{/if}

Intinya kedua file skrip diatas harus menjadi file default (master template) untuk
aplikasi Anda, jika tak mau direpotkan oleh skrip ini, Anda bisa menemukannya
pada Final Project yang disertakan dalam CD buku ini.
Hasilnya bisa Anda lihat pada gambar 7.1.

8
Gambar 7.1 Desain template master

7.1 Manajemen User


Manajemen user digunakan apabila kita ingin memanajemen seorang staff atau
admin lainnya. Yang namanya manajemen pasti terdapat fungsi untuk tambah,
ubah, baca (optional), serta hapus data (penulis tidak menyertakan fungsi hapus
data, karena aplikasi ini ala Om Agus).. . Berikut penulis akan memberikan
fungsi yang pertama, yaitu tambah data.

Tambah User
Tambah user digunakan untuk menambahkan suatu personal staff ataupun
admin lainnya oleh super admin.
Langkah pertama:
Buat file php dengan nama users.php dan simpan ke dalam dokumen kerja
smarty Anda. Adapun skripnya sebagai berikut:

<?php
error_reporting(0);
$page = "users";
require('libs/Smarty.class.php');

$smarty = new Smarty;

$module = $_GET['module'];
$user_id = $_COOKIE['user_id'];
$photo_ses= $_COOKIE['photo'];
$name = $_COOKIE['name'];
$date = date('Y-m-d H:i:s');

if ($module == 'add_user'){
$smarty->assign('proses', 'add_user');
}

elseif ($module == 'act_add_user'){

$nik = $_POST['nik'];
$name = $_POST['nama'];
$address = $_POST['alamat'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$level = $_POST['level'];
$username = $_POST['username'];
$password = md5($_POST['password']);
$photo = $_FILES['photo']['tmp_name'];
$photo_name = $_FILES['photo']['name'];
$photo_fix_name = $nik.$photo_name;
$createdDate= date('Y-m-d H:i:s');

9
$direktori = "img/photo/$phone_name";

if (!empty($photo)){
move_uploaded_file($photo,
"img/photo/$photo_fix_name");

mysql_query("INSERT INTO
aj_employes(nik,name,address,phone,email,photo,created_user,create
d_date,modified_user,modified_date)
VALUES
('$nik','$name','$address','$phone','$email','$photo_fix_name','$u
ser_id','$createdDate','','')");
mysql_query("INSERT INTO
aj_users(username,passwd,nik,level)
VALUES('$username','$password','$nik','$level')");
}
else{

mysql_query("INSERT INTO
aj_employes(nik,name,address,phone,email,created_user,created_date
,modified_user,modified_date)
VALUES
('$nik','$name','$address','$phone','$email','$user_id','$createdD
ate','','')");

mysql_query("INSERT INTO
aj_users(username,passwd,nik,level)
VALUES('$username','$password','$nik','$level')");
}
header('location: users.php');
}

$date = date('Ymd');
$smarty->assign('nikdate', $date);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('name', $name);
$smarty->assign('content', $page);
$smarty->display('index.tpl');

?>

Langkah kedua:
Buat file layout untuk form atau konten user, beri nama file tersebut users.tpl
dan simpan dalam folder templates, adapun skripnya sebagai berikut:

{if $proses eq 'add_user'}

<div class="grid_12">
<h1>Manajemen User</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>

10
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Tambah User</h1><span></span>
</div>
<form action="users.php?module=act_add_user" method="post"
class="block-content form" enctype='multipart/form-data'> <!--
id="validate-form" -->
<div class="_100">
<p><label for="textfield">NIK</label><input
id="textfield" name="nik" class="required" type="text"
value="{$nikdate}" disabled><input id="textfield" name="nik"
class="required" type="hidden" value="{$nikdate}"></p>
</div>

<div class="_100">
<p><label for="textfield">Nama</label><input
id="textfield" name="nama" class="required" type="text"></p>
</div>

<div class="_100">
<p><label for="textarea">Alamat</label><textarea
id="textarea" name="alamat" rows="5" cols="40"></textarea></p>
</div>

<div class="_100">
<p><label for="textfield">Phone/Hp</label><input
id="textfield" name="phone" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Email</label><input
id="textfield" name="email" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Upload
Photo</label><input id="textfield" name="photo" type="file""></p>
</div>

<!-- <div class="_100">


<p><label for="datepicker">Datepicker</label><input
id="datepicker" name="datepicker" class="required" type="text"
value="" /></p>
</div>

<div class="_100">
<p>
<label for="select">Select</label>
<select>
<option>Lorem Ipsum</option>
<option>Consetetur
Sadipscing</option>
<option>Eirmod Tempor</option>
</select>
</p>

11
</div>

<div class="_100">
<p>
<label for="file">Upload a file</label>
<input type="file">
</p>
</div> -->

<div class="_50">
<p>
<span class="label">Level</span>
<label><input type="radio" name="level"
value="Administrator"/> Administrator</label>
<label><input type="radio" name="level"
checked value="Sales"> Sales</label>
</p>
</div>

<div class="_100">
<p><label for="textfield">Username</label><input
id="textfield" name="username" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Password</label><input
id="textfield" name="password" type="text"></p>
</div>
<!--<div class="_50">
<p>
<span class="label">Checkboxes</span>
<label><input type="checkbox" name="checkbox" />
Check me</label>
<label><input type="checkbox" /> Or me</label>
<label><input type="checkbox" /> Lorem
ipsum</label>
</p>
</div> -->

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/if}

Buka web browser Anda dan ketikkan url


http://localhost/asfajaya/users.php?module=add_user, Anda akan mendapatkan

12
form tambah user, silahkan isi form yang tersedia dan akhiri dengan klik tombol
Simpan. Lihat gambar 7.2.

Gambar 7.2 Tambah user

Setelah berhasil, maka Anda akan diarahkan kepada url


http://localhost/asfajaya/users.php. hasilnya pasti tidak akan menampilkan apa-
apa.. jelas banget lah, secara kita kan belum membuat file untuk tampil
datanya?.. nah, oleh sebab itu mari kita buat.

Tampil User

13
Langkah selanjutnya yang bisa kita ambil adalah menampilkan data yang telah
disimpan sebelumnya.
Langkah pertama:
Buka kembali file users.php, kemudian lakukan penambahan skrip seperti yang
tercetak tebal berikut:

else{
$sql = mysql_query("SELECT DISTINCT
aj_employes.nik,name,level,username,employe_id FROM
aj_employes,aj_users WHERE level != 'Administrator' AND
aj_employes.nik=aj_users.nik");
$i = 1;
while ($data_user = mysql_fetch_array($sql)){
$datauser[] = array('nik' => $data_user['nik'],
'name' => $data_user['name'],
'level' => $data_user['level'],
'employe_id' => $data_user['employe_id'],
'username' => $data_user['username'],
'no' => $i);
$i++;
}

$smarty->assign('datauser', $datauser);
}

$date = date('Ymd');
$smarty->assign('nikdate', $date);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('name', $name);
$smarty->assign('content', $page);
$smarty->display('index.tpl');
?>

Langkah kedua:
Tambahkan juga skrip yang tercetak tebal berikut pada file users.tpl, perhatikan
skrip berikut:

// skrip sebelumnya
{else}
<div class="grid_12">
<h1>Manajemen User</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_user">Tambah User</a>
</ul>

<div class="grid_12">

14
<div class="block-border">
<div class="block-header">
<h1>Daftar Pengguna</h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th>NIK</th>
<th>Nama</th>
<th>Username</th>
<th>Level</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{section name=datauser loop=$datauser}
<tr class="gradeX">
<td
width="10">{$datauser[datauser].no}</td>
<td>{$datauser[datauser].nik}</td>
<td>{$datauser[datauser].name}</td>
<td>{$datauser[datauser].username}</td>
<td>{$datauser[datauser].level}</td>
<td class="center">
<a
href="?module=update_user&id={$datauser[datauser].employe_id}"
title="{$datauser[datauser].name}"><img src="img/update.png"></a>
&nbsp;
<!-- <a
href="?module=hapus_user&id={$datauser[datauser].employe_id}"
onclick="return confirm('Anda yakin ingin menghapus user
{$datauser[datauser].name}?');" disabled><img
src="img/hapus.png"></a> --></td>
</tr>
{/section}
</tbody>
</table>
</div>
</div>
</div>
{/if}

Langkah ketiga:
Refresh kembali halaman web Anda, Anda akan mendapatkan halaman tampil
user seperti pada gambar 7.3.

15
Gambar 7.3 Tampil user

Ubah User
Setiap data yang dimasukkan sangat rentan terhadap kesalahan, oleh sebabnya
kita akan buat fungsi untuk proses perubahan data.
Langkah pertama:
Tambahkan skrip yang tercetak tebal berikut pada file users.php.

elseif ($module == 'update_user'){


$id = $_GET['id'];

$sql = mysql_query("SELECT * FROM aj_employes,aj_users


WHERE employe_id='$id' AND aj_users.nik=aj_employes.nik");
$datauser_update = mysql_fetch_array($sql);

if ($datauser_update[level] == 'Y'){
$level1 = checked;
}
elseif($datauser_update[level] == 'N'){
$level2 = checked;
}
else{
$level1 = '';
$level2 = '';
}

16
$dataupdate[] = array( 'employe_id' =>
$datauser_update['employe_id'],
'nik' => $datauser_update['nik'],
'name' => $datauser_update['name'],
'address' => $datauser_update['address'],
'phone' => $datauser_update['phone'],
'email' => $datauser_update['email'],
'photo' => $datauser_update['photo'],
'level' => $datauser_update['level'],
'username' => $datauser_update['username'],
'password' => $datauser_update['password']);

$smarty->assign('level1', $level1);
$smarty->assign('level2', $level2);
$smarty->assign('dataupdate', $dataupdate);
$smarty->assign('proses', 'update_user');
}

elseif ($module == 'act_update_user'){


$nik = $_POST['nik'];
$name = $_POST['nama'];
$address= $_POST['alamat'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$level = $_POST['level'];
$photo = $_FILES['photo']['tmp_name'];
$photo_name = $_FILES['photo']['name'];
$photo_fix_name = $nik.$photo_name;

if (!empty($photo)){
move_uploaded_file($photo,
"img/photo/$photo_fix_name");

mysql_query("UPDATE aj_employes SET name = '$name',


address = '$address',
phone = '$phone',
email = '$email',
photo = '$photo_fix_name',
modified_user = '$user_id',
modified_date = '$date'
WHERE nik = '$nik'");
mysql_query("UPDATE aj_users SET level = '$level'
WHERE nik = '$nik'");
}
else{
mysql_query("UPDATE aj_employes SET name = '$name',
address = '$address',
phone = '$phone',
email = '$email',
modified_user = '$user_id',
modified_date = '$date'
WHERE nik = '$nik'");
mysql_query("UPDATE aj_users SET level = '$level'
WHERE nik = '$nik'");
}

17
header('location: users.php');
}

else{
$sql = mysql_query("SELECT DISTINCT
aj_employes.nik,name,level,username,employe_id FROM
aj_employes,aj_users WHERE level != 'Administrator' AND
aj_employes.nik=aj_users.nik");
$i = 1;
while ($data_user = mysql_fetch_array($sql)){
$datauser[] = array('nik' => $data_user['nik'],
'name' => $data_user['name'],
'level' => $data_user['level'],
'employe_id' => $data_user['employe_id'],
'username' => $data_user['username'],
'no' => $i);
$i++;
}

$smarty->assign('datauser', $datauser);
}

Langkah kedua:
Selanjutnya tambahkan juga skrip berikut pada file users.tpl

{elseif $proses eq 'update_user'}

<div class="grid_12">
<h1>Manajemen User</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Ubah User</h1><span></span>
</div>
{section name=dataupdate loop=$dataupdate}
<form action="users.php?module=act_update_user"
method="post" class="block-content form" enctype="multipart/form-
data"> <!-- id="validate-form" -->
<div class="_100">
<p><label
for="textfield">NIK</label><input id="textfield" name="nik"
class="required" type="text" value="{$dataupdate[dataupdate].nik}"
disabled><input id="textfield" name="nik" class="required"
type="hidden" value="{$nikdate}"></p>
</div>

<div class="_100">

18
<p><label for="textfield">Nama</label><input
id="textfield" name="nama" class="required" type="text"
value="{$dataupdate[dataupdate].name}"></p>
</div>

<div class="_100">
<p><label for="textarea">Alamat</label><textarea
id="textarea" name="alamat" rows="5"
cols="40">{$dataupdate[dataupdate].address}</textarea></p>
</div>

<div class="_100">
<p><label for="textfield">Phone/Hp</label><input
id="textfield" name="phone" type="text"
value="{$dataupdate[dataupdate].phone}"></p>
</div>

<div class="_100">
<p><label for="textfield">Email</label><input
id="textfield" name="email" type="text"
value="{$dataupdate[dataupdate].email}"></p>
</div>

{if $dataupdate[dataupdate].photo != ''}


<div class="_100">
<p><label for="textfield">Photo</label><a
href="img/photo/{$dataupdate[dataupdate].photo}"
target="_blank"><img
src="img/photo/{$dataupdate[dataupdate].photo}"
width="100"></a></p>
</div>
{/if}

<div class="_100">
<p><label for="textfield">Upload
Photo</label><input id="textfield" name="photo" type="file""></p>
</div>

<div class="_50">
<p>
<span class="label">Level</span>
<label><input type="radio" name="level"
value="Administrator" {$level1}> Administrator</label>
<label><input type="radio" name="level" checked
value="Sales" {$level2}> Sales</label>
</p>
</div>

<div class="_100">
<p><label for="textfield">Username</label><input
id="textfield" name="username" type="text"
value="{$dataupdate[dataupdate].username}" disabled></p>
</div>

<div class="_100">
<p><label for="textfield">Password</label><input
id="textfield" name="password" type="text"
value="{$dataupdate[dataupdate].password}" disabled></p>

19
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Simpan"></li>
</ul>
</div>
</form>
{/section}
</div>
</div>
{else}

Langkah ketiga:

Refresh kembali pada halaman web Anda, kemudian klik salah satu tombol
pada daftar user, maka Anda akan ditampilkan form untuk ubah data, tampilan
formnya sama seperti pada gambar 7.2. bedanya pada saat ditampilkan Anda
akan mendapati data lama Anda, silahkan ubah yang menurut Anda, Anda
melakukan kesalahan, dan akhiri dengan klik tombol Simpan. Your Data will
be Changed.

7.2 Manajemen Supplier


Manajemen supplier digunakan untuk kita dapat melakukan pengolahan
terhadap supplier yang memasok produk di toko kita.

Tambah Supplier
Tambah supplier digunakan untuk kita dapat menambahkan data supplier.
Langkah pertama:
Buat file dengan nama suppliers.php, kemudian tuliskan skrip berikut:

<?php
error_reporting(0);
$page = "suppliers";
require('libs/Smarty.class.php');

$smarty = new Smarty;

$module = $_GET['module'];
$name = $_COOKIE['name'];
$user_id = $_COOKIE['user_id'];

20
$photo_ses= $_COOKIE['photo'];
$date = date('Y-m-d H:i:s');

if ($module == 'add_supplier'){
$smarty->assign('proses', 'add_supplier');
}

elseif ($module == 'act_add_supplier'){


$name = $_POST['nama'];
$address= $_POST['alamat'];
$phone = $_POST['phone'];
$active = $_POST['aktif'];
$description = $_POST['description'];
$createdDate = date('Y-m-d H:i:s');

mysql_query("INSERT INTO aj_suppliers


(supplier,address,phone,active,description,created_user,created_da
te,modified_user,modified_date)

VALUES('$name','$address','$phone','$active','$description
','$user_id','$createdDate','','')");

header('location: suppliers.php');
}

$date = date('Ymd');
$smarty->assign('nikdate', $date);
$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

Langkah kedua:
Buat file layout dengan nama suppliers.tpl dan simpan dalam folder templates
smarty Anda. Adapun skrip yang bisa Anda tuliskan sebagai berikut:

{if $proses eq 'add_supplier'}

<div class="grid_12">
<h1>Manajemen Supplier</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Tambah Supplier</h1><span></span>
</div>

21
<form
action="suppliers.php?module=act_add_supplier" method="post"
class="block-content form"> <!-- id="validate-form" -->
<div class="_100">
<p><label for="textfield">Nama
Supplier</label><input id="textfield" name="nama" class="required"
type="text"></p>
</div>

<div class="_100">
<p><label for="textarea">Alamat</label><textarea
id="textarea" name="alamat" rows="5" cols="40"></textarea></p>
</div>

<div class="_100">
<p><label for="textfield">Phone/Hp</label><input
id="textfield" name="phone" type="text"></p>
</div>

<div class="_100">
<p><label
for="textarea">Keterangan</label><textarea id="textarea"
name="description" rows="5" cols="40"></textarea></p>
</div>

<div class="_50">
<p>
<span class="label">Aktif</span>
<label><input type="radio" name="aktif"
value="Y" checked> Y</label>
<label><input type="radio" name="aktif"
value="N"> N</label>
</p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/if}

Langkah ketiga:
Buka web browser Anda dan ketikkan url
http://localhost/asfajaya/suppliers.php?module=add_supplier, Anda akan
mendapati sebuah form untuk tambah supplier. Lihat gambar 7.4.

22
Gambar 7.4 Tambah supplier

Tampil Supplier
Tampil supplier digunakan untuk menampilkan data yang telah disimpan
sebelumnya.
Langkah pertama:
Tambahkan skrip yang tercetak tebal berikut pada file suppliers.php.
// skrip sebelumnya

else{
$sql = mysql_query("SELECT * FROM aj_suppliers");
$i = 1;
while ($data_supplier = mysql_fetch_array($sql)){
$datasupplier[] = array('supplier_id' =>
$data_supplier[supplier_id],
'supplier' => $data_supplier[supplier],
'address' => $data_supplier[address],

23
'active' => $data_supplier[active],
'no' => $i);
$i++;
}

$smarty->assign('datasupplier', $datasupplier);
}

$date = date('Ymd');
$smarty->assign('nikdate', $date);
$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

Langkah kedua:
Tambahkan skrip berikut pada file suppliers.tpl yang telah Anda simpan pada
folder templates smarty.

// skrip sebelumnya

{else}

<div class="grid_12">
<h1>Manajemen Supplier</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_supplier">Tambah Supplier</a>
</ul>

<div class="grid_12">
<div class="block-border">
<div class="block-header">
<h1>Daftar Supplier</h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th>Supplier</th>
<th>Address</th>
<th>Active</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{section name=datasupplier loop=$datasupplier}
<tr class="gradeX">

24
<td
width="10">{$datasupplier[datasupplier].no}</td>
<td>{$datasupplier[datasupplier].supplier}</td>
<td>{$datasupplier[datasupplier].address}</td>
<td>{$datasupplier[datasupplier].active}</td>
<td class="center">
<a
href="?module=update_supplier&id={$datasupplier[datasupplier].supp
lier_id}" title="{$datasupplier[datasupplier].supplier}"><img
src="img/update.png"></a> &nbsp;
<!-- <a
href="?module=hapus_user&id={$datauser[datauser].employe_id}"
onclick="return confirm('Anda yakin ingin menghapus user
{$datauser[datauser].name}?');" disabled><img
src="img/hapus.png"></a> --></td>
</tr>
{/section}
</tbody>
</table>
</div>
</div>
</div>
{/if}

Langkah ketiga:
Hasil dari skrip yang telah kita tambahkan dan jika Anda mengakses url
http://localhost/asfajaya/suppliers.php, maka Anda akan mendapati hasil seperti
pada gambar 7.5.

Gambar 7.5 Tampil supplier

Ubah Supplier
Selanjutnya kita akan membuat fungsi untuk proses perubahan data supplier.

25
Langkah pertama:
Buka kembali file suppliers.php Anda, kemudian tambahkan skrip berikut:

elseif ($module == 'update_supplier'){


$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM aj_suppliers WHERE
supplier_id='$id'");
$data_supplier = mysql_fetch_array($sql);

if ($data_supplier[active] == 'Y'){
$aktif1 = checked;
}
elseif($data_supplier[active] == 'N'){
$aktif2 = checked;
}
else{
$aktif1 = '';
$aktif2 = '';
}

$datasupplier[] = array('supplier_id' =>


$data_supplier[supplier_id],
'supplier' => $data_supplier[supplier],
'address' => $data_supplier[address],
'active' => $data_supplier[active],
'phone' => $data_supplier[phone],
'description' => $data_supplier[description]);

$smarty->assign('proses', 'update_supplier');
$smarty->assign('dataupdate_supplier', $datasupplier);
$smarty->assign('aktif1', $aktif1);
$smarty->assign('aktif2', $aktif2);
}

elseif ($module == 'act_update_supplier'){


$id = $_POST['supplier_id'];
$supplier = $_POST['nama'];
$address= $_POST['alamat'];
$phone = $_POST['phone'];
$description = $_POST['description'];
$aktif = $_POST['aktif'];

mysql_query("UPDATE aj_suppliers SET supplier =


'$supplier',
address = '$address',
phone = '$phone',
description = '$description',
active = '$aktif',
modified_user = '$user_id',
modified_date = '$date'
WHERE supplier_id = '$id'");
header('location: suppliers.php');
}

26
Langkah kedua:
Tambahkan skrip berikut pada file suppliers.tpl yang telah Anda simpan pada
folder templates smarty..

// skrip sebelumnya
{elseif $proses eq 'update_supplier'}

<div class="grid_12">
<h1>Manajemen Supplier</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>
{section name=dataupdate_supplier
loop=$dataupdate_supplier}
<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Ubah Supplier</h1><span></span>
</div>
<form
action="suppliers.php?module=act_update_supplier" method="post"
class="block-content form"> <!-- id="validate-form" -->
<div class="_100">
<p><label for="textfield">Nama
Supplier</label><input id="textfield" name="nama" class="required"
type="text"
value="{$dataupdate_supplier[dataupdate_supplier].supplier}"><inpu
t id="textfield" name="supplier_id" class="required" type="hidden"
value="{$dataupdate_supplier[dataupdate_supplier].supplier_id}"></
p>
</div>

<div class="_100">
<p><label
for="textarea">Alamat</label><textarea id="textarea" name="alamat"
rows="5"
cols="40">{$dataupdate_supplier[dataupdate_supplier].address}</tex
tarea></p>
</div>

<div class="_100">
<p><label
for="textfield">Phone/Hp</label><input id="textfield" name="phone"
type="text"
value="{$dataupdate_supplier[dataupdate_supplier].phone}"></p>
</div>

<div class="_100">
<p><label
for="textarea">Keterangan</label><textarea id="textarea"

27
name="description" rows="5"
cols="40">{$dataupdate_supplier[dataupdate_supplier].description}<
/textarea></p>
</div>

<div class="_50">
<p>
<span class="label">Aktif</span>
<label><input type="radio"
name="aktif" value="Y" {$aktif1}> Y</label>
<label><input type="radio"
name="aktif" value="N" {$aktif2}> N</label>
</p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Update"></li>
</ul>
</div>
</form>
</div>
</div>
{/section}

{else}

Langkah ketiga:

Refresh halaman tampil data supplier dan coba klik salah satu tombol , jika
benar maka Anda akan ditampilkan sebuah form yang tampilannya sama seperti
pada gambar 7.4. silahkan ubah data Anda, dan akhiri dengan klik tombol
Simpan.

7.3 Manajemen Kategori


Manajemen kategori digunakan untuk kita dapat melakukan pengolahan
terhadap kategori produk yang ada pada toko kita.

Tambah Kategori
Tambah kategori digunakan untuk kita dapat menambahkan data kategori.
Langkah pertama:
Buat file dengan nama categories.php, kemudian tuliskan skrip berikut:

28
<?php
$page = "categories";
require('libs/Smarty.class.php');

$smarty = new Smarty;

$module = $_GET['module'];
$user_id = $_COOKIE['user_id'];
$photo_ses= $_COOKIE['photo'];
$name = $_COOKIE['name'];
$date = date('Y-m-d H:i:s');

if ($module == 'add_category'){
$smarty->assign('proses', 'add_category');
}

elseif ($module == 'act_add_category'){


$name = $_POST['nama'];
$active = $_POST['aktif'];
$createdDate = date('Y-m-d H:i:s');

mysql_query("INSERT INTO aj_categories


(category,active,created_user,created_date,modified_user,modified_
date)

VALUES('$name','$active','$user_id','$createdDate','','')"
);

header('location: categories.php');
}

$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

Langkah kedua:
Langkah selanjutnya adalah kita menuju untuk pembuatan file tpl, seperti yang
Anda lihat pada skrip diatas $page mengarah kepada categories, oleh sebab itu
kita akan buat file categories.tpl dan simpan ke dalam folder template dalam
smarty Anda. Adapun skripnya sebagai berikut:

{if $proses eq 'add_category'}

<div class="grid_12">
<h1>Manajemen Category</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>

29
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Tambah Kategori</h1><span></span>
</div>
<form
action="categories.php?module=act_add_category" method="post"
class="block-content form"> <!-- id="validate-form" -->
<div class="_100">
<p><label for="textfield">Nama
Kategori</label><input id="textfield" name="nama" class="required"
type="text"></p>
</div>

<div class="_50">
<p>
<span class="label">Aktif</span>
<label><input type="radio" name="aktif"
value="Y" checked> Y</label>
<label><input type="radio" name="aktif"
value="N"> N</label>
</p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/if}

Langkah ketiga:
Buka web browser Anda dan masukkan url
http://localhost/asfajaya/categories.php?module=add_category, maka Anda
akan ditampilkan pada suatu form seperti pada gambar 7.6.

30
Gambar 7.6 Tambah kategori

Tampil Kategori
Tampil kategori digunakan untuk menampilkan data kategori yang telah
disimpan sebelumnya.
Langkah pertama:
Tambahkan skrip yang tercetak tebal berikut pada file categories.php.
// skrip sebelumnya

else{
$sql = mysql_query("SELECT * FROM aj_categories ORDER BY
category ASC");
$i = 1;
while ($data_category = mysql_fetch_array($sql)){
$datacategory[] = array('category_id' =>
$data_category[category_id],
'category' => $data_category[category],
'active' => $data_category[active],
'no' => $i);
$i++;
}
$smarty->assign('datacategory', $datacategory);
}

$date = date('Ymd');

31
$smarty->assign('nikdate', $date);
$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

Langkah kedua:
Tambahkan skrip berikut pada file categories.tpl yang telah Anda simpan pada
folder templates smarty.

// skrip sebelumnya

{else}

<div class="grid_12">
<h1>Manajemen Kategori</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_category">Tambah Kategori</a>
</ul>

<div class="grid_12">
<div class="block-border">
<div class="block-header">
<h1>Daftar Kategori</h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th>Kategori</th>
<th>Aktif</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{section name=datacategory loop=$datacategory}
<tr class="gradeX">
<td
width="10">{$datacategory[datacategory].no}</td>
<td>{$datacategory[datacategory].category}</td>
<td>{$datacategory[datacategory].active}</td>
<td class="center">
<a
href="?module=update_category&id={$datacategory[datacategory].cate
gory_id}" title="{$datacategory[datacategory].category}"><img
src="img/update.png"></a> &nbsp;

32
<!-- <a
href="?module=hapus_user&id={$datauser[datauser].employe_id}"
onclick="return confirm('Anda yakin ingin menghapus user
{$datauser[datauser].name}?');" disabled><img
src="img/hapus.png"></a> --></td>
</tr>
{/section}
</tbody>
</table>
</div>
</div>
</div>
{/if}

Langkah ketiga:
Hasil dari skrip yang telah kita tambahkan dan jika Anda mengakses url
http://localhost/asfajaya/categories.php, maka Anda akan mendapati hasil
seperti pada gambar 7.7.

Gambar 7.7 Tampil kategori

Ubah Kategori
Selanjutnya kita akan membuat fungsi untuk proses perubahan data kategori.
Langkah pertama:
Buka kembali file categories.php Anda, kemudian tambahkan skrip berikut:
elseif ($module == 'update_category'){
$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM aj_categories WHERE
category_id='$id'");
$data_category = mysql_fetch_array($sql);

if ($data_category['active'] == 'Y'){
$aktif1 = 'checked';

33
}
elseif($data_category['active'] == 'N'){
$aktif2 = 'checked';
}
else{
$aktif1 = '';
$aktif2 = '';
}

$datacategory[] = array('category_id' =>


$data_category['category_id'],
'category' => $data_category['category'],
'active' => $data_category['active']);

$smarty->assign('proses', 'update_category');
$smarty->assign('dataupdate_category', $datacategory);
$smarty->assign('aktif1', $aktif1);
$smarty->assign('aktif2', $aktif2);
}

elseif ($module == 'act_update_category'){


$id = $_POST['category_id'];
$category = $_POST['nama'];
$aktif = $_POST['aktif'];

mysql_query("UPDATE aj_categories SET category =


'$category',
active = '$aktif',
modified_user = '$user_id',
modified_date = '$date'
WHERE category_id = '$id'");
header('location: categories.php');
}

Langkah kedua:
Tambahkan skrip berikut pada file categories.tpl yang telah Anda simpan pada
folder templates smarty..

// skrip sebelumnya

{elseif $proses eq 'update_category'}

<div class="grid_12">
<h1>Manajemen Supplier</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

{section name=dataupdate_category loop=$dataupdate_category}

34
<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Ubah Supplier</h1><span></span>
</div>
<form
action="categories.php?module=act_update_category" method="post"
class="block-content form"> <!-- id="validate-form" -->
<div class="_100">
<p><label for="textfield">Nama Category</label>
<input id="textfield" name="nama" class="required" type="text"
value="{$dataupdate_category[dataupdate_category].category}">
<input id="textfield" name="category_id"
class="required" type="hidden"
value="{$dataupdate_category[dataupdate_category].category_id}"></
p>
</div>

<div class="_50">
<p>
<span class="label">Aktif</span>
<label><input type="radio" name="aktif"
value="Y" {$aktif1}> Y</label>
<label><input type="radio" name="aktif"
value="N" {$aktif2}> N</label>
</p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Update"></li>
</ul>
</div>
</form>
</div>
</div>
{/section}

{else}

Langkah ketiga:

Refresh halaman tampil data kategori dan coba klik salah satu tombol , jika
benar maka Anda akan ditampilkan sebuah form yang tampilannya sama seperti
pada gambar 7.7. silahkan ubah data Anda, dan akhiri dengan klik tombol
Simpan.

7.4 Manajemen Produk


35
Manajemen produk digunakan untuk kita dapat melakukan pengolahan terhadap
data produk yang ada pada toko kita.

Tambah Produk
Tambah produk digunakan untuk kita dapat menambahkan data produk.
Langkah pertama:
Buat file dengan nama products.php, kemudian tuliskan skrip berikut:

<?php
$page = "products";
require('libs/Smarty.class.php');

$smarty = new Smarty;

$module = $_GET['module'];
$user_id = $_COOKIE['user_id'];
$photo_ses= $_COOKIE['photo'];
$name = $_COOKIE['name'];
$date = date('Y-m-d H:i:s');

if ($module == 'add_product'){
$sql = mysql_query("SELECT * FROM aj_categories ORDER BY
category ASC");
while ($data_category = mysql_fetch_array($sql)){
$datacategory[] = array('category_id' =>
$data_category[category_id],

'category' => $data_category[category]);


}

$sql = mysql_query("SELECT * FROM aj_suppliers ORDER BY


supplier ASC");
while ($data_supplier = mysql_fetch_array($sql)){
$datasupplier[] = array('supplier_id' =>
$data_supplier[supplier_id],

'supplier' => $data_supplier[supplier]);


}

$smarty->assign('datacategory', $datacategory);
$smarty->assign('datasupplier', $datasupplier);
$smarty->assign('proses', 'add_product');
}

elseif ($module == 'act_add_product'){


$category = $_POST['category'];
$supplier = $_POST['supplier'];
$name = $_POST['nama'];
$harga = $_POST['harga'];
$harga_po = $_POST['harga_po'];
$harga_pm = $_POST['harga_pm'];
$stok = $_POST['stok'];
$active = $_POST['aktif'];

36
$description = $_POST['description'];
$createdDate = date('Y-m-d H:i:s');

mysql_query("INSERT INTO aj_products


(category_id,supplier_id,product,price,po_price,pm_price,stock,act
ive,description,created_user,created_date,modified_user,modified_d
ate)

VALUES('$category','$supplier','$name','$harga','$harga_po
','$harga_pm','$stok','$active','$description','$user_id','$create
dDate','','')");

header('location: products.php');
}

$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

Langkah kedua:
Langkah selanjutnya adalah kita menuju untuk pembuatan file tpl, seperti yang
Anda lihat pada skrip diatas $page mengarah kepada products, oleh sebab itu
kita akan buat file products.tpl dan simpan ke dalam folder template dalam
smarty Anda. Adapun skripnya sebagai berikut:

{if $proses eq 'add_product'}

<div class="grid_12">
<h1>Manajemen Product</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Tambah Produk</h1><span></span>
</div>
<form action="products.php?module=act_add_product"
method="post" class="block-content form"> <!-- id="validate-form"
-->

<div class="_100">
<p><label for="textfield">Kategori</label>
<select name="category">
{section name=datacategory loop=$datacategory}

37
<option
value="{$datacategory[datacategory].category_id}">{$datacategory[d
atacategory].category}</option>
{/section}
</select>
</div>

<div class="_100">
<p><label for="textfield">Supplier</label>
<select name="supplier">
{section name=datasupplier loop=$datasupplier}
<option
value="{$datasupplier[datasupplier].supplier_id}">{$datasupplier[d
atasupplier].supplier}</option>
{/section}
</select>
</div>

<div class="_100">
<p><label for="textfield">Nama Produk</label><input
id="textfield" name="nama" class="required" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Harga
Jual</label><input id="textfield" name="harga" class="required"
type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Harga Modal
(P.O.)</label><input id="textfield" name="harga_po"
class="required" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Harga Paling
Murah (P.M.)</label><input id="textfield" name="harga_pm"
class="required" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Stok
Produk</label><input id="textfield" name="stok" class="required"
type="text"></p>
</div>

<div class="_100">
<p><label
for="textarea">Keterangan</label><textarea id="textarea"
name="description" rows="5" cols="40"></textarea></p>
</div>

<div class="_50">
<p>
<span class="label">Aktif</span>
<label><input type="radio" name="aktif"
value="Y" checked> Y</label>

38
<label><input type="radio" name="aktif"
value="N"> N</label>
</p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red" id="reset-validate-form"
href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit" class="button"
value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/if}

Langkah ketiga:
Buka web browser Anda dan masukkan url
http://localhost/asfajaya/products.php?module=add_product, maka Anda akan
ditampilkan pada suatu form seperti pada gambar 7.8.

39
Gambar 7.8 Tambah produk

Tampil Produk
Tampil produk digunakan untuk menampilkan data produk yang telah disimpan
sebelumnya.

40
Langkah pertama:
Tambahkan skrip yang tercetak tebal berikut pada file products.php.
// skrip sebelumnya

else{
$sql = mysql_query("SELECT * FROM aj_products a,
aj_categories b, aj_suppliers c WHERE a.category_id=b.category_id
AND a.supplier_id=c.supplier_id ORDER BY a.product ASC");
$i = 1;
while ($data_product = mysql_fetch_array($sql)){
$price = format_rupiah($data_product[price]);
$po_price = format_rupiah($data_product[po_price]);
$pm_price = format_rupiah($data_product[pm_price]);

$dataproduct[] = array('product_id' =>


$data_product[product_id],
'category' => $data_product[category],
'category_id' => $data_product[category_id],
'supplier_id' => $data_product[supplier_id],
'product' => $data_product[product],
'stock' => $data_product[stock],
'price' => $price,
'po_price' => $po_price,
'pm_price' => $pm_price,
'no' => $i);
$qtyomset = $data_product[stock] *
$data_product[po_price];
$modalomset += $qtyomset;
$pmqomset = $data_product[stock] *
$data_product[pm_price];
$pmomset += $pmqomset;
$promset = $data_product[stock] *
$data_product[price];
$priceomset += $promset;
$i++;
}
$modalom = format_rupiah($modalomset);
$pmomset = format_rupiah($pmomset);
$priomset = format_rupiah($priceomset);

$smarty->assign('modalomset', $modalom);
$smarty->assign('pmomset', $pmomset);
$smarty->assign('priceomset', $priomset);
$smarty->assign('dataproduct', $dataproduct);
}

$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl');

?>

41
Langkah kedua:
Tambahkan skrip berikut pada file products.tpl yang telah Anda simpan pada
folder templates smarty.

// skrip sebelumnya

{else}

<div class="grid_12">
<h1>Manajemen Product</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_product">Tambah Produk</a>
</ul>

<div class="grid_12">
<div class="block-border">
<div class="block-header">
<h1>Daftar Produk |</h1><h1><a
href="products_report.php" target="_blank">Download
Produk</a></h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th>Produk</th>
<th>Kategori</th>
<th>Stok</th>
<th>Harga</th>
<th>Modal</th>
<th>Harga Paling Murah</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{section name=dataproduct
loop=$dataproduct}
<tr class="gradeX">
<td width="10">{$dataproduct[dataproduct].no}</td>
<td>{$dataproduct[dataproduct].product}</td>
<td>{$dataproduct[dataproduct].category}</td>
<td>{$dataproduct[dataproduct].stock}</td>
<td>Rp. {$dataproduct[dataproduct].price}</td>
<td>Rp. {$dataproduct[dataproduct].po_price}</td>
<td>Rp. {$dataproduct[dataproduct].pm_price}</td>
<td class="center">
<a
href="?module=update_product&id={$dataproduct[dataproduct].product
_id}&catid={$dataproduct[dataproduct].category_id}&supid={$datapro
duct[dataproduct].supplier_id}"

42
title="{$dataproduct[dataproduct].product}"><img
src="img/update.png"></a> &nbsp;

<!-- <a
href="?module=hapus_user&id={$datauser[datauser].employe_id}"
onclick="return confirm('Anda yakin ingin menghapus user
{$datauser[datauser].name}?');" disabled><img
src="img/hapus.png"></a> --></td>
</tr>
{/section}
<tr>
<td colspan="4"></td>
<td>Rp. {$priceomset}</td>
<td>Rp. {$modalomset}</td>
<td>Rp. {$pmomset}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
{/if}

Langkah ketiga:
Hasil dari skrip yang telah kita tambahkan dan jika Anda mengakses url
http://localhost/asfajaya/products.php, maka Anda akan mendapati hasil seperti
pada gambar 7.9.

Gambar 7.9 Tampil produk

Ubah Produk
Selanjutnya kita akan membuat fungsi untuk proses perubahan data produk.
Langkah pertama:
Buka kembali file products.php Anda, kemudian tambahkan skrip berikut:

43
elseif ($module == 'update_product'){
$id = $_GET['id'];
$catid = $_GET['catid'];
$supid = $_GET['supid'];

$sql = mysql_query("SELECT * FROM aj_products WHERE


product_id = '$id'");
$data = mysql_fetch_array($sql);

if ($data['active'] == 'Y'){
$aktif1 = 'checked';
}
elseif($data['active'] == 'N'){
$aktif2 = 'checked';
}
else{
$aktif1 = '';
$aktif2 = '';
}

$sql_cat = mysql_query("SELECT * FROM aj_categories ORDER


BY category ASC");
while ($data_cat = mysql_fetch_array($sql_cat)){
$datacat[] = array( 'category_id' =>
$data_cat[category_id],
'category' => $data_cat[category]);
}

$sql_sup = mysql_query("SELECT * FROM aj_suppliers ORDER


BY supplier ASC");
while ($data_sup = mysql_fetch_array($sql_sup)){
$datasup[] = array( 'supplier_id' =>
$data_sup[supplier_id],
'supplier' => $data_sup[supplier]);
}

$dataupdate_product[] = array( 'supplier_id' =>


$data[supplier_id],
'category_id' => $data[category_id],
'product_id' => $data[product_id],
'product' => $data[product],
'price' => $data[price],
'po_price' => $data[po_price],
'pm_price' => $data[pm_price],
'stock' => $data[stock],
'active' => $data[active],
'description' => $data[description]);

$smarty->assign('aktif1', $aktif1);
$smarty->assign('aktif2', $aktif2);
$smarty->assign('catid', $catid);
$smarty->assign('supid', $supid);
$smarty->assign('datacat', $datacat);
$smarty->assign('datasup', $datasup);
$smarty->assign('dataupdate_product',
$dataupdate_product);
$smarty->assign('proses', 'update_product');
}

44
elseif ($module == 'act_update_product'){
$productid = $_POST['productid'];
$category = $_POST['category'];
$supplier = $_POST['supplier'];
$name = $_POST['nama'];
$price = $_POST['harga'];
$po_price = $_POST['harga_po'];
$pm_price = $_POST['harga_pm'];
$stock = $_POST['stok'];
$description= $_POST['description'];
$active = $_POST['aktif'];
$modified_date = date('Y-m-d H:i:s');

mysql_query("UPDATE aj_products SET category_id =


'$category',
supplier_id = '$supplier',
product = '$name',
price = '$price',
po_price = '$po_price',
pm_price = '$pm_price',
stock = '$stock',
active = '$active',
description = '$description',
modified_user = '$user_id',
modified_date = '$modified_date'
WHERE product_id = '$productid'");

header('location: products.php');
}

Langkah kedua:
Tambahkan skrip berikut pada file products.tpl yang telah Anda simpan pada
folder templates smarty..

// skrip sebelumnya

{elseif $proses eq 'update_product'}


<div class="grid_12">
<h1>Manajemen Product</h1>
<!-- <p>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor.</p> -->
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>
{section name=dataupdate_product loop=$dataupdate_product}
<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Ubah Produk</h1><span></span>

45
</div>
<form
action="products.php?module=act_update_product" method="post"
class="block-content form"> <!-- id="validate-form" -->
<input id="textfield" name="productid"
class="required" type="hidden"
value="{$dataupdate_product[dataupdate_product].product_id}">

<div class="_100">
<p><label for="textfield">Kategori</label>
<select name="category">
{section name=datacat loop=$datacat}
{if $datacat[datacat].category_id ==
$catid}
<option value="{$datacat[datacat].category_id}"
SELECTED>{$datacat[datacat].category}</option>
{else}
<option
value="{$datacat[datacat].category_id}">{$datacat[datacat].categor
y}</option>
{/if}
{/section}
</select>
</div>

<div class="_100">
<p><label for="textfield">Supplier</label>
<select name="supplier">
{section name=datasup loop=$datasup}
{if $datasup[datasup].supplier_id == $supid}
<option value="{$datasup[datasup].supplier_id}"
SELECTED>{$datasup[datasup].supplier}</option>
{else}
<option
value="{$datasup[datasup].supplier_id}">{$datasup[datasup].supplie
r}</option>
{/if}
{/section}
</select>
</div>

<div class="_100">
<p><label for="textfield">Nama Produk</label><input
id="textfield" name="nama" class="required" type="text"
value="{$dataupdate_product[dataupdate_product].product}"></p>
</div>

<div class="_100">
<p><label for="textfield">Harga Jual</label><input
id="textfield" name="harga" class="required" type="text"
value="{$dataupdate_product[dataupdate_product].price}"></p>
</div>

<div class="_100">
<p><label for="textfield">Harga
Modal (P.O.)</label><input id="textfield" name="harga_po"
class="required" type="text"
value="{$dataupdate_product[dataupdate_product].po_price}"></p>

46
</div>

<div class="_100">
<p><label for="textfield">Harga Paling Murah
(P.M.)</label><input id="textfield" name="harga_pm"
class="required" type="text"
value="{$dataupdate_product[dataupdate_product].pm_price}"></p>
</div>

<div class="_100">
<p><label for="textfield">Stok Produk</label><input
id="textfield" name="stok" class="required" type="text"
value="{$dataupdate_product[dataupdate_product].stock}"></p>
</div>

<div class="_100">
<p><label for="textarea">Keterangan</label><textarea
id="textarea" name="description" rows="5"
cols="40">{$dataupdate_product[dataupdate_product].description}</t
extarea></p>
</div>

<div class="_50">
<p>
<span class="label">Aktif</span>
<label><input type="radio" name="aktif" value="Y"
{$aktif1}> Y</label>
<label><input type="radio" name="aktif" value="N"
{$aktif2}> N</label>
</p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red" id="reset-validate-form"
href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit" class="button"
value="Update"></li>
</ul>
</div>
</form>
</div>
</div>
{/section}

// skrip selanjutnya

Langkah ketiga:

Refresh halaman tampil data kategori dan coba klik salah satu tombol , jika
benar maka Anda akan ditampilkan sebuah form yang tampilannya sama seperti
pada gambar 7.8. silahkan ubah data Anda, dan akhiri dengan klik tombol
Simpan.

47
7.5 Transaksi Penjualan
Ini dia Transaksi Penjualan ala Agus Saputra, walaupun bisa dibilang belum
disempurnakan tapi setidaknya diharapkan bisa memberikan gambaran kepada
Anda dalam memahami Smarty. Digunakan untuk menyimpan seluruh transaksi
penjualan.. dan uniknya transaksi ini tidak ada no faktur ataupun kode
transaksi Unik bukan?.. soalnya aplikasi ini didesain untuk pribadi, jadi ya
asal ngerti ndewek wae alasannya penulis buat program seperti ini adalah
untuk cek stok dan mengetahui total transaksi berserta keuntungan per harinya.

Tambah Transaksi Penjualan


Tambah transaksi digunakan untuk kita dapat menambahkan data transaksi.
Langkah pertama:
Buat file dengan nama sales.php, kemudian tuliskan skrip berikut:

<?php
$page = "sales";
require('libs/Smarty.class.php');

$smarty = new Smarty;

$sales_date = date('Y-m-d');
$hour = date('H:i:s');
$photo_ses= $_COOKIE['photo'];
$name = $_COOKIE['name'];
$date = tgl_indo($sales_date);

$module = $_GET['module'];

if ($module == 'add_transaction'){

$sql = mysql_query("SELECT * FROM aj_products ORDER BY


product ASC");
while ($data_product = mysql_fetch_array($sql)){
$dataproduct[] = array('product_id' =>
$data_product[product_id],

'product' => $data_product[product]);


}

$smarty->assign('date', $date);
$smarty->assign('dataproduct', $dataproduct);
$smarty->assign('proses', 'add_transaction');
}

elseif ($module == 'act_add_transaction'){


$product = $_POST['product'];
$price = $_POST['harga'];
$qty = $_POST['qty'];
$description= $_POST['description'];

48
$sql = mysql_query("SELECT * FROM aj_products WHERE
product_id = '$product'");
$data = mysql_fetch_array($sql);
$subtotal= $price * $qty;
$profit = ($price * $qty) - ($data[po_price] * $qty);
$sales_stock = $data[stock] - $qty;

if ($data[stock] == 0){
echo "<script language='javascript'>alert('Stock
product kosong, silahkan cek kembali.');
window.location =
'sales.php?module=add_transaction'</script>";
}

else{

mysql_query("INSERT INTO aj_sales_transaction (


product_id,
sales_price,
profit,
sales_qty,
sales_stock,
subtotal,
sales_date,
sales_time,
description,
user_id)

VALUES( '$product',
'$price',
'$profit',
'$qty',
'$sales_stock',
'$subtotal',
'$sales_date',
'$hour',
'$description',
'')");

mysql_query("UPDATE aj_products SET stock =


'$sales_stock' WHERE product_id = '$product'");
header('location: sales.php');
}
}

$smarty->assign('subtota', $subtota);
$smarty->assign('pro', $pro);
$smarty->assign('popri', $popri);
$smarty->assign('total_price', $totalprice);
$smarty->assign('datasales', $datasales);
$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

49
Langkah kedua:
Langkah selanjutnya adalah kita menuju untuk pembuatan file tpl, seperti yang
Anda lihat pada skrip diatas $page mengarah kepada sales, oleh sebab itu kita
akan buat file sales.tpl dan simpan ke dalam folder template dalam smarty
Anda. Adapun skripnya sebagai berikut:

{if $proses eq 'add_transaction'}


<div class="grid_12">
<h1>Manajemen Transaksi</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Tambah Transaksi Penjualan</h1><span></span>
</div>
<form action="sales.php?module=act_add_transaction"
method="post" class="block-content form"> <!-- id="validate-form"
-->

<div class="_100">
<p><label for="textfield">Tanggal</label>
{$date}</p>
</div>

<div class="_100">
<p><label for="textfield">Nama Produk</label>

<select name="product">
{section name=dataproduct loop=$dataproduct}
<option
value="{$dataproduct[dataproduct].product_id}">{$dataproduct[datap
roduct].product}</option>
{/section}
</select>
</p>
</div>

<div class="_100">
<p><label for="textfield">Harga Jual</label><input
id="textfield" name="harga" class="required" type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Quantity
(Qty)</label><input id="textfield" name="qty" class="required"
type="text" value="1"></p>
</div>

<div class="_100">

50
<p><label
for="textarea">Keterangan</label><textarea id="textarea"
name="description" rows="5" cols="40">-</textarea></p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red" id="reset-validate-form"
href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit" class="button"
value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/if}

Langkah ketiga:
Buka web browser Anda dan masukkan url
http://localhost/asfajaya/sales.php?module=add_transaction, maka Anda akan
ditampilkan pada suatu form seperti pada gambar 7.10.

51
Gambar 7.10 Tambah transaksi

Tampil Transaksi Penjualan


Tampil transaksi digunakan untuk menampilkan data transaksi yang telah
disimpan sebelumnya.
Langkah pertama:
Tambahkan skrip yang tercetak tebal berikut pada file sales.php.
// skrip sebelumnya

else{

52
$sql = mysql_query("SELECT * FROM aj_sales_transaction a,
aj_products b, aj_categories c WHERE a.sales_date = '$sales_date'
AND a.product_id=b.product_id AND b.category_id=c.category_id
ORDER BY a.sales_time ASC");
$i = 1;
while ($data_sales = mysql_fetch_array($sql)){
$sales_price =
format_rupiah($data_sales[sales_price]);
$po_price =
format_rupiah($data_sales[po_price]);
$profit =
format_rupiah($data_sales[profit]);
$subtotal =
format_rupiah($data_sales[subtotal]);

$total_price += $data_sales[sales_price];
$totalprice = format_rupiah($total_price);

$po_pri += $data_sales[po_price];
$popri = format_rupiah($po_pri);

$pro_f += $data_sales[profit];
$pro = format_rupiah($pro_f);

$sub += $data_sales[subtotal];
$subtota = format_rupiah($sub);

$datasales[] = array( 'trx_id' =>


$data_sales[trx_id],
'product_id' => $data_sales[product_id],
'product' => $data_sales[product],
'category' => $data_sales[category],
'sales_qty' => $data_sales[sales_qty],
'sales_stock' => $data_sales[sales_stock],
'subtotal' => $subtotal,
'sales_price' => $sales_price,
'po_price' => $po_price,
'profit' => $profit,
'no' => $i);
$i++;
}
}

$smarty->assign('subtota', $subtota);
$smarty->assign('pro', $pro);
$smarty->assign('popri', $popri);
$smarty->assign('total_price', $totalprice);
$smarty->assign('datasales', $datasales);
$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

53
Langkah kedua:
Tambahkan skrip berikut pada file sales.tpl yang telah Anda simpan pada folder
templates smarty.

// skrip sebelumnya

{else}

<div class="grid_12">
<h1>Manajemen Product</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_product">Tambah Produk</a>
</ul>

<div class="grid_12">
<div class="block-border">
<div class="block-header">
<h1>Daftar Produk |</h1><h1><a
href="products_report.php" target="_blank">Download
Produk</a></h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th>Produk</th>
<th>Kategori</th>
<th>Stok</th>
<th>Harga</th>
<th>Modal</th>
<th>Harga Paling Murah</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{section name=dataproduct
loop=$dataproduct}
<tr class="gradeX">
<td width="10">{$dataproduct[dataproduct].no}</td>
<td>{$dataproduct[dataproduct].product}</td>
<td>{$dataproduct[dataproduct].category}</td>
<td>{$dataproduct[dataproduct].stock}</td>
<td>Rp. {$dataproduct[dataproduct].price}</td>
<td>Rp. {$dataproduct[dataproduct].po_price}</td>
<td>Rp. {$dataproduct[dataproduct].pm_price}</td>
<td class="center">
<a
href="?module=update_product&id={$dataproduct[dataproduct].product
_id}&catid={$dataproduct[dataproduct].category_id}&supid={$datapro
duct[dataproduct].supplier_id}"

54
title="{$dataproduct[dataproduct].product}"><img
src="img/update.png"></a> &nbsp;

<!-- <a
href="?module=hapus_user&id={$datauser[datauser].employe_id}"
onclick="return confirm('Anda yakin ingin menghapus user
{$datauser[datauser].name}?');" disabled><img
src="img/hapus.png"></a> --></td>
</tr>
{/section}
<tr>
<td colspan="4"></td>
<td>Rp. {$priceomset}</td>
<td>Rp. {$modalomset}</td>
<td>Rp. {$pmomset}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
{/if}

Langkah ketiga:
Hasil dari skrip yang telah kita tambahkan dan jika Anda mengakses url
http://localhost/asfajaya/sales.php, maka Anda akan mendapati hasil seperti
pada gambar 7.11.

Gambar 7.11 Tampil transaksi penjualan

55
Ubah Transaksi Penjualan
Selanjutnya kita akan membuat fungsi untuk proses perubahan data transaksi
penjualan.
Langkah pertama:
Buka kembali file sales.php Anda, kemudian tambahkan skrip berikut:

elseif ($module == 'update_sales'){


$trx_id = $_GET['id'];
$pro_id = $_GET['pro_id'];

$data = mysql_fetch_array(mysql_query("SELECT
a.description, a.sales_qty, a.sales_price, a.sales_stock,
b.product, b.product_id FROM aj_sales_transaction a,aj_products b
WHERE a.trx_id = '$trx_id' AND a.product_id=b.product_id"));
$datasales[] = array( 'product_id' => $data[product_id],
'product' => $data[product],
'stock' => $data[sales_stock],
'sales_price' => $data[sales_price],
'sales_qty' => $data[sales_qty],
'description' => $data[description]);

$smarty->assign('date', $date);
$smarty->assign('dataproduct', $datasales);
$smarty->assign('proses', 'update_sales');
$smarty->assign('trx_id', $trx_id);
}

elseif ($module == 'act_update_transaction'){


$product_id = $_POST['product_id'];
$price = $_POST['harga'];
$qty = $_POST['qty'];
$sales_qty = $_POST['sales_qty'];
$description= $_POST['description'];
$trx_id = $_POST['trx_id'];
$stock = $_POST['stock'];

$sql = mysql_query("SELECT * FROM aj_products WHERE


product_id = '$product_id'");
$data = mysql_fetch_array($sql);
$subtotal = $price * $qty;
$profit = ($price * $qty) - ($data[po_price] * $qty);
$sales_stock = ($stock + $sales_qty) - $qty;

mysql_query("UPDATE aj_sales_transaction SET sales_price


= '$price',
profit = '$profit',
sales_qty = '$qty',
sales_stock = '$sales_stock',
subtotal = '$subtotal',
description = '$description'

WHERE trx_id = '$trx_id'");

56
mysql_query("UPDATE aj_products SET stock = '$sales_stock'
WHERE product_id = '$product_id'");
header('location: sales.php');

Langkah kedua:
Tambahkan skrip berikut pada file sales.tpl yang telah Anda simpan pada folder
templates smarty..

// skrip sebelumnya

{elseif $proses eq 'update_sales'}

<div class="grid_12">
<h1>Manajemen Transaksi</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

{section name=dataproduct loop=$dataproduct}


<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Ubah Transaksi Penjualan</h1><span></span>
</div>
<form
action="sales.php?module=act_update_transaction" method="post"
class="block-content form"> <!-- id="validate-form" -->

<div class="_100">
<p><label for="textfield">Tanggal</label>
{$date}</p>
</div>

<div class="_100">
<p><label for="textfield">Nama Produk</label>
<input id="textfield" name="product"
class="required" type="text"
value="{$dataproduct[dataproduct].product}" disabled><input
id="textfield" name="product_id" class="required" type="hidden"
value="{$dataproduct[dataproduct].product_id}">
<input id="textfield" name="trx_id"
class="required" type="hidden" value="{$trx_id}">
</p>
</div>

<div class="_100">
<p><label for="textfield">Harga Jual</label><input
id="textfield" name="harga" class="required" type="text"
value="{$dataproduct[dataproduct].sales_price}"></p>
</div>

57
<div class="_100">
<p><label for="textfield">Quantity
(Qty)</label><input id="textfield" name="qty" class="required"
type="text" value="{$dataproduct[dataproduct].sales_qty}">
<input id="textfield" name="stock" class="required"
type="hidden" value="{$dataproduct[dataproduct].stock}">
<input id="textfield" name="sales_qty"
class="required" type="hidden"
value="{$dataproduct[dataproduct].sales_qty}">
</p>
</div>

<div class="_100">
<p><label
for="textarea">Keterangan</label><textarea id="textarea"
name="description" rows="5"
cols="40">{$dataproduct[dataproduct].description}</textarea></p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red" id="reset-validate-form"
href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit" class="button"
value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/section}

// skrip selanjutnya

Langkah ketiga:

Refresh halaman tampil data kategori dan coba klik salah satu tombol , jika
benar maka Anda akan ditampilkan sebuah form yang tampilannya sama seperti
pada gambar 7.11. silahkan ubah data Anda, dan akhiri dengan klik tombol
Simpan.

Hapus/Cancel Transaksi Penjualan


Data transaksi yang telah disimpan bisa kita hapus, ini dibuat untuk menjaga
jika suatu hari pembeli membatalkan pembeliannya, ataupun ada yang cacat
produk sehingga barang akan diretur. Untuk itu bisa Anda tambahkan pada
skrip sales.php berikut:

58
// skrip sebelumnya

elseif ($module == 'cancel_sales'){


$trx_id = $_GET['id'];

$sql = mysql_query("SELECT * FROM aj_sales_transaction


WHERE trx_id = '$trx_id'");
$data = mysql_fetch_array($sql);

$sales_qty = $data[sales_qty];
$product_id = $data[product_id];

$sql_product = mysql_query("SELECT * FROM aj_products


WHERE product_id = '$product_id'");
$data_product = mysql_fetch_array($sql_product);

$sisa_stock = $data[sales_qty] + $data_product[stock];

$update = mysql_query("UPDATE aj_products SET stock


= '$sisa_stock' WHERE product_id = '$product_id'");

if ($update){
mysql_query("DELETE FROM aj_sales_transaction WHERE
trx_id = '$trx_id'");
}
header('location: sales.php');
}

// skrip selanjutnya

7.6 Transaksi Pembelian


Transaksi Pembelian ala Agus Saputra, walaupun bisa dibilang belum
disempurnakan tapi setidaknya diharapkan bisa memberikan gambaran kepada
Anda dalam memahami Smarty. Digunakan untuk menyimpan seluruh transaksi
pembelian.. dan uniknya transaksi ini juga tidak ada no faktur ataupun kode
transaksi seperti halnya transaksi penjualan Unik bukan?.. soalnya aplikasi ini
didesain untuk pribadi juga, jadi ya asal ngerti ndewek wae, idem.. Copy paste
dari transaksi penjualan alasannya penulis buat program seperti ini adalah
untuk tambah stok dan mengetahui total transaksi pembelian.

Tambah Transaksi Pembelian


Tambah transaksi pembelian digunakan untuk kita dapat menambahkan data
transaksi pembelian.
Langkah pertama:
Buat file dengan nama buys.php, kemudian tuliskan skrip berikut:

<?php

59
$page = "buys";
require('libs/Smarty.class.php');

$smarty = new Smarty;

$buys_date = date('Y-m-d');
$hour = date('H:i:s');
$date = tgl_indo($buys_date);
$photo_ses= $_COOKIE['photo'];
$name = $_COOKIE['name'];

$module = $_GET['module'];

if ($module == 'add_transaction'){
$sql = mysql_query("SELECT * FROM aj_products ORDER BY
product ASC");
while ($data_product = mysql_fetch_array($sql)){
$dataproduct[] = array('product_id' =>
$data_product[product_id],

'product' => $data_product[product]);


}

$sql = mysql_query("SELECT * FROM aj_suppliers ORDER BY


supplier ASC");
while ($data_supp = mysql_fetch_array($sql)){
$datasupp[] = array('supplier_id' =>
$data_supp[supplier_id],
'supplier' => $data_supp[supplier]);
}

$smarty->assign('date', $date);
$smarty->assign('datasupp', $datasupp);
$smarty->assign('dataproduct', $dataproduct);
$smarty->assign('proses', 'add_transaction');
}

elseif ($module == 'act_add_transaction'){


$supplier = $_POST['supplier'];
$product = $_POST['product'];
$price = $_POST['harga'];
$qty = $_POST['qty'];
$description= $_POST['description'];
$subtotal = $price * $qty;

mysql_query("INSERT INTO
aj_supp_transaction(supplier_id,product_id,supp_price,supp_qty,sub
total,description,buys_date,buys_time,user_id)

VALUES('$supplier','$product','$price','$qty','$subtotal',
'$description','$buys_date','$hour','')");

$data = mysql_fetch_array(mysql_query("SELECT stock FROM


aj_products WHERE product_id = '$product'"));
$sisa_stok = $data[stock] + $qty;
mysql_query("UPDATE aj_products SET stock = '$sisa_stok',
po_price = '$price' WHERE product_id = '$product'");
header('location: buys.php');

60
}

$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl');

?>

Langkah kedua:
Langkah selanjutnya adalah kita menuju untuk pembuatan file tpl, seperti yang
Anda lihat pada skrip diatas $page mengarah kepada buys, oleh sebab itu kita
akan buat file buys.tpl dan simpan ke dalam folder template dalam smarty
Anda. Adapun skripnya sebagai berikut:

{if $proses eq 'add_transaction'}


<div class="grid_12">
<h1>Manajemen Transaksi</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Tambah Transaksi Pembelian</h1><span></span>
</div>
<form action="buys.php?module=act_add_transaction"
method="post" class="block-content form"> <!-- id="validate-form"
-->

<div class="_100">
<p><label for="textfield">Tanggal</label>
{$date}</p>
</div>

<div class="_100">
<p><label for="textfield">Supplier</label>

<select name="supplier">
{section name=datasupp loop=$datasupp}
<option
value="{$datasupp[datasupp].supplier_id}">{$datasupp[datasupp].sup
plier}</option>
{/section}
</select>
</p>
</div>

<div class="_100">
<p><label for="textfield">Nama Produk</label>

61
<select name="product">
{section name=dataproduct loop=$dataproduct}
<option
value="{$dataproduct[dataproduct].product_id}">{$dataproduct[datap
roduct].product}</option>
{/section}
</select>
</p>
</div>

<div class="_100">
<p><label for="textfield">Harga Satuan
Modal</label><input id="textfield" name="harga" class="required"
type="text"></p>
</div>

<div class="_100">
<p><label for="textfield">Quantity Stock
(Qty)</label><input id="textfield" name="qty" class="required"
type="text" value="1"></p>
</div>

<div class="_100">
<p><label
for="textarea">Keterangan</label><textarea id="textarea"
name="description" rows="5" cols="40">-</textarea></p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Simpan"></li>
</ul>
</div>
</form>
</div>
</div>
{/if}

Langkah ketiga:
Buka web browser Anda dan masukkan url
http://localhost/asfajaya/buys.php?module=add_transaction, maka Anda akan
ditampilkan pada suatu form seperti pada gambar 7.12.

62
Gambar 7.12 Tambah transaksi

Tampil Transaksi Pembelian


Tampil transaksi pembelian digunakan untuk menampilkan data transaksi
pembelian yang telah disimpan sebelumnya.
Langkah pertama:
Tambahkan skrip yang tercetak tebal berikut pada file buys.php.
// skrip sebelumnya

else{
$sql = mysql_query("SELECT * FROM aj_supp_transaction a,
aj_products b WHERE a.buys_date = '$buys_date' AND
a.product_id=b.product_id ORDER BY a.buys_time ASC");
$i = 1;
while ($data_buys = mysql_fetch_array($sql)){
$price = format_rupiah($data_buys[supp_price]);
$subtotal = format_rupiah($data_buys[subtotal]);
$subtota += $data_buys[subtotal];
$sub = format_rupiah($subtota);

63
$databuys[] = array('trx_id' => $data_buys[trx_id],
'product_id' => $data_buys[product_id],
'product' => $data_buys[product],
'supp_price' => $price,
'supp_id' => $data_buys[supplier_id],
'stock' => $data_buys[stock],
'supp_qty' => $data_buys[supp_qty],
'subtotal' => $subtotal,
'no' => $i);
$i++;
}

$smarty->assign('subtota', $sub);
$smarty->assign('databuys', $databuys);
}

$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl');
?>

Langkah kedua:
Tambahkan skrip berikut pada file buys.tpl yang telah Anda simpan pada folder
templates smarty.

// skrip sebelumnya

{else}

<div class="grid_12">
<h1>Transaksi Pembelian Produk</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_transaction">Tambah Transaksi</a>
</ul>

<div class="grid_12">
<div class="block-border">
<div class="block-header">
<h1>Transaksi Pembelian Hari Ini</h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th width="200">Produk</th>
<th width="130">Harga Satuan (Modal)</th>
<th width="50">Qty</th>
<th>Subtotal</th>

64
<th>Stok Saat Ini</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{section name=databuys loop=$databuys}
<tr class="gradeX">
<td
width="10">{$databuys[databuys].no}</td>
<td>{$databuys[databuys].product}</td>
<td>Rp. {$databuys[databuys].supp_price}</td>
<td>{$databuys[databuys].supp_qty}</td>
<td>Rp. {$databuys[databuys].subtotal}</td>

<td>{$databuys[databuys].stock}</td>
<td class="center">
<a
href="?module=update_buys&id={$databuys[databuys].trx_id}&buys_qty
={$databuys[databuys].supp_qty}&supp_id={$databuys[databuys].supp_
id}" title="{$databuys[databuys].product}"><img
src="img/update.png"></a> &nbsp;
<a
href="?module=cancel_buys&id={$databuys[databuys].trx_id}&buys_qty
={$databuys[databuys].supp_qty}" onclick="return confirm('Anda
yakin ingin membatalkan transaksi
{$databuys[databuys].product}?');"><img
src="img/hapus.png"></a></td>
</tr>
{/section}

<tr>
<td colspan="4"><b>Total Transaksi</b></td>
<td><b>Rp. {$subtota}</b></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
{/if}

Langkah ketiga:
Hasil dari skrip yang telah kita tambahkan dan jika Anda mengakses url
http://localhost/asfajaya/buys.php, maka Anda akan mendapati hasil seperti pada
gambar 7.13.

65
Gambar 7.13 Tampil transaksi pembelian

Ubah Transaksi Pembelian


Selanjutnya kita akan membuat fungsi untuk proses perubahan data transaksi
pembelian.
Langkah pertama:
Buka kembali file buys.php Anda, kemudian tambahkan skrip berikut:

elseif ($module == 'act_update_transaction'){


$supplier = $_POST['supplier'];
$product_id = $_POST['product_id'];
$price = $_POST['harga'];
$qty = $_POST['qty'];
$description= $_POST['description'];
$trx_id = $_POST['trx_id'];
$buys_qty = $_POST['buys_qty'];
$subtotal = $price * $qty;

mysql_query("UPDATE aj_supp_transaction SET supplier_id =


'$supplier', supp_price = '$price', supp_qty = '$qty', subtotal =
'$subtotal', description = '$description'WHERE trx_id =
'$trx_id'");
$data = mysql_fetch_array(mysql_query("SELECT stock FROM
aj_products WHERE product_id = '$product_id'"));
$buys_stock = ($data[stock] - $buys_qty) + $qty;
mysql_query("UPDATE aj_products SET stock = '$buys_stock',
po_price = '$price' WHERE product_id = '$product_id'");
header('location: buys.php');
}

elseif ($module == 'update_buys'){


$supp_id = $_GET['supp_id'];
$trx_id = $_GET['id'];
$buys_qty = $_GET['buys_qty'];

66
$sql = mysql_query("SELECT * FROM aj_suppliers ORDER BY
supplier ASC");
while ($data = mysql_fetch_array($sql)){

$datasupp[] = array('supplier_id' =>


$data[supplier_id], 'supplier' => $data[supplier]);
}

$sql = mysql_query("SELECT * FROM aj_supp_transaction a,


aj_products b WHERE a.trx_id = '$trx_id' AND
a.product_id=b.product_id ORDER BY a.buys_time ASC");
$i = 1;
$data_buys = mysql_fetch_array($sql);

$databuys[] = array('trx_id' => $data_buys[trx_id],


'product_id' => $data_buys[product_id],
'product' => $data_buys[product],
'supp_price' => $data_buys[supp_price],
'supp_id' => $data_buys[supplier_id],
'stock' => $data_buys[stock],
'supp_qty' => $data_buys[supp_qty],
'subtotal' => $subtotal,
'buys_date' => $data_buys[buys_date],
'description' => $data_buys[description],
'no' => $i);

$smarty->assign('datasupp', $datasupp);
$smarty->assign('databuys', $databuys);
$smarty->assign('buys_qty', $buys_qty);
$smarty->assign('selected', $selected);
$smarty->assign('supp_id', $supp_id);
$smarty->assign('proses', 'update_transaction');
}

Langkah kedua:
Tambahkan skrip berikut pada file buys.tpl yang telah Anda simpan pada folder
templates smarty..

// skrip sebelumnya

{elseif $proses eq 'update_transaction'}


<div class="grid_12">
<h1>Manajemen Transaksi</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Ubah Transaksi Pembelian</h1><span></span>
</div>
{section name=databuys loop=$databuys}

67
<form
action="buys.php?module=act_update_transaction" method="post"
class="block-content form"> <!-- id="validate-form" -->

<div class="_100">
<p><label for="textfield">Tanggal</label>

{$databuys[databuys].buys_date}</p>
</div>

<div class="_100">
<p><label for="textfield">Supplier</label>

<select name="supplier">
{section name=datasupp loop=$datasupp}
{if $datasupp[datasupp].supplier_id == $supp_id}
<option value="{$datasupp[datasupp].supplier_id}"
SELECTED>{$datasupp[datasupp].supplier}</option>
{else}
<option
value="{$datasupp[datasupp].supplier_id}">{$datasupp[datasupp].sup
plier}</option>
{/if}
{/section}
</select>
</p>
</div>

<div class="_100">
<p><label for="textfield">Nama Produk</label>
<input id="textfield" name="product"
class="required" type="text" value="{$databuys[databuys].product}"
disabled>
<input id="textfield" name="product_id"
class="required" type="hidden"
value="{$databuys[databuys].product_id}">
<input id="textfield" name="buys_qty"
class="required" type="hidden" value="{$buys_qty}">
<input id="textfield" name="trx_id"
class="required" type="hidden"
value="{$databuys[databuys].trx_id}">
</p>
</div>

<div class="_100">
<p><label for="textfield">Harga Satuan
Modal</label><input id="textfield" name="harga" class="required"
type="text" value="{$databuys[databuys].supp_price}"></p>
</div>

<div class="_100">
<p><label for="textfield">Quantity Stock
(Qty)</label><input id="textfield" name="qty" class="required"
type="text" value="{$databuys[databuys].supp_qty}"></p>
</div>

<div class="_100">

68
<p><label
for="textarea">Keterangan</label><textarea id="textarea"
name="description" rows="5" cols="40">-</textarea></p>
</div>

<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Simpan"></li>
</ul>
</div>
</form>
{/section}
</div>
</div>

// skrip selanjutnya

Langkah ketiga:

Refresh halaman tampil data kategori dan coba klik salah satu tombol , jika
benar maka Anda akan ditampilkan sebuah form yang tampilannya sama seperti
pada gambar 7.12. silahkan ubah data Anda, dan akhiri dengan klik tombol
Simpan.

Hapus/Cancel Transaksi Pembelian


Untuk membatalkan suatu transaksi pembelian, bisa Anda tambahkan pada skrip
buys.php berikut:

// skrip sebelumnya

elseif ($module == 'cancel_buys'){


$trx_id = $_GET['id'];

$sql = mysql_query("SELECT * FROM aj_supp_transaction


WHERE trx_id = '$trx_id'");
$data = mysql_fetch_array($sql);

$supp_qty = $data[supp_qty];
$product_id = $data[product_id];

$sql_product = mysql_query("SELECT * FROM aj_products


WHERE product_id = '$product_id'");
$data_product = mysql_fetch_array($sql_product);

$sisa_stock = $data_product[stock] - $supp_qty;

69
$update = mysql_query("UPDATE aj_products SET stock
= '$sisa_stock' WHERE product_id = '$product_id'");

if ($update){
mysql_query("DELETE FROM aj_supp_transaction WHERE
trx_id = '$trx_id'");
}
header('location: buys.php');
}

// skrip selanjutnya

7.7 Rekap Omset Modal


Saya sengaja membuatkan sub bab ini, tujuannya untuk apa?.. agar saya bisa
tahu omset modal saya ada berapa saat ini, apakah omset barang saya
berkurang, bertambah, atau stabil-stabil saja..
Ini dia Rekap Omset Modal ala om Agus
Caranya :
Buka pada file products.php yang pernah Anda buat sebelumnya, kemudian
tambahkan skrip berikut (lihat pada skrip yang tercetak tebal).

// skrip sebelumnya
else{
$sql = mysql_query("SELECT * FROM aj_products a,
aj_categories b, aj_suppliers c WHERE a.category_id=b.category_id
AND a.supplier_id=c.supplier_id ORDER BY a.product ASC");
$i = 1;
while ($data_product = mysql_fetch_array($sql)){
$price = format_rupiah($data_product[price]);
$po_price = format_rupiah($data_product[po_price]);
$pm_price = format_rupiah($data_product[pm_price]);

$dataproduct[] = array('product_id' =>


$data_product[product_id],
'category' => $data_product[category],
'category_id' =>
$data_product[category_id],
'supplier_id' =>
$data_product[supplier_id],
'product' => $data_product[product],
'stock' => $data_product[stock],
'price' => $price,
'po_price' => $po_price,
'pm_price' => $pm_price,
'no' => $i);
$qtyomset = $data_product[stock] *
$data_product[po_price];

70
$modalomset += $qtyomset;
$pmqomset = $data_product[stock] *
$data_product[pm_price];
$pmomset += $pmqomset;
$promset = $data_product[stock] *
$data_product[price];
$priceomset += $promset;
$i++;
}
$modalom = format_rupiah($modalomset);
$pmomset = format_rupiah($pmomset);
$priomset = format_rupiah($priceomset);

$smarty->assign('modalomset', $modalom);
$smarty->assign('pmomset', $pmomset);
$smarty->assign('priceomset', $priomset);
$smarty->assign('dataproduct', $dataproduct);
}

Selanjutnya langkah yang kedua, buka file products.tpl yang pernah kita buat
kemudian tambahkan skrip yang tercetak tebal berikut:

// skrip sebelumnya
{else}

<div class="grid_12">
<h1>Manajemen Product</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="?module=add_product">Tambah Produk</a>
</ul>

<div class="grid_12">
<div class="block-border">
<div class="block-header">
<h1>Daftar Produk |</h1><h1><a
href="products_report.php" target="_blank">Download
Produk</a></h1><span></span>

</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th>Produk</th>
<th>Kategori</th>
<th>Stok</th>
<th>Harga</th>
<th>Modal</th>
<th>Harga Paling Murah</th>
<th>Aksi</th>
</tr>

71
</thead>
<tbody>
{section name=dataproduct
loop=$dataproduct}
<tr class="gradeX">
<td width="10">{$dataproduct[dataproduct].no}</td>
<td>{$dataproduct[dataproduct].product}</td>
<td>{$dataproduct[dataproduct].category}</td>
<td>{$dataproduct[dataproduct].stock}</td>
<td>Rp. {$dataproduct[dataproduct].price}</td>
<td>Rp. {$dataproduct[dataproduct].po_price}</td>
<td>Rp. {$dataproduct[dataproduct].pm_price}</td>
<td class="center">
<a
href="?module=update_product&id={$dataproduct[dataproduct].product
_id}&catid={$dataproduct[dataproduct].category_id}&supid={$datapro
duct[dataproduct].supplier_id}"
title="{$dataproduct[dataproduct].product}"><img
src="img/update.png"></a> &nbsp;

<!-- <a
href="?module=hapus_user&id={$datauser[datauser].employe_id}"
onclick="return confirm('Anda yakin ingin menghapus user
{$datauser[datauser].name}?');" disabled><img
src="img/hapus.png"></a> --></td>
</tr>
{/section}
<tr>
<td colspan="4"></td>
<td>Rp. {$priceomset}</td>
<td>Rp. {$modalomset}</td>
<td>Rp. {$pmomset}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
{/if}

Refresh pada halaman products.php melalui web browser Anda, dan


perhatikan pada baris paling akhir dari Manajemen Produk, terdapat 3 macam
total omset, yaitu total modal, total penjualan paling murah, dan total penjualan
standar (tanpa menawar). Lihat pada gambar 7.14.

Gambar 7.14 Rekap omset modal

72
7.8 Laporan Penjualan per Periode
Anda pasti ingin tahu bukan keuntungan Anda berapa?... dalam hitungan hari,
bulan, dan sebagainya. Untuk itulah modul laporan penjualan ini dibuat.
Tujuannya tak lain agar kita tahu rekap transaksi keluar yang terjadi selama 1
hari, 1 bulan, atau bahkan pada periode tertentu.
Langkah pertama:
Buat file dengan nama reports.php yang isinya sebagai berikut:

<?php
mysql_connect("localhost","root","");
mysql_select_db("dbasfa_jaya");
$page = "reports";
require('libs/Smarty.class.php');
include "function/fungsi_rupiah.php";
include "function/fungsi_indotgl.php";

$smarty = new Smarty;

$module = $_GET['module'];
$photo_ses= $_COOKIE['photo'];
$user_id = $_COOKIE['user_id'];
$name = $_COOKIE['name'];

if ($module == 'act_reports'){
$periode_awal = $_POST['periode_awal'];
$periode_akhir = $_POST['periode_akhir'];

$date_awal = explode("/", $periode_awal);


$date1 = $date_awal[1];
$month1= $date_awal[0];
$year1 = $date_awal[2];
$date_fix_awal = $year1."-".$month1."-".$date1;

$date_akhir = explode("/", $periode_akhir);


$date2 = $date_akhir[1];
$month2 = $date_akhir[0];
$year2 = $date_akhir[2];
$date_fix_akhir = $year2."-".$month2."-".$date2;

header('location:
reports.php?module=report&start_date='.$date_fix_awal.'&end_date='
.$date_fix_akhir);
}

elseif ($module == 'report'){


$start_date = $_GET['start_date'];
$end_date = $_GET['end_date'];

73
$sql_report = mysql_query("SELECT * FROM
aj_sales_transaction a, aj_products b, aj_categories c WHERE
a.sales_date BETWEEN '$start_date' AND '$end_date' AND
a.product_id=b.product_id AND b.category_id=c.category_id ORDER BY
a.sales_date,a.sales_time ASC");
$i = 1;
while ($data_report = mysql_fetch_array($sql_report)){
$sales_date = tgl_indo($data_report[sales_date]);
$sales_price = format_rupiah($data_report[sales_price]);
$po_price = format_rupiah($data_report[po_price]);
$profit = format_rupiah($data_report[profit]);
$subtotal = format_rupiah($data_report[subtotal]);
$total_price += $data_report[sales_price];
$totalprice = format_rupiah($total_price);

$po_pri += $data_report[po_price];
$popri = format_rupiah($po_pri);

$pro_f += $data_report[profit];
$pro = format_rupiah($pro_f);

$sub += $data_report[subtotal];
$subtota = format_rupiah($sub);

$datareport[] = array( 'trx_id' => $data_report[trx_id],


'product_id' => $data_report[product_id],
'product' => $data_report[product],
'category' => $data_report[category],
'sales_qty' => $data_report[sales_qty],
'sales_stock' => $data_report[sales_stock],
'subtotal' => $subtotal,
'sales_date' => $sales_date,
'sales_price' => $sales_price,
'po_price' => $po_price,
'profit' => $profit,
'no' => $i);
$i++;
}
$smarty->assign('start_date', $start_date);
$smarty->assign('end_date', $end_date);
$smarty->assign('subtota', $subtota);
$smarty->assign('pro', $pro);
$smarty->assign('popri', $popri);
$smarty->assign('total_price', $totalprice);
$smarty->assign('datareport', $datareport);

$smarty->assign('proses', 'report');
}

$smarty->assign('name', $name);
$smarty->assign('photo_ses', $photo_ses);
$smarty->assign('content', $page);
$smarty->display('index.tpl')

?>

74
Langkah kedua:
Selanjutnya kita buat file reports.tpl (karena $page mengarah kepada reports),
kemudian kita simpan dalam folder template dalam kerja smarty kita. Adapun
skripnya sebagai berikut:

<div class="grid_12">
<h1>Laporan Penjualan</h1>
</div>

<ul class="actions-left">
<a class="button red" id="reset-validate-form"
href="javascript:history.go(-1)">Back</a>
</ul>

<div class="grid_6">
<div class="block-border">
<div class="block-header">
<h1>Pilih Periode Laporan</h1><span></span>
</div>
<form action="reports.php?module=act_reports"
method="post" class="block-content form"> <!-- id="validate-form"
-->

<div class="_50">
<p><label for="datepicker">Pilih Tanggal
Awal</label><input id="datepicker_awal" name="periode_awal"
class="required" type="text" value="" /></p>
</div>

<div class="_50">
<p><label>Pilih Tanggal Akhir</label><input
id="datepicker_akhir" name="periode_akhir" class="required"
type="text" value="" /></p>
</div>
<p>&nbsp;</p>
<div class="clear"></div>
<div class="block-actions">
<ul class="actions-left">
<li><a class="button red"
id="reset-validate-form" href="javascript:void(0);">Reset</a></li>
</ul>
<ul class="actions-right">
<li><input type="submit"
class="button" value="Tampilkan Transaksi"></li>
</ul>
</div>
</form>
</div>
</div>

{if $proses eq 'report'}


<div class="grid_12">
<div class="block-border">
<div class="block-header">

75
<h1><a
href="downloads.php?start_date={$start_date}&end_date={$end_date}"
target="_blank">Download Transaksi</a></h1><span></span>
</div>
<div class="block-header">
<h1>Transaksi Hari Ini</h1><span></span>
</div>
<div class="block-content">
<table id="table-example" class="table">
<thead>
<tr>
<th>No</th>
<th width="80">Tanggal</th>
<th width="140">Produk</th>
<th width="130">Kategori</th>
<th>Harga Satuan</th>
<th width="18">Qty</th>
<th>Subtotal</th>
<th>Untung</th>
<th width="20">Sisa Stok</th>
</tr>
</thead>
<tbody>
{section name=datareport loop=$datareport}
<tr class="gradeX">
<td width="10">{$datareport[datareport].no}</td>
<td>{$datareport[datareport].sales_date}</td>
<td>{$datareport[datareport].product}</td>
<td>{$datareport[datareport].category}</td>
<td>Rp. {$datareport[datareport].sales_price}</td>
<td>{$datareport[datareport].sales_qty}</td>
<td>Rp. {$datareport[datareport].subtotal}</td>
<td>Rp. {$datareport[datareport].profit}</td>
<td>{$datareport[datareport].sales_stock}</td>
</tr>
{/section}
<tr>
<td colspan="4"></td>
<td colspan="2"><b>Total Transaksi</b></td>
<td><b>Rp. {$subtota}</b></td>
<td><b>Rp. {$pro}</b></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
{/if}

Hasil dari skrip diatas, akan menghasilkan tampilan seperti pada gambar 7.15.

76
Gambar 7.15 Laporan penjualan per periode

7.9 Cetak Laporan Penjualan (PDF Format)


Pada gambar 7.15. terdapat link yang bernama Download Transaksi,
digunakan untuk meng-ekspor data transaksi ke dalam bentuk PDF.. tujuannya
agar mudah untuk disimpan dan juga untuk di-print. Untuk itu, pada sub bab ini,
kita akan buat satu fungsi untuk proses tersebut.
Buat file downloads.php kemudian simpan dalam dokumen kerja smarty Anda,
kemudian tuliskan skrip berikut:

<?php
mysql_connect("localhost","root","");
mysql_select_db("dbasfa_jaya");
require('libs/Smarty.class.php');
include "function/class.ezpdf.php";
include "function/fungsi_rupiah.php";
include "function/fungsi_indotgl.php";

$smarty = new Smarty;

$module = $_GET['module'];
$user_id = $_COOKIE['user_id'];

$pdf = new Cezpdf();

77
$pdf->ezSetCmMargins (3, 3, 3, 3);
$pdf->selectFont ('fonts/Times-Roman.afm');

$all = $pdf->openObject();

$pdf->setStrokeColor (0, 0, 0, 1);


$pdf->addJpegFromFile('img/logo.jpg',20,800,69);

$pdf->addText (220, 820, 16,'<b>Laporan Penjualan</b>');


$pdf->addText (245, 800, 14,'<b>ASFA JAYA</b>');
$pdf->addText (75, 780, 8,'Jl. Ki Hajar Dewantara No. 132
Arjawinangun, Cirebon, Telp. (0231) 358630, Hp. 08562121141,
Email: takehikoboyz@gmail.com');

$pdf->line (10, 775, 578, 775);


$pdf->line (10, 50, 578, 50);
$pdf->addText (535, 764, 8);

$pdf->addText (30, 34,8,'Dicetak tgl:' . date('d-m-Y') .", ".


date('G:i:s',time()));

$pdf->closeObject();
$pdf->addObject ($all, 'all');

$start_date = $_GET['start_date'];
$end_date = $_GET['end_date'];

$date_indo = tgl_indo($start_date);
$date_in = tgl_indo($end_date);

$sql_report = mysql_query("SELECT * FROM aj_sales_transaction a,


aj_products b, aj_categories c WHERE a.sales_date BETWEEN
'$start_date' AND '$end_date' AND a.product_id=b.product_id AND
b.category_id=c.category_id ORDER BY a.sales_date,a.sales_time
ASC");
$i = 1;
while ($data_report = mysql_fetch_array($sql_report)){
$sales_date = tgl_indo($data_report[sales_date]);
$sales_price = format_rupiah($data_report[sales_price]);
$po_price = format_rupiah($data_report[po_price]);
$profit = format_rupiah($data_report[profit]);
$subtotal = format_rupiah($data_report[subtotal]);

$total_price += $data_report[sales_price];
$totalprice = format_rupiah($total_price);

$po_pri += $data_report[po_price];
$popri = format_rupiah($po_pri);

$sub += $data_report[subtotal];
$subtota = format_rupiah($sub);

$datareport[$i] = array('No' => $i,


'Tanggal' => $sales_date,
'Nama Produk' => $data_report[product],
'Harga Satuan' => $sales_price,
'Qty' => $data_report[sales_qty],

78
'Subtotal' => $subtotal,
'Untung' => $profit);
$i++;
}

$pdf->ezTable ($datareport, '', '', '');


$pdf->ezText ("\n\nTotal keseluruhan : Rp. $subtota");
$pdf->ezText ("Total keuntungan : Rp. $pro");

$pdf->ezText ("Periode Laporan Penjualan : $date_indo s/d


$date_in");

$pdf->ezStartPageNumbers (320, 15, 8);


$pdf->ezStream();

?>

Note:
Pada skrip diatas, dibutuhkan beberapa file dan plugin pendukung (PDF class),
diantaranya: class_ezpdf, fonts, fungsi tanggal, fungsi rupiah, dan lain
sebagainya.. Anda bisa mendapatkan pada CD yang disertakan dalam buku ini.

Silahkan refresh kembali halaman laporan penjualan dan kemudian klik pada
link Download Transaksi, maka akan ditampilkan dokumen PDF seperti pada
gambar 7.16.

Gambar 7.16 Export to PDF

79

S-ar putea să vă placă și