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'