我正在尝试创建基本销售点和库存管理系统。
需要考虑的一些事项:
从那以后,我想到了这些表:
位置
产品
交易
inventories_header
inventories_detail
orders_header
orders_detail
好的,那么,有什么问题吗?当然。
(cost*quantity) - (price*quantity) = marginal utility
)。我想到了库存_主要是为了这个。我不会另外照顾。我确信我还有一些问题,但这些问题主要是我需要解决的问题。此外,由于我第一次使用Ruby on Rails,实际上,作为一种学习体验,停止设计是一种耻辱,不要让我更快地实现实现,但我想这应该是它应该的样子。 / p>
提前致谢。
答案 0 :(得分:19)
这里棘手的部分是你真的不仅仅是一个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
库存可以是一个级别......
InventoryTransaction
- product_id
- quantity
- sourcing_order_line_id
- order_line_id
- location_id
- source_inventory_transaction_id
每次在商店收到SourcingOrderLine时,您都会创建一个InventoryTransaction,其数量为正数,FK引用为sourcing_order_line_id
,product_id
和location_id
。
每次进行销售时,您都会创建一个FeedTransaction,其数量为负数,FK引用为order_line_id
,product_id
和location_id
,source_inventory_transaction_id
。< / p>
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个库存交易中分配一个订单行的情况,因为订购数量大于要分配的下一个库存交易中剩余的数量。此数据结构将处理此问题,但您需要自己处理逻辑和查询。
答案 1 :(得分:2)
布赖恩是对的。只是为了添加其他信息。如果您正在为您的企业或客户开发一个完整的系统。我建议你开始从事组织层面的工作,直到POS和会计流程。这将使您的数据库体验更加广泛...:P根据我在系统开发方面的经验,库存模块始终以库存+(购买 - 购买退货)= SKU可供销售开始。 POS不直接附加到库存模块,而是每天由销售主管进行核对。每日总销售数量将扣除至可供销售的SKU。您还将研究成本计算和定价模块。正确的数据库规范化始终是必须的。