Ir para conteúdo
  • Cadastre-se

dev botao

DV NossoNumero


Ver Solução Respondido por André L. P.,
  • Este tópico foi criado há 1323 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde,

ao emitir o boleto para o banco ITAU informando o campo "NossoNumero" com o valor "00004904", no boleto sai a informação com o cálculo do DV, que no qual é "00004904-8". Porém ao emitir o arquivo de remessa, no mesmo não sai a informação do DV, que no qual fica como "00004904".

Ao realizar o pagamento do boleto no banco, será encontrado o mesmo que foi registrado através do arquivo de remessa, visto que no boleto possui o DV e no arquivo não? Caso tenha algum problema, como gerar o DV no arquivo de remessa?

Obrigado.

Postado

Eu estou preenchendo corretamente todos os campos conforme as particularidades do banco Itaú, porém mesmo assim não consigo emitir o arquivo de remessa com o DV no campo nossonumero.

Postado
8 horas atrás, André L. P. disse:

Boa tarde,

ao emitir o boleto para o banco ITAU informando o campo "NossoNumero" com o valor "00004904", no boleto sai a informação com o cálculo do DV, que no qual é "00004904-8". Porém ao emitir o arquivo de remessa, no mesmo não sai a informação do DV, que no qual fica como "00004904".

Ao realizar o pagamento do boleto no banco, será encontrado o mesmo que foi registrado através do arquivo de remessa, visto que no boleto possui o DV e no arquivo não? Caso tenha algum problema, como gerar o DV no arquivo de remessa?

Obrigado.

pergunta: como voce grava esses dados no seu banco de dados?

Pois, considere gravar separado, para quando for gerar a remessa, o componente faz um corte na string do nosso numero, logo, o dv é gerado de novo.

 

repara:

 

function TACBrBancoItau.MontarCampoNossoNumero ( const ACBrTitulo: TACBrTitulo
   ) : String;
var
  NossoNr: String;
begin
  with ACBrTitulo do
  begin
    NossoNr := Carteira + PadLeft(NossoNumero,TamanhoMaximoNossoNum,'0');
  end;

  Insert('/',NossoNr,4);  Insert('-',NossoNr,13);
  Result := NossoNr + CalcularDigitoVerificador(ACBrTitulo);
end;

Postado

Bom dia Antônio,

eu grava somente a parte do nosso numero, sem a parte do digito verificador, pois o Acbr que é responsável por gerar.

Para o meu exemplo 00004904-8 eu salvo 00004904, assim você quer dizer que precisaria salvar o DV "8" também em BD e ao gerar o arquivo de remessa eu informo este na geração?

Postado

Você está correto, e em ambos os casos, o corte do DAC ou DV, é feito baseado no final da string proximo da linha 693, se for cnab400

Debuga seu programa, e analisa se está entrando no bloco correto, se não falta setar nada a mais, do que foi setado para a emissão. (voce pode ter telas distintas para operações).

       {Cobrança sem registro com opção de envio de arquivo remessa}
       if (wCarteira = '102') or (wCarteira = '103') or
          (wCarteira = '107') or (wCarteira = '172') or
          (wCarteira = '173') or (wCarteira = '196') then
        begin
          ANossoNumero := MontarCampoNossoNumero(ACBrTitulo);
          wLinha:= '6'                                                                            + // 6 - FIXO
                   '1'                                                                            + // 1 - FIXO
                   PadLeft(OnlyNumber(Cedente.Agencia), 4, '0')                                   + // AGÊNCIA MANTENEDORA DA CONTA
                   '00'                                                                           + // COMPLEMENTO DE REGISTRO
                   PadLeft(OnlyNumber(Cedente.Conta), 5, '0')                                     + // NÚMERO DA CONTA CORRENTE DA EMPRESA
                   PadRight(Cedente.ContaDigito, 1)                                               + // DÍGITO DE AUTO CONFERÊNCIA AG/CONTA EMPRESA
                   PadLeft(Carteira,3,' ')                                                        + // NÚMERO DA CARTEIRA NO BANCO
                   PadLeft(NossoNumero, 8, '0')                                                   + // IDENTIFICAÇÃO DO TÍTULO NO BANCO
                   Copy(ANossoNumero, Length(ANossoNumero), 1)    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Digito aqui

 

Já para o cnab 240, está por volta da linha 502, procure pela função: CalcularDigitoVerificador

Ah: para o mouse em cima da property NossoNumero, na linha 501, nisso: PadLeft(NossoNumero, 8, '0')  

 

Itau não tem erro, é um banco muito fácil de lidar e enviar remessa, tem casos piores....

Postado

o programa esta entrando no else desse if, que no qual esta correto, pois a carteira é a 109.

       {Cobrança sem registro com opção de envio de arquivo remessa}
       if (wCarteira = '102') or (wCarteira = '103') or
          (wCarteira = '107') or (wCarteira = '172') or
          (wCarteira = '173') or (wCarteira = '196') then
        begin
          ANossoNumero := MontarCampoNossoNumero(ACBrTitulo);
          wLinha:= '6'                                                                            + // 6 - FIXO
                   '1'                                                                            + // 1 - FIXO
                   PadLeft(OnlyNumber(Cedente.Agencia), 4, '0')                                   + // AGÊNCIA MANTENEDORA DA CONTA
                   '00'                                                                           + // COMPLEMENTO DE REGISTRO
                   PadLeft(OnlyNumber(Cedente.Conta), 5, '0')                                     + // NÚMERO DA CONTA CORRENTE DA EMPRESA
                   PadRight(Cedente.ContaDigito, 1)                                               + // DÍGITO DE AUTO CONFERÊNCIA AG/CONTA EMPRESA
                   PadLeft(Carteira,3,' ')                                                        + // NÚMERO DA CARTEIRA NO BANCO
                   PadLeft(NossoNumero, 8, '0')                                                   + // IDENTIFICAÇÃO DO TÍTULO NO BANCO
                   Copy(ANossoNumero, Length(ANossoNumero), 1)    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Digito aqui

 

porém identifiquei que no else onde ele acessa realmente não faz a concatenação com o DV, conforme abaixo:

 

          wLinha:= '1'                                                                            + // 1 a 1 - IDENTIFICAÇÃO DO REGISTRO TRANSAÇÃO
                   PadLeft(ATipoCedente,2,'0')                                                    + // TIPO DE INSCRIÇÃO DA EMPRESA
                   PadLeft(OnlyNumber(Cedente.CNPJCPF),14,'0')                                    + // Nº DE INSCRIÇÃO DA EMPRESA (CPF/CGC)
                   PadLeft(OnlyNumber(Cedente.Agencia), 4, '0')                                   + // AGÊNCIA MANTENEDORA DA CONTA
                   '00'                                                                           + // COMPLEMENTO DE REGISTRO
                   PadLeft(OnlyNumber(Cedente.Conta), 5, '0')                                     + // NÚMERO DA CONTA CORRENTE DA EMPRESA
                   PadRight(Cedente.ContaDigito, 1)                                               + // DÍGITO DE AUTO CONFERÊNCIA AG/CONTA EMPRESA
                   space(4)                                                                       + // COMPLEMENTO DE REGISTRO
                   '0000'                                                                         + // CÓD.INSTRUÇÃO/ALEGAÇÃO A SER CANCELADA
                   PadRight(SeuNumero, 25, ' ')                                                   + // IDENTIFICAÇÃO DO TÍTULO NA EMPRESA
                   PadLeft(NossoNumero, 8, '0')                                                   + // IDENTIFICAÇÃO DO TÍTULO NO BANCO

 

Mas não teria que ter a concatenação para esse caso, visto que ao gerar o boleto o DV é impresso corretamente?

  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

  • 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 !!

  • Este tópico foi criado há 1323 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...