ALTER TABLE TBESTABELECIMENTO
ADD BASELEGAL_ID INTEGER;

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 (OLD.produtivo <> NEW.produtivo) THEN
    BEGIN
        HISTORICO = HISTORICO||' Produtivo:'||OLD.produtivo||'->'||NEW.produtivo;
    END
    
    IF (OLD.BASELEGAL_ID <> NEW.BASELEGAL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' BS.LEGAL:'||OLD.BASELEGAL_ID||'->'||NEW.BASELEGAL_ID;
    END

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