CREATE OR ALTER TRIGGER TTBEMPRESA_B04I FOR TBEMPRESA
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE EMPRESA               VARCHAR(200);
DECLARE VARIABLE TIPO_EMPRESA          VARCHAR(200);
DECLARE VARIABLE REPRESENTANTE         VARCHAR(200);

DECLARE VARIABLE PARAMETRO_USUARIO_193 CHAR(1);
DECLARE VARIABLE USUARIO_ID            INTEGER;
DECLARE VARIABLE USUARIO_NOME          VARCHAR(20);
BEGIN

    if(inserting)then
    begin
    
        USUARIO_NOME          = (SELECT MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION);
        USUARIO_ID            = COALESCE((SELECT FIRST 1 U.CODIGO FROM TBUSUARIO U WHERE U.USUARIO = :USUARIO_NOME AND U.STATUS = '1'),0);
        PARAMETRO_USUARIO_193 = COALESCE((SELECT FIRST 1 C.VALOR_EXT FROM TBCONTROLE_USUARIO C WHERE C.ID = 193 AND C.USUARIO_ID = :USUARIO_ID),'0');
    
        IF (:PARAMETRO_USUARIO_193 <> '1') THEN
        BEGIN
    
            IF (NEW.UF <> 'EX' AND (FN_IS_EMPTY(NEW.CNPJ) <> '' AND CAST(NEW.CNPJ AS BIGINT) > 0)) THEN
            BEGIN
    
                FOR
                  SELECT FIRST 1
                       FN_LPAD(E.CODIGO, 6, '0')||' - '||E.NOMEFANTASIA AS EMPRESA,
                       IIF(E.HABILITA_CLIENTE = '1','CLIENTE',
                       IIF(E.HABILITA_REPRESENTANTE = '1', 'REPRESENTANTE',
                       IIF(E.HABILITA_FORNECEDOR = '1', 'FORNECEDOR',
                       IIF(E.HABILITA_TRANSPORTADORA = '1', 'TRANSPORTADORA','')))) AS TIPO_EMPRESA,
                       IIF(E.HABILITA_CLIENTE = '1',COALESCE((SELECT FIRST 1 B.RAZAOSOCIAL FROM TBREPRESENTANTE B, TBCLIENTE F WHERE B.CODIGO = F.REPRESENTANTE_CODIGO AND F.CODIGO = E.CODIGO),''),'') REPRESENTANTE
                     FROM TBEMPRESA E
                     WHERE E.CNPJ = NEW.CNPJ
                     AND E.UF <> 'EX'
                 INTO EMPRESA, TIPO_EMPRESA, REPRESENTANTE
                 DO BEGIN
                        EXCEPTION "..." 'JÁ EXISTE UM '||:TIPO_EMPRESA||' CADASTRADO COM ESTE '||iif(char_length(new.CNPJ) > 11, 'CNPJ'||fn_mask(new.CNPJ,'CNPJ'),'CPF'||fn_mask(new.CNPJ,'CPF'))
                             ||'<BR>'||EMPRESA||IIF(:TIPO_EMPRESA = 'CLIENTE','<BR>REPRESENTANTE: '||REPRESENTANTE||'.','');
                    END
    
            END
    
        END
    end

    if(updating)then
    begin
        if(old.CNPJ is distinct from new.cnpj)then
        begin

            USUARIO_NOME          = (SELECT MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION);
            USUARIO_ID            = COALESCE((SELECT FIRST 1 U.CODIGO FROM TBUSUARIO U WHERE U.USUARIO = :USUARIO_NOME AND U.STATUS = '1'),0);
            PARAMETRO_USUARIO_193 = COALESCE((SELECT FIRST 1 C.VALOR_EXT FROM TBCONTROLE_USUARIO C WHERE C.ID = 193 AND C.USUARIO_ID = :USUARIO_ID),'0');
        
            IF (:PARAMETRO_USUARIO_193 <> '1') THEN
            BEGIN
        
                IF (NEW.UF <> 'EX' AND (FN_IS_EMPTY(NEW.CNPJ) <> '' AND CAST(NEW.CNPJ AS BIGINT) > 0)) THEN
                BEGIN
        
                    FOR
                      SELECT FIRST 1
                           FN_LPAD(E.CODIGO, 6, '0')||' - '||E.NOMEFANTASIA AS EMPRESA,
                           IIF(E.HABILITA_CLIENTE = '1','CLIENTE',
                           IIF(E.HABILITA_REPRESENTANTE = '1', 'REPRESENTANTE',
                           IIF(E.HABILITA_FORNECEDOR = '1', 'FORNECEDOR',
                           IIF(E.HABILITA_TRANSPORTADORA = '1', 'TRANSPORTADORA','')))) AS TIPO_EMPRESA,
                           IIF(E.HABILITA_CLIENTE = '1',COALESCE((SELECT FIRST 1 B.RAZAOSOCIAL FROM TBREPRESENTANTE B, TBCLIENTE F WHERE B.CODIGO = F.REPRESENTANTE_CODIGO AND F.CODIGO = E.CODIGO),''),'') REPRESENTANTE
                         FROM TBEMPRESA E
                         WHERE E.CNPJ = NEW.CNPJ
                         AND E.UF <> 'EX'
                     INTO EMPRESA, TIPO_EMPRESA, REPRESENTANTE
                     DO BEGIN
                            EXCEPTION "..." 'JÁ EXISTE UM '||:TIPO_EMPRESA||' CADASTRADO COM ESTE '||iif(char_length(new.CNPJ) > 11, 'CNPJ'||fn_mask(new.CNPJ,'CNPJ'),'CPF'||fn_mask(new.CNPJ,'CPF'))
                                 ||'<BR>'||EMPRESA||IIF(:TIPO_EMPRESA = 'CLIENTE','<BR>REPRESENTANTE: '||REPRESENTANTE||'.','');
                        END
        
                END
        
            END

        end
    end
END