-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Trigger de UPDATE: tub_sga_actas
-- BEFORE UPDATE
-- Tabla: sga_actas
-- Version: 3.0.0
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

CREATE OR REPLACE FUNCTION ftub_sga_actas () RETURNS trigger AS 
$BODY$
DECLARE
BEGIN
   -- No se permite modificar datos de la cabecera del acta si la misma esta Cerrada y/o Anulada
   IF (OLD.estado = 'C' OR OLD.estado = 'B') AND OLD.estado = NEW.estado THEN  
      IF (OLD.nro_acta <> NEW.nro_acta OR
          OLD.libro <> NEW.libro OR
          OLD.origen <> NEW.origen OR
          OLD.tipo_acta <> NEW.tipo_acta OR
          OLD.evaluacion <> NEW.evaluacion OR
          OLD.comision <> NEW.comision OR
          OLD.llamado_mesa <> NEW.llamado_mesa OR
          OLD.renglones_folio <> NEW.renglones_folio OR
          OLD.acta_referencia <> NEW.acta_referencia OR
          OLD.fecha_generacion <> NEW.fecha_generacion OR
          OLD.fecha_cierre <> NEW.fecha_cierre OR
          OLD.fecha_anulacion <> NEW.fecha_anulacion OR
          OLD.nua <> NEW.nua OR
          OLD.documento <> NEW.documento OR
          OLD.libro <> NEW.libro OR
          OLD.version <> NEW.version OR
          OLD.version_impresa <> NEW.version_impresa OR
          OLD.nro_ultima_copia <> NEW.nro_ultima_copia 
          ) THEN
       
          IF OLD.estado = 'C' THEN
             raise exception 'No se puede modificar datos del acta porque esta Cerrada';
          ELSEIF OLD.estado = 'B' THEN
             raise exception 'No se puede modificar datos del acta porque esta Anulada';
          END IF ;
      END IF;
   END IF;
   
   RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql';


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Trigger de UPDATE sobre sga_actas
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- DROP TRIGGER tub_sga_actas ON sga_actas RESTRICT;
CREATE TRIGGER tub_sga_actas
       BEFORE UPDATE ON sga_actas 
       FOR EACH ROW EXECUTE PROCEDURE ftub_sga_actas();

