一。每个瓶子都应该作为一个单独的 InventoryUnit 对象存储在我的数据库中吗?
如果您可以单独出售它们,那么可以,否则按 case/box 跟踪它们。
二。减少库存的最佳做法是什么?如果我卖一瓶,我会销毁 InventoryUnit 吗?还是我应该添加一个可以“已售”或“有货”的状态栏?
使用位置和运动的概念(运动应该是它自己的实体)。例如,OpenERP 使用与此类似的“虚拟位置”。
瓶子碎了?将其从其库存位置移至“损坏”位置
瓶子不见了?将其从库存移动到“以太”位置
找到一个随机瓶子?把它从“以太”移到库存
卖了一瓶?将其从库存移至“已售出”
买了一瓶?将其从已购买移动到库存
三。我担心性能,Postgres 可以处理数十万个 InventoryUnit 对象吗?
Postgres 可以处理数千亿个对象。正确规范化。使用小数据类型。使用索引。
其他一些需要记住的事情:
- 你可以卖东西,它被退回,你把它放回库存
- 你可以买东西,但它不正确,所以你把它寄回给卖家
- 您可以出售您不拥有的东西(寄售,或尚未入库)
- 您的库存中可能有一些目前不出售的东西。
对于库存核算,您还需要根据离岸交货 FOB 状态计算您负责的入库和出库货物。
如果您制造/组装任何东西,您需要计算原材料(DIY酿酒的东西?)和正在进行的工作,以及订购成本等。
寄售货物不计入会计存货。