lifo-pp 0.0.0 → 0.0.1

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fifo-pp.rb +52 -0
  3. data/lib/lifo-pp.rb +2 -2
  4. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa21f5cdffa77326efb58c8df530d5a931325369b5896e119faec5e250bf0e8a
4
- data.tar.gz: d85955cd73aeb5c2a51c1c170b1a05b4f0b228710a16c15e209e9d83f6111983
3
+ metadata.gz: 9b16f602be394e6098fe0ea7e23b7c54d23c5ce30e4a2ae00f1aaa5545d4e4a4
4
+ data.tar.gz: 193f3d425459f1fc49e095f1976c1dc01c53fd2f90d28be6f8138a47715685fb
5
5
  SHA512:
6
- metadata.gz: d5c8880337485ba598ae6da0c8ff08d9eea9e42e66e13c33df712c18346763bbc2f51fe147165e3bb2748b857324a8af39350a56a1d5016d560e86aff8a1b28b
7
- data.tar.gz: c30a26537fe67bdb30aa99e018b5e748747d772e7b31b4bdc2c855f02843cfed32750c636a520212af7e5868c5e2c8a0e906cdc8eeac859c08cc3049ba70d967
6
+ metadata.gz: 61661d44ffd2a6c0771e6390846a65a56618391bcafc94e53600ee01f9e305f260330a018e6ed09093d9456b8a1c64045b33de47b53d9366a702638aaafaf068
7
+ data.tar.gz: 751a3a89ae3396b440ca82548af594ff27d28dbc735888b47a458faf948687b26d6f8859bc42e62fde0cd1069cdda4ff6b4676f9db537bfc81895a55f38aa860
data/lib/fifo-pp.rb ADDED
@@ -0,0 +1,52 @@
1
+ class FifoPP
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_fifo
16
+ for i in 0..@amount.length - 1 # vamos a iterar los arreglos
17
+ if @amount[i] > 0 # si el número es positivo, es un ingreso de inventario
18
+ # ingreso
19
+ inventario.push({ # agregamos el ingreso de material con el costo unitario del mismo
20
+ :costo_unitario => prices[i],
21
+ :cantidad => @amount[i]
22
+ })
23
+ else # si el número es negativo, vamos a descontar del inventario existente
24
+ # venta
25
+ cantidad = @amount[i]
26
+ 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
27
+ if (-1 * cantidad) > @inventario[k][:cantidad] # en caso que la cantidad a descontar sea mayor a la existencia del inventario que primero ingresó
28
+ @cogs = @cogs + @inventario[k][:cantidad] * @inventario[k][:costo_unitario] # en caso que se tenga en el inventario que ingresó primero, se descuenta
29
+ if @inventario[k][:cantidad] > 0
30
+ cantidad = cantidad + @inventario[k][:cantidad] # en caso que se tenga en el inventario que ingresó sigiuente, se descuenta
31
+ @inventario[k][:cantidad] = 0 # en caso que se tenga en el inventario que ingresó primero se quedó sin inventario
32
+ end
33
+ else # en caso que se tenga en el inventario que ingresó primero, se descuenta
34
+ @cogs = @cogs + (-1 * cantidad) * @inventario[k][:costo_unitario] # calculamos el cogs de del descuento
35
+ @inventario[k][:cantidad] = @inventario[k][:cantidad] + cantidad # actualizamos el inventario
36
+ cantidad = 0
37
+ end
38
+ end
39
+ @ventas = @ventas + @prices[i] * @amount[i] * -1
40
+ end
41
+ end
42
+ end
43
+
44
+ # cálculo de utilidad luego de FIFO
45
+ def get_utlidad
46
+ @ventas - @cogs
47
+ end
48
+
49
+ def print
50
+ "prices #{@prices} \namount #{@amount}\ninventario #{@inventario}\nventas #{@ventas}\ncogs #{cogs}"
51
+ end
52
+ end
data/lib/lifo-pp.rb CHANGED
@@ -17,7 +17,7 @@ class LifoPP
17
17
  if @amount[i] > 0
18
18
  # actualizamos el inventario (cantidad y consto unitario)
19
19
  inventario.push({
20
- :costo_unitario => 1.0 * prices[i] / @amount[i],
20
+ :costo_unitario => prices[i],
21
21
  :cantidad => @amount[i]
22
22
  })
23
23
  end
@@ -27,7 +27,7 @@ class LifoPP
27
27
  def calcular_ventas
28
28
  for i in 0..@amount.length - 1
29
29
  if @amount[i] <= 0
30
- @ventas = @ventas + @prices[i] # acumulamos los precios de venta
30
+ @ventas = @ventas + @prices[i] * @amount[i] * -1 # acumulamos los precios de venta
31
31
  @unidades_vendidas = @unidades_vendidas + (-1 * @amount[i]) # acumulamos las cantidades
32
32
  end
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lifo-pp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pepe Valdivia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-04 00:00:00.000000000 Z
11
+ date: 2022-02-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Algoritmo LIFO (Último en entrar, primero en salir)
14
14
  email: pepe.valdivia.caballero@gmail.com
@@ -16,6 +16,7 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/fifo-pp.rb
19
20
  - lib/lifo-pp.rb
20
21
  homepage: https://rubygems.org/gems/lifo-pp
21
22
  licenses: