First-in-first-out (FIFO), custos de inventário

Aqui está um artigo interessante que achei útil no meu projeto:

Speed ​​Phreakery baseado em configurações: O problema FIFO Stock Inventory SQL:

Tabela de estoque que usamos para rastrear os movimentos de entrada e saída de estoque de nosso depósito de estoque imaginário. Nosso depósito é inicialmente vazio e o estoque é transferido para o depósito como resultado de uma compra de estoque (tranCode = 'IN') ou devido a um retorno subseqüente (tranCode = 'RET') e o estoque sai do depósito quando é vendido (tranCode = 'OUT'). Cada tipo de estoque é identificado por um ArticleID. Cada movimento de estoque dentro ou fora do depósito, devido a uma compra, venda ou devolução de um determinado item, resulta em uma linha sendo adicionada à tabela Estoque, identificada exclusivamente pelo valor na coluna de identidade StockID e descrevendo quantas itens foram adicionados ou removidos, o preço das compras, a data da transação e assim por diante.

Embora eu esteja usando isso no meu projeto em andamento, estou preso em como obter o preço para cobrança em cada transação 'OUT'. Eu preciso ter esse valor para determinar quanto vou cobrar meus clientes.

Primeiro adicione 5 maçãs (cada US $ 10,00) ao estoque, para um total de US $ 50,00

Adicione 3 maçãs (cada US $ 20,00) ao estoque total de 8 maçãs, por um preço total de US $ 110,00.

Então pegue 6 itens (5 cada US $ 10,00 e 1 cada US $ 20,00) total de US $ 70

Após a transação, serão deixadas 2 maçãs a $ 20 cada, com um total de $ 40

 Here's my current table
 Item    transaction code    qty     price   
 apple   IN                    5     10.00    
 apple   IN                    3     20.00   
 apple   OUT                   6          

 Manual computation for the OUT transaction price (FIFO)
 QTY     price   total price 
 5       10.00   50.00 
 1       20.00   20.00 
 TOTAL:6         70.00 

 Output of the script:
 Item    CurrentItems   CurrentValue
 apple   2            40.00

 What I need:
 Item    transaction code    qty     price   CurrentItems    CurrentValue 
 apple   IN                    5     10.00   5               50.00 
 apple   IN                    3     20.00   8               110.00 
 apple   OUT                   6             2                   40.00 

 This too will be OK
 Item    transaction code    qty     price   CurrentItems    
 apple   IN                    5     10.00   0               
 apple   IN                    3     20.00   0                
 apple   OUT                   6         70 

O roteiro postado que venceu a competição foi muito útil, espero que alguém possa me ajudar em como obter o preço por transação 'OUT'

questionAnswers(5)

yourAnswerToTheQuestion