lifo-pp 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/lifo-pp.rb +59 -0
  3. metadata +43 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: aa21f5cdffa77326efb58c8df530d5a931325369b5896e119faec5e250bf0e8a
4
+ data.tar.gz: d85955cd73aeb5c2a51c1c170b1a05b4f0b228710a16c15e209e9d83f6111983
5
+ SHA512:
6
+ metadata.gz: d5c8880337485ba598ae6da0c8ff08d9eea9e42e66e13c33df712c18346763bbc2f51fe147165e3bb2748b857324a8af39350a56a1d5016d560e86aff8a1b28b
7
+ data.tar.gz: c30a26537fe67bdb30aa99e018b5e748747d772e7b31b4bdc2c855f02843cfed32750c636a520212af7e5868c5e2c8a0e906cdc8eeac859c08cc3049ba70d967
data/lib/lifo-pp.rb ADDED
@@ -0,0 +1,59 @@
1
+ class LifoPP
2
+ # atributos de la clase LifoPP
3
+ attr_accessor :prices, :amount, :inventario, :ventas, :unidades_vendidas, :cogs
4
+
5
+ # constructor de la clase, los parámetros los precios y la unidades de compra/venta
6
+ def initialize(prices, amount)
7
+ @prices = prices # arreglo de los precios
8
+ @amount = amount # arreglo de unidades compra/venta
9
+ @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
10
+ @ventas = 0 # acumulador de las ventas realizadas
11
+ @unidades_vendidas = 0 # acumulador de las unidades vendidas
12
+ @cogs = 0 # costo del stock
13
+ end
14
+
15
+ def calcular_inventario_inicial
16
+ for i in 0..@amount.length - 1
17
+ if @amount[i] > 0
18
+ # actualizamos el inventario (cantidad y consto unitario)
19
+ inventario.push({
20
+ :costo_unitario => 1.0 * prices[i] / @amount[i],
21
+ :cantidad => @amount[i]
22
+ })
23
+ end
24
+ end
25
+ end
26
+
27
+ def calcular_ventas
28
+ for i in 0..@amount.length - 1
29
+ if @amount[i] <= 0
30
+ @ventas = @ventas + @prices[i] # acumulamos los precios de venta
31
+ @unidades_vendidas = @unidades_vendidas + (-1 * @amount[i]) # acumulamos las cantidades
32
+ end
33
+ end
34
+ end
35
+
36
+ def calcular_lifo
37
+ for i in 0..@inventario.length - 1 # vamos a recorer el inventario para evaluar el LIFO
38
+ k = @inventario.length - 1 - i # indice para recorrer primero lo último en ingresar
39
+ if @unidades_vendidas <= @inventario[k][:cantidad] # en caso que el inventario actual pueda abastecer la venta, entonces...
40
+ @cogs = @cogs + @unidades_vendidas * @inventario[k][:costo_unitario] # actualizamos el cogs con el costo de ese inventario
41
+ @inventario[k][:cantidad] = @inventario[k][:cantidad] - @unidades_vendidas # actualizamos la cantidad del inventario
42
+ @unidades_vendidas = 0 # actulizamos la cantidad de unidades a vender restantes
43
+ elsif @unidades_vendidas >= 0 && @unidades_vendidas > @inventario[k][:cantidad] # en caso que el inventario actual no pueda abastecer la venta, entonces...
44
+ @cogs = @cogs + @inventario[k][:cantidad] * @inventario[k][:costo_unitario] # actualizamos el cogs con el costo de ese inventario
45
+ @unidades_vendidas = @unidades_vendidas - @inventario[k][:cantidad] # actulizamos la cantidad de unidades a vender restantes
46
+ @inventario[k][:cantidad] = 0 # actulizamos la cantidad del inventario
47
+ end
48
+ end
49
+ end
50
+
51
+ # cálculo de utilidad luego de LIFO
52
+ def get_utlidad
53
+ @ventas - @cogs
54
+ end
55
+
56
+ def print
57
+ "prices #{@prices} \namount #{@amount}\ninventario #{@inventario}\nventas #{@ventas}\ncogs #{cogs}"
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lifo-pp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Pepe Valdivia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-02-04 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Algoritmo LIFO (Último en entrar, primero en salir)
14
+ email: pepe.valdivia.caballero@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/lifo-pp.rb
20
+ homepage: https://rubygems.org/gems/lifo-pp
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubygems_version: 3.2.30
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: Algoritmo LIFO
43
+ test_files: []