ALTER TABLE TBPCM_SETOR_STATUS
    ADD CHAMADO_TIPO_ID INTEGER;

/*********************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbpcm_setor_status_b01u for tbpcm_setor_status
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_CHAMADO_TIPO VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_TIPO VARCHAR(500);
BEGIN

    HISTORICO = '';
    OLD_CHAMADO_TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBPCM_CHAMADO_TIPO A WHERE A.ID = OLD.CHAMADO_TIPO_ID), '');
    NEW_CHAMADO_TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBPCM_CHAMADO_TIPO A WHERE A.ID = NEW.CHAMADO_TIPO_ID), '');

    IF (OLD.ID <= 0) THEN
    BEGIN
        EXCEPTION "..." 'Este registro não pode ser alterado!';
    END

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

    IF (OLD.COR <> NEW.COR) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR:'||OLD.COR||'->'||NEW.COR;
    END

    IF (OLD.TIPO <> NEW.TIPO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO:'||OLD.TIPO||'->'||NEW.TIPO;
    END

    IF (OLD.DESCRICAO_ABREV <> NEW.DESCRICAO_ABREV) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC.ABREV:'||OLD.DESCRICAO_ABREV||'->'||NEW.DESCRICAO_ABREV;
    END

    IF (OLD.CHAMADO_TIPO_ID <> NEW.CHAMADO_TIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO CHAMADO:'||OLD_CHAMADO_TIPO||'->'||NEW_CHAMADO_TIPO;
    END
    
    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'STATUS: '||FN_LPAD(OLD.ID, 4, '0')||' - '||NEW.DESCRICAO||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPCM_SETOR', OLD.SETOR_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

