SET TERM ^ ;

CREATE OR ALTER trigger ttbpcm_origem_b01u for tbpcm_origem
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);

DECLARE VARIABLE OLD_SETOR VARCHAR(500);
DECLARE VARIABLE NEW_SETOR VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ID < 1) THEN
    BEGIN
        EXCEPTION "..." 'ESTE REGISTRO NAO PODE SER ALTERADO!';
    END

    OLD_SETOR = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBPCM_SETOR A WHERE A.ID = OLD.SETOR_ID), '');
    NEW_SETOR = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBPCM_SETOR A WHERE A.ID = NEW.SETOR_ID), '');

    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.SETOR_ID <> NEW.SETOR_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' SETOR:'||OLD_SETOR||'->'||NEW_SETOR;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPCM_ORIGEM', OLD.ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpcm_origem_b01d for tbpcm_origem
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE CHAMADOS INTEGER;
BEGIN

    HISTORICO = '';

    CHAMADOS = COALESCE((SELECT FIRST 1 A.ID FROM TBPCM_REGISTRO_CHAMADO A WHERE A.ORIGEM_ID = OLD.ID), 0);

    IF (OLD.ID < 1) THEN
    BEGIN
        EXCEPTION "..." 'ESTE REGISTRO NAO PODE SER EXCLUIDO!';
    END

    IF (CHAMADOS > 0) THEN
    BEGIN
        EXCEPTION "..." 'ESTA ORIGEM JÁ ESTÁ EM USO NO CHAMADO Nº:'||CHAMADOS||'. EXCLUSAO NAO AUTORIZADA!';
    END

    IF(OLD.ID > 0)THEN
    BEGIN
        HISTORICO = HISTORICO||'REGISTRO EXCLUIDO';
    END

    IF(HISTORICO <> '')THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPCM_ORIGEM', OLD.ID, HISTORICO);
    END
END
^

SET TERM ; ^