【问题标题】:Calculating Cost of Goods Sold计算已售商品的成本
【发布时间】:2014-09-22 14:33:08
【问题描述】:

我有两张表格,一张用于输入库存,一张用于输出库存,它们或多或少看起来像这样:

               purchase (incoming)
--------------+----------+-------+-----------
 inventory_id | quantity | price | timestamp 
--------------+----------+-------+-----------
 bobble       |        1 | $1.00 | 2014-01-01
 trinket      |        2 | $1.00 | 2014-01-02
 trinket      |        2 | $2.00 | 2014-01-03
--------------+----------+-------+-----------


               sale (outgoing)
--------------+----------+-------+-----------
 inventory_id | quantity | price | timestamp
--------------+----------+-------+-----------
 trinket      |        1 | $3.00 | 2014-01-04
 bobble       |        1 | $3.00 | 2014-01-05
 trinket      |        2 | $3.00 | 2014-01-06
 trinket      |        1 | $3.00 | 2014-01-07
--------------+----------+-------+-----------

我希望有一个看起来像这样的视图:

                             sale_with_cost_of_goods
--------------+----------+-------------+------------+-----------+-----------+----------
 inventory_id | quantity | total_price | timestamp  | cogs_fifo | cogs_lifo | cogs_avg 
--------------+----------+-------------+------------+-----------+-----------+----------
 trinket      |        1 |       $3.00 | 2014-01-04 |     $1.00 |     $2.00 |    $1.50 
 bobble       |        1 |       $3.00 | 2014-01-05 |     $1.00 |     $1.00 |    $1.00 
 trinket      |        2 |       $6.00 | 2014-01-06 |     $3.00 |     $3.00 |    $3.00
 trinket      |        1 |       $3.00 | 2014-01-07 |     $2.00 |     $1.00 |    $1.50
--------------+----------+-------------+------------+-----------+-----------+----------

我可以处理所售商品的总价格和平均成本,但是 FIFO 和 LIFO 查询让我感到很头疼。

这合理甚至可能吗?任何帮助将不胜感激。

【问题讨论】:

  • 如何解决这个问题实际上取决于何时填充表。是否正在更新购买和销售,以便按时间顺序添加每一行?它们是否已经填充并且齿轮数据是事后的?
  • 销售和购买表只是附加到最后,最近的。所以如果我现在再买一个泡泡球,它将成为购买表的最后一行。我描绘商品成本计算的方式是将其定义为视图,因此当您从中选择时,计算会即时发生。

标签: sql postgresql accounting


【解决方案1】:

当客户从标准成本核算转向库存的 FIFO 成本核算时,我遇到了类似的问题。我的解决方案是: 1.在采购表中增加一列“剩余数量” 2. 在销售表中添加一列'COGS' 3. 修改销售订单发货模块中的代码,根据采购的最早剩余数量(有时不止一行)计算COGS,同时相应减少剩余数量。 然后查询变得简单,因为所有数据都位于 sales 表中。

【讨论】:

    猜你喜欢
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    相关资源
    最近更新 更多