Class: FifoPP
- Inherits:
-
Object
- Object
- FifoPP
- Defined in:
- lib/fifo-pp.rb
Instance Attribute Summary collapse
-
#amount ⇒ Object
atributos de la clase LifoPP.
-
#cogs ⇒ Object
atributos de la clase LifoPP.
-
#inventario ⇒ Object
atributos de la clase LifoPP.
-
#prices ⇒ Object
atributos de la clase LifoPP.
-
#unidades_vendidas ⇒ Object
atributos de la clase LifoPP.
-
#ventas ⇒ Object
atributos de la clase LifoPP.
Instance Method Summary collapse
- #calcular_fifo ⇒ Object
-
#get_utlidad ⇒ Object
cálculo de utilidad luego de FIFO.
-
#initialize(prices, amount) ⇒ FifoPP
constructor
constructor de la clase, los parámetros los precios y la unidades de compra/venta.
- #print ⇒ Object
Constructor Details
#initialize(prices, amount) ⇒ FifoPP
constructor de la clase, los parámetros los precios y la unidades de compra/venta
6 7 8 9 10 11 12 13 |
# File 'lib/fifo-pp.rb', line 6 def initialize(prices, amount) @prices = prices # arreglo de los precios @amount = amount # arreglo de unidades compra/venta @inventario = [] # arreglo donde se irá guardando los ingresos de materiales con su respectivo costo que sería igual al precio total / la cantidad a ingresar @ventas = 0 # acumulador de las ventas realizadas @unidades_vendidas = 0 # acumulador de las unidades vendidas @cogs = 0 # costo del stock end |
Instance Attribute Details
#amount ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/fifo-pp.rb', line 3 def amount @amount end |
#cogs ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/fifo-pp.rb', line 3 def cogs @cogs end |
#inventario ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/fifo-pp.rb', line 3 def inventario @inventario end |
#prices ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/fifo-pp.rb', line 3 def prices @prices end |
#unidades_vendidas ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/fifo-pp.rb', line 3 def unidades_vendidas @unidades_vendidas end |
#ventas ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/fifo-pp.rb', line 3 def ventas @ventas end |
Instance Method Details
#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 |
#get_utlidad ⇒ Object
cálculo de utilidad luego de FIFO
45 46 47 |
# File 'lib/fifo-pp.rb', line 45 def get_utlidad @ventas - @cogs end |
#print ⇒ Object
49 50 51 |
# File 'lib/fifo-pp.rb', line 49 def print "prices #{@prices} \namount #{@amount}\ninventario #{@inventario}\nventas #{@ventas}\ncogs #{cogs}" end |