Saludos estimados compañeros, colegas y lectores.
Como siempre primero se debe de agradecer a todos aquellos quienes desinteresadamente ofrecen sus conocimientos y opiniones a travez de este foro, ayudando y despejando dudas sobre Firebird y mas..
Solicito ayuda con lo siguiente:
Estoy realizando un programa de calculo de inventarios y mi problema principal radica en como obtener el inventario de los articulos mes a mes para mostrarlo en un reporte mensual, dicho reporte listara de cada uno de los productos el stock actual del mismo.
Premisas:
1 - Evitar consumir recursos leyendo todos los registros del kardex desde el origen de los tiempos hasta la fecha solicitada para el inventario
2 - Los reportes mensuales de inventario deben poder configurarse seleccionando el mes afectado de una lista desplegable, esto significa que el usuario podra visualizar reportes de inventario de meses anteriores.
Ejemplos de estructuras de tablas
TBL_PRODUCTOS: (ID_PRODUCTO (PK), COD_PRODUCTO, DESCRIPCION)
TBL_KARDEX: (ID_MOV (PK), TIPO_MOV (ENTRADA/SALIDA), ID_REPUESTO (FK), CANTIDAD)
Como supondran la tabla KARDEX almacena cada movimiento, ya sea de ENTRADA o SALIDA
Para obtener el Stock Actual del producto basta con aplicar: SUMA(ENTRADAS) - SUMA(SALIDAS)
Pero, que pasa cuando los registros son millones?, leer todos los registros para obtener el stock actual, no es una buena practica verdad?
Para ello cree una nueva tabla llamada TBL_STOCKPREVIO: (ID_STOCK(PK), ULTIMA_ACTUALIZACION, ID_REPUESTO(FK), CANTIDAD_STOCK)
que almacena por cada producto el Stock Actual del mismo, el programa actualiza esta tabla cada XX tiempo, asi cuando solicito un Stock Actual de un producto, primero consulto esta tabla, obtengo CANTIDAD_STOCK y le sumo el (Total de Entradas - Total de Salidas) de la tabla KARDEX de aquellos registros que se insertaron luego de ULTIMA_ACTUALIZACION.
De esta forma se ahorran recursos de sistema y la RESPUESTA a una consulta del Stock Actual de un producto es practicamente inmediata.
Ahora, mi duda es:
Como puedo hacer esto mismo (o algo mejor) pero con los inventarios mes a mes, cumpliendo (de ser posible) las premisas anteriormente mencionadas?
Se que aqui hay muchas personas con basta experiencia que quizas ya se han topado con esta situacion, asi que busco su consejo para la solucion o si debo replantear la solucion por completo.
Cualquier sugerencia, aporte, idea es bien recibida.