FoxPro/Visual FoxPro - numeracion factura

   
Vista:

numeracion factura

Publicado por wenceslao (134 intervenciones) el 02/06/2010 00:38:10
Hola chicos de nuevo molestandolos con una pregunta:

Estoy haciendo un programa de facturacion post, el cual pienso cambiarlo a multiusuario o red, pero me surge la duda cuando abro el formulario de facturacion, este me toma el numero de consecutivo que va; hasta todo bien, pero cuando otro usuario abra el formulario, le mostrara el mismo numero de factura que tengo abierto en mi entorno.

Alguien me decia que al momento de inicira el formulario, tomara el numero de consecutivo e inmediatamente lo incrementara en la tabla que maneja este numero; pero la pregunta ¿ si abro el formulario y no facturo?? que pasa con el numero que tome e incremente pero no use??

Espero me entiendan y me colaboren.

Muchas gracias desde Colombia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauricio

numeracion factura

Publicado por Mauricio (1368 intervenciones) el 02/06/2010 01:37:56
Wenceslao, esa es una pregunta que se contesta por si sola, si abres el formulario y no usas el numero pues logicamente se perdera ese numero!!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numeracion factura

Publicado por Juanma Cruz (508 intervenciones) el 02/06/2010 12:12:36
En muchos países no puedes dejar huecos en la numeración consecutiva, así que es mejor que siempre trabajes bajo esa premisa.

Te recomiendo que tengas una tabla auxiliar, sólo con los contadores de documentos (facturas, albaranes, guias, etc) y ya desde ahí separadas por serie o según tus necesidades.

Cuando creas una nueva factura, SÓLO en el momento en que confirmas 'grabar' vas a la tabla auxiliar, LA BLOQUEAS, incrementas el contador y usas el nuevo número para dárselo a tu factura. Entonces desbloqueas el contador.

Si intentas bloquear el contador, y no te permite, es que otro usuario está haciendo lo mismo que tú, así que esperas tu turno, hasta que se libere, y entonces a lo tuyo. Siempre dándole la opción de decirle al usuario "En estos momentos no puedo generar la factura ¿desea reintentarlo o abandonar?" Claro que preferirá esperar y reintentar, pero sabes, por mantener informado al usuario, y que el programa no entre en un improbable pero no imposible bucle infinito.

Espero que este método te sea útil, saludos desde Madrid.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numeracion factura

Publicado por ACM (162 intervenciones) el 02/06/2010 15:53:21
Hola wenceslao

Cuando trabajas en forma multiusuario, lo ideal es que cuando valla a imprimir la factura alli le asigne el folio factura e incrementes . Para la confeccion de la factura usa un numero correlativo como referencia, que cuando entre un usuario incremnetas ese correlativo el el correlativo anterior lo bloqueas para que otra persona no entre a ese folio correlartivo, lo malo que si te sales y no haces nada ese folio correlativo se perdera, si no realizas un proceso para volver a ocupar ese folio. yo lo manejo con un campo estado en 0 o 1 cuando entro al folio le asigno 1 y al nuevo correlativo lo dejo en 0 asi cuando un usuario nuevo ingresa me mustra los folio con estado 0, Ahora el usuario que ya esta en la factura y sin no ingreso item y salio vuelve a dejar el estado en 0 asi que cuando vuelvan a entrar ese folio va a seguir apareciendo como disponible.

Espero te sirva

Acm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numeracion factura

Publicado por victor perez (278 intervenciones) el 05/06/2010 23:28:20
Hola,

Tuve ese mismo problema. Lo resolvi de la siguiente forma:

- Tengo una tabla con los Correlativos que llevan los numeros de facturas.

- Cuando inicias una factura, se abre la tabla de Correlativos y toma el numero que esta alli y lo incrementa en 1.

- Al momento de GRABAR e IMPRIMIR (estos dos eventos tienen que hacerse a la vez), una rutina verifica que no exista ningun registro generado e impreso con el Numero actual asignado a la factura que estoy elaborando.

Mi sistema de facturacion usa dos tablas, una llamada CABECERA que guarda los datos del cliente, numero de factura, fecha, metodo de pago, la condicion de si fue impresa o no, etc...y la otra llamada DETALLE que guarda los detalles de los productos comprados, numero de factura etc.

Si el numero de documento no existe, pues no hay problema, lo toma y lo imprime y guarda este ultimo numero en el correlativo.

Si el Numero de documento existe y no fue impreso, entonces toma el numero y se lo asigna a la facturacion actual y lo imprime. Guarda este numero en el correlativo.

Si el numero de documento existe y fue impreso, entonces incrementa en 1 el numero de factura y hace la misma verificacion. Lo hara en aumento de 1 en 1 hasta que se cumpla la condicion de que NO EXISTA o bien de que EXISTIENDO no haya sido IMPRESA.

Asi es mi rutina (yo no requiero IMPRIMIR mis facturas asi que no verificamos si la factura ha sido impresa o no)

Selec CABECERA
Set order to TAG CPBTE && TABLA ordenada por Numero de documento

If _nuevo && (es una factura nueva y no la revision de otra)
_existe=.t.

Do while _existe=.t.

_Doc=Thisform.numero.value && toma el valor del numero de factura actual
la primera vez o el incrementado la segunda vez

Seek _Doc

If Found()
Thisform.numero.value = Thisform.numero.value + 1
Else
_existe=.f.
EndIf

Loop
EndDo

EndIf

Terminada esta rutina y cumplida, grabo el nuevo registro con el numero correcto de factura, actualizo la TABLA de DETALLES listo. Como todo es rapido en cuestion de milesimas de segundos...pues dificilmente entra otra factura mientras estoy actualizando la base de DETALLES.

Espero te sirva esta LARGA explicacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar