2

这更像是一个抽象的架构问题。

我正在为药房相关领域开发库存管理系统。我有所有常用的组件,例如产品定义(产品类型、类别等)仓库、采购订单、收货单、销售订单、产品定价等。

对于每次购买,产品可能会产生不同的成本(购买成本 + 运费 + 额外成本),并且应该能够为每个“批次”购买配置售价。销售时应该可以根据 FIFO 或 LIFO 选择 BATCH(在产品定义中配置)

我们如何才能最好地完成这个要求?“价格”的属性是什么?任何关于这个主题的一般最佳实践都是最受欢迎的。

4

1 回答 1

2

我不确定“最佳”做法是什么,但我以前创建过这种库存系统。您的问题几乎有答案 - 您需要按批次跟踪购买。

所以你的库存主数据看起来像:

Primary_Inventory_Key
Description
LIFO_FIFO_FLAG          // if this is set at the inventory item level
...

您的 Inventory Batch 表将是:

 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

先进先出。

您还可以拉出一个列表并让用户选择具有此模式的批次。

请记住在提交事务时减少您的库存水平。

于 2012-10-19T21:03:27.277 回答