Ir para conteúdo
  • Cadastre-se

dev botao

DV NossoNumero


Ver Solução Respondido por André L. P.,
  • Este tópico foi criado há 1241 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á 1241 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.