Method: FifoPP#calcular_fifo
- Defined in:
- lib/fifo-pp.rb
#calcular_fifo ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/fifo-pp.rb', line 15 def calcular_fifo for i in 0..@amount.length - 1 # vamos a iterar los arreglos if @amount[i] > 0 # si el número es positivo, es un ingreso de inventario # ingreso inventario.push({ # agregamos el ingreso de material con el costo unitario del mismo :costo_unitario => prices[i], :cantidad => @amount[i] }) else # si el número es negativo, vamos a descontar del inventario existente # venta cantidad = @amount[i] for k in 0..@inventario.length - 1 # iteramos el arreglo del inventario con el fin de vender primero lo que ingresó primero y a la par iremos calculando el costo de ese material saliente if (-1 * cantidad) > @inventario[k][:cantidad] # en caso que la cantidad a descontar sea mayor a la existencia del inventario que primero ingresó @cogs = @cogs + @inventario[k][:cantidad] * @inventario[k][:costo_unitario] # en caso que se tenga en el inventario que ingresó primero, se descuenta if @inventario[k][:cantidad] > 0 cantidad = cantidad + @inventario[k][:cantidad] # en caso que se tenga en el inventario que ingresó sigiuente, se descuenta @inventario[k][:cantidad] = 0 # en caso que se tenga en el inventario que ingresó primero se quedó sin inventario end else # en caso que se tenga en el inventario que ingresó primero, se descuenta @cogs = @cogs + (-1 * cantidad) * @inventario[k][:costo_unitario] # calculamos el cogs de del descuento @inventario[k][:cantidad] = @inventario[k][:cantidad] + cantidad # actualizamos el inventario cantidad = 0 end end @ventas = @ventas + @prices[i] * @amount[i] * -1 end end end |