SET TERM ^ ;

CREATE trigger ttbrh_ocorrencia_b02i for tbrh_ocorrencia
active before insert position 0
AS
DECLARE VARIABLE CODIGO VARCHAR(10);
BEGIN
   CODIGO = COALESCE((SELECT FIRST 1 A.CODIGO FROM TBRH_OCORRENCIA A WHERE A.CODIGO = NEW.CODIGO),'');
   IF(CODIGO <> '') THEN
   BEGIN
         EXCEPTION "..." ' CÓDIGO: '||CAST(IIF(CHAR_LENGTH(NEW.CODIGO) <= 6, SUBSTRING(NEW.CODIGO FROM 1 FOR 3)||'.'||SUBSTRING(NEW.CODIGO FROM 4 FOR 6), NEW.CODIGO) AS VARCHAR(10))||' JÁ CADASTRADO!';
   END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbrh_ocorrencia_b01u for tbrh_ocorrencia
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';
    
    IF ( OLD.CODIGO <> NEW.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CÓDIGO:'|| OLD.CODIGO||'->'||NEW.CODIGO;
    END
    
    IF ( OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC:'|| OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END
    
    IF ( OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||' STATUS:'|| OLD.STATUS||'->'||NEW.STATUS;
    END

    IF ( OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBS:'|| OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
    END
    
    IF ( OLD.PERMITE_OBSERVACAO <> NEW.PERMITE_OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PERM. OBS:'|| OLD.PERMITE_OBSERVACAO||'->'||NEW.PERMITE_OBSERVACAO;
    END
    
    IF ( OLD.PERMITE_AVALIACAO <> NEW.PERMITE_AVALIACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PERM. AVAL:'|| OLD.PERMITE_AVALIACAO||'->'||NEW.PERMITE_AVALIACAO;
    END
    
    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBRH_OCORRENCIA',NEW.ID, HISTORICO);
    END
END
^

SET TERM ; ^

UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
                      VALUES (23070, 'RH', 'RH', '1   ', '', 'CADASTRO DE OCORRÊNCIAS DE COLABORADOR', NULL)
                    MATCHING (CONTROLE);

COMMIT WORK;


