ruby-on-rails – 库存管理:如何处理数据库中已售出的库存单位?

我卖酒.所以我有一个瓶子的清单.到目前为止,我有一个“InventoryUnit”模型,它引用了product和line_item.

>每个瓶子应该作为单个InventoryUnit对象存储在我的数据库中吗?
>减少库存的最佳做法是什么?如果我卖瓶子,我会销毁一个InventoryUnit吗?或者我应该添加一个可以“出售”或“有库存”的状态列?
>我担心性能,Postgres可以处理数十万个InventoryUnit对象吗?

我真的很感激这方面的一些帮助.对不起,我是一个前端人员,所以我真的很厌倦数据库建模……

解决方法

One. should every single bottle be stored as an individual InventoryUnit object in my database?

如果您可以单独出售,那么是,否则通过案例/框跟踪它们.

Two. what’s the best practice to decrease my inventory? if i sell a bottle,do i destroy an InventoryUnit? or should i just add a
status-column that can be “sold” or “in-stock”?

使用位置和移动的概念(移动应该是它自己的实体).例如,OpenERP使用与此类似的“虚拟位置”.

瓶子坏了?将其从库存位置移至“已损坏”位置
瓶子不见了?将其从库存移至“以太”位置
发现一个随机的瓶子?将其从“以太”移至库存
卖了一瓶?将其从库存移至“已售出”
买了一瓶?将其从购买转移到库存

Three. i’m worried for performance,can Postgres handle hundreds of thousands of InventoryUnit objects?

Postgres可以处理数千亿个对象.正常化.使用小数据类型.使用索引.

要记住的其他一些事情:

>你可以卖东西,它会被退回,然后你把它放回库存中
>你可以买东西,但这不对,所以你把它寄回卖家
>你可以出售你不拥有的东西(寄售,或者不在库存中)
>您可能在库存中有一些目前尚未出售的东西.

对于会计库存,您还需要根据免费的FOB状态计算您负责的入库和出库货物的货物.

你需要计算原料(DIY酿酒的东西吗?),如果你制作/组装任何东西,以及订购费用等,还在进行中.

寄售商品不计入会计库存.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...