And*_*ero 13 database-design ruby-on-rails inventory point-of-sale
我正在尝试创建一个基本的销售点和库存管理系统.
有些事情需要考虑:
从那以后,我想到了这些表:
地点
制品
交易
inventories_header
inventories_detail
orders_header
orders_detail
好的,那么,有什么问题吗?当然.
(cost*quantity) - (price*quantity) = marginal utility某种方式跟踪边际效用().我想到了库存_主要是为了这个.我不会另外关心.我确信我还有一些问题,但这些问题主要是我需要解决的问题.此外,由于我第一次使用Ruby on Rails,实际上,作为一种学习体验,停止设计是一种耻辱,不让我更快地实现实现,但我想这应该是它应该的方式.
提前致谢.
Bri*_*ick 20
这里棘手的部分是你真的不仅仅是一个POS解决方案.您还在进行库存管理和基本成本会计系统.
您需要解决的第一个方案是您将使用哪种会计方法来确定所售商品的成本.最常见的选项是FIFO,LIFO或特定标识(所有可以使用Google搜索的术语).
在所有3种情况下,您应该在数据结构中记录您的商品购买(通常称为PurchaseOrder,但在这种情况下,我将其称为SourcingOrder,以区别于原始问题中的订单表).
下面的结构假设每个采购订单行将用于一个位置(否则事情变得更加复杂).换句话说,如果我为商店A购买2个小工具,为商店B购买2个小工具,我会在订单中添加2行,每个数量为2,而不是一行数量为4.
SourcingOrder
- order_number
- order_date
SourcingOrderLine
- product_id
- unit_cost
- quantity
- location_id
Run Code Online (Sandbox Code Playgroud)
库存可以是一个级别......
InventoryTransaction
- product_id
- quantity
- sourcing_order_line_id
- order_line_id
- location_id
- source_inventory_transaction_id
Run Code Online (Sandbox Code Playgroud)
每次在商店收到SourcingOrderLine时,您将创建一个具有正数量的InventoryTransaction和FK引用sourcing_order_line_id,product_id和location_id.
每一个销售由时间,您将创建一个负数量和FK引用的InventoryTransaction的order_line_id,product_id和location_id,source_inventory_transaction_id.
这source_inventory_transaction_id将是从负数量InventoryTransaction返回到使用您选择的任何会计方法计算的正数量InventoryTransaction的链接.
一个位置的当前库存将是SELECT sum(quantity) FROM inventory_transactions WHERE product_id = ? and location_id = ?
GROUP BY product_id, location_id.
边际成本将通过追溯销售,通过2个相关库存交易追溯到SourcingOrder线来计算.
注意:您必须处理在2个库存交易中分配一个订单行的情况,因为订购数量大于要分配的下一个库存交易中剩余的数量.此数据结构将处理此问题,但您需要自己处理逻辑和查询.