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