SET TERM ^ ;

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

    IF(COALESCE(NEW.REPRESENTANTE_ID, 0) = 0) THEN
    BEGIN
        NEW.REPRESENTANTE_ID = FN_PARAMETRO('SISTEMA.REPRESENTANTE_PADRAO');
    END
END
^

SET TERM ; ^


SET TERM ^ ;

CREATE OR ALTER trigger ttbcliente_b02iu for tbcliente
active before insert or update position 1
AS
begin
  if(new.LIMITE_CREDITO_MAXIMO > 0)then
  begin
     if(new.LIMITE_CREDITO > new.LIMITE_CREDITO_MAXIMO)then
     begin
        exception "..."' LIMITE CREDITO DE: R$ '||new.LIMITE_CREDITO||', ACIMA DO LIMITE MÁXIMO DE: R$ '||new.LIMITE_CREDITO_MAXIMO;
     end
  end

  NEW.RAZAOSOCIAL = REPLACE(NEW.RAZAOSOCIAL,'|','-');
  NEW.RAZAOSOCIAL = REPLACE(NEW.RAZAOSOCIAL,'"',' ');
  NEW.RAZAOSOCIAL = REPLACE(NEW.RAZAOSOCIAL,'''',' ');

    IF(COALESCE(NEW.REPRESENTANTE_CODIGO, 0) = 0) THEN
    BEGIN
        NEW.REPRESENTANTE_CODIGO = FN_PARAMETRO('SISTEMA.REPRESENTANTE_PADRAO');
    END

end
^

SET TERM ; ^



