这更像是一个抽象的架构问题。
我正在开发一个药房相关领域的库存管理系统。我有所有常用的组件,如产品定义(产品类型、类别等)仓库,采购订单,收货单据,销售订单,产品定价等。
对于每一次购买,产品可能带有不同的成本(购买成本+运费+附加成本),并且应该能够为每一批购买配置销售价格。在销售时,应该可以根据FIFO或LIFO (在产品定义中配置)挑选批次。
我们如何才能最好地实现这一要求?“价格”的属性是什么?任何关于此主题的通用最佳实践都是非常受欢迎的。
发布于 2012-10-20 05:03:27
我不确定什么是“最佳”实践,但我以前创建过这种库存系统。你在你的问题中几乎有了答案-你需要按批次号跟踪购买。
所以你的库存清单看起来是这样的:
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对于后进先出和:
SELECT MIN(Batch#) WHERE InventoryKey = 'Mykey' AND InventoryLevel > 0用于FIFO。
您还可以拉出一个列表,让用户选择具有此模式的批处理。
记得在提交事务时降低库存水平。
https://stackoverflow.com/questions/12982194
复制相似问题