Estimados compañeros:
tengo instalado en RED mi aplicación de gestión de facturas y todo va de maravillas, excepto 1 cosa: la correlación en los números de facturas!!
Si 2 o más usuarios entran a la vez en el módulo de "nueva factura", cuando la imprimen el programa asigna el mismo numero a todas las facturas impresas, ¿Como es posible? Sin embargo utilizo el mismo procedimiento en el stock y las cantidades se refrescan perfectamente si ambos usuarios entran a la vez en ese modulo.
Si cada usuario entra individualmente al modulo "nueva factura" la correlación de los numeros de facturas van de maravilla!!
¿ Alguna sugerencia ? Mil gracias
Lorenzo
Mal funcionamiento en RED
-
- Posts: 189
- Joined: Sun Jul 08, 2007 1:46 am
- Location: Uruguay
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Loren:
La solucion pasa por que el numero de factura lo obtengas cuando realices el bloqueo de la base para grabar, en ese momento el folio de la factura sera en ULTIMO GRABADO + 1, grabas, imprimes desbloqueas y muestra en pantalla en Numero de la factura grabada.
Espero te sirva, esta es la forma en que yo lo realizo.
Saludos,
Antonio
La solucion pasa por que el numero de factura lo obtengas cuando realices el bloqueo de la base para grabar, en ese momento el folio de la factura sera en ULTIMO GRABADO + 1, grabas, imprimes desbloqueas y muestra en pantalla en Numero de la factura grabada.
Espero te sirva, esta es la forma en que yo lo realizo.
Saludos,
Antonio
Lorenzo
aqui se habla del tema y la sulucion
http://fivetechsoft.com/forums/viewtopi ... ht=factura
saludos..
aqui se habla del tema y la sulucion
http://fivetechsoft.com/forums/viewtopi ... ht=factura
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Loren,
Te recomiendo lo siguiente, imagino muchos otros lo haran asi, sino, es un buen metodo, crea una DBF donde controlas la numeracion de tus documentos; pedidos, facturas, recibos de cobro, etc; y como ya te han dicho todos, aunmentas el numero al finalizar tu documento siendo num_actual= num_actual +1, funciona super...SPERO TE AYUDE...
Te recomiendo lo siguiente, imagino muchos otros lo haran asi, sino, es un buen metodo, crea una DBF donde controlas la numeracion de tus documentos; pedidos, facturas, recibos de cobro, etc; y como ya te han dicho todos, aunmentas el numero al finalizar tu documento siendo num_actual= num_actual +1, funciona super...SPERO TE AYUDE...
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Numeraciçon facturas.
Tal como ya han comentado, yo también utilizo un DBF para las numeraciones (referencieas únicas, albaranes, facturas, etc).
Pero sobre el orden de ejecución de los pasos no estoy del todo de acuerdo.
Yo hago: cuando detecto el primer movimiento a facturar y éste se puede facturar, lo bloqueo, accedo a la DBF de numeraciones, bloqueo el registro de la DBF, obtengo el nuevo número de factura, grabo la DBF, la desbloqueo, facturo el movimiento y lo desbloqueo.
Para el siguiente movimiento si pertenece a la misma factura ya tengo su número y no tengo de volver a acceder y además la DBF ya está disponible para los demás usuarios.
Cuando quiera imprimirla no deberé hacer nada estra sino imprimir.
El tiempo que la DBF de numeraciones ha estado 'pillada' es bajísimo y si en el proceso de su bloqueo tienes un While que espera a que no esté 'pillada' por otro usuario, el usuario que quiere facturar ni se entera de que alguien más estaba facturando.
Para mi una cosa es facturar y otra imprimir facturas. Son procesos independientes y el de impresión naturalmente reutilizable en cualquier momento.
Saludos
Carlos G.
Pero sobre el orden de ejecución de los pasos no estoy del todo de acuerdo.
Yo hago: cuando detecto el primer movimiento a facturar y éste se puede facturar, lo bloqueo, accedo a la DBF de numeraciones, bloqueo el registro de la DBF, obtengo el nuevo número de factura, grabo la DBF, la desbloqueo, facturo el movimiento y lo desbloqueo.
Para el siguiente movimiento si pertenece a la misma factura ya tengo su número y no tengo de volver a acceder y además la DBF ya está disponible para los demás usuarios.
Cuando quiera imprimirla no deberé hacer nada estra sino imprimir.
El tiempo que la DBF de numeraciones ha estado 'pillada' es bajísimo y si en el proceso de su bloqueo tienes un While que espera a que no esté 'pillada' por otro usuario, el usuario que quiere facturar ni se entera de que alguien más estaba facturando.
Para mi una cosa es facturar y otra imprimir facturas. Son procesos independientes y el de impresión naturalmente reutilizable en cualquier momento.
Saludos
Carlos G.
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Fivewidi, reza un dicho..."entre gustos y colores no han escrito los pintores...", pero creo que una cosa es gusto y otra es logica, no quiero entrar en polemica sobre tu metodo, eso depende como se maneje los procesos de facturacion de algunos paises, fijate, tu bloqueas el numero, que pasaria si se va la luz o si no se finaliza la factura..?, ademas otro usuario podria terminar de facturar antes que el que bloqueastes, son solo analisis de situaciones, se dice que las mayorias no pueden estar equivocados, pero eso tambien es discutible, lo bueno es que Loren ya tiene alternativas para escojer la que mas le convenga y que sea mas seguro para su informacion, para eso estamos, pero el metodo propuesto por la mayoria, es muy viable y seguro, por no decir que es el correcto y unico.saludos.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- wilsongamboa
- Posts: 439
- Joined: Wed Oct 19, 2005 6:41 pm
- Location: Quito - Ecuador
Lorenzo yo lo hago asi
esto lo hago cuando ya hayas terminado la factura en este caso el que gane el numero graba primero, bueno es solo mi humilde criterio
espero te ayude
Saludos
Code: Select all
Function NuewNum( Num )
select factura //esta con indice activo de str(num_Fact,6)
while .t.
dbgobottom()
num := factura->num_Fact + 1
if !dbseek( str(Num,6 ) )
exit
end
end
dbappend()
factura->num_Fact := num
unlock
Return Num
espero te ayude
Saludos
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Wilson.josenet@gmail.com