TREE-Trigger para firma de facturas escaladas por importe

En ocasiones los clientes quieren que la firma de las facturas dependan del importe.

En el siguiente ejemplo aplicamos un sencillo trigger para que las facturas de más de 3000€ las tenga que firmar dirección (perfil DIR), las de más de 1500€ las tenga que firmar el jefe de grupo (perfil DJO), y el resto de facturas las firme el jefe de obra (perfil JO).

El trigger es solo un ejemplo que salta ante la modificación de cualquier factura y afecta a todas las que tengan un perfil incorrecto asignado. Podría cambiarse con un JOIN a la tabla INSERTED para que solo se modifique la factura en cuestión. La verdad es que el tiempo de ejecución es nulo y tal como está asegura que el 100% de las facturas quedan correctamente asignadas para firma.

En el ejemplo propuesto también damos por hecho que la empresa está configurada para que cualquier factura tenga que ser firmada por el jefe de obra (perfil JO), y el trigger lo que hace es sencillamente alterar el campo adecuado cuando el importe supera la cantidad propuesta.

CREATE TRIGGER CAMBIO_PERFIL_FIRMAS
ON T_FRA
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON; 
    UPDATE T_FRA SET FIRMAS_PENDIENTES='DIR' 
           WHERE TOTAL>=3000 AND FIRMAS_PENDIENTES='JO' 
           AND FIRMAS_PENDIENTES<>'DIR';
    UPDATE T_FRA SET FIRMAS_PENDIENTES='DJO' 
           WHERE TOTAL>=1500 AND FIRMAS_PENDIENTES='JO' 
           AND FIRMAS_PENDIENTES<>'DJO';
END

Si posteriormente queremos cambiar enlaces trigger actualizando los importes, tan solo tendremos que ejecutar la misma instrucción reemplazando la primera palabra CREATE por ALTER.