SET TERM ^ ;

CREATE OR ALTER trigger ttbempresa_b03i for tbempresa
active before insert position 0
AS
declare variable tipo_cliente       integer;
declare variable representante      integer;
declare variable PAGAMENTO_FORMA    integer;
declare variable PAGAMENTO_CONDICAO integer;
declare variable BLOQ_FORMA_PAG     integer;

begin
    --new.endereco2 = new.endereco;
   --- new.numero2 = new.numero;
    
    if( (new.ecommerce = 1 or new.ecommerce = 2) or new.replicar_cliente = 1)then
    begin

        if(new.ecommerce = 1)then
        begin
           new.conta_contabil = FN_PARAMETRO('SISTEMA.CONTA_ECOMMERCE');

           :tipo_cliente = coalesce(FN_PARAMETRO('SISTEMA.TIPOECOMMERCE'),59);
        end

        if(new.ecommerce = 2)then
        begin
           new.conta_contabil = FN_PARAMETRO('SISTEMA.CONTA_LACLOFIT');

           :tipo_cliente = coalesce(FN_PARAMETRO('SISTEMA.TIPO_CLIENTE_LACLOFIT'),62);
        end

       :BLOQ_FORMA_PAG    = 0;
       :PAGAMENTO_FORMA   = 0;

       if(new.replicar_cliente = 1)then
       begin
           :PAGAMENTO_FORMA   = COALESCE((SELECT FIRST 1 A.CODIGO FROM TBPAGAMENTO_FORMA A WHERE A.CODIGO = IIF(COALESCE(FN_PARAMETRO('SISTEMA.FORMA_PAGAMENTO_PADRAO'),0) <> '',CAST(COALESCE(FN_PARAMETRO('SISTEMA.FORMA_PAGAMENTO_PADRAO'),0) AS INTEGER),0) AND A.STATUS = '1'),0);
           IF(:PAGAMENTO_FORMA > 0)THEN
           BEGIN
              :BLOQ_FORMA_PAG = 1;
           END
       end

       INSERT INTO TBCLIENTE (
             RAZAOSOCIAL,
             CODIGO,
             TRANSPORTADORA_CODIGO,
             PAGAMENTO_CONDICAO,
             PAGAMENTO_FORMA,
             STATUS,
             UF,
             BLOQUEIA_PEDIDO,
             BLOQUEIA_NOTAFISCAL,
             REPRESENTANTE_COMISSAO,
             GRADE_SECUNDARIA,
             LIMITE_CREDITO,
             SUFRAMA,
             GRUPO,
             BOQUEIA_PAGAMENTO_CONDICAO,
             TIPO_CODIGO,
             VENDEDOR_CODIGO,
             MATRIZ_ID,
             VENDEDOR_COMISSAO,
             ATENDE_GRADE_COMPLETA,
             SUFRAMA_VENCIMENTO,
             LOJA,
             BLOQUEIO_DIAS_ATRASO,
             BLOQUEIO_DIAS_SEMMOV,
             TAG,
             PRIORIDADE,
             INATIVA_DIAS_SEMMOV,
             CONFIRMACAO_AUTOMATICA,
             PAFECF,
             FRETE,
             SUBSTITUIDO_TRIBUTARIO,
             DATA_BLOQUEIO,
             BLOQUEIO_MOTIVO,
             NOTIFICAR_DIAS_ATRASO,
             NOTIFICAR_ATRASO,
             ETIQUETA,
             EMPRESA_VINCULO,
             BLOQUEIO_DIAS_ATRASO_NF,
             ECOMMERCE
       ) VALUES (
             new.razaosocial,
             new.codigo,
             0,
             0,
             :PAGAMENTO_FORMA,
             '1',
             new.uf,
             '',
             '',
             0,
             '0',
             0,
             '',
             '0',
             :BLOQ_FORMA_PAG,
             1,
             new.vendedor_id,
             0,
             0,
             '',
             NULL,
             '',
             0,
             0,
             '',
             10,
             0,
             '',
             '',
             0,
             '0',
             NULL,
             '',
             0,
             0,
             substring(new.razaosocial from 1 for 6),
             new.codigo,
             0,
             iif(new.replicar_cliente = 1, 0, new.ecommerce)
        );

        INSERT INTO TBEMPRESA_VINCULO_TIPO (EMPRESA_VINCULO, CLIENTE_TIPO_ID, STATUS) VALUES (NEW.codigo, :tipo_cliente, 1);
    end
end
^

SET TERM ; ^

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);
DECLARE VARIABLE PED_REPRESENTANTE     INTEGER;
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

        if(coalesce(old.habilita_representante,'0') = '1' and coalesce(new.habilita_representante,'0') <> '1')then
        begin
            :PED_REPRESENTANTE = COALESCE((SELECT FIRST 1 A.PEDIDO FROM TBPEDIDO A WHERE A.representante_codigo = NEW.CODIGO),0);
            IF(:PED_REPRESENTANTE > 0)THEN
            BEGIN
               EXCEPTION "..." 'REPRESENTANTE:'||NEW.NOMEFANTASIA||' JA POSSUI PEDIDOS VINCULADOS.<BR> OPERACAO CANCELADA.';
            END
        end
    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

    UPDATE TBEMPRESA T SET T.REPRESENTANTE_ID = COALESCE(NEW.REPRESENTANTE_CODIGO, 0) WHERE T.CODIGO = NEW.CODIGO;

end
^

SET TERM ; ^

