0

ナマスカラム、

H2 データベースを使用して Java Swing で Retail POS アプリケーションを開発しています。費用の計算について、助けが必要です。

FIFO コストの計算

  • 次のテーブルがあります
  • 購入表

ここに画像の説明を入力

  • 販売表

ここに画像の説明を入力

  • FIFOCost テーブル

ここに画像の説明を入力

私の要件は、販売された各アイテムの平均コストを FIFOCost テーブルに計算することです。

FIFOCost テーブルに挿入する値は、Sale テーブルで挿入が発生するたびにプログラムで実行できます。ただし、数週間または数か月後に購入テーブルと販売テーブルの両方で更新(アイテムまたはその数量の編集など)が発生した場合(これには、FIFOCostテーブルも更新する必要があり、大量のデータが含まれます)

現在、私はプログラム自体を通じて達成しています。再帰のような高度なツールを使用して、データベース自体でプログラミングをほとんど行わず、より多くの作業を行うソリューションを探しています。

4

2 に答える 2

1

購入テーブルに 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) + (新しい株 * 新しいコスト)) / (現在の株 + 新しい株) を計算します。

これは似ていますが、すべての購入のコストを平均化します。

于 2013-10-29T06:57:33.910 に答える