Copiar fichas en cascada

Estimados,

Tengo una aplicación de ventas cuyas cotizaciones están estructuradas en una tabla maestra (COTIZACIONES) y varias submaestras:
COTIZACIONES_LINEAS
COTIZACIONES_DATOS_ADICIONALES
COTIZACIONES_DESCUENTOS

El cliente quiere que al momento de editar una cotización, se cree una cotización nueva, copia de la cotización original, de modo de llevar una trazabilidad de las modificaciones. Si fuera sólo la tabla maestra, daría lo mismo; pero como tengo que copiar además las tablas submaestras, la cosa se complica. Además, si el usuario cancela a mitad de la operación, no debe generarse esta copia.

El punto es que estoy entero enredado con esto y me he dado mil vueltas sin llegar a nada definitivo… ¿me podrían dar algunas ideas? mucho se los agradecería.

Saludos,
Alberto

Hola.

Hay varias maneras de plantearlo, pero una de ellas puede ser la siguiente:

  • Creas 4 tablas en memoria (o no, pero temporales), que sean réplicas de esas cuatro tablas.
  • Cuando se quiera editar una cotización, haces una copia de esa cotización y de las submaestras en las tablas temporales y abres un formulario con esa información.
  • Si guarda la modificación, entonces SI que creas la nueva ficha en las tablas reales, con la información modificada de las tablas temporales. De este modo tienes un control completo de lo que hace, tanto si acepta como si cancela (no haces nada).

Si solamente es para llevar un control de cambios, podrías generar un json con toda la cotización y guardarlo como un objeto texto en una tabla histórica que apunte a la propia cotización.
Guardas el json más quién, cuando, etc. Incluso podrías dar un paso más y solo guardar en el json los cambios realizados y no todo el registro.

Estimados,

Gracias por las ideas. Me parece que la de Fran Varona es la más fácil y limpia de implementar… muy agradecido como siempre!