Pada artikel ini saya akan memberikan contoh desain database yang berhubungan dengan proses Stok Barang. Contoh yang saya pakai menggunakan database SQL SERVER.
Secara sederhana kebutuhan akan informasi stok barang dalam database yang perlu untuk disimpan ada 3 jenis tabel yaitu:
- File Master Barang
- Data Stok Akhir Barang
- Data Mutasi Transaksi Barang
Untuk tabel yang lain sesuai dengan kebutuhan, misalkan apakah diperlukan data pelanggan (customer), apakah dibutuhkan data gudang (multi gudang) dan lain sebagainya, itu tergantung dari kebutuhan sistem yang anda susun tentunya.
Saya akan memberikan contoh dengan kebutuhan data yang sederhana, sehingga mudah difahami dan dapat anda kembangkan sesuai dengan kebutuhan sistem.
File Master Barang
Yang diperlukan dalam tabel ini adalah Kode Barang (Unique) dan informasi barang (Nama Barang, Satuan, HPP, Harga dll. sesuai kebutuhan). Berikut contoh struktur tabel filemasterbarang:
KodeBarang String/Character Index
NamaBarang String/Character
Satuan String/Character
HPP Currency/Money
HargaJual Currency/Money
Pada dasarnya tabel File Master Barang ini hanya digunakan untuk menyimpan informasi data barang yang digunakan.Data Stok Akhir Barang
Dalam tabel ini digunakan untuk menyimpan data stok akhir barang, sehingga anda bisa melakukan update atau mendapatkan stok akhir dengan cepat. Berikut contoh struktur tabel stokbarang:
KodeBarang String/Character Index
KodeGudang String/Character Index
StokAkhir Integer/Real (sesuai dengan kebutuhan jenis stok barang berupa nilai bulat atau pecahan)
Akses atau pemrosesan tabel Data Stok Akhir Barang ini bisa digunakan Query atau Stored Procedure yang berfungsi untuk mengupdate data posisi stok akhir barang (baik bertambah atau berkurang) sesuai transaksi yang terjadi, yang secara sederhana dapat anda lihat dalam contoh Stored Procedure (SQL SERVER) berikut ini:
CREATE PROCEDURE [dbo].[SP_UPDATE_STOKAKHIR]
@KodeBarang varchar(15),
@KodeGudang varchar(5),
@Jumlah real
AS
BEGIN
UPDATE stokbarang SET Stokakhir = Stokakhir + @Jumlah
WHERE Kodebarang = @Kodebarang AND Kodegudang = @Kodegudang
END
Baiklah mungkin ada pertanyaan, kenapa stok akhir tidak dituliskan dalam File Master Barang saja? Hal ini didasarkan pada alasan bahwa, jika anda menggunakan gudang stok barang lebih dari 1, maka anda tidak bisa meletakkannya pada File Master Barang, karena anda tidak bisa menggunakannya secara dinamis, misalkan jenis gudang bertambah; sehingga dengan desain database sistem ini, gudang bisa bertambah tanpa harus merubah struktur tabel.
Data Mutasi Barang
Dalam tabel ini berfungsi untuk menyimpan seluruh aktiftas transaksi yang terjadi, baik data stok barang masuk atau keluar dan tidak terbatas jenis transaksi yang digunakan dalam program aplikasi.
Memang setiap transaksi yang kita buat tentu detail dari jenis dan jumlah barang yang kita input sudah tersimpan dalam tabel transaksi, tetapi dalam hal ini alasan kenapa tetap disimpan dalam Data Mutasi Barang adalah, karena untuk kebutuhan laporan dan informasi mutasi barang, yaitu bisa cukup dengan menggunakan 1 tabel saja dan tidak perlu menggunakan banyak tabel sesuai dengan transaksi yang digunakan, sehingga jauh lebih efektif dan lebih cepat.
Berikut contoh struktur tabel mutasibarang:
JenisTransaksi Integer (jenis transaksi, misalkan 0-Stok Opname, 1-Pembelian dst.)
NomorTransaksi String/Character
TanggalTransaksi DateTime
KodeGudang String/Character
KodeBarang String/Character
Keterangan String/Character
Masuk Integer/Real (jumlah mutasi barang masuk)
Keluar Integer/Real (jumlah mutasi barang keluar)
Dengan tersusunnya 3 tabel diatas, maka sudah lengkap akan kebutuhan sistem yang berhubungan dengan Stok dan Mutasi Barang, kita tinggal menambahkan tabel-tabel lain yang diperlukan dalam database sesuai dengan kebutuhan sistem, misalkan untuk kebutuhan transaksi stok opname, pembelian, penjualan, retur dan lain sebagainya (akan dibahas di artikel yang lain).
Dan dari struktur tabel diatas, maka kita bisa menyimpan data dan mengambil laporan secara histori sesuai dengan tanggal proses yang anda maksud, yaitu dengan cara digunakan sebagai parameter laporan. Sebagai contoh, saya akan berikan sebuah Stored Procedure (SQL Server) yang berfungsi untuk mengambil laporan daftar stok secara hitoris pada tanggal tertentu.
CREATE PROCEDURE [dbo].[SP_RPT_STOKBARANG]
@TanggalLaporan datetime
AS
BEGIN
SELECT S.KodeBarang, S.KodeGudang, B.NamaBarang, B.Satuan, B.HPP, B.HargaJual, StokAkhir = SUM(D.Stokakhir) - ISNULL((SELLECT SUM(M.Masuk) FROM MUTASIBARANG M WHERE M.KodeBarang = S.KodeBarang AND M.KodeGudang = S.KodeGudang AND M.TanggalTransaksi>@TanggalLaporan),0) + ISNULL((SELLECT SUM(M.Keluar) FROM MUTASIBARANG M WHERE M.KodeBarang = S.KodeBarang AND M.KodeGudang = S.KodeGudang AND
M.TanggalTransaksi>@TanggalLaporan),0)
FROM STOKBARANG S
INNER JOIN FILEMASTERBARANG B ON S.KodeBarang = B.KodeBarang
GROUP BY S.KodeBarang, S.KodeGudang, B.NamaBarang, B.Satuan, B.HPP, B.HargaJual
END
Dari stored procedure di atas, maka kita bisa mendapatkan daftar stok akhir barang secara histori tergantung dari tanggal laporan yang ditentukan sebagai parameter, sehingga program laporan yang anda susun jauh lebih baik.
Demikian sekedar berbagi ilmu dari pengalaman saya dalam menyusun sebuah sistem database stok barang, semoga bermanfaat dan jika anda mempunyai pertanyaan atau ingin diskusi, anda bisa memberikan komentar pada artikel ini atau mengirim email kepada saya.
Daftarkan email anda disini untuk berlangganan artikel kodiing
ConversionConversion EmoticonEmoticon