Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2013
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Deshacer proceso de facturacion

Hola a todos, espero que Dios me los bendiga mucho.....
les comento que estoy realizando un programa de gestion educativa en delphi 2009 con mysql....
ya esta casi terminado, tengo una duda..... tengo un modulo de facturacion que funciona bien, lo que quiero saber es, si la persona responsable de realizar el cobro, por alguna razon comete un error a la hora de realizar un proceso, por ejemplo:
si un cliente va a pagar 500 pesos, y el cajero sin querer coloca 1000 pesos, como se podria deshacer ese proceso, y que los cambios que se realizaron en las tablas vuelvan a estar como antes de haber guardado el proceso.....

espero haberme explicado bien.....agradeciendo de antemano cualquier ayuda que me puedan brindar.
Responder Con Cita
  #2  
Antiguo 26-05-2013
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Con translaciones. Rollback deshace todos los cambios realizados desde que se inició esta. Las translaciones en MySql solo están disponibles con el motor inodb
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
  #3  
Antiguo 26-05-2013
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
En cuanto a programación ya te pusieron una forma, pero creo que más bien te refieres a deshacer una transacción (OJO, no hablo del motor de BD). Lo cual administrativamente es incorrecto y no debe permitirlo tu sistema. Una vez que se finalice cualquier transacción ya no debe haber forma de borrarla. Tienes que hacer una transacción adicional que corrija el error, pero obviamente, esta última operación debe realizarla un usuario diferente (con mayores privilegios) que el usuario original. De manera que al analizar las transacciones en esa caja al terminar el día se puede ver que en efecto un error y que fue corregido por x usuario. Si lo haces como estás pensando no quedaría rastro de error y sería peligroso ya que cualquiera podría "equivocarse" a propósito para realizar algún mal manejo. Y mas hablando de facturación ya que folio tomado debe ser folio utilizado.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 28-05-2013
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Hola AzidRain tienes mucha razon,,,sin quitarle merito a pepelolo al cual tambien le agradezco,,,, pero me llamo la antencion lo que comentaste AzidRain, he visto en los supermercados que cuando la cajera comete un error o un cliente desea devolver un producto realmente la que realiza ese proceso es la supervisora la cual tiene una llave para cancelar dicho producto......ahora, en mi caso como lo haria, ya que en el modulo de facturacion intervienen 3 tablas: una que lleva la carga de los meses a pagar y donde se hacen los pagos, la otra lleva el acumulativo etc....entonces tendria que actualizar cada tabla y borrar el recibo y/o factura que se genero....

Última edición por donpedro fecha: 28-05-2013 a las 03:01:42.
Responder Con Cita
  #5  
Antiguo 28-05-2013
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Cita:
Empezado por donpedro Ver Mensaje
Hola AzidRain tienes mucha razon,,,sin quitarle merito a pepelolo al cual tambien le agradezco,,,, pero me llamo la antencion lo que comentaste AzidRain, he visto en los supermercados que cuando la cajera comete un error o un cliente desea devolver un producto realmente la que realiza ese proceso es la supervisora la cual tiene una llave para cancelar dicho producto......ahora, en mi caso como lo haria, ya que en el modulo de facturacion intervienen 3 tablas: una que lleva la carga de los meses a pagar y donde se hacen los pagos, la otra lleva el acumulativo etc....entonces tendria que actualizar cada tabla y borrar el recibo y/o factura que se genero....
Lo que hace la supervisora, es realizar una venta en negativo del producto asociado al ticket erróneo. Bien por diferencia de precio o por la devolución del producto.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
  #6  
Antiguo 28-05-2013
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por PepeLolo Ver Mensaje
Lo que hace la supervisora, es realizar una venta en negativo del producto asociado al ticket erróneo. Bien por diferencia de precio o por la devolución del producto.
Y lo "normal" es que el ticket no haya sido terminado y grabado. Esto sucede mientras siguen adicionando items a la nota.
__________________
Ya tengo Firma!
Responder Con Cita
  #7  
Antiguo 28-05-2013
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Haciendo la analogía. El "ticket" de compra es en realidad una transacción. De hecho el sistema operativo de POS de IBM (que es el que conozco bien) maneja cada transacción como única y genera el ticket a partir de ella. Las operaciones posibles dentro de la transacción son:

* Devolución de producto (cliente ya no lo quiere, cajero marcó doble, no era el artículo,etc.) : El sistema hace una venta negativa en al misma transacción (con llave de supervisor)
* Cambio de precio (precio mal puesto, descuento por daño, etc.): El sistema registra la venta con el precio distinto pero guarda en la transacción el precio original (con llave)
* Abortar la transacción (no le alcanzo el dinero, no pasó su tarjeta, etc.): Aquí si pasa lo mismo que al hacer un rollback. Solo que se requiere llave de supervisor.

Al cerrar la cuenta, que normalmente es cuando se ingresa el total pagado y la forma de pago del cliente la transacción hace commit y queda todo registrado, normalmente es en este momento cuando se debe abrir el cajón de dinero, no antes. Llegado a este punto ya no hay forma de borrar nada ni cambiar nada. Cualquier ajuste se hace en otra transacción, por ejemplo si el cliente ya no quiere un artículo tiene que pedir una devolución que se realiza en otra transacción especial para ello y normalmente en otra caja destinada a ello. Si le cobraron de más o estaba mal el precio, se hace lo mismo: primero se hace una devolución y luego se hace la venta con los precios correctos. En todos los casos las transacciones no pueden borrarse y solo pueden corregirse mediante otra transacción.

Hacerlo de otra forma se puede pero administrativamente no es lo mejor y se pierde no solo el control de los fondos sino de los artículos. Otra cosa. Normalmente los tickets no son facturas, sino que se guardan como notas o simples tickets. Si el cliente quiere factura simplemente se digita el ticket y la factura se genera a partir de él.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #8  
Antiguo 28-05-2013
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Aqui les cargo la imagen del modulo de facturacion que tiene mi sistema.


en ese modulo se cargan todos los meses, y cuando se va pagando el sistema va restando el monto pagado con los cargos. Lo que hice fue es que al momento de guardar salga un mensaje donde el cajero debe confirmar con el cliente el pago que el esta realizando y si es correcto hacer clic en si para guardar de lo contrario en no, como se muestra en la siguiente imagen.


ahora en caso de que se cometa un error,, me recomiendan crear un modulo donde solo el administrador tenga acceso, y donde se puedan modificar las tablas que intervienen en dicho proceso de facturacion??????????
Responder Con Cita
  #9  
Antiguo 15-06-2013
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
Hola donpedro...

También desarrollo software para instituciones educativas y también me he encontrado con el mismo problema.
Lo que yo hago se llama "Reversa de Operaciones" y es simplemente generar el mismo movimiento que generó la cobranza pero invertido en todas las tablas que se ven afectadas.

Con esto se logra que ante una inspeccción quede reflejado:

a) el movimiento de la cobranza
b) el asiento contable que la refleja
c) la "reversa" de la cobranza
d) el asiento contable que refleja la reversa
e) la nueva cobranza cargada correctamente.
f) el asiento contable que refleja la nueva cobranza
.
.
.
además deberías actualizar las cuentas corrientes, movimientos y los saldos de las familias/alumnos/clientes...


Esto es para que te sirva de idea, ya que depende de cómo tengas estructurado tu sistema.

Te mando un cordial saludo
Fita
__________________
No te vayas sin irte
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Deshacer Post sin transacciones miquellg SQL 6 29-09-2006 00:23:37
Deshacer/hacer ilimitado owl Varios 3 19-05-2006 14:57:47
deshacer truncate Novás MySQL 3 19-08-2004 11:42:39
Deshacer selección en DBComboBox javiermorales OOP 2 07-05-2004 19:52:06
Crear un deshacer Zopi API de Windows 2 13-06-2003 17:53:24


La franja horaria es GMT +2. Ahora son las 05:18:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi