Control de Stock

371 views
Skip to first unread message

integral

unread,
Feb 3, 2016, 11:01:39 AM2/3/16
to Comunidad de Visual Foxpro en Español

Estimados Amigos :

Recurro a ustedes con el fin de pedirles me orienten en el diseño de las tablas para el control de STOCK que se pueda aplicar para cualquier tipo de empresa y a su vez se pueda enlazar con el modulo de facturación...

En principio he creado 3 tablas basicas

Ingresos, Salidas y Stock

Luego de leer algunos casos sobre el tema algunos colegas obtan por hacer sola una tabla Movimientos y claro se podria utilizar instrucciones SQL 

Cual creen ustedes es la menor forma de llevar un Control mas eficiente del STOCK que contemple las devoluciones de productos inclusive entre otras funciones propias y tambien se pueda establecer un Inventario

Agradezco sus comentarios y sugerencias

Saludos,

INTEGRAL

mapner

unread,
Feb 3, 2016, 11:31:14 AM2/3/16
to Comunidad de Visual Foxpro en Español
Integral,

Cuatro Tablas:

Maestro de Artículos
ID
Codigo Artículo
Código Barra
Descripción
Rubro (puede haber subrubros)
Lleva Nº Lote (Si/No)
Lleva Nº Serie (Si/No)
Saldo Inicial
Fecha Saldo Inicial
(puede llevar más campos o sub tablas ...)
...

Maestro Depósitos
ID
Descipción
...

Movimientos Stock Encabezado
ID
Fecha / Hora
Tipo de Movimiento: 'I' Ingreso / 'E' Egreso / 'T' Transferencia entre Depósitos
ID Depósito Origen (si lo hubiese) (para tipos 'E' y 'T')
ID Depósito Destino (si lo hubiese) (para tipos 'I' y 'T')
Comentario
....

Movimientos Stock Detalle
ID
ID Movimientos Stock Encabezado
ID Artículo
Cantidad
Nº Lote (si corresponde)
Nº Serie (si corresponde)

El Stock actual de un artículo no lo llevo en un campo sino que lo saco por consulta a los movimientos registrados
SELECT SUM(...) FROM ...

Este es un primer enfoque que se lo puede ir complejizando

Saludos

AfpSistemas

unread,
Feb 3, 2016, 11:49:44 AM2/3/16
to publice...@googlegroups.com

Interesante, aporto que en mi caso si llevo el Stock en el maestro de Artículos ( creo que aporta sencillez en algunos procesos, como por ejemplo el control dentro de la facturación ) dato que además me sirve para cruzar con la tabla de movimientos y detectar cualquier “error” en el Sistema.

 

Saludos,

Fernando.

Arnaldo Toledano

unread,
Feb 3, 2016, 12:43:38 PM2/3/16
to publice...@googlegroups.com
En mi caso utilizo tres.
Tengo en unos clientes el manejo de deposito, y tengo una cuarta tabla para el deposito.

Creo que lo fundamental radica en una tabla para registrar los ingresos y en la tabla de
detalle de factura, registrar la salida.

Un elemento que siempre me dio excelentes resultados, es que al iniciar el sistema,
al cargar el STOCK, lo hago como si fuera un INGRESO COMÚN y CORRIENTE.
Utilizo como PROVEEDOR, uno denominado AJUSTE DE STOCK.
De esta manera, puedo reconstruir el Stock actual corriendo un form que suma y resta los
ingresos y los egresos respectivamente.
Ademas de darme el Stock a una determinada FECHA.

Arnaldo Toledano

Antonio Meza

unread,
Feb 3, 2016, 1:40:50 PM2/3/16
to Comunidad de Visual Foxpro en Español
Hay muchas formas, y todas son validas, separando por tablas de tipos de movimiento, en una sola tabla de movimientos (la que uso),

El principal error que he visto de diseño de un sistema de inventarios con facturación es que las facturas las relacionan directamente con el Stock, en mi caso genero tickets de ventas que son los que directamente afectan el inventario, y al facturar tengo la opción de imprimir la factura con detalle de artículos, haciendo mención a los tickets anexos, etc.

En cuanto al saldo inicial se ingresa como un movimiento de inventario, este lleva una fecha, y para los movimientos hay un catalogo donde están por mencionar uno, saldo inicial, compra, venta, devoluciones, ajuste de entrada, ajuste de salida, etc.

En diseño de base de datos RELACIONALES, hay que tratar de cumplir con las tres primeras formas normales, sin llegar a las exageraciones desde luego. con ello aseguramos que nuestros conjuntos de datos podrán ser consultados de la forma que se necesite sin que se compliquen, al no usar al menos estas tres formar normales, pues veremos infinidad de consultas en el foro preguntando como armar un Select porque no cumple estas reglas.

saludos
Antonio Meza

Carlos Miguel FARIAS

unread,
Feb 3, 2016, 3:53:43 PM2/3/16
to Grupo Fox
Un buen control de stock (simple) debería tener una tabla donde se reflejaran todo tipo de entrada y salida.
Normalmente, del stock, entran unidades por inventario inicial (operación contable de inicio de periodo), remitos de proveedores, factura-remito de provedores, devoluciones de ventas, diferencias de inventario positivas y salen por diferencias de inventario negativas (perdidas, robo, obsolescencia, etc.), devoluciones de compras, remitos a clientes, facturas-remitos a clientes. y alguna más que pueda ser de uso en la empresa.
Si la empresa es de producción (fábrica), es importante llevar el estado de los productos (deposito general, deposito de fábrica, transformación en otro tipo de producto (intermedio o final) etc.
Teniendo las entradas como positivas y las salidas como negativas, una simple suma te da el stock actual.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe.

Antonio Meza

unread,
Feb 3, 2016, 4:25:34 PM2/3/16
to Comunidad de Visual Foxpro en Español
Hola Miguel, 

Desconozco si es buena practica o no, pero partiendo de la Contabilidad no existen pólizas contables con saldos negativos, para ello existe la naturaleza de las cuentas contables (Deudora y acreedora).

En México tampoco facturas con importes negativos, para ello están clasificadas en Ingreso y Egreso, 

Los mismos principios aplico en mis sistemas, un catalogo que define si resta, suma o no realiza afectación alguna, y de esta forma evito que el usuario capture cantidades negativas en los registros (movimientos de inventarios). 

En los reportes desde luego que ya es otra historia.

saludos
Antonio Meza

Arnaldo Toledano

unread,
Feb 3, 2016, 4:29:20 PM2/3/16
to publice...@googlegroups.com
Creo que Miguel se refiere al movimiento de Stock.
No a los movimientos contables con valores negativos.

Por ejemplo una NOTA DE CRÉDITO PROPIA produce un movimiento POSITIVO en el Stock.
Una FACTURA PROPIA es un movimiento NEGATIVO.


Arnaldo Toledano

Antonio Meza

unread,
Feb 3, 2016, 4:35:53 PM2/3/16
to Comunidad de Visual Foxpro en Español
Creo que no me explique, lo que trato de decir es que desconozco si es una buena practica o sea valido o no sea valido el usar cantidades negativas en los registros, en mi caso no uso cantidades negativas, utilizo catálogos para saber si resto, sumo o no aplico nada, y puse como ejemplo la Contabilidad y la Facturación que en sus registros no se capturan cantidades negativas.

saludos
Antonio Meza

Idalberto Gonzalez

unread,
Feb 3, 2016, 6:09:18 PM2/3/16
to Comunidad de Visual Foxpro en Español
Creo que la mejor forma es utilizar basicamente tres tablas, cabecera de movimientos, detalle de movimimientos y existencia de articulos.
En la cabecera pongo el resumen del movimiento (Cliente, monto, fecha, impuestos, descuentos, etc),
en la tabla detalle pongo precisamente el detalle de los articulos afectados en ese movimiento de inventario(codigo,descripcion,costo y precio unitario,descuento,impuestos,unidad,factor de inventario,etc) y en un campo, que se puede llamar por ejemplo "tipo" pongo 1 o 2  o  "E" o "S" para definir si se trata de un movimiento de entrada o salida para poder darle seguimiento al historial de movimientos de cada producto. En la tabla de existencia pongo el codigo del producto al momento de crear el producto en el maestro de productos y luego en la medida que se van registrando movimientos de inventario de entrada o salida se le va sumando o restando a la cantidad existente en ese momento y asi cuando el usuario requiera cualquier informacion va a tener todo actualizado en cualquier momento

Idalberto Gonzalez

unread,
Feb 3, 2016, 6:15:01 PM2/3/16
to Comunidad de Visual Foxpro en Español
Me olvide señalar que antes de todo eso se deben crear los formularios con los diferentes movimientos de inventario y en las tablas cabecera y detalle se debe poner el codigo del formulario y el numero del movimiento que para cada formulario de entrada o salida es una secuencia diferente y ambas tablas tendran en comun los campos de documento y numero

Arnaldo Toledano

unread,
Feb 3, 2016, 7:37:41 PM2/3/16
to publice...@googlegroups.com
Yo NUNCA utilice valores NEGATIVOS.
Siempre trate a la contabilidad como una suma algebraica donde el signo lo da la columna
DebeHABER
Segun su valor
 "D"=   1
 "H"=  -1


Arnaldo Toledano

Víctor Hugo Espínola Domínguez

unread,
Feb 4, 2016, 4:56:31 PM2/4/16
to publice...@googlegroups.com

Daniel Sánchez

unread,
Feb 7, 2016, 8:27:09 AM2/7/16
to Comunidad de Visual Foxpro en Español
Hola Integral, en mi caso tengo una tabla catalogo donde esta todas las definiciones de todos los productos con sus características y demás datos necesarios, una tabla de maestro donde se registran los productos que se mueven o tiene un almacén, ya que puede haber muchos almacenes y no todos tener los mismos productos, en esta tabla ademas existe un campo almacén para diferenciar un almacén del otro, así con este listado se que productos maneja cada almacén, además de manejar un campo de referencia rápida del stock en ese momento por cada almacén, la cual se actualiza cada que se que hace una operación de entrada/salida. 

Ahora para registrar los movimientos tengo una tabla kardex donde almaceno todas las operaciones de entrada y salida de los productos los cuales esta definidos en el catálogo, en mi caso tengo un campo para las entradas y otro para la salidas.

Una cosa importante, en mi caso no trabajo con notación decimal para el caso de las fracciones, ya que esta me limita a trabajar todos los datos en base a 10, ya sean docenas, pares, cientos y cualquier otra medida con avances o incrementos cada 10, en mi caso lo trabajo unidades en un campo y fracciones en otro, así puedo manejar cualquier medida, un ejemplo en notación decimal

Presentacion     Entero.Decimal
1 docena              1.0
1/2 docena           0.5
1/4 docena           0.25
1 Hora                 1.0
1/2 hora               0.5
1/4 hora               0.25

En el caso de manejar las fracciones en un campo separado y no en decimal si no como incremento de fracciones en el caso de la docena en base 12 y para la hora en base 60

Presentacion     Entero.Decimal
1 docena              1.0
1/2 docena           0.6
1/4 docena           0.3
1 Hora                 1.0
1/2 hora               0.30
1/4 hora               0.15

Para el primer caso el sistema cada 12 fracciones incrementa o decrementa una unidad, y en el caso de la hora cada 60 fracciones, de esta manera se muestra la información tal como es en la vida real.
Lo que si conlleva hacer unos pasos más para realizar los cálculos correctos del stock pero nada complicado, lo que si hay que indicar en el catálogo de productos la cantidad de fracciones que manejará el producto para poder realizar su cálculo.

Bueno para el tema de tablas de ventas, compra, producción o movimientos de almacén se trabaja con tablas cabecera-detalle, puedes optar por una sola tabla para todas esas operaciones, o separado para cada una, en mi caso son tablas separadas ya que la cabecera de cada una tiene información diferente.

Como te comente en tabla de maestro manejo unos campos que mantiene una referencia del stock actual, estos campos se actualizan cada vez que se hace una operación o movimiento en el kardex, para eso tengo un procedimiento que realiza una sumatoria de los movimientos en el kardex del producto en cuestión del cual obtengo el stock y este valor es actualizado en dichos campos, en un motor de bd como sqlserver u otro no notaras el proceso en cuestión, pero si es en una dbf con multiples usuarios accediendo la cosa cambia, de esta manera siempre tengo el stock disponible y actualizado.

En resumen:
Tablas: catalogo, maestro, kardex

Saludos
--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047 RPM #948615385
Trujillo - Perú

P  Sugerimos no imprimir este e-mail a menos que sea absolutamente necesario. Protejamos el medio ambiente.

Carlos Miguel FARIAS

unread,
Feb 9, 2016, 8:56:04 AM2/9/16
to Grupo Fox
De un texto escrito, es un poco difícil entender si el sistema está normalizado o no.
Pero, a mi entender, el hecho de que tengas columnas separadas para entradas y para salidas, es como si hubiese pasado una planilla de calculo a la bd y no normalizado.
Con el esquema planteado, para saber el stock de un producto, debes sumar dos columnas y luego sacar la diferencia. Y además, por cada movimiento, estás desperdiciando el espacio de una cantidad (cuando es entrada, la salida está en blanco, nulo, 0?).
Que cuando lo consultes, en el SELECT generes dos columnas me parece bien, porque un select es una vista temporal de la bd.
En fin cada cual con su librito. Lo importante es leerse un librito de conceptos básicos de normalización.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe.
Reply all
Reply to author
Forward
0 new messages