Calculo de Kardex fisico valorado

19/10/2006 - 19:08 por jcac | Informe spam
Hola lista, estoy con algo que me esta rompiendo la cabeza y bueno estoy
pensando en cambiar lo que ya existe en el programa, primero les comentare
las estructuras que tengo:

Tabla de kardex
(Producto int, TipoMovimiento int, IngresoF decimal (14,4), SalidaF
decimal(14,4), SaldoF decimal(14,4), CostoPromedio decimal(20, 10),
CostoAdquisicion decimal(20, 10), SaldoValorado decimal(20, 10),
FechaMovimiento Datetime, Orden Int)

En esta tabla se guardan todos los movimientos que se produzcan es decir si
hubo una venta , compras, transferencia y demas.

Tabla de saldos
(Producto int, FechaSaldo datetime, SaldoF decimal(14,4), SaldoValorado
decimal(20, 10), CostoPromedio decimal(20, 10))

En esta tabla se almacenan los saldos de cada producto por una fecha, es
decir si en un mismo dia compre de un producto 10 piezas y vendi 5, entonces
me almacena un saldo de 5.

Lo que me sucede es cuando valorizan las compras realizadas ya existen
ventas hechas, entonces el programa tiene como un reproceso de calculo de
los Costos y esto lo hace es sacar todos los productos que se han tenido
movimiento entre la fecha de esta compra valorizada y el utlimo movimiento
que haya, entonces este conjunto de datos los empieza a procesar no en
scroll en el servidor pero si en un recordset en el cliente.

Les adjunto unos datos de las dos tablas

Kardex
Producto TipoMovimiento IngresoF SalidaF SaldoF CostoPromedio
CostoAdquision SaldoValorado FechaMovimiento Orden
1 1 100 100 1.5000000000 1.5000000000 150.0000000000 20060101 1
Ingreso por compras
1 14 10 90 1.5000000000 1.5000000000 135.0000000000 20060305 2 Salida
por ventas
1 13 4 94 1.5000000000 1.5000000000 141.0000000000 20060308 3
Devolucion de ventas
1 1 200 294 1.8401360544 2.0000000000 541.0000000000 20060410 4
Ingreso por compras
1 14 5 289 1.8401360544 1.8401360544 531.7993197279 20060420 5 Salida
por ventas
1 14 200 89 1.8401360544 1.8401360544 163.7721088435 20060420 6
Salida por ventas
1 1 300 389 1.8091827991 1.8000000000 703.7721088435 20060510 7
Ingreso por compras
1 1 200 589 2.0437557026 2.5000000000 1203.7721088435 20060510 8
Ingreso por compras
1 13 3 592 2.0427238463 1.8401360544 1209.2925170068 20060610 9
Devolucion de ventas

Saldos
Producto FechaSaldo SaldoF SaldoValorado CostoPromedio
1 20060101 100 150.0000000000 1.5000000000
1 20060305 90 135.0000000000 1.5000000000
1 20060308 94 141.0000000000 1.5000000000
1 20060410 294 541.0000000000 1.8401360544
1 20060420 89 163.7721088435 1.8401360544
1 20060610 592 1209.2925170068 2.0427238463


Les explico un poco el proceso que hace si por ejemplo se valoriza la
primera compra entonces de alli hasta el ultimo movimiento hace el calculo
de costo promedio, como es la primera compra el costo de adquision es igual
al costo promedio, en el caso de las ventas hace uso del ultimo costo
promedio que haya, y en el caso de las devoluciones hacen uso del costo
promedio con el que se realizo la venta, todo esto que les describo se hace
via programa, no se hace en sql server y quiero buscar una forma de poderlo
hacer desde el sql server o es que como esta es la mejor forma, ya que si
tenemos un producto que tiene varios movimientos este proceso se demora
demasiado y a veces me produce bloqueos.

Espero haberme explicado de la mejor forma.

Saludos y esperando sus comentarios y aportaciones

Juan Carlos
 

Leer las respuestas

#1 Maxi
20/10/2006 - 22:10 | Informe spam
Hola, te pediria los Script de las tablas, algunos datos de ejemplo y el
resultado final como debe quedar, tambien porfavor metelo todo en un .txt
porque el correo lo deforma :S


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"jcac" escribió en el mensaje
news:%23$
Hola lista, estoy con algo que me esta rompiendo la cabeza y bueno estoy
pensando en cambiar lo que ya existe en el programa, primero les comentare
las estructuras que tengo:

Tabla de kardex
(Producto int, TipoMovimiento int, IngresoF decimal (14,4), SalidaF
decimal(14,4), SaldoF decimal(14,4), CostoPromedio decimal(20, 10),
CostoAdquisicion decimal(20, 10), SaldoValorado decimal(20, 10),
FechaMovimiento Datetime, Orden Int)

En esta tabla se guardan todos los movimientos que se produzcan es decir
si hubo una venta , compras, transferencia y demas.

Tabla de saldos
(Producto int, FechaSaldo datetime, SaldoF decimal(14,4), SaldoValorado
decimal(20, 10), CostoPromedio decimal(20, 10))

En esta tabla se almacenan los saldos de cada producto por una fecha, es
decir si en un mismo dia compre de un producto 10 piezas y vendi 5,
entonces me almacena un saldo de 5.

Lo que me sucede es cuando valorizan las compras realizadas ya existen
ventas hechas, entonces el programa tiene como un reproceso de calculo de
los Costos y esto lo hace es sacar todos los productos que se han tenido
movimiento entre la fecha de esta compra valorizada y el utlimo movimiento
que haya, entonces este conjunto de datos los empieza a procesar no en
scroll en el servidor pero si en un recordset en el cliente.

Les adjunto unos datos de las dos tablas

Kardex
Producto TipoMovimiento IngresoF SalidaF SaldoF CostoPromedio
CostoAdquision SaldoValorado FechaMovimiento Orden
1 1 100 100 1.5000000000 1.5000000000 150.0000000000 20060101 1
Ingreso por compras
1 14 10 90 1.5000000000 1.5000000000 135.0000000000 20060305 2
Salida por ventas
1 13 4 94 1.5000000000 1.5000000000 141.0000000000 20060308 3
Devolucion de ventas
1 1 200 294 1.8401360544 2.0000000000 541.0000000000 20060410 4
Ingreso por compras
1 14 5 289 1.8401360544 1.8401360544 531.7993197279 20060420 5
Salida por ventas
1 14 200 89 1.8401360544 1.8401360544 163.7721088435 20060420 6
Salida por ventas
1 1 300 389 1.8091827991 1.8000000000 703.7721088435 20060510 7
Ingreso por compras
1 1 200 589 2.0437557026 2.5000000000 1203.7721088435 20060510 8
Ingreso por compras
1 13 3 592 2.0427238463 1.8401360544 1209.2925170068 20060610 9
Devolucion de ventas

Saldos
Producto FechaSaldo SaldoF SaldoValorado CostoPromedio
1 20060101 100 150.0000000000 1.5000000000
1 20060305 90 135.0000000000 1.5000000000
1 20060308 94 141.0000000000 1.5000000000
1 20060410 294 541.0000000000 1.8401360544
1 20060420 89 163.7721088435 1.8401360544
1 20060610 592 1209.2925170068 2.0427238463


Les explico un poco el proceso que hace si por ejemplo se valoriza la
primera compra entonces de alli hasta el ultimo movimiento hace el calculo
de costo promedio, como es la primera compra el costo de adquision es
igual al costo promedio, en el caso de las ventas hace uso del ultimo
costo promedio que haya, y en el caso de las devoluciones hacen uso del
costo promedio con el que se realizo la venta, todo esto que les describo
se hace via programa, no se hace en sql server y quiero buscar una forma
de poderlo hacer desde el sql server o es que como esta es la mejor forma,
ya que si tenemos un producto que tiene varios movimientos este proceso se
demora demasiado y a veces me produce bloqueos.

Espero haberme explicado de la mejor forma.

Saludos y esperando sus comentarios y aportaciones

Juan Carlos

Preguntas similares