gpt4 book ai didi

ruby-on-rails - 销售点和库存数据库架构

转载 作者:行者123 更新时间:2023-12-02 16:25:40 25 4
gpt4 key购买 nike

我正在尝试创建一个基本销售点和库存管理系统。

需要考虑的一些事项:

  • 整个系统中的产品始终相同(相同的 ID),但每个地点的库存(每种产品的可用销售单位)是唯一的。地点 Y 和 Z 可能都有待售的产品 X 单位,但例如,如果地点 Y 销售了两个单位,则地点 Z 的库存不应受到影响。 库存单位仍然完好无损。
  • 从地点 Y 销售一 (1) 单位的产品 X,意味着地点 Y 的库存应从其库存中减去一单位。

由此,我想到了这些表格:

  • 地点

    • ID
    • 姓名
  • 产品

    • ID
    • 姓名
  • 交易

    • ID
    • 描述
  • inventories_header

    • ID
    • location_id
    • 产品 ID
  • inventories_detail

    • inventories_id
    • transaction_id
    • 单位成本
    • 单价
    • 数量
  • 订单标题

    • ID
    • 日期
    • 总计(根据订单明细数量 * 价格计算;仅供将来数据验证)
  • 订单详细信息

    • 订单 ID
    • transaction_id
    • 产品 ID
    • 数量
    • 价格

好的,那么,还有什么问题吗?当然。

  1. 如何跟踪单位成本的变化?如果有一天我开始为某种产品支付更多费用,我需要以某种方式跟踪边际效用((成本*数量)-(价格*数量)=边际效用)。我主要是为了这个而想到了 inventory_detail 。否则我不会关心。
  2. 关系是否稳定?我仍然很难思考这些地点是否有库存,或者库存是否有多个地点。真让人抓狂。
  3. 您将如何保存/了解当前的库存水平?由于我必须分离库存表以跟上成本更新,我想我只需将 inventory_detail 中规定的所有数量相加即可。
  4. 您有什么建议想分享吗?

我确信我仍然有一些问题,但这些主要是我需要解决的问题。另外,由于我是第一次使用 Ruby on Rails,实际上,作为一种学习经历,在设计上停止是一种耻辱,不让我更快地完成实现,但我想这就是应该的方式。

提前致谢。

最佳答案

这里棘手的部分是,您所做的不仅仅是 POS 解决方案。您还在开发库存管理和基本成本会计系统。

您需要解决的第一个场景是您将使用什么会计方法来确定所售商品的成本。最常见的选项是 FIFO、LIFO 或特定标识(所有术语都可以通过 Google 搜索)。

在所有 3 个场景中,您应该在数据结构中记录您购买的商品(通常称为 PurchasingOrder,但在本例中,我将其称为 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,其中包含正数量以及对 proving_order_line_idproduct_idlocation_id 的 FK 引用.

每次进行销售时,您都将创建一个具有负数量的 InventoryTransaction 以及对 order_line_idproduct_idlocation_id 的 FK 引用>,source_inventory_transaction_id

source_inventory_transaction_id 是从负数量 InventoryTransaction 到正数量 InventoryTransaction(使用您选择的会计方法计算得出)的链接。

某个地点的当前库存为SELECT sum(quantity) FROM inventory_transactions WHERE Product_id = ?和 location_id = ?
按产品 ID、位置 ID 进行分组

边际成本将通过从销售追溯到 SourcingOrder 行的 2 个相关库存交易来计算。

注意:您必须处理在 2 个库存交易中分配一个订单行的情况,因为订购数量大于下一个要分配的库存交易中剩余的数量。此数据结构将处理此问题,但您需要自己处理逻辑并查询。

关于ruby-on-rails - 销售点和库存数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com