CREATE TRIGGER TTBFAMILIA_B05I FOR TBFAMILIA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  if (NEW.CODIGO is null) then
    NEW.CODIGO = gen_id(GTBFAMILIA,1);
END;

CREATE OR ALTER TRIGGER TTBESTABELECIMENTO_B02I FOR TBESTABELECIMENTO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Reg. Incluido ';
    END

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

CREATE TRIGGER TTBESTABELECIMENTO_B03I FOR TBESTABELECIMENTO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (NEW.CODIGO is null) then
    NEW.CODIGO = gen_id(GTBESTABELECIMENTO,1);
end;

CREATE OR ALTER TRIGGER TTBESTABELECIMENTO_B02U FOR TBESTABELECIMENTO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(8000);
BEGIN
  
     HISTORICO = '';
    
    IF (OLD.RAZAOSOCIAL <> NEW.RAZAOSOCIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Raz.Soc: '||OLD.RAZAOSOCIAL||' -> '||NEW.RAZAOSOCIAL;
    END
    IF (OLD.NOMEFANTASIA <> NEW.NOMEFANTASIA) THEN
    BEGIN
        HISTORICO = HISTORICO||', N.Fant: '||OLD.NOMEFANTASIA||' -> '||NEW.NOMEFANTASIA;
    END
    IF (OLD.CNPJ <> NEW.CNPJ) THEN
    BEGIN
        HISTORICO = HISTORICO||', CNPJ: '||OLD.CNPJ||' -> '||NEW.CNPJ;
    END
    IF (old.IE <> new.IE) THEN
    BEGIN
        HISTORICO = HISTORICO||', IE: '||OLD.IE||' -> '||NEW.IE;
    END
    IF (OLD.IM <> NEW.IM) THEN
    BEGIN
        HISTORICO = HISTORICO||', IM: '||OLD.IM||' -> '||NEW.IM;
    END 
    IF (OLD.ENDERECO <> NEW.ENDERECO) THEN
    BEGIN
        HISTORICO = HISTORICO||', End: '||OLD.ENDERECO||' -> '||NEW.ENDERECO;
    END
    IF (OLD.NUMERO <> NEW.NUMERO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Nr: '||OLD.NUMERO||' -> '||NEW.NUMERO;
    END
    IF (OLD.COMPLEMENTO <> NEW.COMPLEMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Compl.: '||OLD.COMPLEMENTO||' -> '||NEW.COMPLEMENTO;
    END  
    IF (OLD.BAIRRO <> NEW.BAIRRO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Bairro: '||OLD.BAIRRO||' -> '||NEW.BAIRRO;
    END
    IF (OLD.CEP <> NEW.CEP) THEN
    BEGIN
        HISTORICO = HISTORICO||', CEP: '||OLD.CEP||' -> '||NEW.CEP;
    END
    IF (OLD.CIDADE <> NEW.CIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cidade: '||OLD.CIDADE||' -> '||NEW.CIDADE;
    END
    IF (OLD.UF <> NEW.UF) THEN
    BEGIN
        HISTORICO = HISTORICO||', UF: '||OLD.UF||' -> '||NEW.UF;
    END 
    IF (OLD.SITE <> NEW.SITE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Site: '||OLD.SITE||' -> '||NEW.SITE;
    END
    IF (OLD.EMAIL <> NEW.EMAIL) THEN
    BEGIN
        HISTORICO = HISTORICO||', Email: '||OLD.Email||' -> '||NEW.Email;
    END
    IF (OLD.FONE <> NEW.FONE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Fone: '||OLD.FONE||' -> '||NEW.FONE;
    END
    IF (OLD.FAX <> NEW.FAX) THEN
    BEGIN
        HISTORICO = HISTORICO||', Fax: '||OLD.FAX||' -> '||NEW.FAX;
    END
    IF (OLD.PEDIDO <> NEW.PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Rec.Ped.: '||OLD.PEDIDO||' -> '||NEW.PEDIDO;
    END
    IF (OLD.REGIME_TRIBUTARIO <> NEW.REGIME_TRIBUTARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Reg.Trib.: '||OLD.REGIME_TRIBUTARIO||' -> '||NEW.REGIME_TRIBUTARIO;
    END    
    IF (OLD.INSCRICAO_ORGAO <> NEW.INSCRICAO_ORGAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Insc.Órg: '||OLD.INSCRICAO_ORGAO||' -> '||NEW.INSCRICAO_ORGAO;
    END
    IF (OLD.INSCRICAO_NUMERO <> NEW.INSCRICAO_NUMERO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Insc.Nr.: '||OLD.INSCRICAO_NUMERO||' -> '||NEW.INSCRICAO_NUMERO;
    END 
    IF (OLD.INSCRICAO_DATA <> NEW.INSCRICAO_DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Insc.Dt. '||FN_DATE_TO_STRING(old.INSCRICAO_DATA)||' -> '||FN_DATE_TO_STRING(new.INSCRICAO_DATA);
    END
    IF (OLD.SUBSTITUTO_TRIBUTARIO <> NEW.SUBSTITUTO_TRIBUTARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Subs.Trb.: '||OLD.SUBSTITUTO_TRIBUTARIO||' -> '||NEW.SUBSTITUTO_TRIBUTARIO;
    END
    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBESTABELECIMENTO', NEW.CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBESTABELECIMENTO_B02D FOR TBESTABELECIMENTO
ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Reg. Excluido ';
    END

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

CREATE OR ALTER TRIGGER TTBESTABELECIMENTO_B03D FOR TBESTABELECIMENTO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE p1  Integer; DECLARE VARIABLE p2  Integer;
DECLARE VARIABLE p3  Integer; DECLARE VARIABLE p4  Integer;
DECLARE VARIABLE p6  Integer; DECLARE VARIABLE p8  Integer;
DECLARE VARIABLE p9  Integer; DECLARE VARIABLE p10 Integer;
DECLARE VARIABLE p11 Integer; DECLARE VARIABLE p12 Integer;
DECLARE VARIABLE p14 Integer; DECLARE VARIABLE p15 Integer;
DECLARE VARIABLE p16 Integer;
Begin

For Select
(Select First 1 A.Numero_NotaFiscal   From TbNfs_Item A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.Numero_NotaFiscal   From TbNfe_Item A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.Pedido              From TbPedido_Item A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.OC                  From TbOc_Item A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.COO                 From TBCF_VENDA_DETALHE A Where A.ESTABELECIMENTO_ID = OLD.CODIGO),
(Select First 1 A.Produto_Codigo      From TBPRODUTO_PRECO A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.TRANSACAO_DOCUMENTO From TBESPUMACAO_TRANSACAO A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.Produto_Codigo      From TBESTOQUE_MINIMO A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.Produto_Codigo      From TBESTOQUE_SALDO A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.Patrimonio          From TBPATRIMONIO A Where A.ESTABELECIMENTO_ID = OLD.CODIGO),
(Select First 1 A.REMESSA             From TBPEDIDO_ITEM_PROCESSADO A Where A.ESTABELECIMENTO_CODIGO = OLD.CODIGO),
(Select First 1 A.REMESSA             From TBREMESSA_CONSUMO A Where A.ESTABELECIMENTO_ID = OLD.CODIGO),
(Select First 1 A.Produto_ID          From TBDEFEITO_TRANSACAO_ITEM A Where A.ESTABELECIMENTO_ID = OLD.CODIGO)

FROM RDB$DATABASE
Into :p1,:p2,:p3,:p4,:p6,:p8,:p9,:p10,:p11,:p12,:p14,:p15,:p16
Do
begin

  if (:P1 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em documentos fiscais! NFS.'||:p1||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P2 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em documentos fiscais! NFE.'||:p2||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P3 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em pedido! PED.'||:p3||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P4 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em ordens de compra! OC.'||:p4||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P6 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em cupons fiscais! COO.'||:p6||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';

  if (:P8 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em composição de preço! '||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P9 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em transação de espumação! DOC.'||:p9||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P10> 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em definição de estoque mínimo! '||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';

  if (:P11 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em movimentação de estoque! '||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P12 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em registro de patrimônio! PATR.'||:p12||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P14 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em remessa! REM.'||:p14||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P15 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em consumo de remessa! REM.'||:p15||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (:P16 > 0) Then Exception "..." 'Exclusão não permitida. Estabelecimento já usado em registros de defeitos!'||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';

end

End;
