这更像是一个抽象的架构问题。
我正在为药房相关领域开发库存管理系统。我有所有常用的组件,如产品定义(产品类型,类别等)仓库,采购订单,收货单,销售订单,产品定价等。
对于每次购买,产品可能带有不同的成本(购买成本+运费+额外成本),并且应该能够为每个“批次”购买配置销售价格。销售时应该可以根据FIFO或LIFO选择BATCH(在产品定义中配置)
我们如何才能最好地完成此要求? “价格”的属性是什么?关于这个主题,欢迎任何一般的最佳实践。
答案 0 :(得分:2)
我不确定“最佳”做法是什么,但之前我已经创建了这种库存系统。您几乎可以在问题中找到答案 - 您需要按批次跟踪购买。
所以您的库存大师看起来像:
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
用于LIFO并且:
SELECT MIN(Batch#) WHERE InventoryKey = 'Mykey' AND InventoryLevel > 0
表示FIFO。
您还可以提取一个列表,让用户选择具有此架构的批处理。
请记住在提交交易时减少库存水平。