Calcular Costo Promedio
Publicado por Jorge (19 intervenciones) el 23/01/2018 06:34:25
Buenos días a todos.
Esta es la cosa, hace ya unas semanas que trato de resolver esto pero ya estoy nublado y no se me ocurre nada
Hago una consulta donde obtengo la Cantidad de Saldo de la siguiente forma:
el cálculo de la cantidad de Saldo es fácil, es algo así
CantEnt - CantSal +
(Subconsulta:
Suma(CantEnt) - Suma(CantSal) donde SubCons.Prod=Consulta.Prod y SubCons.Ord<Consulta.Ord)

ordenado por PROD y por ORD (en el ejemplo solo se ve un producto, pero pueden ser varios) y claro, el saldo se calcula por producto y ORD es el orden en que van a ser contabilizados (en realidad es un número más largo y complejo, pero para fines didácticos le pongo 0,1,2,3,4,... etc)
Ahora al asunto,
A partir de la consulta obtenida debo calcular el saldo Valorizado, y debería quedar de la siguiente forma

El problema es, que debo calcular el costo promedio y los saldos valorizados dependiendo del resultado anterior (o sea del ORD anterior)
donde
- CostoUnSal es el CostoUnSaldo Anterior (es decir el Costo Promedio Anterior)
- CostoTotSal es CantSal * CostoUnSal (o sea que para esto debo saber el Costo Promedio Anterior)
- CostoTotSaldo es CostoTotSaldo Anterior + CostoTotEnt - CostoTotSal
- CostoUnSaldo (o sea Costo Promedio) es CostoTotSaldo / CantSaldo
- II es Inventario Inicial, CP es Compra, VT es Venta
ufff, bueno si lo grafico sería algo así:

entonces se trata de calcular valores según el valor anterior
**********************************************
Para no tener que poner toda la consulta, la pondré como tabla, ordenada por ORD
Tabla Saldos:
Insertar datos de prueba
Seguiré intentando
Gracias.
Esta es la cosa, hace ya unas semanas que trato de resolver esto pero ya estoy nublado y no se me ocurre nada
Hago una consulta donde obtengo la Cantidad de Saldo de la siguiente forma:
el cálculo de la cantidad de Saldo es fácil, es algo así
CantEnt - CantSal +
(Subconsulta:
Suma(CantEnt) - Suma(CantSal) donde SubCons.Prod=Consulta.Prod y SubCons.Ord<Consulta.Ord)

ordenado por PROD y por ORD (en el ejemplo solo se ve un producto, pero pueden ser varios) y claro, el saldo se calcula por producto y ORD es el orden en que van a ser contabilizados (en realidad es un número más largo y complejo, pero para fines didácticos le pongo 0,1,2,3,4,... etc)
Ahora al asunto,
A partir de la consulta obtenida debo calcular el saldo Valorizado, y debería quedar de la siguiente forma

El problema es, que debo calcular el costo promedio y los saldos valorizados dependiendo del resultado anterior (o sea del ORD anterior)
donde
- CostoUnSal es el CostoUnSaldo Anterior (es decir el Costo Promedio Anterior)
- CostoTotSal es CantSal * CostoUnSal (o sea que para esto debo saber el Costo Promedio Anterior)
- CostoTotSaldo es CostoTotSaldo Anterior + CostoTotEnt - CostoTotSal
- CostoUnSaldo (o sea Costo Promedio) es CostoTotSaldo / CantSaldo
- II es Inventario Inicial, CP es Compra, VT es Venta
ufff, bueno si lo grafico sería algo así:

entonces se trata de calcular valores según el valor anterior

**********************************************
Para no tener que poner toda la consulta, la pondré como tabla, ordenada por ORD
Tabla Saldos:
1
CREATE TABLE Saldos( Ord int, Prod varchar(100), Mov char(1), CantEnt numeric(20,8), CostoUnEnt numeric(20,8), CostoTotEnt numeric(20,8), CantSal numeric(20,8), CantSaldo numeric(20,8))
Insertar datos de prueba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (0, 'Producto 1', 'II' , 232, 20.8575, 4838.94, NULL, 232)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (1, 'Producto 1', 'VT' , NULL, NULL, NULL, 116, 116)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (2, 'Producto 1', 'VT' , NULL, NULL, NULL, 116, 0)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (3, 'Producto 1', 'CP' , 232, 20.9175, 4852.86, NULL, 232)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (4, 'Producto 1', 'VT' , NULL, NULL, NULL, 111, 121)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (5, 'Producto 1', 'CP' , 116, 20.9025, 2424.69, NULL, 237)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (6, 'Producto 1', 'CP' , -28, 20.91, -585.48, NULL, 209)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (7, 'Producto 1', 'VT' , NULL, NULL, NULL, 116, 93)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (8, 'Producto 1', 'VT' , NULL, NULL, NULL, -120, 213)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (9, 'Producto 1', 'CP' , 116, 21.2025, 2459.49, NULL, 329)
INSERT INTO Saldos(Ord, Prod, Mov, CantEnt, CostoUnEnt, CostoTotEnt, CantSal, CantSaldo)
VALUES (10, 'Producto 1', 'VT' , NULL, NULL, NULL, 116, 213)
Seguiré intentando

Gracias.
Valora esta pregunta


0