Costo de inventario de primero en entrar, primero en salir (FIFO)

Aquí hay un artículo interesante que encontré útil en mi proyecto:

Sistema de control de velocidad basado en conjuntos: el problema de inventario de inventario FIFO SQL:

Tabla de stock que utilizamos para rastrear los movimientos de seguimiento de stock dentro y fuera de nuestro almacén de inventario imaginario Nuestro almacén está inicialmente vacío, y luego el stock se mueve al almacén como resultado de la compra de un stock (tranCode = 'IN'), o debido a una devolución posterior (tranCode = 'RET'), y el stock sale del almacén cuando se vende (tranCode = 'OUT'). Cada tipo de stock tem está identificado por un ArticleID. Cada movimiento de stock dentro o fuera del almacén, debido a una compra, venta o devolución de un artículo determinado, hace que se agregue una fila a la tabla de Stock, identificada de forma única por el valor en la columna de identidad StockID, y describiendo cuántos Los artículos se agregaron o eliminaron, el precio de las compras, la fecha de la transacción, etc.

Aunque estoy usando esto en mi proyecto en curso, estoy atascado en cómo obtener el precio a cobrar en cada transacción 'OUT'. Necesito tener este valor para determinar cuánto cobraré a mis clientes.

Primero agregue 5 manzanas (cada $ 10.00) a la acción, para un total de $ 50.00

Agregue 3 manzanas (cada $ 20.00) al stock total de 8 manzanas, por un precio total de $ 110.00

Luego saque 6 artículos (5 cada uno $ 10.00 y 1 cada $ 20.00) $ 70 en total

Después de la transacción, saldrán 2 manzanas a $ 20 cada una con un 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 

El guión publicado que ganó el concurso fue muy útil, espero que alguien me pueda ayudar a obtener el precio por transacción 'OUT'

Respuestas a la pregunta(5)

Su respuesta a la pregunta