![]() |
Facturar de varis terminales
Hola,
Actualmente si mi programa trabaja con varios terminales y un servidor, Al generar una nueva factura le asigno el número automáticamente, y inserta las lineas de esta. Si otro usuario genera una nueva factura desde otro terminal le asigno el siguiente número Si el usuario del segundo terminal marca la factura finalizada no la puedo enviar, ja que me faltaría el numero de factura anterior. Me puedo esperar a que el primer usuario marque la factura como finalizada para enviar las dos? |
La cosa esta fastidiada
Cita:
buenas Me temo que eso que planteas esta bastante regular. Yo lo tenia exactamente asi y es un problemón porque no puedes basar la logica de los envios a esperar a que documentos con fecha mas recientes de creacion esten esperando a que cierres otros de forma posterior para asignarle su nº (.....y si el segundo por lo que sea no cierra el documento, la espera es eterna??, por ejemplo). Eso son problemas y mas problemas. Si te sirve de algo te voy a decir como lo solucione yo (me quedo mucho mejor que como lo tenia inicialmente) Si usas series, espero que si, puedes hacer esto: ahora mismo supongo que tendras nº de factura y serie en el documento (como yo lo tenia), osea, que estaras viendo Nº fra: 155 , Serie:FA Añado un tercer campo: nº factura, serie y temporal. Al comenzar un documento te vas a una serie temporal (TMP por ejemplo) y asignas el ultimo numero de esa serie por ejemplo: Nº fra: 1 , Serie: TMP y en temporal: FA (la serie destino) Al grabar el documento hago esto: Nº fra: 155 , Serie:FA, temporal: (no asigno nada a temporal) Osea el valor del temporal lo meto en la serie de factura y asigno el ultimo numero+1 de la serie. Si aplicamos esto a tu caso expuesto: "Si otro usuario genera una nueva factura desde otro terminal le asigno el siguiente número" = Nº fra: 1 , Serie: TMP y en temporal: FA "Si el usuario del segundo terminal marca la factura finalizada no la puedo enviar, ya que me faltaría el numero de factura anterior." , Nº fra: 2 , Serie: TMP y en temporal: FA El segundo terminal acaba factura: Nº fra: 155 , Serie:FA, temporal: el primero acaba factura: Nº fra: 156 , Serie:FA, temporal: Todo resuelto. Esto te da una ventaja que antes no tenias que es que mientras que no grabes puedes hacer lo que quieras con el documento temporal. Por ejemplo Si el primer terminal empieza a hacer un documento y al final no lo grabas porque no se produce la venta y el segundo terminal ha comenzado otro documento...¿se pierde el nº o se queda vacio el docuemnto? Bien pues no grabas , borras las lineas del temporal y punto pelota. Lo malo es que el tiempo corre y es un cambio significativo que acarrea esfuerzo y muuuucho tiempo. Espero haberte ayudado un poco. Un saludo |
Cita:
A la casuística que comentas también le veo el problema de que el primer usuario cancele la factura (o no la finalice, como dices tú), igualmente te quedaría un salto en la numeración. Lo lógico (creo yo en estos casos), es asignar el número en el momento en que se "finaliza" la factura (es la palabra que tú has utilizado). En el momento de GRABAR la factura en Base de Datos, utilizando transacciones y los métodos necesarios para no "duplicar" ese número. |
Cita:
En nuestro programa eso no se puede hacer. En una factura no podemos añadir líneas, eso es un albarán. Creamos el albarán, añadimos las líneas, y al darle a facturar aparece la factura (bueno, tenemos la opción de crear borrador y luego validarlo para convertirlo en factura). Pero la factura en el momento que se crea ya es buena y ya tiene todas sus líneas, no se puede editar (y ya genera su QR y su registro de facturación). Ese problema lo tenemos con los tickets. Ahí si se puede crear un ticket, meterle líneas y luego finalizarlo. Y si hay varios puestos yo puedo tener un número más pequeño pero terminar el ticket más tarde. Hice una pregunta similar en este post: https://www.clubdelphi.com/foros/showthread.php?t=97426 |
Gracias por la respuesta,
Como nuesto programa tiene las dos opciones, generar albaran y generar directamente la factura, desactivaremos el generar la factura directamente y que todo pase por albaran Gracias por las respuestas |
En mi empresa lo que haremos es que hasta que no pulsas el botón de "Finalizar factura" lo que tienes es una especie de prefactura o proforma, que no puedes imprimir ni fiscalizar. Y por supuesto, tampoco podrás borrar para evitar tener saltos en la numeración.
|
Yo le creo un número temporal (en negativo) y solo cuando imprimo, envío o exporto es cuando creo el número, fecha y hora definitivos y un ID en la cola de envíos a verifactu. Hasta que eso ocurre puedo manipularla o borrarla como quiera.
|
| La franja horaria es GMT +2. Ahora son las 11:27:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi