CREATE TABLE TBGRUPO_PRODUTO_EDI (
    ID INTEGER NOT NULL,
    EMPRESA_ID INTEGER,
    GRUPO_PRODUTO_ID INTEGER,
    UNIDADEMEDIDA_SIGLA VARCHAR(10),
    ALTERANFE CHAR(1),
    CUSTO_UNITARIO NUMERIC(15,4),
    OBSERVACAO VARCHAR(100),
    PRIORIDADE INTEGER,
    MULTIPLO INTEGER);

ALTER TABLE TBGRUPO_PRODUTO_EDI
ADD CONSTRAINT PK_TBGRUPO_PRODUTO_EDI
PRIMARY KEY (ID);

CREATE SEQUENCE GTBGRUPO_PRODUTO_EDI;

create trigger ttbgrupo_produto_edi_bi for tbgrupo_produto_edi
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbgrupo_produto_edi,1);
end;


CREATE OR ALTER trigger ttbgrupo_produto_edi_b02i for tbgrupo_produto_edi
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE EMPRESA_DESC VARCHAR(200);
BEGIN

    HISTORICO = '';

    EMPRESA_DESC = COALESCE((SELECT FIRST 1 E.RAZAOSOCIAL FROM TBEMPRESA E WHERE E.CODIGO = NEW.EMPRESA_ID), '');

    IF ( NEW.EMPRESA_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'VINC.EDI EMPRESA:'||NEW.EMPRESA_ID||' - '||EMPRESA_DESC||' INCLUIDO.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRUPO_PRODUTO',NEW.GRUPO_PRODUTO_ID, HISTORICO);
    END
END;


CREATE trigger ttbgrupo_produto_edi_b01d for tbgrupo_produto_edi
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE EMPRESA_DESC VARCHAR(200);
BEGIN

    HISTORICO = '';

    EMPRESA_DESC = COALESCE((SELECT FIRST 1 E.RAZAOSOCIAL FROM TBEMPRESA E WHERE E.CODIGO = OLD.EMPRESA_ID), '');

    IF ( OLD.EMPRESA_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'VINC.EDI EMPRESA:'||OLD.EMPRESA_ID||' - '||EMPRESA_DESC||' INCLUIDO.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRUPO_PRODUTO',OLD.GRUPO_PRODUTO_ID, HISTORICO);
    END
END;


CREATE trigger ttbgrupo_produto_edi_b01u for tbgrupo_produto_edi
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
DECLARE VARIABLE EMPRESA_DESC VARCHAR(200);
BEGIN

    HISTORICO = '';

    EMPRESA_DESC = COALESCE((SELECT FIRST 1 E.RAZAOSOCIAL FROM TBEMPRESA E WHERE E.CODIGO = NEW.EMPRESA_ID), '');

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

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

    IF (OLD.ALTERANFE IS DISTINCT FROM NEW.ALTERANFE) THEN
    BEGIN
        HISTORICO = HISTORICO||' ALT.NFE:'||COALESCE(OLD.ALTERANFE, '0')||'->'||COALESCE(NEW.ALTERANFE, '0');
    END

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' VINC.EDI: EMPRESA: '||OLD.EMPRESA_ID||' - '||EMPRESA_DESC||', ALTERADO: '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRUPO_PRODUTO', NEW.GRUPO_PRODUTO_ID, FN_ELIPSES(HISTORICO,500));
    END
END;




