PDA

Ver la Versión Completa : Eliminar items de una factura


nabucodonosor
01-07-2014, 20:37:48
Necesito eliminar un factura junto con los items, pero existe un problema. En ocasiones no me deja borrar ya que me envia un error. Lo que pasa es lo siguiente:

Tengo un trigger en la tabla que la he nombrado [itfact] donde guardo todos los items de la factura. En el trigger after delete de esta tabla mando llamar un procedimiento el cual tiene el objetivo de renumerar los registros (cuando solamente borro un registro), pero el detalle es cuando quiero borrar toda la factura que en ocasiones si me la borra pero no todo el tiempo. Mi pregunta es como hacerle para que cuando mande borrar toda la factura no se ejecute este procedimiento?

ecfisa
01-07-2014, 20:45:28
Hola nabucodonosor.

....Mi pregunta es como hacerle para que cuando mande borrar toda la factura no se ejecute este procedimiento?


How to deactivate triggers? (http://www.firebirdfaq.org/faq189/)


Saludos :)

Casimiro Notevi
01-07-2014, 22:33:40
No hay quien lo entienda :confused:

cloayza
01-07-2014, 22:47:50
mando llamar un procedimiento el cual tiene el objetivo de renumerar los registros

Talvez podrías omitir esta acción...de renumerar los items de la factura, así simplificas el problema...

Eso de andar activando y desactivando triggers nunca me ha gustado...:D

Saludos cordiales

orodriguezca
01-07-2014, 23:00:31
De acuerdo con cloayza. ¿Hay alguna razón de peso para renumerar los items de la factura?. Por otro lado, ¿cual es el mensaje de error que está enviando el procedimiento almacenado?. Si puedes colocar el código sería de gran ayuda.

Neftali [Germán.Estévez]
02-07-2014, 09:58:44
Se me ocurren un par de opciones, que no te deberían cambiar mucho el código actual.
Tal vez pasar el código del trigger a un procedimiento que puedas ejecutar de forma manual al borrar las líneas de factura, o como segunda opción, podrías marcar la factura (añadir un campo booleano) como para borrar (antes de hacer el borrado), de forma que si la factura tiene esa marca activada (quiere decir que se va a borrar) en ese caso el trigger de renumerado debería no hacer nada.
En este caso realizas una operación de UPDATE antes del borrado, pero a cambio evitas todas las operaciones que actualmente hace el trigger.

Al González
02-07-2014, 17:26:09
Similar a lo que comenta Neftalí, te recomiendo que agregues a la tabla principal un campo SmallInt (1/0) o Boolean, pero no para pre-borrar, sino para indicar si la factura está "activa" o "cancelada".

Es preferible desactivar un documento de compra-venta que eliminarlo, ya que de la primera forma se conserva el registro de lo que sucedió y cuándo sucedió, aunque la información ahí contenida ya no sea vigente. Así no tendrás problemas de huecos en la numeración consecutiva.

En pocas palabras, en una base de datos suele haber contenidos que dejan de tener impacto contable o financiero, pero no por ello dejan de tener importancia informativa.

Saludos. :)