FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Facturaci贸n
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Facturaci贸n
Posted: Thu Nov 14, 2013 01:43 PM

Compa帽eros,

En un aplicativo de facturaci贸n bajo entorno de RED LOCAL con DBF/CDX, b谩sicamente la factura contiene 2 DBF:
1潞. Un registro por cada factura con: C贸digo cliente, nombre, fecha factura, n潞 factura, bases imponible, impuestos y total factura.
2潞. Varios registros por cada factura con: Todos los art铆culos que contiene

Por tanto, existe una relaci贸n UNO - VARIOS, entre las 2 DBF.

La pregunta es doble:
1. 驴 Como relacionais las 2 DBF? 驴 A trav茅s de un campo ID comun a ambas DBF ?
2. Cuando se modifica una factura, estando en RED LOCAL, y esto puede suponer eliminar/a帽adir uno o varios art铆culos, cambiar precios... etc..., 驴como lo haceis? Yo suelo migrar todos los datos de las 2 dbf a 2 dbf temporales en PC Cliente, hago DELETE en las DBF originales y una vez modificada la factura vuelvo a volcar de DBFs Temporal a DBFs Definitiva del PC-Servidor asign谩ndole otro ID. 驴 .... y vosotros?

Gracias. Un saludo
LORENZO

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 02:39 PM

驴 puedo yo a帽adir una pregunta ?

3潞 Estamos en un mantemiento de uno-varios, en un dialogo con un boton ok y otro cancelar 驴 Como tratar el mantenimiento uno-varios si tenemos un boton ok y otro cancelar y por tanto el usuario puede modificar/ borrar lineas/ a帽adir lineas ? 驴 que haremos si el usuario borra o modifica y luego desiste con cancelar ?

Posts: 120
Joined: Wed Mar 11, 2009 07:32 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 03:16 PM

hola ,,, buenos d铆as

yo relaciono los dos archivos con un campo en este caso con el folio de la factura ( ya dependiendo del modulo,,, ejercicio, periodo, folio, etc)

si en el primer archivo no existe el folio lo doy de alta sino reemplazo , y hago uno b煤squeda en el segundo archivo si existen (folio) los borro l贸gicamente todos que est谩n con el mismo folio y en un campo x les coloco que est谩n borrados.... una vez borrando le agrego todos los movimientos

con esto me da las altas y cambios si usar temporales ,,,, controles a llevar un campo donde indica que se hizo todo correctamente,,,

saludos

Benjamin Casarrubias Moreno
Cd. Obreg贸n, Sonora, M茅xico
chino72vale@hotmail.com
Fivewin 24.04, Harbour 3.3, xharbour 1.2.1, Fivelinux, Visual Estudio 2022
Oracle Api Rest, SDK Contpaq, Facturaci贸n Electr贸nica, XML DIOT 2025
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 04:14 PM

Hola compa帽eros:
Una forma de asegurarse que solo uno a la vez est茅 modificando una factura en particular es hacer un bloqueo del registro de la tabla cabecera (facturas) previo a mostrar el detalle (items).
La relacion puede ser por el nro de comprobante tipo+letra+numero.
Cuando se quiere modificar una factura, se leen los items, se los carga en una tabla temporaria abierta de forma exclusiva, se hacen todos los cambios y al grabar se borrar los registros que estaban y se a帽aden todos los que tiene la tabla temporal.
Espero les pueda servir

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 04:35 PM

Amigos:

Perm铆tanme meter una cu帽a m谩s, que hacer cuando haya necesidad de controlar existencia
al momento de la venta?, me refiero a que si en un producto hay 10 pzs, una terminal vende
8 piezas y en otra terminal el cliente pide 5 la existencia es insuficiente !. y eso lo debemos
controlar.

Por esta raz贸n me inclino hacia una gran tabla temporal donde concurran todas las terminales.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 05:07 PM
Hola,

Si a帽ades como tipo de campo en la DBF + se crea un campo del tipo autoincrementable presente en entornos SQL:

Code (fw): Select all Collapse
aDBF :=  { { 'ID', '+', 4, 0,;
                  "NOMBRE", "C", 50 } }


dbCreate( "Table.dbf", aDBF )
Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 120
Joined: Wed Mar 11, 2009 07:32 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 05:52 PM

para controlar las existencias

se puede controlar en la misma tabla del catalogo de productos o una tabla a parte .

de perdis

  tabla exisprod

  codprod , existencia,  saltemp

  al momento de realizar una factura  y agregar un producto nos debe dar la existencia del producto que tiene en la tabla exisprod

  y grabar en la tabla exisprod  la salida que tiene temporalmente asi podemos controlar las existencias que se est谩n haciendo al mismo momento,,, si no lo graba o no lo desea quitarlas de saltemp..

ay se le puede poner varios controles para saber que sucursal es el que lo tiene capturando al mismo tiempo

saludos

Benjamin Casarrubias Moreno
Cd. Obreg贸n, Sonora, M茅xico
chino72vale@hotmail.com
Fivewin 24.04, Harbour 3.3, xharbour 1.2.1, Fivelinux, Visual Estudio 2022
Oracle Api Rest, SDK Contpaq, Facturaci贸n Electr贸nica, XML DIOT 2025
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 06:42 PM

Loren, lo hago muy parecido a tu procedimiento y al que explica cmsof, con la diferencia que solo uso una dbf para las facturas. (no uso relaciones)
Para modificar hago lo siguiente:
1- Copio a una dbf temporal en c:\ de la pc cliente, los datos de la factura, desde el fichero original de facturas.
2- Abro en modo exclusivo la temporal.
3- En esta modifico, borro o agrego items.
4- Presiono el boton aceptar, y en el action de este ejecuto una function de validacion que chequea por todas las condiciones pertinentes, y a la vez trato de bloquear todo el fichero original de facturas. Si la function de validacion retorna .t., continuo con los siguientes pasos.
5- 'Deleteo' del fichero original, la factura en menci贸n.
6- Agrego los nuevos datos desde la temporal
7- Desbloqueo la dbf original
8- Borro la temporal.

Si se presiona Cancelar, solo borro la temporal.

Sobre el punto que expone Armando, lo que tengo es una function que se llama al clickear el boton Aceptar, la cual, antes de emitir la factura, chequea nuevamente si hay existencia de cada uno de los productos, en ese mismo momento. Si hay, emite factura, de lo contrario no.

Saludos

Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 06:55 PM
cmsoft,

Con todos mis respetos perm铆teme que te haga dos matizaciones:

Una forma de asegurarse que solo uno a la vez est茅 modificando una factura en particular es hacer un bloqueo del registro de la tabla cabecera (facturas) previo a mostrar el detalle (items).

Esta forma, haciendo un bloqueo de registro, nunca me gusto... el mismo usuario que tiene bloqueado el registro puede, en un subproceso segundo, alterar algo de la factura, y si no lleva cuidado puede desbloquear el registro de la factura y por tanto liberarla. A mi modo de ver es mejor llevar los bloqueos "aparte" de otra forma mas controlada que no sea con rlock() porque sino a la larga habra problemas.


Cuando se quiere modificar una factura, se leen los items, se los carga en una tabla temporaria abierta de forma exclusiva, se hacen todos los cambios y al grabar se borrar los registros que estaban y se a帽aden todos los que tiene la tabla temporal.

Segun la aplicacion, esto puede generar una gran cantidad de registros deleted, en pocas semanas el usuario tendra que hacer PACK que requiere exclusividad que requiere que nadie este utilizando las tablas de datos 驴 por qu茅 no reutilizar los registros usados grabando cada registro en su recno() origen ?

Un cordial saludo.
Posts: 120
Joined: Wed Mar 11, 2009 07:32 PM
Re: Facturaci贸n
Posted: Thu Nov 14, 2013 09:48 PM

hola

los registros borrados, los puedes usar para  nuevos movimientos , asi no se van acomulando muchos

saludos

Benjamin Casarrubias Moreno
Cd. Obreg贸n, Sonora, M茅xico
chino72vale@hotmail.com
Fivewin 24.04, Harbour 3.3, xharbour 1.2.1, Fivelinux, Visual Estudio 2022
Oracle Api Rest, SDK Contpaq, Facturaci贸n Electr贸nica, XML DIOT 2025
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Re: Facturaci贸n
Posted: Fri Nov 15, 2013 08:19 AM
Compa帽eros,

Lo primero: Gracias por contestar.

Mi experiencia, despues de muchos a帽os, es pr谩cticamente la misma que FranciscoA, es decir, vuelco las 2 DBF a 2 DBF en modo excluisivo en PC-Cliente, modifico, hago delete en DBF servidor y vuelco todo de DBF local a servidor. Esto supone que en poco tiempo se crean muchos registros deleted, pero para eso tengo una funci贸n que 1 vez al mes se activa y hace un "pack" justo antes de arrancar el programa (aunque para eso necesita exclusividad).

Las DBF "UNA-VARIAS" yo las relacionos con un ID que guardo en una DBF que llamo "Contadores" y que ubico en el Servidor. As铆 controlo las facturas, notas de entregas, albaranes, compras... etc...

Nuestro compra帽ero hmpaquito hace una matizaci贸n, que me gustar铆a aclarase, en relaci贸n a:
haciendo un bloqueo de registro, nunca me gusto... el mismo usuario que tiene bloqueado el registro puede, en un subproceso segundo, alterar algo de la factura, y si no lleva cuidado puede desbloquear el registro de la factura y por tanto liberarla. A mi modo de ver es mejor llevar los bloqueos "aparte" de otra forma mas controlada que no sea con rlock() porque sino a la larga habra problemas.


Aprovecho y os cuento una experiencia desagradable con un cliente de muchos a帽os que tiene un volumen de facturaci贸n grande y que NO puede dejar de facturar por su alto nivel de venta... y es que tras migrarle el aplicativo de DBF/NTX a DBF/CDX en Red Local y tras somerter EXIT脫SAMENTE el nuevo aplicativo durante varios d铆as a prueba en red local en mi establecimiento, lo instalo en su centro de trabajo y desde el primer d铆a genera errores, liga art铆culos de una factura a otra, emite facturas en blanco (sin art铆culos) y emite errores del tipo:

Unrecorevable error 9201: hb_cdxPageSeekKey: Wrong parent Key. .... incluso ni reindexando indices (el cual el aplicativo dispone de una opci贸n para ello) se soluciona.

Pero lo curioso es que hago un COPIAR-PEGAR en mi red-local, reindexo y funciona PERFECTAMENTE. 驴Alguna explicaci贸n? Yo no la encuentro. Cosas de la inform谩tica :-) :-) :-) :-)

En fin...

Mil gracias.
Un saludo.
LORENZO
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Facturaci贸n
Posted: Fri Nov 15, 2013 09:17 AM
Loren,


Nuestro compra帽ero hmpaquito hace una matizaci贸n, que me gustar铆a aclarase, en relaci贸n a:
haciendo un bloqueo de registro, nunca me gusto... el mismo usuario que tiene bloqueado el registro puede, en un subproceso segundo, alterar algo de la factura, y si no lleva cuidado puede desbloquear el registro de la factura y por tanto liberarla. A mi modo de ver es mejor llevar los bloqueos "aparte" de otra forma mas controlada que no sea con rlock() porque sino a la larga habra problemas.




Asi pues, como dije antes, el tratamiento a esto, IMHO, deberia ser de otra forma.








Aprovecho y os cuento una experiencia desagradable con un cliente de muchos a帽os que tiene un volumen de facturaci贸n grande y que NO puede dejar de facturar por su alto nivel de venta... y es que tras migrarle el aplicativo de DBF/NTX a DBF/CDX en Red Local y tras somerter EXIT脫SAMENTE el nuevo aplicativo durante varios d铆as a prueba en red local en mi establecimiento, lo instalo en su centro de trabajo y desde el primer d铆a genera errores, liga art铆culos de una factura a otra, emite facturas en blanco (sin art铆culos) y emite errores del tipo:

Unrecorevable error 9201: hb_cdxPageSeekKey: Wrong parent Key. .... incluso ni reindexando indices (el cual el aplicativo dispone de una opci贸n para ello) se soluciona.

Pero lo curioso es que hago un COPIAR-PEGAR en mi red-local, reindexo y funciona PERFECTAMENTE. 驴Alguna explicaci贸n? Yo no la encuentro. Cosas de la inform谩tica 聽:? 聽:? 聽:cry: 聽:cry:



Comprueba el antivirus. Puede estar corrompiendo indices


Saludos

Continue the discussion