
<p><a href="http://pojokprogrammer.net/tags/code-factory" style="line-height: 20.8px;" target="_blank"><strong><span style="color:rgb(0, 0, 205)">Code </span><span style="color:rgb(255, 0, 0)">Factory</span></strong></a><span style="color:rgb(255, 0, 0)"> </span>| <strong>Sistem Inventory </strong>atau Aplikasi Persediaan Barang adalah salah satu aplikasi yang umum dan cukup menantang terutama bagi para programmer pemula yang sedang mengasah skill programming-nya. Artikel ini merupakan lanjutan dari artikel keempat yang membahas <a href="http://pojokprogrammer.net/content/aplikasi-persediaan-barang-sistem-in…"><strong>Pembuatan Form Transaksi Barang</strong></a> dan merupakan bagian terakhir dari serial artikel <a href="http://pojokprogrammer.net/content/aplikasi-persediaan-barang-sistem-in…"><strong>Aplikasi Persediaan Barang Menggunakan Yii2</strong></a>. Artikel ini membahas pembuatan laporan kartu stok yang merupakan laporan yang wajib tersedia dalam sebuah aplikasi inventory, dan kita buat <strong>sederhana </strong>saja sehingga akan cukup mudah dipahami para programmer pemula.</p>
<!--break-->
<h2>Modifikasi <strong><span style="font-family:courier new,courier,monospace">ItemController</span></strong></h2>
<p>Kartu Stok pada dasarnya adalah daftar transaksi masing-masing barang, dengan mencantumkan jumlah masuk, jumlah keluar, dan saldo barang yang tersedia. dengan begitu kita bisa melihat pergerakan dan perubahan stok dari barang bersangkutan. Untuk mencapai hal ini, kita cukup melakukan join terhadap table barang (<strong><span style="font-family:courier new,courier,monospace">items</span></strong>) dan table transaksi (<strong><span style="font-family:courier new,courier,monospace">transactions</span></strong> dan <strong><span style="font-family:courier new,courier,monospace">transaction_details</span></strong>) untuk mendapatkan laporan yang kita inginkan.</p>
<p>Untuk itu kita bisa melakukan query dan memberikan hasil query tersebut ke view agar dapat ditampilkan dalam bentuk <strong><span style="font-family:courier new,courier,monospace">GridView</span></strong>. Untuk itu kita lakukan modifikasi terhadap fungsi <strong><span style="font-family:courier new,courier,monospace">actionView</span></strong> yang ada di dalam class <strong><span style="font-family:courier new,courier,monospace">ItemController</span></strong>. Dengan mengubah actionView, maka setiap kali kita membuka/melihat detil informasi barang maka di bawahnya akan terlihat history transaksinya. Perubahannya adalah sebagai berikut,</p>
<pre class="brush:php;">
/**
* Displays a single Items model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
// query kartu stok
$sql_list = "
SELECT t.id AS trans_id
, t.trans_code AS trans_code
, t.trans_date AS trans_date
, a.id AS detail_id, a.item_id AS item_id
, trim(concat(t.remarks,' - ',a.remarks)) AS remarks
, b.code AS item_code, b.name AS item_name
, CASE
WHEN t.type_id=1 THEN a.quantity
WHEN t.type_id=2 THEN -a.quantity
ELSE 0 END
AS quantity
, @sal := @sal + CASE
WHEN t.type_id=1 THEN a.quantity
WHEN t.type_id=2 THEN -a.quantity
ELSE 0 END
AS saldo
FROM transactions t
JOIN transaction_details a ON t.id = a.trans_id
JOIN items b ON a.item_id = b.id
JOIN ( SELECT @sal:=0 ) v
WHERE b.id = :id
ORDER BY t.trans_date, t.id, a.id
";
// query total data di kartu stok
$sql_count = "
SELECT count(*)
FROM transactions t
JOIN transaction_details a ON t.id = a.trans_id
JOIN items b ON a.item_id = b.id
ORDER BY t.trans_date, t.id, a.id;
";
// count data
$count = Yii::$app->db->createCommand($sql_count, [':id' => $id])->queryScalar();
// data provider untuk ditampilkan di view
$dataProvider = new SqlDataProvider([
'sql' => $sql_list,
'params' => [':id' => $id],
'totalCount' => $count,
'pagination' => [
'pageSize' => 20,
],
]);
// render view
return $this->render('view', [
'model' => $this->findModel($id),
'dataProvider' => $dataProvider,
]);
}
</pre>
<p>Jika teman-teman perhatikan, dalam query di atas terdapat<strong> variable <span style="font-family:courier new,courier,monospace">@sal</span> </strong>yang kita gunakan untuk men-generate kolom saldo berdasarkan perhitungan penambahan/pengurangan transaksi barang. Dalam query tersebut juga terdapat <a href="http://pojokprogrammer.net/content/belajar-sql-case-clause-logika-perca…">klausa </a><span style="font-family:courier new,courier,monospace"><strong><a href="http://pojokprogrammer.net/content/belajar-sql-case-clause-logika-perca…">CASE</a> </strong></span>yang berfungsi sebagai logika percabangan untuk membedakan transaksi barang masuk dan barang keluar, karena barang masuk harus menambah saldo, sedangkan barang keluar harus mengurangi saldo.</p>
<h2>Modifikasi View Barang</h2>
<p>Dan untuk menampilkannya, caranya cukup mudah, yaitu langsung saja kita tambahkan code GridView di bawah DetailView yang sebelumnya sudah ada di dalam file view.php menjadi seperti di bawah ini</p>
<pre class="brush:php;">
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'code',
'name',
'quantity',
'remarks',
],
]) ?>
<h3>Stock Card</h3>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'trans_code',
'trans_date',
'item_code',
'item_name',
'quantity',
'saldo',
'remarks',
],
]); ?>
</pre>
<p>Berikut ini salah satu contoh penampakan kartu stok-nya.</p>
<p><img alt="Aplikasi Persediaan Barang (Sistem Inventory) Menggunakan Yii2 - Laporan Kartu Stock Card Report" src="http://pojokprogrammer.net/sites/default/files/pictures/tutorials/lapor…" style="line-height:20.8px; width:1309px" /></p>
<h2>Simpulan dan Saran</h2>
<p>Sesuai dengan judulnya, aplikasi ini masih sangat sederhana. Banyak ide yang bisa dikembangkan dari aplikasi ini, misalkan</p>
<ul>
<li>Dukungan transaksi <strong>multi-warehouse</strong>.</li>
<li>Penambahan <strong>laporan-laporan periodik</strong>, seperti laporan mutasi stok bulanan, dan sebagainya.</li>
<li>Integrasi dengan aplikasi <strong><em>Point of Sales</em></strong>.</li>
</ul>
<p>Dan masih banyak ide-ide lain yang bisa kita kembangkan.</p>
<p>Mudah-mudahan tutorial ini dapat membantu teman-teman yang sedang belajar membuat aplikasi inventory, khususnya yang menggunakan Yii Framework. <em>Source code </em>aplikasi ini dapat dilihat di <strong><a href="https://github.com/hidayat365/yii2-inventory-app">GitHub</a>,</strong> silakan digunakan untuk keperluan pembelajaran saja. Jika teman-teman ingin menggunakan source code tersebut untuk keperluan komersil, diwajibkan untuk mendapatkan izin tertulis dari penulis.</p>
<p> </p>
- Log in to post comments
- 6573 kali dilihat