Emissão e Controle de Boletos – Componente AcBr no Delphi

Neste pequeno tutorial, o programador  irá mostrar de forma bem simplificada, como utilizar-se do componente AcBrBoleto para realizar o controle de emissão de boletos bancários com base em uma tabela de contas a receber.

 

Tabela usada para armazenar as contas dos clientes (contas a receber)

 

CREATE SEQUENCE CONTAS_ID;

CREATE TABLE CONTAS (
    ID               INTEGER NOT NULL,
    NUMCONTA         VARCHAR(10),
    SERIE            CHAR(3),
    DATA_CONTA       DATE,
    DATA_VENC        DATE,
    VALOR_CONTA      DOUBLE PRECISION,
    VALOR_DESCONTO   DOUBLE PRECISION,
    VALOR_ACRESCIMO  DOUBLE PRECISION,
    JUROS            DOUBLE PRECISION,
    MULTA            DOUBLE PRECISION,
    DATA_QUIT        DATE,
    VALOR_QUITATO    DOUBLE PRECISION,
    CLIENTE          VARCHAR(50),
    ENDERECO         VARCHAR(50),
    NUMERO           VARCHAR(10),
    COMPLEMENTO      VARCHAR(10),
    BAIRRO           VARCHAR(20),
    CIDADE           VARCHAR(20),
    CEP              VARCHAR(10),
    UF               CHAR(2),
    CNPJ_CPF         VARCHAR(14),
    INSCRICAO_RG     VARCHAR(14),
    NOSSO_NUMERO     VARCHAR(30),
    BOLETO_IMPRESSO  CHAR(3)
);
 
ALTER TABLE CONTAS ADD CONSTRAINT PK_CONTAS PRIMARY KEY (ID);

Tabela usada para armazenar os dados bancários da empresa

CREATE SEQUENCE BANCO_ID;

CREATE TABLE BANCO (
    ID              INTEGER NOT NULL,
    NUMERO_BANCO    VARCHAR(5),
    DIGITO_NUMERO_BANCO  CHAR(1),
    NOME_BANCO      VARCHAR(50),
    NOME_AGENCIA    VARCHAR(50),
    NUMERO_AGENCIA  VARCHAR(10),
    DIGITO_AGENCIA  CHAR(1),
    NUMERO_CONTA    VARCHAR(20),
    DIGITO_CONTA    CHAR(1),
    CIADE_AGENCIA   VARCHAR(20),
    UF_AGENCIA      CHAR(2),
    NOSSO_NUMERO    INTEGER,
    CEDENTE              VARCHAR(50),
    COD_CEDENTE          VARCHAR(20)
);
 
ALTER TABLE BANCO ADD CONSTRAINT PK_BANCO PRIMARY KEY (ID);

Tabela usada para armazenar as configurações referentes a boletas

CREATE SEQUENCE CONFIG_ID;

CREATE TABLE CONFIG (
    ID             INTEGER NOT NULL,
    PATH_REMESSA   VARCHAR(100),
    PATH_RETORNO   VARCHAR(100),
    PATH_LOGOTIPO  VARCHAR(100),
    PATH_GERARPDF  VARCHAR(100),
    MENSAGEM       VARCHAR(250),
    DIAS_PROTESTO  INTEGER,
    ESPECIE        VARCHAR(3),
    MOEDA          VARCHAR(3),
    ACEITE         CHAR(3),
    CARTEIRA       CHAR(3),
    LOCAL_PAGTO    VARCHAR(100),
    INSTRUCAO_1    VARCHAR(100),
    INSTRUCAO_2    VARCHAR(100),
    CONT_REMESSA   INTEGER
);

ALTER TABLE CONFIG ADD CONSTRAINT PK_CONFIG PRIMARY KEY (ID);

Com estas tabelas criadas no banco de dados, vamos ao projeto.

Partindo do ponto de vista que esteja com o componente AcBrBoleto devidamente instalado, abra um novo projeto no Delphi e adicione os componentes de conexão com o banco de dados e respectivos componentes para acessar as tabelas criadas anteriormente. No meu caso aqui prefiro trabalhar com os componentes da paleta dbExpress e Data Acess, mas use o que lhe parecer melhor.

Adicione também um componente “ACBrBoleto1” e um “ACBrBoletoFCQuick1”. Observe que o AcBr disponibiliza algumas opções para imprimir o boleto. Dentre elas estão os componentes para Rave Report, Fortes Report e Quick Report. No caso estou usando o Quick Report, mas para usar qualquer um dos outros, basta ter o componente do tipo instalado e efetivar a ligação com o componente ACBrBoleto1.

Veja como ficou a tela que montei aqui:

boleto
Figura 1.

No botão direcionado para “Localizar” as contas adicione os seguintes códigos:

  // fecha os componentes de acesso a tabela
  CdsContas.Close;
  CdsContas.Params.Clear;
  SQLContas.Close;
  SQLContas.SQL.Clear;

  // passa a SQL para captura das contas em aberto e sem emissão do boleto
  SQLContas.SQL.Add('select * from contas');
  SQLContas.SQL.Add('where contas.data_conta >= :pDatai');
  SQLContas.SQL.Add('and contas.data_conta <= :pDataf');
  SQLContas.SQL.Add('and contas.boleto_impresso = '+QuotedStr('NAO'));
  SQLContas.SQL.Add('and contas.data_quit is null');

  // passa os paramentos de consulta para os componentes
  CdsContas.FetchParams;
  CdsContas.Params.ParamByName('pDatai').AsDate := DataInicio.Date;
  CdsContas.Params.ParamByName('pDataf').AsDate := DataFim.Date;
  CdsContas.Open;

  // se não foram encontrado dados na consulta informa ao usuário
  if CdsContas.IsEmpty then
  begin
    MessageDlg('Não foram encontradas contas no periodo informado!!!', mtInformation, [mbOK], 0);
    DataInicio.SetFocus;
  end
  else
    DBGrid1.SetFocus;

O botão indicado para adicionar conta, será usado para incluir os dados da conta selecionada numa lista do componente para posteriormente ser gerado o arquivo de remessa para o banco e a impressão dos boletos.

Segue os códigos do mesmo:

var Titulo : TACBrTitulo;
begin
  if CdsContasNOSSO_NUMERO.IsNull then
  begin
    Inc(xNossoNumero);
    Titulo := ACBrBoleto1.CriarTituloNaLista;
    with Titulo do
    begin
      Vencimento        := CdsContasDATA_VENC.AsDateTime;
      DataDocumento     := CdsContasDATA_CONTA.AsDateTime;
      NumeroDocumento   := CdsContasNUMCONTA.AsString;
      EspecieDoc        := CdsConfigESPECIE.AsString;
      if CdsConfigACEITE.AsString = 'SIM' then
         Aceite := atSim
      else
         Aceite := atNao;
      DataProcessamento := Now;
      NossoNumero       := IntToStrZero(xNossoNumero,10);
      Carteira          := CdsConfigCARTEIRA.AsString;
      ValorDocumento    := CdsContasVALOR_CONTA.AsFloat;
      Sacado.NomeSacado := CdsContasCLIENTE.AsString;
      Sacado.CNPJCPF    := CdsContasCNPJ_CPF.AsString;
      Sacado.Logradouro := CdsContasENDERECO.AsString;
      Sacado.Numero     := CdsContasNUMERO.AsString;
      Sacado.Bairro     := CdsContasBAIRRO.AsString;
      Sacado.Cidade     := CdsContasCIDADE.AsString;
      Sacado.UF         := CdsContasUF.AsString;
      Sacado.CEP        := CdsContasCEP.AsString;
      ValorAbatimento   := 0;
      LocalPagamento    := CdsConfigLOCAL_PAGTO.AsString;
      ValorMoraJuros    := 0;
      ValorDesconto     := 0;
      ValorAbatimento   := 0;
      DataMoraJuros     := 0;
      DataDesconto      := 0;
      DataAbatimento    := 0;
      DataProtesto      := CdsContasDATA_VENC.AsDateTime + CdsConfigDIAS_PROTESTO.AsInteger;
      PercentualMulta   := 0;
      Mensagem.Text     := CdsConfigMENSAGEM.AsString;
      OcorrenciaOriginal.Tipo := toRemessaBaixar;
      Instrucao1        := padL(trim(CdsConfigINSTRUCAO_1.AsString),2,'0');
      Instrucao2        := padL(trim(CdsConfigINSTRUCAO_2.AsString),2,'0');
      Parcela           := 1;
    end;
    // grava o nosso numero na conta
    SQLAux.Close;
    SQLAux.SQL.Clear;
    SQLAux.SQL.Add('update contas set contas.nosso_numero = :pNossoNum');
    SQLAux.SQL.Add('where contas.id = :pIDConta');
    SQLAux.Params.ParamByName('pNossoNum').AsInteger := xNossoNumero;
    SQLAux.Params.ParamByName('pIDCOnta').AsInteger := CdsContasID.AsInteger;
    SQLAux.ExecSQL(False);
    // Atualiza a consulta
    BtnLocalizarClick(Sender);
  end;

Outra rotina importante é a de configuração do componente com os dados necessários. Para isso vamos adicionar no evento OnClick do Combo usado para selecionar o banco em uso para o qual serão emitidos os boletos e adicionar os seguintes códigos:

  xNossoNumero := CdsBancosNOSSO_NUMERO.AsInteger;
  ConfiguraComponenteAcBr;

Segue os códigos da procedure ConfiguraComponenteAcBr:

procedure TForm1.ConfiguraComponenteAcBr;
begin
  if not CdsConfig.IsEmpty then
  begin
    ACBrBoleto1.ACBrBoletoFC.DirLogo  := CdsConfigPATH_LOGOTIPO.AsString;
    ACBrBoleto1.ACBrBoletoFC.Filtro   := fiNenhum;
    ACBrBoleto1.ACBrBoletoFC.LayOut   := lPadrao;
    ACBrBoleto1.Banco.Digito          := CdsBancosDIGITO_NUMERO_BANCO.AsInteger;
    ACBrBoleto1.Banco.Numero          := CdsBancosNUMERO_BANCO.AsInteger;
    ACBrBoleto1.Cedente.Nome          := CdsBancosCEDENTE.AsString;
    ACBrBoleto1.Cedente.CodigoCedente := CdsBancosCOD_CEDENTE.AsString;
    ACBrBoleto1.Cedente.Agencia       := CdsBancosNUMERO_AGENCIA.AsString;
    ACBrBoleto1.Cedente.AgenciaDigito := CdsBancosDIGITO_AGENCIA.AsString;
    ACBrBoleto1.Cedente.Conta         := CdsBancosNUMERO_CONTA.AsString;
    ACBrBoleto1.Cedente.ContaDigito   := CdsBancosDIGITO_CONTA.AsString;
    ACBrBoleto1.Cedente.UF            := CdsBancosUF_AGENCIA.AsString;
    ACBrBoleto1.NomeArqRemessa        := CdsConfigPATH_REMESSA.AsString+FormatDateTime('DDMMYYYYHHMMSS',Now)+'.TXT';;
  end;
end;

Agora finalizando o nosso projeto para emissão de boletos vamos apenas inserir os códigos referentes aos botões indicados para imprimir os boletos e gerar o arquivo de remessa e processar arquivo de retorno. Segue os códigos:

Imprimir Boletos

  try
    ACBrBoleto1.Imprimir;
  except
    MessageDlg('Erro ao imprimir os boletos. Verifique!',mtWarning,[mbOK],0);
  end;

Gerar Remessa

var ContadorRemessa : Integer;
begin
  try
    // captura o contador de remessa e gera a mesma
    ContadorRemessa := CdsConfigCONT_REMESSA.AsInteger;
    Inc(ContadorRemessa);
    ACBrBoleto1.GerarRemessa(ContadorRemessa);
    // Atualiza a nosso numero no cadastro do banco
    SQLAux.Close;
    SQLAux.SQL.Clear;
    SQLAux.SQL.Add('update banco set banco.nosso_numero = :pNossoNum');
    SQLAux.SQL.Add('where banco.id = :pID');
    SQLAux.Params.ParamByName('pNossoNum').AsInteger := xNossoNumero;
    SQLAux.Params.ParamByName('pID').AsInteger := CdsBancosID.AsInteger;
    SQLAux.ExecSQL(False);
    // Atualiza o contador de remesa na tabela de configuração
    SQLAux.Close;
    SQLAux.SQL.Clear;
    SQLAux.SQL.Add('update config set config.cont_remessa = :pContador');
    SQLAux.SQL.Add('where config.id = :pID');
    SQLAux.Params.ParamByName('pContador').AsInteger := ContadorRemessa;
    SQLAux.Params.ParamByName('pID').AsInteger := CdsConfigID.AsInteger;
    SQLAux.ExecSQL(False);
  except
    MessageDlg('Erro ao gerar arquivo de remessa. Verifique!',mtWarning,[mbOK],0);
  end;

Processar Retorno

var i : Integer;
begin
  if OpenDialog1.Execute then
  begin
    //Configurar banco
    ConfiguraComponenteAcBr;
    //
    ACBrBoleto1.NomeArqRetorno := OpenDialog1.FileName;
    ACBrBoleto1.LerRetorno;
    for i := 0 to ACBrBoleto1.ListadeBoletos.Count-1 do
    begin
      if ACBrBoleto1.ListadeBoletos.Objects[i].ValorRecebido > 0 then
      begin
        // Grava a Quitação da conta
        SQLAux.Close;
        SQLAux.SQL.Clear;
        SQLAux.SQL.Add('update contas set');
        SQLAux.SQL.Add('contas.data_quit = :pData,');
        SQLAux.SQL.Add('contas.valor_quitato = :pValor');
        SQLAux.SQL.Add('where contas.nosso_numero = :pNossoNum');
        SQLAux.Params.ParamByName('pData').AsDate        := ACBrBoleto1.ListadeBoletos.Objects[i].DataBaixa;
        SQLAux.Params.ParamByName('pValor').AsFloat      := ACBrBoleto1.ListadeBoletos.Objects[i].ValorRecebido;
        SQLAux.Params.ParamByName('pNossoNum').AsInteger := StrToInt(ACBrBoleto1.ListadeBoletos.Objects[i].NossoNumero);
        SQLAux.ExecSQL(False);
      end;
    end;
  end;

Espero que tenham gostado. Até a próxima!

Programador formado em 1995, pela ETEIT – Escola técnica da UNIVALE. Atualmente trabalhando com a plataforma Delphi. Tem se dedicado nos últimos anos, ao desenvolvimento de aplicações PAF-ECF, SPED fiscal e NFe.

Links:

http://www.projetoacbr.com.br/forum/index.php?/files/file/7-acbrinstall-for/

http://www.projetoacbr.com.br/forum/index.php?/topic/675-problema-ao-tentar-instalar-o-acbrboletofcquickfr/

http://www.projetoacbr.com.br/forum/index.php?/topic/17495-d%C3%BAvidas-referentes-a-migra%C3%A7%C3%A3o-para-o-delphi-xe7/page-2

http://www.projetoacbr.com.br/forum/index.php?/files/file/7-acbrinstall-for/?st=10#commentsStart

http://acbr.sourceforge.net/drupal/

Comentários que podem ser úteis:

 

Jose Luiz De Medeiros
Boa tarde,

Goldinho como sempre seus artigos são 100%, me dá uma dica o meu acbr não contem o componente de impressão para o Rave, como uso o delphi xe é não tenho instalado o quick report, pensei em usar o Rave. Nem na pasta que baixei possui o pacote para rave.

Poderia me ajudar?

Grato:
Jose Luiz

[há +1 ano] – Responder
[autor] Luis Carlos Godinho
Olá!Tente usar com o fortes report. Este tem suporte ao delphi xe e tem o componente acbr.
http://fortesreport.com.br/?page_id=25Abs.!

[há +1 ano] – Responder
Alberto Damazio Dos Reis

Realmente, muito bom! Obrigado.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Fico feliz que tenha gostado.Abs.!
[há +1 ano] – Responder
Sidnei M. De Azevedo

Assim ficou mais fácil compreender a emissão do ACBR Boletos,
Valeu!!!!!
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Eu cheguei a pensar 2 vezes pensando que o artigo não tinha ficado bom, rzrzrzr, acho que me enganei.Abs.!

[há +1 ano] – Responder
Luis Carlos Carnaroli

posta os fontes ai.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Os códigos estão todos embutidos no artigo, o restante que não esta neste é gerado pelo proprio delphi. Mas vou ver esta possibilidade.Abs.!

[há +1 ano] – Responder
Sidnei M. De Azevedo

Godinho, existe uma vareavel xNossoNumero que recebe o nosso numero da conta, de que tipo é ela?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Ola!E do tipo Integer.Abs.!

[há +1 ano] – Responder
Genilson S Soares

Já havia tentado implementar em meu sistema a emissão de boletos, mas tive muitos problemas. Agora com este tutorial a coisa está muito mais clara. Agora vou implementar. Parabéns e que Deus continue te abençoando e lhe concedendo sabedoria para assim ajudar ao próximo.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Fico feliz que tenha gostado. Que Deus lhe abençoe também.Abs.!

[há +1 ano] – Responder
Marcos Roberto Da Cruz

ola vc teria o codigo feito no delphi poderia me enviar? se precisa me fala o valor falecom@dreamsoftware.info
[há +1 ano] – Responder
Wesley Yamazack

Olá Marcos , entramos em contato com o autor para que o mesmo possa te ajudar, peço que aguarde para que o mesmo possa lhe auxiliar.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Os códigos do artigo já são em delphi 7, e todos os códigos do aplicativo estão aí. Basta montar a tela e copiar e colar os códigos.Abs.!

[há +1 ano] – Responder
Elço N Alves

Boa noite,Muito bom esse seu artigo, me dá uma dica, o meu acbr eu instalei componente boleto quick report, mas não aparece na paleta.Poderia me ajudar?

Desde já um grande abraço e sucesso,
Elço N Alves – RJ

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Qual versão do delphi esta usando? Tente remover e instalar novamente. Pode ter sido algum problema na instalação. É complicado ter uma razão para o ocorrido.Abs.!

[há +1 ano] – Responder
Elço N Alves

– Estou usando o Delphi 7, já instalei, desinstalei…
mas não aparece na paleta…eu sei que as vezes é
complicado, mas como na área, sempre alguem que já
passou por algo parecido..
– Como tentei umas duas ou tres vezes e nada, li
o seu artigo, resolvi perguntar, caso alguem
tenha alguma dica, eu agradeço.Desde já,
Agradeço a atenção,
Abraços,
Elço N ALves – RJ
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Seu QuickReport esta instalado corretamente? Todas as vezes que instalei o AcBr nunca tive este problema, então estou sem base do do que possa ser o problema ai. Peço que publique a questão no forum. Lá terá maior visibilidade e derrepente alguem tenha passado por este problema para te auxiliar.Abs.!
[há +1 ano] – Responder
Aldy Salvino De Oliveira

Algumas linhas estão dando erros, são elas:Inc(xNossoNumero); // Seria global?
IntToStrZero(xNossoNumero,10); // Não localizei no código
padL(trim(CdsConfigINSTRUCAO_1.AsString),2,’0′); // padL tbm não localizei.Como faço para resolver este problema?

[há +1 ano] – Responder
Aldy Salvino De Oliveira

Esqueci de mencionar estou com o Delphi 2010.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá! o xNossoNumero é uma Global, basta criar ai. o IntToStrZero e padL são do AcBr e tem que adicionar a unit ACBrUtil para funcionar.Abs.!
[há +1 ano] – Responder
Aldy Salvino De Oliveira

O erros de compilação foram resolvidos com suas dicas, obrigado, porém agora ele fala que não têm nenhum ACBrBoletoFCQuick associado.Também não consegui estender a configuração do DBLookupCombo.Qual valor precisa aparecer nele?

Obrigado mais uma vez.

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Tem que instalar o componente ACBrBoletoFCQuick e para isso precisada do QuickReport instalado no D2010. Quando ao combo, o mesmo é para listar os bancos cadastrados na tabela referente do banco de dados.Abs.!
[há +1 ano] – Responder
Aldy Salvino De Oliveira

Agora só informa que não há banco definido, já tentei de tudo… não sei mais o que fazer… Obrigado
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Neste caso ai eu também não tenho dica. Terá que rever os dados de conexões para descobrir o que esta errado.Abs.!
[há +1 ano] – Responder
Aldy Salvino De Oliveira

posso te mandar os fontes, com o bd, ou vc me enviar o seu?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Os codigos referentes estão todos embutidos no artigo, e infelismente eu não posso ficar analizando codigos aqui. Espero que entenda.Abs.!
[há +1 ano] – Responder
Aldy Salvino De Oliveira

me manda o banco de dados, ou posta o dados, acredito que são os valores de cada tabela que está errado. Obrigado.
[há +1 ano] – Responder
Aldy Salvino De Oliveira

consegui gerar o boleto, um dos problemas era que ele nunca passa desta linha no incluir contas.IF CdsContasNOSSO_NUMERO.IsNull THENtirei esta validação e passou.

O CdsContasNOSSO_NUMERO é para chegar sempre em branco neste ponto?

Obrigado.

[há +1 ano] – Responder
Wesley Yamazack

Olá Aldy, o objetivo do código é este mesmo, validar se o código que você esta tentando passar não esta em branco.IF CdsContasNOSSO_NUMERO.IsNull THEN = TRUE
Executa o que esta aqui em baixo;IF CdsContasNOSSO_NUMERO.IsNull THEN = FALSE
Não executa o que esta aqui em baixo;

Um abraço e bons códigos.

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!O objetivo desta verificação é garantir que não será gerado novo boleto para uma conta que já foi gerada, ou seja, duplicar boleto para uma conta. Por isso verifica se o campo nosso_numero esta vazio ou nulo, pois quando é grado o boleto este campo é preenchido. Se remover esta verificação certamente terá duas boletas para a mesmo conta a receber, o que ira gerar um transtorno.Abs.!

[há +1 ano] – Responder
Aldy Salvino De Oliveira

obrigado, eu não estava entendendo muito bem a lógica da geração, mas já consegui resolver e adequar a minha necessidade, Muito obrigado.
[há +1 ano] – Responder
Aldy Salvino De Oliveira

sei que não faz parte do exemplo, mas o apenas o relatório gerado com o fortes report exporta HTML? o quick não faz isto? têm algum exemplo sobre esta geração?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Infelismente não tenho. Abs.!
[há +1 ano] – Responder
Fabio Matte

Cara que maravilha, tava aqui com alguns problemas para emissão de boletos em meu sistema, esse tutorial caiu com uma mão empurrando a roda. Serviu direitinho.Parabens, nenhuma dúvida.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

E o bom é que o coomponente é codigo aberto. No caso de precisar de novos modelos de boletos, pode criar a partir dos disponíveis.Abs.!
[há +1 ano] – Responder
Marcos Roberto Da Cruz

OLA NO SEU SISTEMA DEU CERTO USAR O RETORNO? COM ESSES COMPONENTES?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Eu não tenho um sistema em funcionamento. Para testar este retorno teria que ser em produção quando for homologar um boleto junto a um banco.Abs.!

[há +1 ano] – Responder
Valdemi Ramos

Luis Carlos,To precisando tratar retorno com esse componente. Você tem algum exemplo funcionando? Ou esse ultimo código ja me serve?Obrigado.

[há +1 ano] – Responder
Jeferson Araujo

olá… faz algum tempo que eu implementei o boleto no meu sistema e tinha dado certo, mas tive que retirar e agora que estou de férias quero terminar nessa parte, mas mudei para o delphi xe2 também nesse tempo e agora da erro de ACBrBase, ACBrBoleto, ACBrUtil, ACBrBoletoFCFR, já reinstalei o svn mas não resolveu, parece ser algo bobo que esqueci, poderia me ajudar?
[há +1 ano] – Responder
Wesley Yamazack

Olá Jeferson, entramos em contato com o autor para que ele possa te auxiliar, tudo bem ? Peço que aguarde um pouco até que o mesmo possa retornar o contato.Um abraço.
[há +1 ano] – Responder
Jeferson Araujo

ok Wesley obrigado!eu até abri o projeto no xe e ele tem o componente do ACBr (TACBrBoleto, etc), mas no xe2 não, parece que não está instalado, se for isso mesmo aguardo a resposta para saber oq bem ao certo devo instalar para que tenha o componente no xe2.Aguardo a resposta.

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Se estiver com o as duas versões do delphi no mesmo windows não dá certo. O acbr funciona apenas em um dos 2. Pelo menos foi o que eu constatei a um tempo atras ao tentar instalar em 2 versões.Abs.!

[há +1 ano] – Responder
Jeferson Araujo

ok vou desinstalar o xe daqui então.. vou ver se der certo coloco o resultado.muito obrigado!
[há +1 ano] – Responder
Jeferson Araujo

soh uma dúvida… eu tenho que ir no delphi e ir em Component e depois Install Component.. e quais componentes que eu tenho q instalar?
[há +1 ano] – Responder
Jeferson Araujo

deu certo =) mas não sei se era porque tinha o XE no pc… pq eu desinstalei e continuou o erro, então eu removi a pasta acbr baixei td de novo e fiz passo 5 do leia-me, aí deu certo.mas agora ele da um erro ao gerar o pdf ou html do boleto:
Access violation at address 00408868 in module ‘Sistema_XE2.exe’. Read of address 00000048.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Este erro de access violation normalmente se dá por uso de algum recurso que não foi instanciado ou algo parecido. Mas é complicado saber ao certo o porque. Nos testes aqui não aconteceu o mesmo.Abs.!

[há +1 ano] – Responder
Jeferson Araujo

alguma dica para mim aqui conseguir resolver? que se não vou tentar fazer web daí…
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!A dica que tenho esta na resposta anterior. Se eu tivesse conseguido simular aqui tinha como dizer ao certo. Mas este erro pode ser “N’s” detalhes. O ideal é debugar o sistema e ver em qual comando exatamente esta dando o problema.Abs.!

[há +1 ano] – Responder
Jeferson Araujo

é nessa linha que está o erro:ACBrBoleto1.ACBrBoletoFC.NomeArquivo := ExtractFilePath(Application.ExeName)+’teste.pdf’;tanto no pdf quanto html.

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Você adicionou o componente AcBrBoletoFC no projeto? Se sim, certifique-se do componente Fortes Report esta devidamente instalado.Abs.!
[há +1 ano] – Responder
Jeferson Araujo

eu tenho instalado aqui o fast report, e não tem o ACBrBoletoFC na minha paleta,
quando vou compilar para depois instalar instalar ele da erro em {$IMPLICITBUILD OFF}
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Neste artigo eu não coloquei opção para gerar o PDF, porém testanto num outro projeto aqui esta funcionando. A única coisa que faço em relação é passar a configuração conforme abaixo:ACBrBoleto1.ACBrBoletoFC.Filtro := fiPDF;Caso não dê certo eu não tenho identificar o que esta errado ai, pois como disse no meu teste aqui esta funcionando.

Abs.!

[há +1 ano] – Responder
Marcos Roberto Da Cruz

quando vou instalar da esse erro Libeay32.dll? pq
[há +1 ano] – Responder
Marcos Roberto Da Cruz

eu tenho como editar o boleto pra fazer sair 3 por folha?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

O AcBr tem codigo aberto, porde alterar o form de boleto.Abs.!
[há +1 ano] – Responder
Marcos Roberto Da Cruz

quando vou instalar da esse erro Libeay32.dll? pq e tb RLibWinD7vcl quando roda diz que ta faltando
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Na pasta DLLs->OpenSSL tem este arquivo. basta colocar no windows/system32.Abs.!
[há +1 ano] – Responder
Marcos Roberto Da Cruz

ja resolvi a questao da dll so que ta dando outro erro agora faltando o arquivo RLibWinD7vcl.. como que resolve isso?
[há +1 ano] – Responder
Marcos Roberto Da Cruz

oi vc sumiu pra fazermos a consultoria aparece la no msn. pra conversamos
[há +1 ano] – Responder
Marcos Roberto Da Cruz

agora ta dando outro erro quando vou instalar o fortesreport da DBRTL70.bpl que ta falando alguem conseguio instalar tudo cem problema?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Seguindo os passos do arquivo leiame.txt que vem junto com o compontente da certo.Abs.!

[há +1 ano] – Responder
Marcos Roberto Da Cruz

da esse erro quando copilo do boleto [DCC Error] ACBr_BoletoFC_Fortes.dpk(35): F2141 Bad file format: ‘c:\componentes\fortes\RLibWinD7vcl.dcp’
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Desculpe pela demora. Estava sem net. Pelo visto já descobriu o que era.Abs.!
[há +1 ano] – Responder
Antonio Paulo Da Silva.

Excelente artigo, parabéns. Meu grande, quando eu seleciono o arquivo, aparece a seguinte mensagem:
Arquivo não encontrado: \C:\RETORNO\RETORNO-104.RETJá tentei identificar de onde ele tira esse \C:Desde já agradeço…

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Esta informação é passada na rotina “ConfiguraComponenteAcBr”.Abs.!

[há +1 ano] – Responder
Marcos Roberto Da Cruz

ola, ta dando erro [DCC Error] RLMetaFile.pas(975): F2063 Could not compile used unit ‘RLMetaVCL’ quando vou instalar o fortesreport
[há +1 ano] – Responder
Wesley Yamazack

Olá Marcos, estamos tentando contato com o Luis para que ele possa te ajudar, peço que aguarde um pouco para que ele possa retornar os comentários.Obrigado pela compreensão e um abraço.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Não consigo simular este erro aqui pra te ajudar. Sugiro que post a questão no forum que certamente encontrará alguem que passou por este problema.Abs.!
[há +1 ano] – Responder
Marcos A S Morais

Moço de mais o artigo. parabens. MAS PERGUNTO:
qual valor eu coloco na propriedade DATAFIELD do DBLookupComboBox1?????
[há +1 ano] – Responder
Marcos A S Morais

Moço de mais o artigo. parabens. MAS PERGUNTO:
qual valor eu coloco na propriedade DATAFIELD do DBLookupComboBox1?????
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Este campo irá exibir o que estiver cadastrado na tabela de bancos cadastrados.Abs.!

[há +1 ano] – Responder
Victor Bianchi

Olá, bom artigo.
Estou com uma duvida, para que serve a propriedade DirLogo do AcBrBoletoFC é o caminho do boleto do Banco ou do Emissor (seria quem usaria o sistema).
Vlw.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Nos Arquivos do AcBr tem uma pasta com as imagens dos bancos que serão usadas na composição das boletas. Nesta propriedade indique o caminho destas imagens.Abs.!

[há +1 ano] – Responder
Victor Bianchi

Obrigado pela rápida resposta, você são d+.
Tenho uma outra duvida, sem querer abusar de sua paciencia, o AcBrTitulo tem uma propriedade OcorrenciaOriginal.Tipo com varias possibilidades como por exemplo toRemessaBaixar, para que serve esta propriedade e tem difireça se um tipo ou outro?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Eu nunca usei esta opção e não sei ao certo para que serve. mas use o Forum do site ou do AcBr que certamente terá a resposta apropriada lá.Abs.!

[há +1 ano] – Responder
Aldo Leonardo Silva

Olá Godinho, parabens pelo artigo, me tire uma duvida
Pelo o que entendi na rotina, o arquivo de remessa esta sendo gerado obrigatoriamente no momento em que se monta os boletos… Suponhando que meu cliente queira imprimir os boletos durante o dia, e depois gerar o arquivo de remessa no fim do dia, vc pode me como eu faria isso e se existe algum risco qualquer em fazer dessa forma?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Basta ir marcando as contas como boleto impresso e sem ser enviado. Crie os campos de controle na tabela. E ao fim do dia o usuário ira gerar a remessa apenas do que não foi enviado.Abs.!

[há +1 ano] – Responder
Fernando Ferreira Gomes Nascimento

Muito bom artigo, mas ele nao tem opcao de download do fonte ??
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Todos os codigos estão inseridos no artigo. Basta montar as telas conforme preferir e inserir os codigos nos botões indicados.Abs.!

[há +1 ano] – Responder
Daniel Simões De Almeida

Oi Luis Carlos Godinho,Parabéns pelos seus excelentes artigos sobre o Projeto ACBr…São de grande ajuda para a comunidade, e na divulgação de nosso projeto….

Muito obrigado…

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Obrigado! Fico feliz em ajudar.
[há +1 ano] – Responder
Wanderson

Ola tenho uma duvida gerei o campo nosso número de acordo com instruções do Banco, alterei a propriedade TamanhoMaximoNossoNum := 17, quando gero o boleto, passa sem erro, mas quando mando imprimir o boleto o campo nosso número sai com somente 12 números.
Não sei se preciso mudar alguma propriedade, ou alterar algum codigo para geração do Nosso número.Utilizo o relatório BoletoFR.fr3Existe alguma outra propriedade para mudar, sou novo na geração do boleto utilizando o componente
desculpe pelas perguntas leigas.

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Verifique o formulário de impressão do AcBr para ver se tem alguma limitação.Abs.!

[há +1 ano] – Responder
Thiago Ruvieri Delalibera

Bom dia Godinho, estou com uma dúvida quanto ao campo nosso_numero da tabela de contas, este número deve ser gerado pelo aplicativo correto? ou seja para cada conta de cada cliente este número sera diferente correto? Só para confirmar pois fiquei confuso já que a tabela de configuração do boleto também tem um campo nosso_numero fornecido pelo banco e também ao processar o retorno para dar baixa nas contas pagas se o nosso_numero das contas fossem todos iguais o update não atualizaria a conta correspondente e sim todas, se puder me dar uma esclarecida nisso, agradeço muito. Obrigado!
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá! Sim o sistema deverá gerar este campo que se trata de uma sequência numérica conforme padrão adotado pelo banco.Abs.!
[há +1 ano] – Responder
Cesar Augusto

Bom dia Luis Carlos. Parabens pelo seu poste, foi de grande ajuda.
Notei que em sua descrição diz que está desenvolvendo NFE, tenho um sistema e tenho que desenvolver a PAF-ECF, SPED fiscal e NFe e precisso de ajuda. Peço que se possível me passe seu e-mail para que possamos negociar. Desde já obrigado.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!O e-mail está no site já. luis.c.godinho@hotmail.com.Abs.!

[há +1 ano] – Responder
Marcos A S Morais

não consigo visualizar o boleto, retorna este erro Barcode must be numeric, o que pode esta errado?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Revise a configuração do banco e certifique-se de estar fazendo a mesma antes de adicionar os títulos.Abs.!

[há +1 ano] – Responder
Charles Henrique

Luis Carlos Godinho, boa noite.Analisando sua aplicação, tem uma variável que não tenho conhecimento.
De que tipo são ?seria

padL – seria variável de texto.

Parabens pelo post,muito exclarecedo

Att

Charles Henrique

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!PadL é uma função e não uma variável. No Google encontra uma biblioteca com esta função. Mas segue abaixo o script:function Padl(s:string;n:integer):string; // Alinhamento pela esquerda
{alinha uma string à esquerda}
begin
Result:=Format(‘%-‘+IntToStr(n)+’.’+IntToStr(n)+’s’,[s]);
end;

Abs.!

[há +1 ano] – Responder
André Luis Rodrigues De Oliveira

Olá. Obrigado pela iniciativa. Tem sido muito útil. Mas estou com um problema. Não consigo gerar corretamente a remessa para o banco do Brasil. Gero o arquivo. O banco aceita o envio, porém quando pago o boleto não aparece os dados do título. CPF, Nome, nada. E então não consigo ler o retorno, pois fica sem dados. Tem alguma idéia do que pode estar acontecendo? Sabe se para este tipo de ação a carteira deve ser diferente?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Não sei se entendi, mas no meu caso no retorno do banco eu uso a informação de nosso numero juntamente com a parcela para identificar o titulo e fazer a quitação, e não os dados de CPF, etc…Abs.!

[há +1 ano] – Responder
Antonio Paulo Da Silva.

Após alguns ajustes no componente, ficou show de bola o tratamento de retorno dos bancos. Parabéns pelo ótimo artigo. Me deu um grande empurrão aqui no meu projeto. Abraço!
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Obrigado! Fico feliz e ter sido útil.
[há +1 ano] – Responder
Claudio Santos

Nota dez esse tutorial parabéns!
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Obrigado! Fico feliz e ter sido útil.
[há +1 ano] – Responder
Claudio Santos

Prezado eu tive problemas ao gerar o pdf com o quickreport, esta gerando um arquivo defeituoso com 542kb então mudei para o fortes a seguinte mensagem aparece sempre que mando gerar a boleta ou o pdf:Sistema não está de acordo com a versão do FortesReport
Versão atual 3.71BUtilizo o Delphi2010 e a ultima versão do ACBr baixada pelo svn.

Pode me ajudar?

Obrigado!

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá,
Aparentemente a versão do AcBr não esta atualizada ainda para a versão do Fortes que esta usando. tente ver com o suporte do acbr algo sobre o assunto.Abs.!
[há +1 ano] – Responder
Was Reitz

Olá Luis Carlos,Inicialmente agradeço a publicação que muito me orientou para a implementação de Boletos na minha aplicação.Me surgiu um problema e não consegui ir adiante, gero o boleto e quando vou gerar a remessa (c400) para o Banco do Brasil surgem dois problemas:
1- é colocado uma virgula (automaticamente) no separador entre logradouro e numero de logradouro.
2- é criada uma linha após as informações do cliente conforme abaixo:

01REMESSA01COBRANCA 02845000794899000000 ………………………….000001
70205481336000137028450007948992489256 ………………………….000002
5999000000000000000000 (esta linha supostamente a mais) 000003

Desde já agradeço a vossa ajuda.
Washington Luiz Reitz

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Esta montagem é feita pelo proprio componente AcBr. Eu não passei por este problema, mas neste caso sugiro fazer uma atualização do componente e caso não resolva, postar a dúvida no forum do AcBr para ver se alguem já passou por este problema.Abs.!

[há +1 ano] – Responder
Kássius Ribas Miranda

Olá Luis Carlos Godinho, estou precisando de uma grande dica sua, estou usando o componente acbrnfe1, e acompanhei todas as suas videos aulas sobre a emissão da nfe, mas ai tem uma tela para configurar host, port e senha, onde eu consigo estas informaçoes, ou q tenho q ter, pq eu ja tenho um certificado valido ja, eu estou desenvolvendo um sistema para cooperativa de Leite, desde ja agradeço sua atenção
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Basta configurar o certificado e a pasta de schemas que funciona.Abs.!

[há +1 ano] – Responder
Kássius Ribas Miranda

Luiz Carlos boa noite, onde eu acho um certificado para tar fazendo os testes no meu sistema, vc disponibilizou um mas não tem a senha e a serie, obrigado c puder me ajudar
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Pelo que sei não existe um certificado pra testes. Você tem que adquirir um e usar em ambiente de homologação.Abs.!
[há +1 ano] – Responder
Kássius Ribas Miranda

Luis so mais uma coisa que preciso saber, para meu sistema emitir a NFe, tenho que registrar meu sistema nos SEFAZ ou algum outro lugar, caso sim, o que vou precisar para fazer isso, te agradeço se puder me ajudar, sou programador em Delphi a uns 8 anos, mas nun tenho sistemas comerciais agora que estou entrando no ramo comercial por isso tantas duvidas, te agradeço pela atenção.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Eu estou muito focado apenas no PAF, mas até onde sei não tem que registrar sistema de emissão de NFe. Basta realizar os testes em ambiente de homologação mesmo, para certificar de estar tudo certo com calculos de imposto e classificações fiscais.Abs.!

[há +1 ano] – Responder
Adão Lucas

Boa Noite Luis Carlos Godinho, tudo bom, espero que sim, cara gostei muito deste teu artigo, tirou muitas dúvidas, mas não conseguir imprimir o boleto, quando clico no botão imprimir ele da um erro informando “Erro ao imprimir boleto! Verifique” e também da mesma forma quando clico em gerar remessa, cara sera que vc poderia mi ajudar. Obg.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá! Erro ao imprimir boleto é mensagem do sistema. Tem que debugar para ver o erro interno que esta ocorrendo. No mais já atualizou o AcBr??Abs.!
[há +1 ano] – Responder
Fernando Kipper

Excelente Postagem.
Uma dúvida: Quanto a impressão de boletos, da forma trabalhada nesse post, apenas é possível imprimir 1 boleto por vez. E no caso de ter uma venda à prazo em “x” vezes, visualizar todos os boletos e imprimir de uma vez só. Alguma sugestão ?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Pode ser impresso mais de um boleto por vez. Basta adicionar quantos boletos tiver e depois de adicionado mandar imprimir, que vai sair todos numa única impressão separados por página.Abs.!

[há +1 ano] – Responder
Fernando Kipper

Então cada vez que adicionar uma conta ele não limpa as informações anteriores. E ao imprimir visualiza todos os boletos adicionados ?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Isso mesmo!
[há +1 ano] – Responder
Fernando Kipper

Entendi.
Não é exatamente o que eu estava precisando, mas gostei muito desse modelo.
Eu já utilizo praticamente todos os componentes Acbr em outros projetos, mas para um projeto específico não tenho esse “mamão com açúcar” hehehee.
Muito obrigado pela atenção. Ótimo post.
[há +1 ano] – Responder
Leonardo Maciel

Boa tarde.
Com esse seu exemplo nao conseguiu realizar oque pretendia.
Preciso somente ler o arquivo de retorno e mostrar os seus dados em um grid, somente para visualização mesmo e quem sabe colocar uns filtros e tals.
Pelo que percebi esta é uma ferramenta ainda nova, com poucas explicações, nao consegui localizar nenhum manual ou tutorial com todas as funções explicadas nem que seja as muquirana…
Se puder me dar umas explicadas de como tratar as informações do arquivo lido lhe agradeço.Tenha uma boa semana!!
Abraço.
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Esta ferramenta já existe a algum tempo. Para maiores informações acesse o forum do projeto acbr. No mais, ao instalar o componente, tem os exemplos onde pode encontrar a rotina de remessa e retorno em detalhes. Após usar a rotina para leitura do arquivo de retorno poderá exibir num grid.Abs.!

[há +1 ano] – Responder
Leonardo Maciel

pois eh ja fiz isso, nao entendi muita coisa.
Quando ele le o arquivo ele da a seguinte mensagem ‘arquivo nao encontrado ‘+diretorio do arquivo+”
linha que ocorre o problema na função leRetorno.
if not FilesExists( NomeArq ) then
raise Exception.Create(ACBrStr(‘Arquivo não encontrado:’+sLineBreak+NomeArq));
[há +1 ano] – Responder
Leonardo Maciel

pois eh ja fiz isso, nao entendi muita coisa.
Quando ele le o arquivo ele da a seguinte mensagem ‘arquivo nao encontrado ‘+diretorio do arquivo+”
linha que ocorre o problema na função leRetorno.
if not FilesExists( NomeArq ) then
raise Exception.Create(ACBrStr(‘Arquivo não encontrado:’+sLineBreak+NomeArq));
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Você se certificou de esta configurando o componente acbrboleto com o caminho do arquivo de retorno?
[há +1 ano] – Responder
Leonardo Maciel

sim depois que analisei o codigo corretamente percebi que tenho que informar o diretorio (ACBrBoleto1.DirArqRetorno) e depois SOMENTE o nome, no seu exemplo voce diz para passar somente o nome.
E o erro na verdade esta nessa linha NomeArq := fDirArqRetorno + PathDelim + NomeArqRetorno; e nao na que tinha te passado anteriormente.
E cara to com mais algumas duvidas mas vou tentar resolver sozinho, pelo que percebi acima voce ja ta indignado com as nossas duvidas e não esta com humildade o suficiente para repassar o seu conhecimento. Entao vamo na fé que vai da certo.
Aquele abraço, fique com deus…
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Não entendi em que ponto escrevi algo que pudesse te levar a crer que estou respondendo de forma atravessada, pois se realmente estivesse desta forma eu não responderia tão rapidamente as questões. Mas confesso que não tenho muito conhecimento nesta parte do componente, pois fiz este artigo atendendo a pedidos e estudei a forma de trabalho para dar uma ideia de como usar o mesmo. Por isso orientei algum leitor acima a buscar maiores informações no fórum do acbr.
Não tenho receio algum em repassar meu conhecimento, tanto que criei diversos artigos e vídeos repassando o que sei, apenas não posso ficar buscando informações que não tenho para atender as dúvidas, pois desta forma não consigo realizar meu trabalho pessoal.
Espero que compreenda e fique a vontade para enviar novas dúvidas que mesmo que não saiba responder, te passarei algum dica de onde encontrar respostas.
Abs.!
[há +1 ano] – Responder
Rafael Souto

BOM DIA,
COMO FAÇO PARA REIMPRIMIR UM BOLETO QUE JÁ FOI EMITIDO?
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Eu nunca usei esta situação, mas acredito que teria que carregar os dados do titulo novamente e mandar imprimir novamente. Observe se no componente tem alguma opção que indica como 2º via.Abs.!

[há +1 ano] – Responder
Cesar Cardoso

Bom dia Godinho.
Parabéns pela iniciativa de nos ajudar.
Minha dúvida é a seguinte, para gerar boletos da caixa econômica quando vou passar o número da carteira pede que seja passa “RG” de registrada ou “SR” de sem registro. Isso esta certo?
Obrigado
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!O boleto deve ser homologado junto ao banco que deseja usar. Tem que entrar em contato para saber as exigências do mesmo quanto ao boleto. Estas regras que esta questionando acredito ser do próprio componente acbrboleto, e acredito que estas estão de acordo com as exigências do banco.Abs.!

[há +1 ano] – Responder
Jaade Lemos Sousa

Muito bom Ótimo artigo !
[há +1 ano] – Responder
Jetson Lopes

Sou te fão meu véio!!! Seja abençoado sempre!!!
[há +1 ano] – Responder
Wanderson Ferreira Dos Santos

Ola bom dia, como faria para criar uma rotina e selecionar vários documentos e imprimir os boletos por exemplo…Atenciosamente
[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Você deve inserir no acbrboleto todos os documentos que precisar e depois irá realizar os procedimento de impressão e geração de remessa para o banco.Abs.!

[há +1 ano] – Responder
Tales Joseph Jr

Opa Luis, parabéns pelo post!!Estou com a seguinte dúvida. o banco q estou tentando implementar é o santander, mas sinceramente não sei o que é o ‘Banco.Digito’, será que você poderia ajudar?
rocedure TForm1.ConfiguraComponenteAcBr;
begin
if not CdsConfig.IsEmpty then
begin
ACBrBoleto1.ACBrBoletoFC.DirLogo := CdsConfigPATH_LOGOTIPO.AsString;
ACBrBoleto1.ACBrBoletoFC.Filtro := fiNenhum;
ACBrBoleto1.ACBrBoletoFC.LayOut := lPadrao;
ACBrBoleto1.Banco.Digito := ????????;
ACBrBoleto1.Banco.Numero := 033;
ACBrBoleto1.Cedente.Nome := CdsBancosCEDENTE.AsString;
ACBrBoleto1.Cedente.CodigoCedente := CdsBancosCOD_CEDENTE.AsString;
ACBrBoleto1.Cedente.Agencia := CdsBancosNUMERO_AGENCIA.AsString;
ACBrBoleto1.Cedente.AgenciaDigito := CdsBancosDIGITO_AGENCIA.AsString;
ACBrBoleto1.Cedente.Conta := CdsBancosNUMERO_CONTA.AsString;
ACBrBoleto1.Cedente.ContaDigito := CdsBancosDIGITO_CONTA.AsString;
ACBrBoleto1.Cedente.UF := CdsBancosUF_AGENCIA.AsString;
ACBrBoleto1.NomeArqRemessa := CdsConfigPATH_REMESSA.AsString+FormatDateTime(‘DDMMYYYYHHMMSS’,Now)+’.TXT’;;
end;
end;obrigado pela ajuda.

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá!Tem um tempo que não mecho com o componente mais acredito que teve mudança na seleção do banco. Terá que selecionar o banco da opção da propriedade e os outros dados serão preenchidos automaticamente.Abs.!

[há +1 ano] – Responder
Charbel Sales

Ola preciso muito da ajuda de vcs, estava usando o FREEBOLETO, mais to com problema na impressao para caixa e BB, carteira 18 , então instalei o ACBR boleto mais ta dando erro ao adicionar a questao dos relatorios ..BoletoFC, qualquer um tanto o quick quanto o Fortes.me ajudem..

[há +1 ano] – Responder
[autor] Luis Carlos Godinho

Olá! Se o problema esta na instalação, sugiro que uso o instalador do acbr e instale todo o componten.Abs.!
[há +1 ano] – Responder
Pablo Augusto Lunardi

Olá, preciso de ajuda, na hora de ler o arquivo remessa está dando erro.Arquivo não encontrado:
\C:\sistema8595_090.ret.Não sei por que está saindo essa \ antes do C:

Acontece isso tanto com o openDialog e mesmo se eu colocar o endereço em uma String.

:/

[há +1 ano] – Responder
Pablo Augusto Lunardi

Desculpa, na hora de ler o arquivo retorno.
[há +1 ano] – Responder
Pablo Augusto Lunardi

Já descobri, diretório e arquivo são setados separados. Infelizmente a função de ler o arquivo retorno 400 não está implementada para o banco Banrisul. :\
[há +1 ano] – Responder
Marcos Roberto MVP

Olá!
primeiramente parabéns pela tutorial…No meu esta dando alguns erro.
hora que clico no botão gerar remessa ele me retorna o seguinte erro: “Informações do Cedente incompletas”,
e no botão Adicionar contas ele da o erro: “Access violation at address 006DF979…”Agradeço desde já!

[há +1 mês] – Responder
Douglas Claudio

Olá Marcos, obrigado pelo seu comentário.Enviamos sua solicitação ao Luis e estamos no aguardo de um feedback do mesmo.Um abraço.

[há +1 mês] – Responder
Marcos Roberto MVP

Opa Douglas, obrigado por dar atenção para o meu problema!Eu consegui corrigir o segundo erro, o erro de violação.
A solução é que na verdade faltava setar na propriedade “ACBrBoleto” do componente “ACBrBoletoFCQuick1” o ACBrBoleto1.Mas o erro de “Informações do Cedente incompletas” continua.

Mais uma vez agradeço por enviar o meu problema para o Luis.

[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Quanto a primeira mensagem, acredito que seja retorno do acbrboleto e esta bem específica. Reveja as informações passadas ao componente.
Quanto ao outro erro é muito vago para saber do que se trata.Att.

[há +1 mês] – Responder
Marcos Roberto MVP

Olá Luis!Olha por via das duvidas coloquei caso as informações estejam retornando erradas, decidi colocar as informações do cedente na mão… Veja como ficou a Procedure.procedure TFormMain.ConfiguraComponenteAcBr;
begin
if not Database.TableConfig.IsEmpty then
begin
ACBrBoleto1.ACBrBoletoFC.DirLogo := Database.TableConfigPATH_LOGOTIPO.AsString;
ACBrBoleto1.ACBrBoletoFC.Filtro := fiNenhum;
ACBrBoleto1.ACBrBoletoFC.LayOut := lPadrao;
ACBrBoleto1.Banco.Digito := Database.TableBancoDIGITO_NUMERO_BANCO.AsInteger;
ACBrBoleto1.Banco.Numero := Database.TableBancoNUMERO_BANCO.AsInteger;

{
ACBrBoleto1.Cedente.Nome := Database.TableBancoCEDENTE.AsString;
ACBrBoleto1.Cedente.CodigoCedente := Database.TableBancoCOD_CEDENTE.AsString;
ACBrBoleto1.Cedente.Agencia := Database.TableBancoNUMERO_AGENCIA.AsString;
ACBrBoleto1.Cedente.AgenciaDigito := Database.TableBancoDIGITO_AGENCIA.AsString;
ACBrBoleto1.Cedente.Conta := Database.TableBancoNUMERO_CONTA.AsString;
ACBrBoleto1.Cedente.ContaDigito := Database.TableBancoDIGITO_CONTA.AsString;
ACBrBoleto1.Cedente.UF := Database.TableBancoUF_AGENCIA.AsString;
}

ACBrBoleto1.Cedente.Nome := ‘Marcos’;
ACBrBoleto1.Cedente.CodigoCedente := ‘215’;
ACBrBoleto1.Cedente.Agencia := ‘1479’;
ACBrBoleto1.Cedente.AgenciaDigito := ‘6’;
ACBrBoleto1.Cedente.Conta := ‘1002’;
ACBrBoleto1.Cedente.ContaDigito := ‘6’;
ACBrBoleto1.Cedente.UF := ‘SP’;

ACBrBoleto1.NomeArqRemessa := Database.TableConfigPATH_REMESSA.AsString+FormatDateTime(‘DDMMYYYYHHMMSS’,Now)+’.TXT’;;
end;
end;

Agradeço pela atencão.

[há +1 mês] – Responder
Douglas Claudio

Olá Marcos, obrigado pelo seu comentário.Enviamos sua solicitação ao Luis e estamos no aguardo de um feedback do mesmo.Um abraço.

[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Já atualizou o seu componente acbr? Aparentemente esta tudo certo no código.Att.

[há +1 mês] – Responder
Marcos Roberto MVP

na verdade eu instalei pelo SVN Terça feira desta semana.
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

No componente novo tem algumas informações que devem ser passadas de forma diferente da forma que esta ai no artigo. Este artigo e muito antigo e acredito que ficará melhor se dar uma olhada no exemplo que a equipe do acbr disponibiliza junto com o componente.Att.
[há +1 mês] – Responder
Joabe Anderson Da Silva

Você tem que passar para o componente o banco . essa mudança foi feita a poucos dias .
desse jeito .ACBrBoleto1.Banco.TipoCobranca := cobCaixaEconomica;
[há +1 mês] – Responder
Rodrigo Adriano

copiaram o seu post e nem te deram créditos, infelizmente.http://anaprogramadorajunior.blogspot.com.br/2013/12/emissao-e-controle-de-boletos.html
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Sem problemas. Desde que seja útil esta bom. heheheheGrato,

Luís Godinho.

[há +1 mês] – Responder
Cleomar Pacheco

Estou com uma duvida na formatação do tamanho do nosso numero, pois a empresa usa COM Registro e carteira 11, e o convernio é com 7 digitos, isto teria que me retornar o nosso número com 17 digitos, só que onde verifico o tamanho máximo e a formatação do nosso número, retorna sempre 10 o tamanho….. Ah, é banco do Brasil.
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Até onde eu sei, formatação do nosso número é definida pelo banco. Certifique com o banco que deseja homologar o boleto para maiores informações.Att.

[há +1 mês] – Responder
Cleomar Pacheco

Isso sim, a minha dúvida é se tem algum parametro no acbr, pq na função tamanho máximo teria que retornar com 17 digitos, pois é carteira 11 e tem o convênio com 7 digitos, isto é, tenho que ter 17 digitos no nosso número, só que a função do tamanho máximo do acbr do banco do brasil me traz 10.
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Que eu saiba não tem. Tem que ver diretamente e não estou utilizando este recurso. Posta a dúvida no fórum da devmedia ou do acbr que certamente alguém deve ter informações mais seguras do assunto.att.
[há +1 mês] – Responder
Felipe Salzano MVP

Bom dia.
Parabéns pelo post e pelas dicas.
porém, tenho algumas dúvidas a respeito de AcbrBoleto. Utilizo Delphi Xe2 com ACBrBoletoFCFR, para FastReports.
Não queria ficar alterando o componente original pra passar novos campos nos datasets. Os campos que existem no componente são satisfatórios, mas preciso adicionar mais campos ao Dataset titulo, afim de chamar no Boleto.
Outra coisa é quanto adicionar logomarcas no boleto, só existe este jeito de passar as imagens? através do diretório dos logos?
Você sabe alguma outra forma de passar outras imagens para o boleto, como logo da empresa, etc.
Muito obrigado.
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Quanto aos ajuste de campo, o ideal seria sugerir no forum do acbr para ver se eles adicionam ao projeto. Assim não precisaria ficar alterando. E quanto a logo eu não conheço outra forma.Att.

[há +1 mês] – Responder
Felipe Salzano MVP

ok Godinho.
muito obrigado.
[há +1 mês] – Responder
Emilio Córdova

Bom dia,
Existe algum manual de quais variáveis tenho que enviar para o componente emitir os boletos da caixa econômica?
Gostei muito do componente pois ele faz tudo o que preciso e muito mais, mas estou com problemas para validar o boleto junto à Caixa.
Se puder me ajudar, desde já agradeço.
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!
Pelo que sei, não existe nenhum manual deste tipo. O ideal seria ver no fórum com alguém que tenha tido esta experiência.Att.
[há +1 mês] – Responder
Emilio Córdova

Ok Luis, já me cadastrei no fórum e acabei de tanto mexer que encontrei o problema do nosso numero e carteira.
Mesmo assim, obrigado pela pronta resposta.
T+.
[há +1 mês] – Responder
Leandro Rodrigues Sindorf MVP

Prezado Luis CarlosEm primeiro lugar, parabens pela Aulas, sua didática e conteudo.
Estou começando agora a me inteirar com este assunto de NFe.
Acompanhando os seus videos surgiram algumas duvidas.Na aula 5, não consigo implementar o código que você demonstra, no DataModule DmNFe, Procedure AtualizaConfigAcbr

procedure TDmNFe.AtualizaConfigAcbr;
var OK : Boolean;
begin
// Realiza a Leitura dos Dados do Arquivo de Configuração
LeArqIni;
// Repassa Dados para o componentes AcBrNfe
{$IFDEF AcBrNfeOpenSSL}
ACBrNFe1.Configuracoes.Certificados.Certificado := sCertificado;
ACBrNFe1.Configuracoes.Certificados.Senha := sSenha;
{$ELSE}
ACBrNFe1.Configuracoes.Certificados.NumeroSerie := sSerial;
{$ENDIF}

Qdo tento acessar o NumeroSerie, em Certificados, ele não esta aparecendo. Houve alguma mudança em relação ao Numero de Série?

Desde Já agradeço a atenção.

[há +1 mês] – Responder
Douglas Claudio

Olá Leandro, obrigado pelo seu comentário.Enviamos sua solicitação ao Luis e estamos no aguardo de um feedback do mesmo.Um abraço.

[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Pelo que sei não teve mudança.
Atualize o componente acbr e use conforme o exemplo disponibilizado pelo mesmo.Att.

[há +1 mês] – Responder
Edmilson Cândido

Bom dia!quando coloco seu código pra rodar aparece os seguintes erros e como resolvelos sou novo em delphi comparado aos seu preciosos conhecimento, poderia me ajudar por favor a resolver isso? grato.[Error] frm_boletos.pas(56): Unknown directive: ‘CdsContas’
[Error] frm_boletos.pas(78): Undeclared identifier: ‘DataInicio’
[Error] frm_boletos.pas(78): Missing operator or semicolon
[Error] frm_boletos.pas(79): Statement expected but ‘PROCEDURE’ found
[Error] frm_boletos.pas(81): Undeclared identifier: ‘xNossoNumero’
[Error] frm_boletos.pas(81): Undeclared identifier: ‘CdsBancosNOSSO_NUMERO’
[Error] frm_boletos.pas(81): Missing operator or semicolon
[Error] frm_boletos.pas(82): Undeclared identifier: ‘ConfiguraComponenteAcBr’
[Error] frm_boletos.pas(86): ‘.’ expected but ‘ELSE’ found
[Error] frm_boletos.pas(92): Undeclared identifier: ‘CdsContasNOSSO_NUMERO’
[Error] frm_boletos.pas(92): ‘THEN’ expected but identifier ‘IsNull’ found
[Error] frm_boletos.pas(94): Undeclared identifier: ‘xNossoNumero’
[Error] frm_boletos.pas(98): Undeclared identifier: ‘CdsContasDATA_VENC’
[Error] frm_boletos.pas(98): Missing operator or semicolon
[Error] frm_boletos.pas(99): Undeclared identifier: ‘CdsContasDATA_CONTA’
[Error] frm_boletos.pas(99): Missing operator or semicolon
[Error] frm_boletos.pas(100): Undeclared identifier: ‘CdsContasNUMCONTA’
[Error] frm_boletos.pas(100): Missing operator or semicolon
[Error] frm_boletos.pas(101): Undeclared identifier: ‘CdsConfigESPECIE’
[Error] frm_boletos.pas(101): Missing operator or semicolon
[Error] frm_boletos.pas(102): Undeclared identifier: ‘CdsConfigACEITE’
[Error] frm_boletos.pas(102): ‘THEN’ expected but identifier ‘AsString’ found
[Error] frm_boletos.pas(148): Undeclared identifier: ‘CdsConfig’
[Error] frm_boletos.pas(150): Undeclared identifier: ‘CdsConfigPATH_LOGOTIPO’
[Error] frm_boletos.pas(150): Missing operator or semicolon
[Error] frm_boletos.pas(153): Undeclared identifier: ‘CdsBancosDIGITO_NUMERO_BANCO’
[Error] frm_boletos.pas(153): Missing operator or semicolon
[Error] frm_boletos.pas(154): Undeclared identifier: ‘CdsBancosNUMERO_BANCO’
[Error] frm_boletos.pas(154): Missing operator or semicolon
[Error] frm_boletos.pas(155): Undeclared identifier: ‘CdsBancosCEDENTE’
[Error] frm_boletos.pas(155): Missing operator or semicolon
[Error] frm_boletos.pas(156): Undeclared identifier: ‘CdsBancosCOD_CEDENTE’
[Error] frm_boletos.pas(156): Missing operator or semicolon
[Error] frm_boletos.pas(157): Undeclared identifier: ‘CdsBancosNUMERO_AGENCIA’
[Error] frm_boletos.pas(157): Missing operator or semicolon
[Error] frm_boletos.pas(158): Undeclared identifier: ‘CdsBancosDIGITO_AGENCIA’
[Error] frm_boletos.pas(158): Missing operator or semicolon
[Error] frm_boletos.pas(159): Undeclared identifier: ‘CdsBancosNUMERO_CONTA’
[Error] frm_boletos.pas(159): Missing operator or semicolon
[Error] frm_boletos.pas(160): Undeclared identifier: ‘CdsBancosDIGITO_CONTA’
[Error] frm_boletos.pas(160): Missing operator or semicolon
[Error] frm_boletos.pas(161): Undeclared identifier: ‘CdsBancosUF_AGENCIA’
[Error] frm_boletos.pas(161): Missing operator or semicolon
[Error] frm_boletos.pas(162): Undeclared identifier: ‘CdsConfigPATH_REMESSA’
[Error] frm_boletos.pas(162): Missing operator or semicolon
[Error] frm_boletos.pas(164): Statement expected but ‘PROCEDURE’ found
[Error] frm_boletos.pas(170): Undeclared identifier: ‘ConfiguraComponenteAcBr’
[Error] frm_boletos.pas(176): Illegal character in input file: ‘&’ ($26)
[Error] frm_boletos.pas(188): Too many actual parameters
[Error] frm_boletos.pas(208): Undeclared identifier: ‘CdsConfigCONT_REMESSA’
[Error] frm_boletos.pas(208): Missing operator or semicolon
[Error] frm_boletos.pas(216): Undeclared identifier: ‘xNossoNumero’
[Error] frm_boletos.pas(217): Undeclared identifier: ‘CdsBancosID’
[Error] frm_boletos.pas(217): Missing operator or semicolon
[Error] frm_boletos.pas(218): Too many actual parameters
[Error] frm_boletos.pas(225): Undeclared identifier: ‘CdsConfigID’
[Error] frm_boletos.pas(225): Missing operator or semicolon
[Error] frm_boletos.pas(226): Too many actual parameters
[Error] frm_boletos.pas(231): ‘;’ expected but ‘.’ found
[Error] frm_boletos.pas(233): Declaration expected but end of file found
[Fatal Error] boleto.dpr(6): Could not compile used unit ‘frm_boletos.pas’

[há +1 mês] – Responder
Douglas Claudio

Olá Edmilson, obrigado pelo seu comentário.Enviamos sua solicitação ao Luis e estamos no aguardo de um feedback do mesmo.Um abraço.

[há +1 mês] – Responder
Edmilson Cândido

Grato, Estarei no aguardo. Abraços.
[há +1 mês] – Responder
[autor] Luis Carlos Godinho

Olá!Seu código esta incompleto. Sugiro que baixe alguns vídeos para entender a forma de trabalho com os componentes usados no artigo, isso facilitará seu entendimento.Att.

[há +1 mês] – Responder
Edmilson Cândido

onde baixo esses videos e qual o caminho?
[há +1 mês] – Responder
Douglas Claudio

Olá Edmilson, obrigado pelo seu comentário.Você pode está consultando os links abaixo:http://www.devmedia.com.br/instalacao-dos-componentes-acbr-delphi/24199
http://www.devmedia.com.br/emissao-de-boletos-bancarios-com-acbr-revista-clubedelphi-magazine-151/28231

Com certeza, vai te ajudar a entender melhor.

Um abraço.

[há +1 mês] – Responder
Marcos Roberto Da Cruz

ola bom dia gostei do post.. tenho duvida por exemplo o banco sicob tem dois campos chamado configuracao 01 que seria a Modalidade e outro configuracao 02 que seria Carteira Bancoob isso da colocar aonde no acbr?
[há +1 mês] – Responder
Hélio Carlos Cardoso

Olá Marcos, não sou autor do Post mas sou autor na Devmedia e gostaria de ajudar
Para colocar o Campo de Carteira e modalidade é simples.A Classe ACBRTitulo que aparece no exemplo, é uma classe que faz parte do ACBRBoleto e é criada (pode-se criar mais de uma) quando você chama o método “CriarTituloNaLista”Em ACBRTitulo você tem diversas propriedades e entre elas a propriedade Carteira e a propriedade EspecieModalidade, alí você deve colocar a carteira e a modalidade que o banco solicita, lembrando que elas são do tipo string.

[há +1 mês] – Responder
Marcos Roberto Da Cruz

no banco sicredi tem Prefixo do nosso número se emitido pelo Cedente (2 a 9) e Tipo de Cobrança em quais campos que preenche isso no ACBR?
[há +1 mês] – Responder
Douglas Claudio

Olá Marcos, obrigado pelo seu comentário.Enviamos sua solicitação ao Luis e estamos no aguardo de um feedback do mesmo.Um abraço.

[há +1 mês] – Responder
Hélio Carlos Cardoso

Sobre a questão do nosso numero, eu não conheço bem o banco mas alguns bancos, quando colocam o profixo do nosso numero, estes só aparecem para gerar cobrança (arquivo eletrônico enviado para o banco via txt para realizar o registro dos boletos) mas na hora de gerar o boleto e o código de barra esse prefixo não deve ser enviado.O sicob mesmo é um que inicia o nosso numero em 1 no boleto porém na hora de gerar o nosso numero ele pede que coloque “nossonumero(10)”+”parcela(2)”+”modalidade(2)”+”TipoFormulario(1)”Em relação ao tipo de Cobrança, gostaria de ajudar mas peço que seja mais específico. Será que você estaria perguntando sobre a Espécie do título (duplicata mercantil (DM), duplicata de Serviço (DS), Recibo(RC), Fatura(FAT), etc…)?

[há +1 mês] – Responder

Leia mais em: Emissão e Controle de Boletos – Componente AcBr no Delphi http://www.devmedia.com.br/emissao-e-controle-de-boletos-componente-acbr-no-delphi/23631#ixzz3ba7aHxEm

Leia mais em: Emissão e Controle de Boletos – Componente AcBr no Delphi http://www.devmedia.com.br/emissao-e-controle-de-boletos-componente-acbr-no-delphi/23631#ixzz3ba3EvLS5

2 comentários em “Emissão e Controle de Boletos – Componente AcBr no Delphi

Deixe um comentário