Namaskaram,
我正在使用H2数据库在Java Swing中开发零售POS应用程序。为了计算成本,我需要帮助。
FIFO成本计算
我的要求是计算每个售出物品的平均成本,进入FIFOCost表。
只要在Sale Table中发生插入,就可以通过编程方式完成插入到FIFOCost表中的值。但是,在几周或几个月后,任何更新(如编辑项目或其数量)都会在购买和销售表中发生(这需要FIFOCost表,也需要更新,数据量很大)
目前,我正在完成程序本身。我正在寻找一种解决方案,使用递归等高级工具,在数据库本身进行少量编程和更多工作。
答案 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)+(新股*新成本))/(当前股票+新股)
这类似,但它平均超过所有购买的成本。