Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2799 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Conta Santader Pessoa Fisica

Boa tarde! Estou com problema ao carregar o retorno, a variável rCNPJCPF recebe o CPF com 14 digitos e quando o campo Cedente.CNPJCPF vai recebe-lo, ao validar da o seguinte erro: CPF deve ter 11 dígitos. (Apenas Números).

Estou passando: // frmDM.ACBrBoleto1.Cedente.TipoInscricao :=pFisica; 

// frmDM.ACBrBoleto1.Cedente.CNPJCPF := (CPF 11 Digitos);

 

Procedure TACBrBancoSantander.LerRetorno400 ( ARetorno: TStringList );

rCNPJCPF := OnlyNumber( Copy(ARetorno[1],04,14) ); // recebe 000 + CPF 11 Digitos.

   ACBrBanco.ACBrBoleto.DataCreditoLanc :=
     StringToDateTimeDef(Copy(ARetorno[0], 95, 2) + '/' +
                         Copy(ARetorno[0], 97, 2) + '/' +
                         Copy(ARetorno[0], 99, 2), 0, 'dd/mm/yy');

   with ACBrBanco.ACBrBoleto do
   begin
      if (not LeCedenteRetorno) and (rCNPJCPF <> OnlyNumber(Cedente.CNPJCPF)) then
         raise Exception.Create(ACBrStr('CNPJ\CPF do arquivo inválido'));

      if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
          (rConta <> OnlyNumber(Cedente.Conta))) then
         raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));

      Cedente.Nome    := rCedente;
      Cedente.CNPJCPF := rCNPJCPF; // Erro ao validar.
      Cedente.Agencia := rAgencia;
      Cedente.AgenciaDigito:= '0';
      Cedente.Conta   := rConta;
      Cedente.ContaDigito:= rDigitoConta;

Postado

tem uma gambia a fazer antes..

ACBrBoleto1.LeCedenteRetorno := false;

Para processar meu retorno vindo do Itau, em que tenho a conta fisica e vem errado no retorno como se fosse pessoa juridica, faço a treta abaixo:

E antes de passar para o componente o arquivo de retorno, voce abre ele em um tstringlist (exemplo: LS.LoadfromFile() ) e faça:

se          (Copy(LS[0], 1, 19) = '02RETORNO01COBRANCA') or
          (Copy(LS[0], 1, 19) = '02RETORNO01COBRANÇA'); // SICOOB VEM COM CEDILHA

e se a posicao 1 do arquivo for igual a '1' e a posicao 2 até 3 for = 02, mude a posicao 3 por 1

O que vai ser feito é mudar a posicao 2 e 3 de '02' para '01'

Postado (editado)

Bom dia! 

O retorno esta vindo certo, acho que o erro esta no fonte do acbr, o correto seria ter a validação para que a variável pegue o CPF com os 11 digitos. Teria que ter este case para verificar se é pessoa fisica ou juridica. 

Eu tento alterar o fonte do AcbrBancoSantander.pas, porém o compilador não considera a alteração. E também caso eu consiga alterar, todas as vezes que eu for atualizar o acbr, vou ter que fazer esta alteração no fonte. 

 

Procedure TACBrBancoSantander.LerRetorno400 ( ARetorno: TStringList );
var
  Titulo : TACBrTitulo;
  ContLinha, CodOcorrencia, CodMotivo : Integer;
  Linha, rCedente, rAgencia, rConta, rDigitoConta, rCNPJCPF : String;
  wCodBanco: Integer;
begin
   wCodBanco := StrToIntDef(copy(ARetorno.Strings[0],77,3),-1);
   if (wCodBanco <> Numero) and (wCodBanco <> 353) then
      raise Exception.Create(ACBrStr(ACBrBanco.ACBrBoleto.NomeArqRetorno +
                             'não é um arquivo de retorno do '+ Nome));

   rCedente := trim(Copy(ARetorno[0],47,30));
   rAgencia := trim(Copy(ARetorno[1],18,4));
   rConta   := trim(Copy(ARetorno[1],22,8))+ Copy(ARetorno[1],384,1);
   rConta   := PadLeft( OnlyNumber(rConta),fpTamanhoConta,'0');
   rDigitoConta := Copy(ARetorno[1],385,1);

   case StrToIntDef(Copy(ARetorno[1],2,2),0) of
      01: rCNPJCPF := Copy(ARetorno[1],7,11);
      02: rCNPJCPF := Copy(ARetorno[1],4,14);
   end;

   ACBrBanco.ACBrBoleto.DataCreditoLanc :=
     StringToDateTimeDef(Copy(ARetorno[0], 95, 2) + '/' +
                         Copy(ARetorno[0], 97, 2) + '/' +
                         Copy(ARetorno[0], 99, 2), 0, 'dd/mm/yy');

   with ACBrBanco.ACBrBoleto do
   begin
      if (not LeCedenteRetorno) and (rCNPJCPF <> OnlyNumber(Cedente.CNPJCPF)) then
         raise Exception.Create(ACBrStr('CNPJ\CPF do arquivo inválido'));

      if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
          (rConta <> OnlyNumber(Cedente.Conta))) then
         raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));

      Cedente.Nome    := rCedente;
      Cedente.CNPJCPF := rCNPJCPF;
      Cedente.Agencia := rAgencia;
      Cedente.AgenciaDigito:= '0';
      Cedente.Conta   := rConta;
      Cedente.ContaDigito:= rDigitoConta;

Editado por thribeiro
  • Este tópico foi criado há 2799 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.