Armado de Kardex o Historial de Ventas

884 views
Skip to first unread message

pablo b(La Pampa)

unread,
Sep 9, 2011, 10:38:18 AM9/9/11
to Comunidad de Visual Foxpro en Español
Hola Foro, bueno despues de las consulta que hice sobre como podria
hacer un historial de ventas y seguimiento de los productos, tuve la
sugerencia de hacer un Kardex, al respecto tuve varias opciones y la
que mas me gusto de acuerdo a lo que lei o parece mas facil de
entender para el usuario que va a usar la aplicacion es la que me dio
Walter Ojeda.
Bueno ahora el tema es que yo le puedo agregar a todas la tablas que
voy creando en mysql un campo que diga tipo de movimiento para despues
poder armar el kardex, pero mi duda o consulta es como hago o como se
hacer mejor dicho poder ir recorriendo tabla por tabla de mysql y
encontrando ese articulo y asi poder trasladarlo a un cursror temporal
para despues mostrar los datos en un grid???. No seria mas facil o es
asi como hace la de crear un tabla en mysql que se llame por ejemplo
kardex y ahi dentro creo los campos necesarios que despues voy a
consultar y ya directamente me los muestre en un grid, entiendo que
esta tabla con el tiempo va a ser enorme por que se acentarian todos
los registros de movimientos de cada articulo por cada movimientos,en
poquisimo tiempo es enorme, por eso consulto por la primera opcion la
de recorrer tabla por tabla y que de ahi vaya pasando los datos a un
cursor temporal o uds como documentan esa informacion para despues
poder ver.

Muchas Gracias, perdon por tanta molestia pero quiero arrancar lo mas
derecho digamos con mysql porque veo que despues cambiar algo seria
muy dificil

Pablo

Walter R. Ojeda Valiente

unread,
Sep 9, 2011, 4:02:45 PM9/9/11
to publice...@googlegroups.com
Hola Pablo

Dependiendo de la cantidad de movimientos que tenga tu empresa por supuesto que podrías llegar a tener millones de filas en tu tabla, pero eso es algo normal y totalmente manejable. Puedo asegurarte que hay empresas mucho más grandes que la que estás informatizando que usan tablas SQL.

La idea es tener 2 tablas (y solamente 2 tablas)

- Una tabla cabecera, donde registras el identificador, el tipo de movimiento (compra, venta, devolución, etc.), la fecha del movimiento, el código del cliente o del proveedor, el tipo de documento, el número del documento, etc.
- Una tabla de detalles, donde registras el identificador, el código del producto, la cantidad, el precio unitario, el porcentaje del IVA, etc.

Como se trata de una relación padre-hijos, el identificador de la tabla cabecera debe ser único, jamás debe repetirse. Sin embargo ese identificador sí se repite en la tabla de detalles, en cada producto que corresponde a la cabecera.

Para mostrar en una grilla los productos, simplemente haces un SELECT ... WHERE MiCondicion, donde MiCondicion se refiere al identificador, por ejemplo:

SELECT MOV_CODIGO, MOV_CANTID, MOV_PRECIO
  FROM MOVIMDET MD
    JOIN MOVIMCAB MC ON MOV_IDENTI = MC.MVC_IDENTI
WHERE MOV_IDENTI = 1245

En este ejemplo MOVIMCAB es la tabla cabecera y MOVIMDET es la tabla de detalles.

Por supuesto que en lugar de 1245 pondrías el identificador que deseas consultar.

Como consejo, no deberías permitir que una vez grabado un movimiento pueda ser modificado o borrado. Si permites esas operaciones, puedes llegar a tener problemas legales, por lo tanto, es mejor impedirlas.

Saludos.

Walter.




> Date: Fri, 9 Sep 2011 07:38:18 -0700
> Subject: [vfp] Armado de Kardex o Historial de Ventas
> From: panch...@gmail.com
> To: publice...@googlegroups.com

Manuel Lucas Anaya Guillen

unread,
Sep 30, 2011, 8:08:35 AM9/30/11
to publice...@googlegroups.com
Perfecto:
Efectivamente esa propuesta de Walter, creo que es la mejor.
En verdad es exactamente lo que yo tengo para controlar mis existencias, en vfp. 

Soy Contador de profesión, y aprendí a programar algo en vfp, tras toda una odisea.
Saludos al grupo:

----------------------------------------------
--
Manuel L. Anaya Guillén
Warparuna - Huamanguino .... en
Huancavelica, Ayacucho y Apurímac:Territorio Chanka,

--------------------------------------------------------------------------------
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."  Friedrich Nietzsche

Saul Piña Hernandez

unread,
May 27, 2015, 10:11:13 AM5/27/15
to publice...@googlegroups.com, panch...@gmail.com
Reviviendo este hilo, la duda que tengo, tras leer el buen consejo de Walter es

El tema de que si se guarda todo en una tabla, entonces en unos dias estará "ENORME" con tantos movimientos registrados...

Cual sería el consejo?  porque walter da un consejo de una tabla "Cabecera" y una tabla "Detalle"  pero supongo que la tabla "detalle" es donde se registrarán los movimientos y obvio estará ENORME..

Es así como se debe trabajar? esa es mi duda..

Gracias.

Saul Piña Hernandez

unread,
May 27, 2015, 10:14:18 AM5/27/15
to publice...@googlegroups.com, wr...@hotmail.com, wr...@hotmail.com
Per entonces la tabla "detalles" que menciona walter es donde se guardarán los movimientos cierto?

Entonces es asi como se debe trabajar?  es decir, la tabla será ENORME al cabo de unas semanas..es correcto de esa manera?

Gracias.

Anexo la duda que comparto con Pablo b:

Edgar Acevedo

unread,
May 27, 2015, 10:19:07 AM5/27/15
to publicesvfoxpro
Mediante una rutina de "corte anual", yo mando a una tabla "histórica" el contenido del año cerrado en la tabla "detalle".  De esa suerte, en "detalle" solo tengo los movimientos de inventario del año actual y en la tabla "historia" los movimientos de años anteriores.  Cuando necesito reportes que salgan de ambas tablas, utilizo el SELECT ... UNION.  Por otro lado para saber con cuantas existencias arranqué, al momento de hacer el corte guardo dicho dato en la tabla "cabecera" en un campo de "existencia inicial".  Me ha funcionando muy bien así desde Foxpro 2.6 para DOS.
Tengo una empresa donde hay 40 mil códigos distintos de productos.  La tabla "detalle" llega a casi medio millón de registros por año. La tabla "histórica" guarda una monstruosa cantidad de registros, pero sirven exclusivamente para consulta pues el "año cerrado" ya no se puede (ni debe) modificar por razones fiscales.



Saludos,   Edgar Acevedo.



Antonio Meza

unread,
May 27, 2015, 10:23:25 AM5/27/15
to publice...@googlegroups.com, vfxpro...@gmail.com, panch...@gmail.com
Hola Saul !!

Cuando tienes un servidor de base de datos el tamaño no importa (para otras cosas si jaja) 

En mi caso uso algo parecido a como comento Walter, 2 tablas, el cliente mas grande que usa el sistema de inventarios realiza entre 4000 a 5000 tickets de venta diarios, esto solo en la tabla cabecera, en la tabla de detalles varia mucho porque un ticket puede tener un registro como puede tener 10,20 o 50, en promedio he calculado 5 registros por 4000 serian 20,000 registros diarios en un mes hablamos de 120,000 registros en cabecera y 600,000 en detalles aproximadamente.

Teniendo los indices correctos, una estructura normalizada no debes tener problemas, en mi caso las consultas se realizan rápido como si hubiera pocos registros.

saludos
Antonio Meza

Saul Piña Hernandez

unread,
May 27, 2015, 10:29:34 AM5/27/15
to publice...@googlegroups.com, solv...@gmail.com, vfxpro...@gmail.com, panch...@gmail.com
Ah oks, ya mas o menos voy entendiendo...entonces a como dicen ustedes:

Tabla cabecera se guardan datos diarios?  yo me imaginaba que la tabla cabecera era para los titulos de los "movimientos" entonces se trata de otra cosa..

y la tabla detalles supongo que es,, bueno la verdad he captado un 50% de la idea...

Y es que como voy a inciar con ese tema de los inventarios, pues quiero iniciar bien...para ya no cometer errores y que mi sistema pventas funcione bien para el negocio.

elkin dario uribe torres

unread,
May 27, 2015, 10:37:34 AM5/27/15
to publice...@googlegroups.com
Saul

mira lo que tu dices en otro aparte del hilo con respecto a los comentario o sugerencias que da el gran Walter Ojeda

- Una tabla cabecera, donde registras el identificador, el tipo de movimiento (compra, venta, devolución, etc.), la fecha del movimiento, el código del cliente o del proveedor, el tipo de documento, el número del documento, etc.
- Una tabla de detalles, donde registras el identificador, el código del producto, la cantidad, el precio unitario, el porcentaje del IVA, etc.

Si prestas atención veras mas o menos que debe ir en cada tabla

espero me entiendas

Edgar Acevedo

unread,
May 27, 2015, 10:39:44 AM5/27/15
to publicesvfoxpro
En la "cabecera" yo guardo cosas como: código, descripción, precio, último costo de compra, costo promedio (cambia dinámicamente), existencia inicial del período fiscal, existencia actual.
En la "detalle" va código de producto, tipo de movimiento (CO-Compra, VE-Venta, AD-Ajuste por Adición, AR-Ajuste por rebaja, etc). número de movimiento fecha, entradas, salidas, saldo.
Mi tabla "historia" es una copia idéntica de la tabla "detalle" pero con movimientos de años anteriores.  Yo uso DBF's pero como dice Antonio Meza, con buenos índices, a esta fecha y con una monstruosa cantidad de registros, los informes y consultas suceden como si hubiera pocos registros en las tablas.

Saludos.

Saul Piña Hernandez

unread,
May 27, 2015, 10:51:06 AM5/27/15
to publice...@googlegroups.com, aper...@gmail.com
En el campo codigo de la tabla cabecera, va registrado el num de factura o nota o ticket??

y al decir "con buenos índices"  te refieres a tener indices en los campos fecha y codigo del producto en la tabla detalles??

gracias, continuo captando la idea para implementar..

Saul Piña Hernandez

unread,
May 27, 2015, 11:11:26 AM5/27/15
to publice...@googlegroups.com, vfxpro...@gmail.com, aper...@gmail.com
Un ejemplo de cabecera y detalle pudiera ser asi?


Tabla Cabecera:

Identificador    Tipo_Mov            Fecha_Mov     Cod_Cliente    Etc
FACT-001        CO  (Compra)     27-05-15             10

Tabla Detalles:

Identificador   Codigo     Cantidad   Precio U  
FACT-001        100              50        $15.00
FACT-001        150              35        $25.00  
Etc., Etc


Es correcto?

elkin dario uribe torres

unread,
May 27, 2015, 11:13:28 AM5/27/15
to publice...@googlegroups.com
Asi es Saul


Saludos

Jorge L. Florez C.

unread,
May 27, 2015, 11:30:48 AM5/27/15
to publice...@googlegroups.com
Hola,

Pero no se supone que la data del kardex se construye apartir de los documentos?, entonces para que una cabecera con el nro de documento, tipo de movimiento, etc? si todo eso es parte del detalle del kardex

Saludos
Jorge Florez

ZeRoberto

unread,
May 27, 2015, 11:43:15 AM5/27/15
to publicesvfoxpro
baja la bd de mi aplicacion y revisa como manejo las compras y las ventas, revisa como estan enlazadas las tablas



Saul Piña Hernandez

unread,
May 27, 2015, 12:18:09 PM5/27/15
to publice...@googlegroups.com, zero...@gmail.com
En un momento lo descargo, gracias amigo Ze Roberto.

Allan Raúl Acuña

unread,
May 27, 2015, 1:22:17 PM5/27/15
to publice...@googlegroups.com, zero...@gmail.com
Hola Zeroberto

Baje la base de datos, pero al intentar instalación me dice que se va a Instalar en D:\ y no tengo disponible esa unidad.

Saludos cordiales.

Lic. Allan Raúl Acuña
Analista Programador
msn= allan...@hotmail.com
skype= NicEasySoft
            +(505) 8 999 8950
Managua, Nicaragua
Centroamérica



Date: Wed, 27 May 2015 09:18:09 -0700
From: vfxpro...@gmail.com
To: publice...@googlegroups.com; zero...@gmail.com
Subject: Re: [vfp] Re: Armado de Kardex o Historial de Ventas
Reply all
Reply to author
Forward
0 new messages