03 Agustus 2014

Tentang perhitungan stock

Bismillahirrahmaanirrahiim

Udah lama gak update blog ini...
Ini mau bahas perhitungan stock...

Dikarenakan ada request untuk membuat modul yang menampilkan tree product dengan data future stock 7 minggu ke depan, maka saya harus memperhatikan dengan seksama method perhitungan stock di OpenERP.

Method nya ada di modul stock/product/product.py
def _product_available

yang di dalamnya memanggil method
def get_product_available

7 minggu ke depan maksudnya..
contoh hari ini tanggal 3 agustus adalah minggu ke 32,
maka saya harus menampilkan
jumlah stock saat ini, future stock minggu ke-32, minggu ke-33 sampai minggu ke-38

untuk jumlah stock saat ini tidak masalah, karena memang menghitung dari tabel stock_move dengan state 'done'

nah saat menghitung future stock ada keanehan (setidaknya menurut saya aneh, mohon dikoreksi ya)

contoh:
ada PO utk product X tanggal 03/08 dengan expected delivery tanggal 25 agustus (minggu ke-35) dengan jumlah 15
Stock saat ini adalah 20

maka yang saya harapkan adalah
current stock = 20
future stock minggu-32 = masih 20
future stock minggu-33 = masih 20
future stock minggu-34 = masih 20 
future stock minggu-35 = baru berubah menjadi 35

ehh tapi hasilnyaaa....
current stock = 20
future stock minggu-32 = 35
future stock minggu-33 = 35
future stock minggu-34 = 35
future stock minggu-35 = 35

kenapa hasilnya seperti itu?
karena di method
    def get_product_available(self, cr, uid, ids, context=None):

ada baris berikut:

        if from_date and to_date:
            date_str = "date>=%s and date<=%s"
            where.append(tuple([from_date]))
            where.append(tuple([to_date]))
        elif from_date:
            date_str = "date>=%s"
            date_values = [from_date]
        elif to_date:
            date_str = "date<=%s"
            date_values = [to_date]
        if date_values:
            where.append(tuple(date_values))

Maksudnya adalah, dia akan menghitung stock dari table stock_move dengan where clause (jika ada filter date) adalah where stock_move.date >= from_date and date <= to_date dst
sedangkan field date sendiri digunakan untuk menyimpan tanggal order (tanggal dibuatnya IS - dari tanggal PO) dan jika sudah done maka field date adalah tanggal dikirimkan/diterimanya barang.

Sedangkan future stock harusnya diambil dari date_expected nya dongs... 

jadi where stock_move.date_expected >= blablabla

Karena itu saya lakukan perubahan hmm 'lumayan sedikit #eeh' di method tsb seperti ini kira2..



jadi saya bagi-2
yg pertama utk states done saja pakai yang biasa
yang satu lagi selain done diambil dari date_expected

Mohon bantu review dan dikoreksi jika ada salah atau disederhanakan

terima kasihhh

1 komentar:

  1. assalamu'alaikm....mau tanya mbak siti mawadah punya modul tentang technical perhitugan stock soalnya saya pelajari bagian warehouse sudah 2 minggu blm paham2.....pengennya pengen buat modul sendiri dulu yg sederhana g kayak yg ad di openerp....mungkin bisa bantu baru belajar soalnya....terima kasih sebelumnya.....(maksudnya proses perhitungan stock itu alurnya gmn dlm openerp)

    BalasHapus