Minggu, 08 Mei 2016

Kumpulan Full Source Code APlikasi Web Persediaan Barang (Sistem Inventory) Menggunakan Yii2 Framework

Inventory System atau Aplikasi persediaan barang adalah salah satu aplikasi umum dan cukup menantang, terutama untuk programmer pemula yang mengasah keterampilan pemrograman. Artikel ini merupakan kelanjutan dari artikel keempat yang membahas Barang Transaksi Form Penciptaan dan bagian terakhir dari seri artikel ini Aplikasi Persediaan Menggunakan Yii2. Artikel ini membahas pembuatan kartu stok laporan yang merupakan laporan yang harus tersedia dalam inventarisasi aplikasi, dan kami dibuat sederhana sehingga akan sangat mudah untuk memahami programmer pemula.


modifikasi ItemController


kartu stok pada dasarnya adalah daftar transaksi setiap item, yang menyatakan jumlah masuk, jumlah keluar, dan saldo barang yang tersedia. sehingga kita bisa melihat pergerakan dan perubahan stok barang yang bersangkutan. Untuk mencapai hal ini, kita hanya melakukan bergabung dengan tabel barang (item) dan transaksi meja (transaksi dan transaction_details) untuk mendapatkan laporan yang kita inginkan.

Untuk itu kita bisa melakukan query dan memberikan hasil query ke tampilan yang dapat ditampilkan dalam bentuk GridView. Untuk itu kita melakukan modifikasi fungsi ActionView yang ada di ItemController kelas. Dengan mengubah ActionView, maka setiap kali kita membuka / melihat informasi rinci tentang item di bawahnya sejarah transaksi. Perubahan adalah sebagai berikut,

/**
 * 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,
    ]);
}

in the above query @sal there are variables that we use to generate the balance column is based on the calculation of the addition / subtraction goods transactions. In the query is also a CASE clause that serves as a branching logic to distinguish transactions of goods in and goods out, because the incoming goods must add balance, while the goods out should reduce the balance.


Modifikasi View Item

Dan untuk menampilkan, cukup mudah, kita hanya menambahkan kode GridView dan Detil Lihat sebelumnya ada di file view.php menjadi seperti ini

<?= 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',
    ],
]); ?>

ini salah satu contoh penampakan kartu stok-nya di tampilan View Web


Kesimpulan dan Saran


Sesuai dengan judulnya, aplikasi ini masih sangat sederhana hanya contoh ajah. Banyak ide yang bisa dikembangkan dari aplikasi ini, 


misalkan contoh :

  1. Dukungan transaksi multi-warehouse.
  2. Penambahan laporan-laporan periodik, seperti laporan mutasi stok bulanan, dan sebagainya.
  3. Integrasi dengan aplikasi Point of Sales.
Dan masih banyak ide-ide lain yang bisa kita kembangkan.

Tidak ada komentar:

Posting Komentar