Ir para conteúdo
  • Cadastre-se

dev botao

Banco Do Brasil - Boleto Acbr Diferente Do Boleto Gerado Pelo Banco


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

Recommended Posts

Prezados boa tarde!

 

Estou implementando na minha aplicação a geração do boleto pelo acbr para o Banco do Brasil. Não consigo fazer minha aplicação gerar os mesmos dados do boleto gerado pelo sistema do BB.

Em anexo seguem os boletos e a seguir o código da minha aplicação.

Se alguém puder me ajudar, desde já agradeço.

 

if testa = 0
     then begin
           // tudo validado, gerando o boleto na tabela e em seguida imprimindo
           dm.tb_boleto.open;
           dm.tb_boleto.Append;
           dm.tb_boletocodigo_cliente.value:= dm.query1.fieldbyname('Código').value;
           dm.tb_boletovencimento.value:=strtodate(maskedit3.text);
           dm.tb_boletonosso_numero.value:=inttostr(nosso_numero);
           dm.tb_boletovalor.Value:=total;
           dm.tb_boletocodigo_filial.value:=cod_filial;
           dm.tb_boletonumero_documento.value:=edit3.text;
           dm.tb_boletocodigo_banco.value:=codigo_banco;
           dm.tb_boletocodigo_mensagem_banco.value:=memo1.text;
           dm.tb_boletodata_documento.value:=strtodate(maskedit2.text);
           dm.tb_boletodata_processamento.value:=strtodate(maskedit2.text);
           if edit7.text <> ''
           then dm.tb_boletomulta.value:=strtofloat(edit7.text);
           if edit5.text <> ''
           then dm.tb_boletojuros.value:=strtofloat(edit5.text);
           dm.tb_boletoespecie.value:='DM';
           dm.tb_boletoaceite.value:='NÃO';
           dm.tb_boletomoeda.value:='R$';
           dm.tb_boletostatus_boleto.value:='E';
           dm.tb_boleto.post;
           application.MessageBox('Boleto gerado com sucesso! Preparando a impressão!','SISTEMALOCAR');
           // utilizando o acbr para imprimir o boleto
           codigo_boleto:=dm.tb_boletocodigo_boleto.Value;
           if dm.tb_boleto.Locate('codigo_boleto',codigo_boleto,[]) = true
           then begin
           dm.tb_banco.close;
           dm.tb_banco.Open;
           if dm.tb_banco.Locate('codigo_banco',codigo_banco,[]) = true
           then begin
                 try
                  begin
                  Titulo := ACBrBoleto1.CriarTituloNaLista;
                  with Titulo do
                  begin
                  texto:=numero_banco;
                 texto:='c:\teste_boleto\sistema_aluga\logo_banco\'+texto+'.bmp';
                // ACBrBoletoFCFortes1.DirLogo:=pchar(texto);
                 ACBrBoletoFCFortes1.DirLogo:='c:\teste_boleto\sistema_aluga\logo_banco\';
                 ACBrBoletoFCFortes1.Filtro:=finenhum;
                 ACBrBoletoFCFortes1.LayOut:=lpadrao;
                 ACBrBoleto1.Banco.Digito:=dm.tb_bancodigito_numero_banco.asinteger;
                 ACBrBoleto1.Banco.Numero:=dm.tb_banconumero_banco.asinteger;
                 if dm.tb_banconumero_banco.asinteger = 104
                 then acbrboleto1.Banco.TipoCobranca:=cobCaixaEconomica;
                 if dm.tb_banconumero_banco.asinteger = 001
                 then acbrboleto1.Banco.TipoCobranca:=cobBancoDoBrasil;
                 dm.tb_filial.open;
                 dm.tb_filial.locate('codigo_filial',cod_filial,[]);
                 ACBrBoleto1.Cedente.Nome:=dm.tb_filialdesc_filial.asstring;
                 cnpj:= dm.tb_filialcnpj.asstring;
                 result :=copy(cnpj,1,2)+'.'+copy(cnpj,3,3)+'.'+copy(cnpj,6,3)+'/'+ copy(cnpj,9,4)+'-'+copy(cnpj,13,2);
                 acbrboleto1.cedente.CNPJCPF:=result;
                 acbrboleto1.Cedente.UF:=dm.tb_filialestado.asstring;
                 acbrboleto1.Cedente.CodigoCedente:=dm.tb_bancocodigo_cedente.asstring;
                 acbrboleto1.Cedente.Agencia:=dm.tb_banconumero_agencia.AsString;
                 acbrboleto1.Cedente.AgenciaDigito:=dm.tb_bancodigito_agencia.AsString;
                 acbrboleto1.cedente.Conta:=dm.tb_banconumero_conta.asstring;
                 acbrboleto1.cedente.ContaDigito:=dm.tb_bancodigito_conta.asstring;
                 acbrboleto1.cedente.Convenio:=dm.tb_bancoconvenio.AsString;
                 // montando os dados do boleto
                 Vencimento := strtodate(maskedit3.text);
                 DataDocumento := strtodate(maskedit2.text) ;
                 NumeroDocumento := dm.tb_boletonumero_documento.asstring;
                 EspecieDoc := dm.tb_boletoespecie.asstring;
                 if dm.tb_boletoaceite.AsString = 'SIM'
                 then Aceite := atSim
                 else Aceite := atNao;
                 DataProcessamento := strtodate(maskedit2.text);
                 Carteira := dm.tb_bancocarteira.AsString;
                 if dm.tb_banconumero_banco.asinteger = 104
                 then begin
                       NossoNumero := inttostrzero(nosso_numero,15);
                       nossonumero:= '8'+copy(nossonumero,2,14);
                      end;
                 if dm.tb_banconumero_banco.asinteger = 001
                 then begin // ACREDITO QUE O  PROBLEMA ESTEJA AQUI
                       n1:=dm.tb_bancoconvenio.value;
                       nossonumero:=n1+DM.tb_boletonosso_numero.ASSTRING;
                      end;
                 ValorDocumento := dm.tb_boletovalor.AsFloat;
                 dm.tb_cliente.open;
                 if dm.tb_cliente.locate('codigo_cliente',dm.tb_boletocodigo_cliente.Value,[]) = true
                 then begin
                         Sacado.NomeSacado := dm.tb_clientenome_cliente.AsString;
                         if dm.tb_clientetipo.Value = '1'
                         then begin
                               cnpj:=dm.tb_clientecnpj.AsString;
                               result :=copy(cnpj,1,2)+'.'+copy(cnpj,3,3)+'.'+copy(cnpj,6,3)+'/'+ copy(cnpj,9,4)+'-'+copy(cnpj,13,2);
                               Sacado.CNPJCPF :=result;
                              end
                         else begin
                               cnpj:=dm.tb_clientecpf.AsString;
                               result :=copy(cnpj,1,3)+'.'+copy(cnpj,4,3)+'.'+copy(cnpj,7,3)+'-'+ copy(cnpj,10,2);
                               Sacado.CNPJCPF :=result;
                              end;
                 Sacado.Logradouro := dm.tb_clienteendereco.value;
                 Sacado.Numero := dm.tb_clientenumero.AsString;
                 Sacado.Bairro := dm.tb_clientebairro.AsString;
                 Sacado.Cidade := dm.tb_clientecidade.AsString;
                 Sacado.UF := dm.tb_clienteestado.AsString;
                 Sacado.CEP := copy(dm.tb_clientecep.AsString,1,5)+'-'+copy(dm.tb_clientecep.AsString,6,3);
                 end;
                 ValorAbatimento := 0;
                 LocalPagamento := dm.tb_bancolocal_pagamaneto.AsString;
                 ValorMoraJuros := 0;
                 ValorDesconto := 0;
                 ValorAbatimento := 0;
                 DataMoraJuros := 0;
                 DataDesconto := 0;
                 DataAbatimento := 0;
                 PercentualMulta := 0;
                 textocompleto:=dm.tb_boletocodigo_mensagem_banco.AsString;
                 if dm.tb_boletomulta.AsString <> ''
                 then textocompleto:=textocompleto+'Após vencimento multa de '+formatfloat('R$ ###,##0.00',(dm.tb_boletovalor.value*dm.tb_boletomulta.value/100));
                 if dm.tb_boletojuros.AsString <> ''
                 then textocompleto:=textocompleto+#13+'Após vencimento juros ao dia de '+formatfloat('R$ ###,##0.00',(dm.tb_boletovalor.value*dm.tb_boletojuros.value/100));
                 Mensagem.Text :=textocompleto;
                 OcorrenciaOriginal.Tipo := toRemessaBaixar;
                 Parcela := 1;
                 end;
                 try
                  acbrboleto1.Imprimir;
                  ACBrBoleto1.ListadeBoletos.Clear;
                  DM.TB_BANCO.CLOSE;
                  dm.tb_boleto.close;
                  dm.query1.close;
                 except
                  application.messagebox('Algum erro ocorreu e o boleto não pode ser impresso! Tente a reimpressão!','SISTEMALOCAR');
                 end;
                 end;
Link para o comentário
Compartilhar em outros sites

Juliana,

 

Sei que vcs trabalham com boletos do BB. Então vou passar aqui os dados que estou enviando para o componente. Talvez esse possa ser o problema.

Convenio = 162174 ou seria 1621748 ou ainda 162174-8

carteira = 18

modalidade = 19 ou seria 019 ou tanto faz

nossonumerosequencial = 881460 (a aplicação pegará o próximo)

codigocedente = 26810-0

 

Desde já agradeço e aguardo retorno.

Ana Fernanda

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia Ana Fernanda.

 

A forma que você passar o campo Convenio irá influenciar muito o resultado do seu boleto, o correto é informar sem o "-'" com a quantidade de caracteres passada pelo banco.

 

Att.

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

Fiz um teste aqui e tenho as seguintes diferenças na lina digitável:

Boleto gerado pelo sistema do BB:    00190.00009 01621.748001 00881.461180 3 59170000045800

Boleto gerado pela minha aplicação: 00190.00009 01621.748001 01621.748183 9 59170000045800

 

Alguém pode me dar uma ajuda?

 

Desde já agradeço.

Ana Fernanda

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3809 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.