Firebird21

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Pronto un nuevo post en tu Blog favorito: firebird21.Wordpress.com

Autor Tema: Duda sobre mejor practica para obtener inventarios mes a mes  (Leído 413 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jefferson.quintero

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 15
    • Ver Perfil
Duda sobre mejor practica para obtener inventarios mes a mes
« en: Noviembre 15, 2017, 06:07:06 pm »

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.



« Última modificación: Noviembre 15, 2017, 06:19:27 pm por jefferson.quintero »
En línea


Walter

  • Administrator
  • Megabyte
  • *****
  • Karma: +16/-0
  • Mensajes: 490
    • Ver Perfil
Re:Duda sobre mejor practica para obtener inventarios mes a mes
« Respuesta #1 en: Noviembre 15, 2017, 07:55:57 pm »

Bueno, en mi caso, hago un cierre diariamente, entonces por cada producto tengo 365 filas en cada año. Si eso es mucho, entonces podrías hacer semanalmente para tener 52 filas por año o mensualmente para tener 12 filas por año.

Entonces, en tu tabla TBL_STOCKPREVIO tendrías una columna para la fecha, y cada vez que cierres introducirás la fecha en esa columna. Eso implica que cada cierre insertará una fila a tu tabla por cada producto que tengas.

En mi caso, hay un stored procedure que se ejecuta automáticamente en el momento predeterminado, por ejemplo a las 21:00, hora en que ya nadie usa la Base de Datos pero la hora del cierre es configurable.

Entonces, a las 21:00 de cada día se ejecuta el stored procedure el cual se encarga de colocar en la tabla (TBL_STOCKPREVIO sería en tu caso) el saldo de cada producto que se compró o que se vendió ese día (SALDO = COMPRAS - VENTAS).

De esa manera se puede saber el stock de cada producto en cualquier fecha. Simplemente al stock inicial del producto se le suman todas las compras y se le restan todas las ventas, hasta llegar al día que nos interesa (bueno, en realidad en mi caso no se trata solamente de compras y de ventas, también están incluidas las devoluciones, los hurtos, los robos, y todo lo que afecte a la cantidad en stock de los productos).

Saludos.

Walter.


En línea

jefferson.quintero

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 15
    • Ver Perfil
Re:Duda sobre mejor practica para obtener inventarios mes a mes
« Respuesta #2 en: Noviembre 21, 2017, 02:13:14 pm »

Gracias estimado Walter.

Puse en practica tus sugerencias, tomando la premisa de que si tu en uno de tus programas realizas la misma logica de guardar un stock previo, es porque es una de las formas correctas de hacerlo.

Finalmente me incline por realizarlo 1 vez por mes, ya que analizando un poco los datos actuales, no todos los articulos  presentan movimientos diarios (en promedio 9 de 120 articulos se afectan).

En cambio si lo realizo una vez por mes, el tiempo de respuesta al leer un maximo de 300 registros (siendo tremendamente pesimistas) para calcular un stock de articulo es mas que bueno.

Muchas gracias por tus acertados comentarios..
sls.
En línea
 

Enlaces

Blog de Firebird21 WebMaster