SET TERM ^ ;

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

DECLARE VARIABLE OLD_UNIDADEMEDIDA VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_UNIDADEMEDIDA = COALESCE((SELECT FIRST 1 A.SIGLA||' - '||A.DESCRICAO FROM TBUNIDADEMEDIDA A WHERE A.ID = OLD.UNIDADEMEDIDA_DESTINO), '');

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'UNIDADE ALTERNATIVA: '||OLD_UNIDADEMEDIDA||'  EXCLUIDA';
    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbunidademedida_regra_b02i for tbunidademedida_regra
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE NEW_UNIDADEMEDIDA VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    NEW_UNIDADEMEDIDA = COALESCE((SELECT FIRST 1 A.SIGLA||' - '||A.DESCRICAO FROM TBUNIDADEMEDIDA A WHERE A.ID = NEW.UNIDADEMEDIDA_DESTINO), '');

    IF (NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'UNIDADE ALTERNATIVA: '||NEW_UNIDADEMEDIDA||' INCLUIDA';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUNIDADEMEDIDA', NEW.UNIDADEMEDIDA_ORIGEM, HISTORICO);
    END
END
^

SET TERM ; ^



