FIFO成本计算

时间:2013-10-25 00:05:42

标签: java sql database h2

Namaskaram,

我正在使用H2数据库在Java Swing中开发零售POS应用程序。为了计算成本,我需要帮助。

FIFO成本计算

  • 我有以下表格
  • 购买表

enter image description here

  • 销售表

enter image description here

  • FIFOCost表

enter image description here

我的要求是计算每个售出物品的平均成本,进入FIFOCost表。

只要在Sale Table中发生插入,就可以通过编程方式完成插入到FIFOCost表中的值。但是,在几周或几个月后,任何更新(如编辑项目或其数量)都会在购买和销售表中发生(这需要FIFOCost表,也需要更新,数据量很大)

目前,我正在完成程序本身。我正在寻找一种解决方案,使用递归等高级工具,在数据库本身进行少量编程和更多工作。

2 个答案:

答案 0 :(得分:0)

您需要在某个地方跟踪库存情况。当销售发生时,您将要做几件事:查看销售的商品数量与库存量。例如,让我们来看看第二次销售,487。你卖了10个苹果@ 16.00美元。您的函数的第一部分将查询Item = Apple和OnHand> = 0的位置。它将首先到达项目101,其OH值为5.计算使用这5个项目的每个11.00的销售成本和将库存更新为0.然后再次查询Item = Apple和onHand> = 0然后使用项目195中的5,将销售成本添加到您在第一部分中计算的数量,并更新该项目的库存。

答案 1 :(得分:0)

您需要在购买表中添加一个QtySold列,并在每笔销售中使用以下算法:

qty_left = sale_qty
tot_cost = 0;     
while qty_left > 0
   fetch oldest row where qty_sold < qty
   if qty_left + qty_sold < qty
   then 
        set qty_sold = qty_sold + qty_left
        tot_cost = tot_cost + (Purchase.Cost * qty_left)
        qty_left = 0
   else
        qty_at_this_cost = qty - qty_sold
        set qty_sold = qty
        tot_cost = tot_cost + (Purchase.cost * qty_at_this_cost)
        qty_left = qty_left - qty_at_this_cost 

avg_cost = tot_cost / sale_qty

虽然使用递归SQL可能会这样做,但它既不高效又不易读。

您可以说服您的用户使用更明智,更容易计算移动平均成本。

即。每当您购买新股票时,您都要计算     MVC =((当前股票* MVC)+(新股*新成本))/(当前股票+新股)

这类似,但它平均超过所有购买的成本。