我不確定什麼是「最好」的做法,但我之前創建了這種庫存系統。在你的問題中你幾乎得到了答案 - 你需要通過批次追蹤購買。
所以,你的庫存主會是什麼樣子:
Primary_Inventory_Key
Description
LIFO_FIFO_FLAG // if this is set at the inventory item level
...
且庫存批表將是:
Primary_Inventory_Key
Batch # // autoincrement
// maybe PO # or something rather than these fields, depends on rest of schema
Purchase Date //
Purchase Price //
Purchase Qty // quantity originally purchased
VendorID
InventoryLevel // quantity remaining from this batch
...
PRIMARYKEY(Primary_Inventory_Key,Batch#)
然後,當你去做銷售,只是:
SELECT MAX(Batch#) WHERE InventoryKey = 'Mykey' AND InventoryLevel > 0
for LIFO and:
SELECT MIN(Batch#) WHERE InventoryKey = 'Mykey' AND InventoryLevel > 0
用於FIFO。
您也可以拉出一個列表並讓用戶選擇一個具有該模式的批處理。
切記在交易提交時減少庫存水平。
謝謝馬克。我希望通過你的話「你的庫存價格表將是」你的意思是庫存批量? –
@firdousamir:是的,我更新了答案。 –
另外,銷售定價呢?附上每批的銷售價格?我只想讓這些東西成爲未來的證明,就這些。 –