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.
- checksums.yaml +7 -0
- data/lib/lifo-pp.rb +59 -0
- 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: []
|