-----------------------------------------------------------------------------------------------------------------------------------------------------
-- TBPEDIDO_UF

ALTER TABLE TBPEDIDO_UF ADD ID INTEGER;

CREATE SEQUENCE GTBPEDIDO_UF;

ALTER SEQUENCE GTBPEDIDO_UF RESTART WITH 27 INCREMENT BY 1;

ALTER TABLE TBPEDIDO_UF ALTER ID SET NOT NULL;

ALTER TABLE TBPEDIDO_UF ADD UNIQUE (ID);

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_UF_B01I FOR TBPEDIDO_UF
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF(NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBPEDIDO_UF,1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_UF_B02I FOR TBPEDIDO_UF
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE PEDIDO_UF INTEGER;
BEGIN
    PEDIDO_UF = COALESCE((SELECT A.ID FROM TBPEDIDO_UF A WHERE A.ESTABELECIMENTO_ID = NEW.ESTABELECIMENTO_ID AND A.UF = NEW.UF), 0);

    IF(PEDIDO_UF > 0)THEN
    BEGIN
        EXCEPTION "..." 'REGISTRO JÁ EXISTENTE COM ID'||PEDIDO_UF;
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_UF_B03I FOR TBPEDIDO_UF
ACTIVE BEFORE INSERT POSITION 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'REGISTRO INCLUIDO';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO_UF', NEW.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_UF_B01U FOR TBPEDIDO_UF
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(2000);
BEGIN

    HISTORICO = '';

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

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_UF_B01D FOR TBPEDIDO_UF
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'REGISTRO EXCLUIDO';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO_UF', OLD.ID, HISTORICO);
    END
END
^

SET TERM ; ^

-----------------------------------------------------------------------------------------------------------------------------------------------------
-- TBPEDIDO_EMAIL_TEMPLATE

DROP TRIGGER TTBPEDIDO_EMAIL_TEMPLATE_B0I;

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_EMAIL_TEMPLATE_B01I FOR TBPEDIDO_EMAIL_TEMPLATE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF(NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBPEDIDO_EMAIL_TEMPLATE,1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_EMAIL_TEMPLATE_B02I FOR TBPEDIDO_EMAIL_TEMPLATE
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'REGISTRO INCLUIDO';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO_EMAIL_TEMPLATE', NEW.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_EMAIL_TEMPLATE_B01U FOR TBPEDIDO_EMAIL_TEMPLATE
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(2000);
BEGIN

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

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

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

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO_EMAIL_TEMPLATE_B01D FOR TBPEDIDO_EMAIL_TEMPLATE
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'REGISTRO EXCLUIDO';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO_EMAIL_TEMPLATE', OLD.ID, HISTORICO);
    END
END
^

SET TERM ; ^