Class: LifoPP

Inherits:
Object
  • Object
show all
Defined in:
lib/lifo-pp.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#amountObject

atributos de la clase LifoPP



3
4
5
# File 'lib/lifo-pp.rb', line 3

def amount
  @amount
end

#cogsObject

atributos de la clase LifoPP



3
4
5
# File 'lib/lifo-pp.rb', line 3

def cogs
  @cogs
end

#inventarioObject

atributos de la clase LifoPP



3
4
5
# File 'lib/lifo-pp.rb', line 3

def inventario
  @inventario
end

#pricesObject

atributos de la clase LifoPP



3
4
5
# File 'lib/lifo-pp.rb', line 3

def prices
  @prices
end

#unidades_vendidasObject

atributos de la clase LifoPP



3
4
5
# File 'lib/lifo-pp.rb', line 3

def unidades_vendidas
  @unidades_vendidas
end

#ventasObject

atributos de la clase LifoPP



3
4
5
# File 'lib/lifo-pp.rb', line 3

def ventas
  @ventas
end

Instance Method Details

#calcular_inventario_inicialObject



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_lifoObject



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_ventasObject



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_utlidadObject

cálculo de utilidad luego de LIFO



52
53
54
# File 'lib/lifo-pp.rb', line 52

def get_utlidad
  @ventas - @cogs
end


56
57
58
# File 'lib/lifo-pp.rb', line 56

def print
  "prices #{@prices} \namount #{@amount}\ninventario #{@inventario}\nventas #{@ventas}\ncogs #{cogs}"
end