2014-09-22 65 views
4

我有两个表,一个用于传入库存,另一个用于传出库存看起来或多或少是这样的:计算销货成本

   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查询正在踢我受伤的地方。

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

+0

如何解决这个问题真的取决于表何时被填充。购买和销售是否更新,以便每行按时间顺序添加?他们是否已经人口稠密,并且齿轮数据是事实? – gwaigh 2014-09-22 16:05:55

+0

销售和购买表格只是附加到最后的最后。因此,如果我现在要购买另一个滑动杆,它将成为购买表的最后一行。我描绘货物计算成本的方式是它将被定义为一个视图,因此当您从中选择时,计算会立即发生。 – zakm 2014-09-22 23:07:44

回答

2

我有一个类似的问题,当客户从标准成本转移到FIFO成本核算库存。我的解决方案是: 1.在购买表中为'剩余数量'添加一列 2.在销售表中为'COGS'添加一列 3.修改销售订单配送模块中的代码以计算基于销售成本在购买时剩余的最古老的数量(有时超过一行),同时相应地减少剩余的数量。 由于所有数据都位于销售表中,因此查询变得简单。