Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

O ACBrBancoBanese não estava de acordo com o Manual do banco, inclusive no cálculo do digito verificador do nosso número, então fiz algumas mudanças no mesmo. Fiz os testes e homologuei a remessa e os boletos junto ao banco. A homologação foi feita com sucesso. Seguem as alterações realizadas e o arquivo ACBrBancoBanese.pas com as alterações realizadas. Seria bom subir o pas não?

function TACBrBancoBanese.CalcularDigitoVerificador( const ACBrTitulo: TACBrTitulo ): String;
var
   ADigitoNossoNumero : string;
begin
   Modulo.CalculoPadrao;
   Modulo.MultiplicadorFinal  := 13;
   Modulo.Documento           := ACBrTitulo.NossoNumero;
   Modulo.Calcular;
   AdigitoNossoNumero         :=IntToStr(Modulo.DigitoFinal);
   Result:= AdigitoNossoNumero;
end;

// NÃO LEVAVA EM CONTA A AGÊNCIA NO DOCUMENTO (AAANNNNNNNN) E PARA QUE MultiplicadorFinal:= 13 ?
// TROCADO POR

function TACBrBancoBanese.CalcularDigitoVerificador( const ACBrTitulo: TACBrTitulo ): String;
begin
   Modulo.CalculoPadrao;
   Modulo.Documento:= PadLeft(ACBrTitulo.ACBrBoleto.Cedente.Agencia, 3, '0') +  RightStr(ACBrTitulo.NossoNumero, 8);
   Modulo.Calcular;
   Result:= IntToStr(Modulo.DigitoFinal);
end

function TACBrBancoBanese.MontarCampoNossoNumero ( const ACBrTitulo: TACBrTitulo ) : String;
begin
   ACBrTitulo.NossoNumero     := IntToStrZero( StrToIntDef((Trim(ACBrTitulo.NossoNumero)+Trim(CalcularDigitoVerificador(ACBrTitulo))),0) ,Self.TamanhoMaximoNossoNum);
   Result := ACBrTitulo.NossoNumero;
end;

// ACBrTitulo.NossoNumero:= ...   MODIFICA O NOSSO NÚMERO, ACRESCENTANDO O DIGITO AO MESMO.
// E SE VC PRECISAR CHAMAR A FUNÇÃO UMA SEGUNDA VEZ (PARA GRAVAR O NOSSO NRO MONTADO POR EXEMPLO) VAI BUGAR
// PORQUE VC ESTARÁ CRIANDO UM NOVO NOSSONUMERO (AGORA COM O DIGITO) PARA CALCULAR UM NOVO DIGITO
// TROCADO POR

function TACBrBancoBanese.MontarCampoNossoNumero ( const ACBrTitulo: TACBrTitulo ) : String;
begin
  result:= IntToStrZero( StrToIntDef((Trim(ACBrTitulo.NossoNumero)+Trim(CalcularDigitoVerificador(ACBrTitulo))),0) ,Self.TamanhoMaximoNossoNum);
end;

function TACBrBancoBanese.CalcularCampoASBACE(const ACBrTitulo: TACBrTitulo): string;
  ANossoNumero    := Copy(Trim(ACBrTitulo.NossoNumero), 1, ACBrTitulo.ACBrBoleto.Banco.TamanhoMaximoNossoNum);

// TROCADO POR
  ANossoNumero := MontarCampoNossoNumero(ACBrTitulo);
 

ACBrBancoBanese.pas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia,

Curioso a situação, mas de qualquer form, obrigada pela contribuição.

Adicionada para análise.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Em 22/07/2019 at 10:13, Juliana Tamizou disse:

Bom dia,

Curioso a situação, mas de qualquer form, obrigada pela contribuição.

Adicionada para análise.

Att.

Os boletos e a remessa já foram homologados com sucesso. Estou resolvendo o retorno. A cobrança já está em produção, mas a rotina de LeRetorno240 está totalmente desconforme com o manual do banco.

Já estou finalizando os ajustes, mas ficou uma dúvida.

Quando vou processar o retorno dá "Tamanho máximo do Nosso Número é 9". Está setado realmente para 9, os cálculos para o boleto e remessa são 9 mesmo (com o digito), mas o nosso número no arquivo de remessa e retorno tem 20 posições. Então acho que não posso setar o fpTamanhoMaximoNossoNumero para 20 né? não vai dar problemas no MontarNossoNumero por exemplo?

Inclusive o tal de ASBACE (que é usado na rotina para montar o código de barras) usa o MontarNossoNumero com 9 posições (com o dígito). Então como faço para resolver esse erro do retorno?

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Existe alguma circunstancia que retorne mais que 9 dígitos?

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Acho que não, mas são 20 posições na remessa e retorno, mas todos os cálculos são 9, só na montagem do arquivo é que são 20. Mas eu resolvi só com um rigthstr sem mexer no tamanhonossonumero = 9.

Curioso como estava em desacordo com o manual do banco, tanto o layout de remessa quanto o do retorno, até as posições e tamanho de nosso número e outros campos em LerRetorno240. 

Mas vou arredondar tudo esse fds e depois de uns 15 dias em produção fazendo as trocas de arquivo eu publico aqui o novo pas. 

Também, quase ninguém deve usar esse banco... 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Este tópico foi criado há 1683 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.

The popup will be closed in 10 segundos...