品目/倉庫原価設定を使用時の LIFO/FIFO スタックの機能
これらの例では、スタック内の行が数量と原価で識別されます。実際には、各行には、日付と原価明細および勘定科目(材料費、労務費、固定間接費、変動間接費、外注費)も含まれます。勘定は、最初の例には含まれていますが、以降の例からは削除されています。
例
倉庫 MAIN は 80 の手持在庫を含み、倉庫 DIST は 20 の手持在庫を含みます。この例では、所定の品目に対して、5 つの別個のエントリを含む 1 つのスタックを使用しています。
| 数量 | 勘定 | 原価 | 
|---|---|---|
| 20 | 1200 | $5.00 | 
| 20 | 1200 | $7.00 | 
| 20 | 1200 | $4.50 | 
| 20 | 1300 | $6.50 | 
| 20 | 1200 | $7.00 | 
処理後は、2 つのスタックができます。
スタック #1:配賦
| 数量 | 勘定 | 原価 | 
|---|---|---|
| 4 | 1200 | $5.00 | 
| 4 | 1200 | $7.00 | 
| 4 | 1200 | $4.50 | 
| 4 | 1300 | $6.50 | 
| 4 | 1200 | $7.00 | 
スタック #2:メイン
| 数量 | 勘定 | 原価 | 
|---|---|---|
| 16 | 1200 | $5.00 | 
| 16 | 1200 | $7.00 | 
| 16 | 1200 | $4.50 | 
| 16 | 1300 | $6.50 | 
| 16 | 1200 | $7.00 | 
DIST には在庫の 20% があったので、DIST のスタックは、各行の 20% を受け取りました。MAIN は、その手持正味数の 80% と一致する残りの数量を受け取りました。品目の合計は、引き続き原価ごとに同じ数のエントリを含んでいます。したがって、在庫の原価には影響はなく、仕訳記帳の必要はありません。
数のまるめ
プログラムは、デフォルト倉庫以外の全ての倉庫を処理し、デフォルト倉庫は最後の切り札にします。数量は各倉庫の処理時にまるめられ、各倉庫には整数が割り当てられます。残りは、デフォルト倉庫に入れられます。分数については、「分数の処理方法」 を参照してください。
FIFO 品目のまるめの例:
| 倉庫 | 手持在庫数 | 
|---|---|
| メイン | 70 | 
| 配賦 | 30 | 
初期スタック
| 数量 | 原価 | 
|---|---|
| 25 | $5.00 | 
| 25 | $7.00 | 
| 25 | $4.50 | 
| 25 | $6.50 | 
整数にまるめると、次の配分になります。
DIST 用の 1 スタック
| 数量 | 原価 | 
|---|---|
| 8 | $5.00 | 
| 8 | $7.00 | 
| 8 | $4.50 | 
| 6 | $6.50 | 
MAIN 用の別のスタック
| 数量 | 原価 | 
|---|---|
| 17 | $5.00 | 
| 17 | $7.00 | 
| 17 | $4.50 | 
| 19 | $6.50 | 
DIST は、在庫全体の 30% を含むので、各スタック行の 30% を取得します。25 の 30% は 7.5 であり、8 にまるめられます。残り (17) は MAIN に配分されます。この例では、DIST が上限 30 に達するので、最後の行は 6 しか含みません。これは、他の行のまるめのためです。残りは MAIN に配分され、全てが調整されます。
FIFO は上から下の順序で処理され、LIFO は下から上の順序で処理されます。上の例では、DIST の 6 と MAIN の 19 がリストの先頭になるので、出庫時に使用される最初の行になります。
全ての倉庫間のバランスの保持
上の例が示すように、倉庫の割り当て数量の追跡は重要です。これによって、残り数量を再割り当てするために、スタックの 2 つ目のパススルーが必要となることがあります。
全ての倉庫間での例:
| 倉庫 | 手持在庫数 | 
|---|---|
| メイン | 70 | 
| 配賦 | 25 | 
| DIS1 | 5 | 
処理後:
| 元のスタック数量 | スタック原価 | DIS1 数量 | DIST 数量 | MAIN 数量 | 
|---|---|---|---|---|
| 7 | $5.00 | 0 | 2 | 5 | 
| 1 | $7.00 | 0 | 0 | 1 | 
| 10 | $5.50 | 1 | 3 | 6 | 
| 72 | $6.00 | 4 | 18 | 50 | 
| 3 | $5.00 | 0 | 1 | 2 | 
| 2 | $7.50 | 0 | 1 | 1 | 
| 5 | $7.00 | 0 | 0 | 5 | 
最後の行では、通常、DIST 倉庫の数量は 1 になりますが、そうなると、DIST の合計を超過してしまうので、残りの 5 が MAIN に配分されます。
次に、手持在庫数の配分が若干異なる場合を検討します。
| 倉庫 | 手持在庫数 | 
|---|---|
| メイン | 69 | 
| 配賦 | 25 | 
| DIS1 | 6 | 
最後のスタック行の引当は若干異なります。
処理後:
| 元のスタック数量 | スタック原価 | DIS1 数量 | DIST 数量 | MAIN 数量 | 
|---|---|---|---|---|
| 7 | $5.00 | 0 | 2 | 5 | 
| 1 | $7.00 | 0 | 0 | 1 | 
| 10 | $5.50 | 1 | 3 | 6 | 
| 72 | $6.00 | 4 | 18 | 50 | 
| 3 | $5.00 | 0 | 1 | 2 | 
| 2 | $7.50 | 0 | 1 | 1 | 
| 5 | $7.00 | 1 | 0 | 4 | 
DIST は、数量 1 を取ることができず、今回 MAIN は 4 しか取れません。このシナリオでは、システムは 2 つ目のパススルーを行い、手持在庫数を超過していない最初の倉庫を見つけ、全ての数量が割り当てられるか、その倉庫がその手持数を超過するまで、あるだけの数量を追加します。この処理は、元のスタックからの残り数量全てを割り当てるまで続きます。
分数
一部の品目の在庫数は、整数ではありません。したがって、3.35 という数は有効でありえます。上記のまるめのセクションで説明したように、処理時には、数量は、整数で倉庫に配分されます。最後に、残りがデフォルト倉庫に配分されます。
例:
| 倉庫 | 手持在庫数 | 
|---|---|
| メイン | 70 | 
| 配賦 | 30.5 | 
初期スタック
| 数量 | 原価 | 
|---|---|
| 25 | $5.00 | 
| 25.5 | $7.00 | 
| 25 | $4.50 | 
| 25 | $6.50 | 
整数にまるめた結果は以下の通りです。
| 倉庫 | 数量 | 原価 | 
|---|---|---|
| メイン | 17 | $5.00 | 
| 17.5 | $7.00 | |
| 17 | $4.50 | |
| 18.5 | $6.50 | |
| 配賦 | 8 | $5.00 | 
| 8 | $7.00 | |
| 8 | $4.50 | |
| 6.5 | $6.50 | |
最初は、整数だけが DIST に配分され、残りが MAIN に配分されます。$6.50 の最後の値を処理するときは、まず、6 だけが DIST に配分され、残りが 19 になります。ただし、MAIN には 18,5 にしか空きがないので、余分な 0.5 が残されます。
したがって、複数勘定に関するセクションで説明したように、スタックで 2 つ目のパススルーが行われ、残った 0.5 は DIST に配分されます。その結果、全てが正しく合計されます。
負の数
負の数を処理することが必要な場合があります。手持在庫が全て負の場合は、上記の例でこの状況がカバーされます(符号だけが反対になります)。ただし、混合シナリオを含む例を少し説明する必要があります。混合シナリオとは、正の数量を含む倉庫と負の数量を含む倉庫があるシナリオです。
負の数の例
品目スタック
| 数量 | スタック原価 | 
|---|---|
| 7 | $5.00 | 
| 10 | $5.50 | 
| 3 | $5.00 | 
品目倉庫数量
| 倉庫 | 手持在庫数 | 
|---|---|
| メイン | 3 | 
| 配賦 | 24 | 
| DIS1 | -7 | 
品目の全体の数量は正なので、スタック内に負のエントリはありません。倉庫の比率割当は、20 の品目の正味手持数量に基づいています。スタックは、ここでも、比率に基づいて 3 つのスタックに分割されます。
| 倉庫 | 手持在庫数 | 原価 | 
|---|---|---|
| メイン | 1 | $5.00 | 
| 2 | $5.50 | |
| 0 | $5.00 | |
| 配賦 | 8 | $5.00 | 
| 12 | $5.50 | |
| 4 | $5.00 | |
| DIS1 | -2 | 5.00% | 
| -4 | $5.50 | |
| -1 | $5.00 | |
残りは全て MAIN に入ります(この場合は負)。たとえば、$5.50 の中間エントリについて検討します。当初、この行には 10 が含まれていました。2 は DIS1 に割り当てられ、8 が残りました。12 が DIST に割り当てられ、-4 が残りました。その残余結果が MAIN に割り当てられます。