Ticker

6/recent/ticker-posts

Pengurangan Jumlah Stok Barang Yang Memiliki Expired Date Berbeda Vb 6 MySQL


pengambilan barang via www.tmginconline.com

Dalam pembuatan sistem inventory pengurangan jumlah stok barang akan mudah jika barang tersebut tidak memiliki tanggal kadaluarsa. Kita hanya tinggal mengurangi stok dengan jumlah yang dibeli.

Namun bagaimana jika barang tersebut memiliki tanggal kadaluarsa yang berbeda-beda,

Sebagai contoh
barang dengan kode ABC memiliki perincian sebagai berikut
1. ABC tanggal kadaluarsa 23-04-2017 jumlah stok 20
2. ABC tanggal kadaluarsa 30-04-2017 jumlah stok 3
3. ABC tanggal kadaluarsa 30-05-2017 jumlah stok 5

Bagaimana merancang tabelnya?


Untuk merancangan tabelnya, Saya memiliki dua tabel dengan spesifikasi minimum seperti berikut:

Tabel Barang
  • kdbarang (Primary Key INT )
  • nmbarang (VARCHAR)

Tabel StokBarang
  • id (Primay key  Auto Increment INT)
  • kdbarang (VARCHAR)
  • ed  (DATE)
  • stok (INT)

Bagaimana cara untuk melakukan pengurangan stoknya?

Saat melakukan transaksi penjualan barang, untuk pengurangan stok, sistem akan mengambil barang dengan tanggal kadaluarsa paling lama atau expired date paling lama dan jumlahnya lebih dari nol.
Setelah didapatkan data stoknya maka sistem akan membandingkan dengan jumlah barang yang keluar, jika ternyata stok lebih dari jumlah jumlah beli maka tinggal kurangi stok dengan jumlah yang dibeli.
jika ternyata stok kurang dari jumlah yang dibeli maka kurangi stok sesuai dengan stok yang ada kemudian hitung sisa jumlah barang yang keluar setelah dikurangi stok. untuk lebih rincinya kita dapat melihat alur pengurangan stok seperti dibawah ini.
Algoritma
  1. Baca kode barang simpan di variabel kode
  2. Baca jumlah beli simpan di variabel jumbel
  3. Ambil data stok dari database pada tabel stokbarang dengan kriteria ed (expired paling lama) dan kodebarang sama dengan variabel kode serta jumlah stok lebih dari 0. simpan data stok pada variabel stk
  4. Jika stok (stk) yang ada kurang dari jumlah yang dibeli (jumbel) maka lakukan pengurangan stok barang sesuai stok yang ada (stk). Selanjutnya hitung sisa jumlah yang dibeli yaitu jumlah beli (jumbel) dikurangi stok (stk), simpan dalam variabel sisa 
  5. Jika sisa jumlah yang dibeli (sisa) lebih dari 0 maka ambil lagi data stok dari tabase pada tabel stokbarang dengan kriteria ed (expired paling lama) dan kodebarang sama dengan variabel kode serta jumlah stok lebih dari 0.
  6. Jika data stok lebih dari sisa maka lakukan pengurangan stok barang dengan cara stok dikurangi sisa
  7. Selain data stok leib dari sisa maka set variabel jumbel sama dengan sisa. Kembali ke langkah 3 dan ulangi
  8. Selain sisa jumlah yang dibeli lebih dari 0 maka keluar
  9. Selain stok (stk kurang dari jumlah yang dibeli (jumbel) maka lakukan pengurangan stok barang dengan cara stok yang ada dikurangi dengan jumlah beli 
  10. Selesai

 

 Implementasi dengan VB 6


 'Deklarasi Variabel
       
        Dim jumbeli As Integer
        Dim kode As String
        Dim stk As Integer
        Dim awal As Integer
        Dim sisa As Integer
       
        'hitung jumlah beli
       
      
        kode = gridjual.TextMatrix(i, 0)
        jumbeli = Val(gridjual.TextMatrix(i, 4)) * Val(gridjual.TextMatrix(i, 7))
       
        'kurangi stok
ulang::
        Set Rs = New ADODB.Recordset
        Rs.Open "SELECT id as kdstok, stok from stokbarang WHERE kdbarang = '" & kode & "' and ed =(select min(ed) from stokbarang where kdbarang='" & kode & "' and stok>0)", konekdb, adOpenDynamic, adLockBatchOptimistic
        Rs.Requery
        stk = Rs!stok
        If stk < jumbeli Then 'bandingin agar saat stok kosong di ambil ed berikutnya
            SQL = "UPDATE stokbarang set stok=stok-" & stk & " where id='" & Rs!kdstok & "'"
            konekdb.Execute SQL, , adCmdText
            sisa = jumbeli - stk
            If sisa > 0 Then
             Set Rs_golongan = New ADODB.Recordset
                Rs_golongan.Open "SELECT id as kdstok, stok from stokbarang WHERE kdbarang = '" & kode & "' and ed =(select min(ed) from stokbarang where kdbarang='" & kode & "' and stok>0)", konekdb, adOpenDynamic, adLockBatchOptimistic
                If Rs_golongan!stok > sisa Then 'bandingin agar saat stok kosong di ambil ed berikutnya
                SQL = "UPDATE stokbarang set stok=stok-" & sisa & " where id='" & Rs_golongan!kdstok & "'"
                konekdb.Execute SQL, , adCmdText
                ElseIf Rs_golongan!stok < sisa Then
                jumbeli = sisa
                GoTo ulang
                End If
            'GoTo ulangi
            Else
            Exit Sub
            End If
        Else 'jika stok lebih banyak gak masalah
        SQL = "UPDATE stokbarang set stok=stok-" & jumbeli & " where id='" & Rs!kdstok & "'"
        konekdb.Execute SQL, , adCmdText
        End If



Semoga Bermafaat
  

Post a Comment

0 Comments