Class: LifoPP
- Inherits:
-
Object
- Object
- LifoPP
- Defined in:
- lib/lifo-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_inventario_inicial ⇒ Object
- #calcular_lifo ⇒ Object
- #calcular_ventas ⇒ Object
-
#get_utlidad ⇒ Object
cálculo de utilidad luego de LIFO.
-
#initialize(prices, amount) ⇒ LifoPP
constructor
constructor de la clase, los parámetros los precios y la unidades de compra/venta.
- #print ⇒ Object
Constructor Details
#initialize(prices, amount) ⇒ LifoPP
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/lifo-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/lifo-pp.rb', line 3 def amount @amount end |
#cogs ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/lifo-pp.rb', line 3 def cogs @cogs end |
#inventario ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/lifo-pp.rb', line 3 def inventario @inventario end |
#prices ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/lifo-pp.rb', line 3 def prices @prices end |
#unidades_vendidas ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/lifo-pp.rb', line 3 def unidades_vendidas @unidades_vendidas end |
#ventas ⇒ Object
atributos de la clase LifoPP
3 4 5 |
# File 'lib/lifo-pp.rb', line 3 def ventas @ventas end |
Instance Method Details
#calcular_inventario_inicial ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/lifo-pp.rb', line 15 def calcular_inventario_inicial for i in 0..@amount.length - 1 if @amount[i] > 0 # actualizamos el inventario (cantidad y consto unitario) inventario.push({ :costo_unitario => prices[i], :cantidad => @amount[i] }) end end end |
#calcular_lifo ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/lifo-pp.rb', line 36 def calcular_lifo for i in 0..@inventario.length - 1 # vamos a recorer el inventario para evaluar el LIFO k = @inventario.length - 1 - i # indice para recorrer primero lo último en ingresar if @unidades_vendidas <= @inventario[k][:cantidad] # en caso que el inventario actual pueda abastecer la venta, entonces... @cogs = @cogs + @unidades_vendidas * @inventario[k][:costo_unitario] # actualizamos el cogs con el costo de ese inventario @inventario[k][:cantidad] = @inventario[k][:cantidad] - @unidades_vendidas # actualizamos la cantidad del inventario @unidades_vendidas = 0 # actulizamos la cantidad de unidades a vender restantes elsif @unidades_vendidas >= 0 && @unidades_vendidas > @inventario[k][:cantidad] # en caso que el inventario actual no pueda abastecer la venta, entonces... @cogs = @cogs + @inventario[k][:cantidad] * @inventario[k][:costo_unitario] # actualizamos el cogs con el costo de ese inventario @unidades_vendidas = @unidades_vendidas - @inventario[k][:cantidad] # actulizamos la cantidad de unidades a vender restantes @inventario[k][:cantidad] = 0 # actulizamos la cantidad del inventario end end end |
#calcular_ventas ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/lifo-pp.rb', line 27 def calcular_ventas for i in 0..@amount.length - 1 if @amount[i] <= 0 @ventas = @ventas + @prices[i] * @amount[i] * -1 # acumulamos los precios de venta @unidades_vendidas = @unidades_vendidas + (-1 * @amount[i]) # acumulamos las cantidades end end end |
#get_utlidad ⇒ Object
cálculo de utilidad luego de LIFO
52 53 54 |
# File 'lib/lifo-pp.rb', line 52 def get_utlidad @ventas - @cogs end |
#print ⇒ Object
56 57 58 |
# File 'lib/lifo-pp.rb', line 56 def print "prices #{@prices} \namount #{@amount}\ninventario #{@inventario}\nventas #{@ventas}\ncogs #{cogs}" end |