VPE – ( Validador de Pagamentos Eletrônicos ) utilizando o Integrador Fiscal – CE

Homologando o Módulo VPE – CE

Ola, Nesse tópico vamos detalhar os passos para realizar testes e homologação utilizando o Módulo VPE (Validador de Pagamentos Eletrônicos) com o Integrador Fiscal no estado do CE.

Embora a SEFAZ CE permitiu a emissão de Cupom Fiscal Eletrônico utilizando apenas o driver MFe (sem a necessidade do uso do Aplicativo Integrador Fiscal), para a integração dos dados de pagamento com cartão – VPE, ainda é necessário a utilização do Integrador Fiscal do Ceará.

Para esse procedimento, segue abaixo como utilizar o Componente ACBrIntegrador para realizar o envio dos dados de pagamento por meio do Integrador Fiscal. Neste caso, estamos utilizando o Demo “SATTest” do Projeto ACBr para os testes, você poderá verificar os fontes desse demo no repositório do ACBr : (..\ACBr\Exemplos\ACBrSAT\ ) ou baixar o demo em: SATTest

Instalar Integrador Fiscal

O Primeiro passo é Instalar o Aplicativo Integrador Fiscal, segue abaixo o tópico sobre como Instalar e configurar o Integrador Fiscal: Instalar Integrador Fiscal

Utilizando o SATTest 

No exemplo do SATTest abaixo, estamos utilizando a conexão direta com a dll do driver MFe, mas a comunicação entre o ACBrIntegrador – (VPE) e o Integrador Fiscal vai funcionar independente desta configuração, basta apenas que o Integrador Fiscal esteja em execução e devidamente configurado na máquina.

Para mais Informações sobre configuração do Driver MFe, veja em: Configurar Driver MFe

Para integração ACBrIntegrador e VPE vá para aba: MFe e veja as quatro opções disponíveis para o Módulo VPE – (“Enviar Pagamento”, “Enviar Status Pagamento”, “Verificar Status Validador”, “Resposta Fiscal”)

Existem duas situações para Integração do Módulo VPE, sendo distintas entre: POS e TEF:

 

Utilizando Integração VPE com Pagamento P.O.S. 

Obs Importante: 

A SEFAZ CE não disponibilizou um Serviço P.O.S. compatível com Integrador Fiscal conforme estava previsto inicialmente. Então a opção “Verificar Status Validador” está disponível apenas para ambiente de homologação, para isso é utilizado o Simulador P.O.S. Ceara: http://simuladorposceara.azurewebsites.net/. Portanto o Serviço “Verificar Status Validador” não é utilizado em Produção.

Passo 1:  EnviarPagamento

Informações a ser enviada neste método:

PagamentoMFe := TEnviarPagamento.Create;
  try
    with PagamentoMFe do
    begin
      Clear;
      ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';                          
      ChaveRequisicao := '26359854-5698-1365-9856-965478231456';                               
      Estabelecimento := '10';                                                                 
      SerialPOS := InputBox('SerialPOS','Informe o Serial do POS','ACBr-'+RandomName(8));      
      CNPJ := edtEmitCNPJ.Text;                                                                
      IcmsBase := 0.23;                                                                        
      ValorTotalVenda := 1530;                                                                 
      HabilitarMultiplosPagamentos := True;                                                    
      HabilitarControleAntiFraude := False;                                                    
      CodigoMoeda := 'BRL';                                                                    
      EmitirCupomNFCE := False;                                                              
      OrigemPagamento := 'Mesa 1234';                                                        
    end;

    ...
  finally
     ...
  end;

Definição sobre Principais Campos:

Chave de Acesso Validador – Esta chave é fixa, está Pré-Definida no Manual Do Integrador Fiscal.

Chave de Requisição – Esta chave deve ser única para cada requisição POS, deve-se gerar um GUID para cada Envio de Pagamento. Esta especificação está descrita no Manual do Integrador.

Estabelecimento –   Como não existe este equipamento POS Integrado conforme previsão inicial, está sendo informado um valor fixo.

SerialPOS –  Como não existe este equipamento POS Integrado conforme previsão inicial, está sendo informado o Numero serial do Equipamento POS utilizado (Independente do equipamento)

(Apenas para efeito de testes no SATTest, estamos utilizando um valor randômico para gerar o Número do Serial).

 

Após o Envio do Pagamento será retornado o “ID do Pagamento”

obs: O ID do pagamento deve ser gravado pela sua aplicação para Identificação do Pagamento e Requisições Posteriores, pode ser obtido pelo método: (RespostaVerificarStatusValidador.CodigoAutorizacao)

Passo 2:  VerificarStatusValidador  (Utilizado apenas em Ambiente de Homologação)

Para Testes em Homologação deve-se utilizar o Site Simulador POS Ceará http://simuladorposceara.azurewebsites.net/ e informar o SerialPOS utilizado no envio, para Simular o Pagamento Efetuado

Após a Confirmação de Pagamento utilizando o Emulador,  deve realizar a chamada do método: VerificarStatusValidador informando o ID Pagamento:

with VerificarStatusValidador do
begin
  Clear;
  ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';                          
  IDFila := StrToIntDef(InputBox('IDPagmento','Informe o ID do Pagamento',''),0);          
  CNPJ:= edtEmitCNPJ.Text;                                                                
end;

Definição sobre os Campos:

Chave de Acesso Validador – Esta chave é fixa, está Pré-Definida no Manual Do Integrador Fiscal.

ID FIla – Este campo se trata do “ID Pagamento” retornado no primeiro método

CNPJ –   CNPJ do Emitente

 

Será obtido como retorno o XML com a simulação da Autorização de Pagamento:

Lembrando que em Produção não é possível realizar o Passo 2, pula direto para o passo 3:

Passo 3:  RespostaFiscal 

Após o Envio do XML de Venda para o MFe ou Integrador (no caso de NFC-e), realiza-se o passo 3, apenas para Vincular o Pagamento com Cartão a um Documento Fiscal, através do método: RespostaFiscal

RespostaFiscal := TRespostaFiscal.Create;
    try
      with RespostaFiscal do
      begin
        Clear;
        ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';                           
        IDFila := StrToIntDef(InputBox('IDPagmento','Informe o ID do Pagamento',''),0);           
        ChaveAcesso := '35170408723218000186599000113100000279731880';                           
        Nsu := '1674068';                                                                        
        NumerodeAprovacao := '123456';                                                             
        Bandeira := 'VISA';                                                                       
        Adquirente := 'STONE';                                                                    
        if Assigned(ACBrSAT1.CFe) and (ACBrSAT1.Extrato= ACBrSATExtratoESCPOS1) then
          ImpressaoFiscal := '<![CDATA['+ACBrSATExtratoESCPOS1.GerarImpressaoFiscalMFe+']]>';     
        NumeroDocumento := '1674068';                                                            
        CNPJ:= edtEmitCNPJ.Text;                                                                  
      end;
      
    finally
      RespostaFiscal.Free;
    end;

Definição sobre Principais Campos:

Chave de Acesso Validador – Esta chave é fixa, está Pré-Definida no Manual Do Integrador Fiscal.

ID FIla – Este campo se trata do “ID Pagamento” retornado no primeiro método

ChaveAcesso –   Refere-se a Chave do CFe de Venda gerado pelo MFe ou Integrador Fiscal (no caso de NFC-e)

NSU –   Fornecido pela Adquirente (Autorizadora de Pagamento) – Como não existe este equipamento POS Integrado conforme previsão inicial, está sendo informado um valor fixo.

NumeroAprovacao –   Código de Autorização de Pagamento Retornado pela Adquirente – Como não existe este equipamento POS Integrado conforme previsão inicial, está sendo informado um valor fixo.

ImpressaoFiscal –   A Intensão futura será passar o Extrato do CFe para impressão no aparelho POS (A Função GerarImpressaoFiscalMFe já gera o Modelo do Cupom a ser impresso)

NumeroDocumento –   Número do Cupom Fiscal Autorizado.

Será obtido o XML Retorno com o Código de Processamento da Resposta Fiscal.

Encerra-se o Processo VPE – utilizando o P.O.S.

 

 

Utilizando Integração VPE com Pagamento TEF

Passo 1:  EnviarStatusPagamento

Informações a ser enviada neste método:

StatusPagamentoMFe := TStatusPagamento.Create;
  try
    with StatusPagamentoMFe do
    begin
      Clear;
      ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';     
      CodigoAutorizacao := '20551';                                       
      Bin := '123456';                                                    
      DonoCartao := 'TESTE';                                              
      DataExpiracao := '01/01';                                           
      InstituicaoFinanceira:= 'STONE';                                    
      Parcelas := 1;                                                      
      CodigoPagamento := '12846';                                         
      ValorPagamento := 1530;                                             
      IDFila := 1674068;                                                  
      Tipo := '1';                                                        
      UltimosQuatroDigitos := 1234;                                       
    end;
   
  finally
    StatusPagamentoMFe.Free;
  end;

Definição sobre Principais Campos:

Chave de Acesso Validador – Esta chave é fixa, está Pré-Definida no Manual Do Integrador Fiscal.

Obs: Para quem utiliza o Componente ACBrTEFD os dados do cartão e de Confirmação de Pagamento, utilizados no pagamento TEF podem ser obtidos
acessando a propriedade ACBrTEFDRespNFCeSAT da Classe de retorno TACBrTEFDResp do Componente ACBrTEFD, automatizando assim o preenchimento destes dados. 

Será obtido o XML Retorno com o Código de Processamento do Status de Pagamento.

 

Passo 2:  RespostaFiscal 

Após o Envio do XML de Venda para o MFe (ou Integrador no caso de NFC-e), realiza o passo 2, apenas para Vincular um Pagamento com Cartão ao Documento Fiscal, através do método: RespostaFiscal

RespostaFiscal := TRespostaFiscal.Create;
    try
      with RespostaFiscal do
      begin
        Clear;
        ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';                           
        IDFila := StrToIntDef(InputBox('IDPagmento','Informe o ID do Pagamento',''),0);           
        ChaveAcesso := '35170408723218000186599000113100000279731880';                           
        Nsu := '1674068';                                                                        
        NumerodeAprovacao := '123456';                                                             
        Bandeira := 'VISA';                                                                       
        Adquirente := 'STONE';                                                                    
        if Assigned(ACBrSAT1.CFe) and (ACBrSAT1.Extrato= ACBrSATExtratoESCPOS1) then
          ImpressaoFiscal := '<![CDATA['+ACBrSATExtratoESCPOS1.GerarImpressaoFiscalMFe+']]>';     
        NumeroDocumento := '1674068';                                                            
        CNPJ:= edtEmitCNPJ.Text;                                                                  
      end;
      
    finally
      RespostaFiscal.Free;
    end;

Definição sobre Principais Campos:

Chave de Acesso Validador – Esta chave é fixa, está Pré-Definida no Manual Do Integrador Fiscal.

ID FIla – Este campo se trata do “ID Pagamento” retornado no primeiro método

ChaveAcesso –   Refere-se a Chave do CFe de Venda gerado pelo MFe ou Integrador Fiscal (no caso de NFC-e)

NSU –   Fornecido pela Adquirente (Autorizadora de Pagamento) – Como não existe este equipamento POS Integrado conforme previsão inicial, está sendo informado um valor fixo.

NumeroAprovacao –   Código de Autorização de Pagamento Retornado pela Adquirente – Como não existe este equipamento POS Integrado conforme previsão inicial, está sendo informado um valor fixo.

ImpressaoFiscal –   A Intensão futura é utilizar no Aparelho POS

NumeroDocumento –   Número do Cupom Fiscal Autorizado.

Será obtido o XML Retorno com o Código de Processamento da Resposta Fiscal.

Encerra o Processo VPE – utilizando o TEF

 

 

Veja Mais detalhes sobre o Fluxo de Venda utilizando POS e TEF em:

https://servicos.sefaz.ce.gov.br/internet/download/projetomfe/FluxoVendaPDVUtilizandoPOS.pdf

https://servicos.sefaz.ce.gov.br/internet/download/projetomfe/FluxoVendaPDVUtilizandoTEF.pdf

Manual Integrador:

http://cfe.sefaz.ce.gov.br/mfe/informacoes/downloads#/

 

Fonte: https://www.projetoacbr.com.br/forum/topic/51588-vpe-validador-de-pagamentos-eletr%C3%B4nicos-utilizando-o-integrador-fiscal-ce/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CHECK-LIST DE HOMOLOGAÇÃO CF-e

HOMOLOGAÇÃO

1. PREPARAR AMBIENTE:

1.1 – Se certificar de que tanto a aplicação comercial quanto o integrador estejam fechados.

1.2 – Abrir o integrador

1.3 – Abrir a aplicação comercial pelo integrador

2. VERIFICAÇÃO DADOS POS:

2.1 – Cadastro de POS

Dados do POS:

ID: Valor fornecido pelo usuário, pode ser um número sequencial.

Serial do POS: No ambiente de produção, o valor inserido é o número de série do equipamento.

Descrição: Valor fornecido pelo usuário, pode ser uma forma de identificar o POS.

2.2 – VERIFICAÇÃO CHAVE DE ACESSO AO VALIDADOR.

Esse valor pode ser encontrado no manual do integrador fiscal, página 9. OBSERVAÇÃO: A chave de acesso ao validador é igual nos dois ambientes tanto na homologação quanto na produção.

Chave de acesso Validador: 25CFE38D-3B92-46C0-91CA-CFF751A82D3D

2.3 – VERIFICAÇÃO CHAVE DE REQUISIÇÃO

OBSERVAÇÃO: A chave de requisição é um código gerado a partir do CNPJ do contribuinte mais o CNPJ da adquirente.

3. TESTE DE VENDAS:

3.1 – Fazer uma venda a dinheiro

3.2 – Fazer uma nova venda (a venda deve ser finalizada com duas formas de pagamento, dinheiro e cartão).

3.3 – O AC deve solicitar COD DE AUT, NSU e BANDEIRA, antes de finalizar o cupom.

3.4 – Realizar uma venda com o integrador desligado – Nesse caso aplicação não deve emitir o cupom.

3.6 – Fazer uma nova venda a cartão, logo depois cancelá-la.

4. VERIFICAÇÃO DO BANCO DE DADOS

4.1 – Verificar no banco de dados as seguintes tabelas: ID_pagamentos e ID_respostafiscal

5. ENVIO DE DOCUMENTOS FISCAIS

5.1 – Enviar todos os XML’s gerados no momento da homologação para o e-mail: suporte.mfe@sefaz.ce.gov.br com o assunto “DADOS HOMOLOGAÇÃO + NOME SOFTWARE HOUSE”.

OBS: PARA SER FEITO A HOMOLOGAÇÃO É NECESSÁRIO A DISPONIBILIZAÇÃO DO APLICATIVO DE ACESSO REMOTO ACESEFA.

NO DIA DO AGENDAMENTO, ENTRAR EM CONTATO ATRAVÉS DOS SEGUINTES RAMAIS:

(85) 3108-0283

(85) 3108-0284

(85) 3108-0215

(85) 3108-0216

(85) 3108-0784

(85) 3108-0797

Caso tenha alguma dúvida enviar um e-mail para suporte.mfe@sefaz.ce.gov.br

 

Fonte:

https://www.projetoacbr.com.br/forum/topic/55266-roteiro-e-ou-manual-para-homologa%C3%A7%C3%A3o/

 

https://www.projetoacbr.com.br/forum/topic/51588-vpe-validador-de-pagamentos-eletr%C3%B4nicos-utilizando-o-integrador-fiscal-ce/

 

Integração fiscal com equipamentos Bematech

Windows – SAT BEMATECH
http://bematechpartners.com.br/wp01/?page_id=308

Plataforma Fiscal Bematech
http://www.bematechpartners.com.br/wp01/upload-files/downloads/oneapi/DOCUMENTACAO_GERAL/help/APIOne.html#_o_que_é_a_a_apione

Integrando a Plataforma Fiscal através da APIOne.
http://www.bematechpartners.com.br/wp01/upload-files/downloads/oneapi/DOCUMENTACAO_GERAL/help/APIOne.html#_instalação_da_plataforma_fiscal_fiscal_manager

CENTRAL DE DOWNLOADS
http://bematechpartners.com.br/wp01/

OrangeUI – Suíte de Componentes de Mídia

O desenvolvedor DelphiTeacher (fora da China), lançou uma nova versão de seu conjunto de componentes OrangeUI para o Delphi XE8 Firemonkey. O OrangeUI é um conjunto enorme de componentes personalizados para o Firemonkey que são otimizados para as plataformas Android, IOS, OSX e Windows. Alguns dos componentes que estão disponíveis no conjunto de componentes são Button, CheckBox, DrawPael, Editar, Image, ImageListViewer, Label, ListBox, ListView, Memorando, NotifyNumberIcon, PageControl, Painel, ProgressBar, PullLoadPanel, RadioButton, ScrollBar, ScrollControl, TrackBar, e talvez até 100 controles totais. Muitas das informações sobre o componente suite estão em chinês, mas você pode facilmente traduzir isso. Parece que o principal objetivo do conjunto de componentes do OrangeUI é criar um conjunto de controles mais dinâmico e rico em mídia para o Firemonkey (e talvez até melhor suporte a caracteres chineses). Muitas das imagens mostram todos os tipos de gráficos integrados nos vários controles. Parte da documentação também fala sobre um TabControl de rolagem suave personalizado. Existe um grande imagem de mídia disponível com toneladas de screenshots mostrando os diferentes controles. Há também um grande número de demos disponíveis mostrando todos os vários controles (confira o diretório OrangeProjectCommon para algum código Firemonkey útil). Este é um conjunto de componentes comerciais (e é bastante caro para a versão do código-fonte), mas há uma versão de avaliação gratuita disponível. Parece que a única maneira de comprar o pacote é contatar diretamente o autor. Não tenho certeza se este teste do conjunto de componentes funcionará com o Appmethod (embora a versão do código-fonte provavelmente funcione).

Introdução ao OrangeUI

Em 2013, a EMB lançou o XE4 e iniciou o capítulo do Delphi que pode desenvolver diretamente o Apple APP.

Ao mesmo tempo, a OrangeUI iniciou uma série de pesquisas e desenvolvimento intensivos, até 2017, que levaram quatro anos.

Durante o período, a EMB também lançou o XE5, XE6, XE7, XE8, D10 Seattle, até agora a versão D10.1 de Berlim,

O Delphi possui um conjunto de códigos e, ao mesmo tempo, desenvolve um aplicativo muito estável para as plataformas IOS e Android.

O OrangeUI também evoluiu da versão 1.0 para a versão 1.73 hoje.

 

Eu pessoalmente desenvolvi uma variedade de aplicativos usando o Delphi + OrangeUI, incluindo gerenciamento corporativo, mensagens instantâneas e ferramentas de aplicativos.

Eu acumulei muita experiência com esses projetos, encontrando os pontos problemáticos na interface e os empacotando em controles simples.

Portanto, o OrangeUI contém quase todos os controles de interface do usuário usados ​​no desenvolvimento de aplicativos, facilitando isso.

 

Por exemplo, a OrangeUI criou originalmente o modo de painel de design do ListView, que pode arrastar e soltar os elementos (imagens, textos, botões, caixas de entrada, etc.) para serem exibidos diretamente no painel.

Satisfaça a necessidade de implementar rapidamente uma variedade de listas complexas em aplicativos para dispositivos móveis.

Além disso, cada controle no OrangeUI só precisa definir uma propriedade simples para obter o efeito desejado.

Em vez de o EMB vem com controles, alterar a cor de fundo de um botão requer a criação de um estilo complexo.

Crie e carregue rapidamente, porque o controle OrangeUI herda diretamente o TControl, não o TStyledControl,

Não precisa carregar elementos do StyleBook padrão ao trazer seus próprios controles

 

Muitos usuários desenvolveram uma variedade de aplicativos bonitos e elegantes usando o Delphi + OrangeUI. Existem também muitos aplicativos na Apple AppStore.

No período em que este desenvolvimento APP é predominante, a fim de tornar mais desenvolvedores Delphi mais convenientes para desenvolver APP, construa uma interface APP,

Ao concentrar-se mais em negócios e P & D funcional, a OrangeUI decidiu usá-lo gratuitamente para desenvolvedores do Delphi.

 

Com o OrangeUI, você pode implementar de forma rápida e constante os seguintes recursos, todos gratuitos:

1 Home page APP nove grade menu, muitas vezes visto em APP mainstream, OrangeUI só precisa de um controle, em vez de pilha Imagem e Label para alcançar.

2 A função de carrossel de imagens de anúncios e é possível seguir a troca de dedos, que atualmente não é possível com outros controles.

3 O ListView suporta a configuração direta da URL da imagem.Com a função de download multi-thread subjacente, é fácil carregar de forma assíncrona a imagem sem sentir o clique.

4 O ListView da caixa de listagem vem com uma função de atualização pull-down e de carregamento suspenso, que leva apenas 2 segundos para carregar dados 2w no telefone.

5 Os dados no aplicativo são baseados principalmente no ListView.O modo de painel de design suportado pelo ListView ListView pode adicionar qualquer número de controles no painel de design, organizar o layout e manipular facilmente vários estilos.

6 Consiga um efeito de troca de página estável, para que seu aplicativo seja como uma experiência de usuário nativa (o mais importante para o aplicativo é a experiência do usuário).

7 Várias interfaces comuns, como caixas de espera, caixas de diálogo, caixas de menu, caixas de menu de foto, caixas de seleção, etc.

8 Ele pode gerar rapidamente ícones de programas e imagens de interface de inicialização de vários tamanhos usados ​​nas plataformas IOS e Android.

9 Shopping online, bate-papo com amigos, navegação por notícias, inspeção de comércio exterior, pedidos fixos, etc., incluindo todo o código-fonte.

10 Os controles de paginação que podem ser alternados por gesto podem ser adicionados ao seu aplicativo para facilitar a operação dos usuários.

11 A solução estável e flexível de desenvolvimento de quadros (recomendada pelo professor Li Wei) é uma boa maneira de decompor o formulário principal complexo em quatro ou cinco pequenas páginas, acelerar a velocidade de inserção da página, reduzir o uso da memória e pressionar a tecla de retorno automaticamente. Volte para a página anterior e deixe que você crie um aplicativo eficiente.

12 Imagem simples e prática HTTP upload e download de código fonte amostra para cliente e servidor (IndyHttpServer).

13 Envie um círculo de amigos, visualize o círculo de clientes do círculo de amigos e experimente o código fonte do servidor de segundo plano (DataSnap).

14 Um botão passando com um dedo em uma ScrollBox não aciona um evento de clique.

15 A caixa de edição não aciona um evento de entrada ao passar com um dedo na ScrollBox, e o evento de exibição / ocultação do teclado virtual é processado automaticamente sem bloquear a caixa de edição.

16 O ListView suporta a capacidade de adicionar itens em tempo de design e instantaneamente visualizar os efeitos, que não estão disponíveis com os controles internos e outros.

17 Existem mais de 200 usuários do OrangeUI, e não há mais de 100 aplicativos desenvolvidos pelos usuários, muitos deles estão nas prateleiras da AppStore e Tencent App.

18 Cada controle vem com um tutorial DEMO e documentação dedicado que é mais fácil de usar.

19 Fornecer tecnologia especial OrangeUI para apoiar o grupo QQ (número do grupo: 10900297), ou adicionar o meu QQ452330643 para fornecer suporte profissional de desenvolvimento de APP.

20 Atualize uma vez por mês ou duas, constantemente adicionando novos controles para se adaptar às novas tendências, bem como novos exemplos práticos.

Vamos dar uma olhada mais de perto no que os controles OrangeUI fazem:

O controle mais importante

Exibição de lista ListView

   Os estilos de item de lista podem ser projetados por meio de painéis

   Inúmeros textos, imagens e botões podem ser colocados no painel de design

   Caixas de seleção, botões de opção, barras de progresso, números de lembretes, textos coloridos, etc. também podem ser colocados no painel de design.

   Uma rotação de anúncios pode ser colocada no painel de design e pode lidar com conflitos de gestos entre o deslizamento horizontal e vertical da imagem

   Caixas de edição podem ser colocadas no painel de design para editar itens da lista

   Cada controle no painel de design pode gravar um evento de clique

   É muito conveniente implementar o efeito de clique do item da lista e selecionar o efeito.

   Pode ter vários estilos de itens de lista diferentes

   Cada item da lista pode ser definido para uma altura e largura diferentes

   Modo de exibição de ícone de suporte, você pode definir o número de itens por linha, fácil de conseguir nove layout de grade e tabela

   Suporte ao modo de exibição de fluxo em cascata

   Suporte para o modo de seleção central para seleção de opções

   Suporte horizontal modo de arranjo

   Você pode adicionar e modificar itens de lista durante a fase de design para visualizar o efeito instantaneamente

   Carregar automaticamente imagens de itens de lista de forma assíncrona

   Implementação simples de atualização pull-down e pull-up de mais dados

   Você pode personalizar a linha separadora do item da lista, o divisor de linhas e colunas

   Você pode definir o intervalo de itens da lista.

   Botão do menu panorâmico personalizável

Fonte: http://orangeui.cn/download/OrangeUI/

Edição 255 – O TEF, a NFC-e e o SAT

Olá Partner Bematech e Desenvolvedor de Software,

Muitas dúvidas surgiram no mercado com as mudanças que o varejo sofreu em relação as obrigatoriedades fiscais no ponto-de-venda. Com o decorrer do tempo, muitas foram sanadas com o mercado conseguindo absorver e se adaptar a elas. No entanto, tenho percebido que algumas dúvidas ainda perduram entre os desenvolvedores – Como fica o TEF sem o ECF?

Com as obrigatoriedades da NFC-e na maioria dos Estados brasileiros e o equipamento SAT no Estado de São Paulo, muitas aplicações comerciais passaram por adaptações, algumas nem tanto e outras drasticamente. Regras de negócio foram modificadas em função da saída do ECF do ponto-de-venda, e outras novas foram implementadas com a entrada da NFC-e e o SAT.

Acompanhando estas adaptações temos o TEF, que também precisou de um novo controle e de novas rotinas de impressão das transações, sendo realizadas agora em uma impressora comum de recibos – conhecida entre nós como “impressora não fiscal“.

Aí você me pergunta: “Como fica todo aquele tratamento que o roteiro de integração do TEF exigia?

Os Estados que continuam obrigando o uso do ECF no ponto-de-venda mantêm o TEF da mesma maneira, ou seja, o mesmo roteiro de integração do TEF com o ECF já conhecido por todos nós.

Para a NFC-e e o SAT foi disponibilizada pelas TEF Houses um novo roteiro de integração, muito mais simples e rápido. 

E você sabia que o TEF nunca dependeu do ECF para funcionar?

Simplesmente, o TEF funciona sem relacionamento algum com qualquer tecnologia fiscal. O ECF foi apenas o complemento para a impressão das transações realizadas devido a sua obrigatoriedade, gerando assim um roteiro de integração vinculando a impressão do TEF.

Nesta edição de nosso BSP News, quero compartilhar com você nosso Partner e desenvolvedor de software, algumas dicas para integrar o TEF e a NFC-e/SAT com impressora de recibos.

Vamos lá!

As TEF Houses disponibilizam uma nova documentação que orienta o desenvolvedor na integração de sua aplicação comercial com o TEF, visando as operações com NFC-e e SAT.

Uma das operações que sofreu adaptação foi a impressão do comprovante do TEF.

Vamos relembrar um pouco como era no ECF:

A aplicação comercial, após concluir a venda do cupom fiscal, abria um comprovante de crédito e débito (o famoso “CCD”) e imprimia todo o conteúdo do TEF nele.

Se houvesse um erro de comunicação durante a impressão do TEF, era exibida uma mensagem ao(a) operador(a) do caixa perguntando se desejava reimprimir. Caso a resposta fosse “SIM”, a aplicação comercial encerrava o comprovante de crédito e débito e abria o relatório gerencial para realizar a reimpressão.

Se houvesse uma queda de energia durante a impressão do TEF, onde todo o PDV era desligado, ao retornar, a aplicação comercial era obrigada a não confirmar a transação pendente.

Lembra disso? 😉

As verificações de queda de energia e de erros de comunicação durante a impressão do TEF ainda se mantêm para o uso com NFC-e/SAT e a impressora de recibos.

É possível testar o erro de comunicação fazendo uma leitura de status da impressora (para os modelos MP-4200 TH e MP-100S TH, disponibilizamos via dll MP2032/MP2064 funções para isso).

Para estas verificações, o novo roteiro do TEF pede para que seja exibida uma mensagem ao(a) operador(a) do caixa: “O cupom TEF foi impresso corretamente?“.

Se a impressão ocorrer corretamente, ao responder “SIM”, a aplicação comercial deve confirmar a transação TEF, liberando o PDV para a próxima venda.

Se a impressão não ocorrer corretamente, o(a) operador(a) do caixa tem ainda mais duas opções a escolher, sendo “NÃO” para que a aplicação comercial não confirme a transação TEF exibindo a mensagem “Última transação foi cancelada. Favor reter o cupom.” ou “REIMPRIME” para que a aplicação comercial possa realizar novamente a impressão do TEF, voltando ao fluxo da primeira mensagem ao(a) operador(a) do caixa.

No caso da não confirmação do TEF, a dica é exibir uma nova mensagem ao(a) operador(a) do caixa, alertando que a transação TEF será cancelada, como por exemplo “Tem certeza que quer cancelar a transação TEF“, solicitando a senha do supervisor ou gerente do estabelecimento, caso a resposta seja SIM. 

Na queda de energia, onde todo o PDV desliga, ao retornar, a aplicação comercial deve verificar que há uma transação pendente de confirmação e realizar a confirmação da mesma, reimprimindo a transação TEF.

Perceba que já houveram mudanças em relação ao roteiro utilizado no ECF.

Uma outra mudança que ocorreu foi no encerramento do cupom fiscal, onde a transação do TEF era realizada antes do pagamento do cupom, pois era a maneira de garantir que o pagamento em Cartão fosse realmente efetivado, caso contrário, era possível escolher outro meio de pagamento. Lembrando que tudo isso era impresso concomitantemente no ECF, ou seja: se abria o cupom fiscal, imprimia os itens, totalizava o cupom, realiza a transação TEF, imprimia a forma de pagamento e fechava o cupom fiscal.

Com o novo roteiro de implementação do TEF e também com o uso da NFC-e e SAT, toda esta concomitância deixou de existir, pois agora as informações com as vendas são registradas em um arquivo .xml, assinado e enviado para a SEFAZ (no caso da NFC-e) ou enviado para o equipamento SAT. A transação do TEF ainda pode ser realizada antes do encerramento do cupom da venda, garantindo assim que a mesma tenha sucesso.

E, somente depois do retorno com a autorização da venda, o DANFE NFC-e ou CF-e do SAT pode ser impresso na impressora de recibos, juntamente com o comprovante da transação do TEF.

A Bematech disponibiliza ferramentas e soluções que auxiliam nossos Partners e desenvolvedores de software na melhor integração da NFC-e, SAT e TEF.

Fica aqui meu convite para que venha conhecer e ganhar mais com as nossas Soluções Fiscais e Soluções de TEF Bematech.

Aguardo o seu contato!

Um forte abraço e ótimos negócios,

André Munhoz
andre.munhoz@bematech.com.br
Programa Bematech Software Partners

ECF, NFC-e, SAT, Impressora de Recibos, MP-4200 TH, MP-100S TH

Fonte http://partners.bematech.com.br/bemacast/Paginas/post.aspx?title=edicao-255—o-tef,-a-nfc-e-e-o-sat&idPost=6257

Outros links:

Downloads

http://partners.bematech.com.br/suporte-e-recursos/downloads

 

 

 

 

 

CONTROLANDO ARDUINO COM APLICAÇÕES EM DELPHI

Uma dica para quem quiser obter comunicação entre arduino e o delphi, para desenvolver interfaces que possibilita controlar o arduino através dodelphi, desenvolver aplicações para projetos de automação e outros projetos. Para conseguir esta comunicação com o delphi será necessário ainstalação do componente TComPort, pois é este componente que lhe dará todo suporte para que você consiga obter a comunicação quanto ao envioe o recebimento de dados com arduino.Para instalar o componente TComPort, é preciso fazer o download do componente no LINK: http://www.cuin.com.br/wp-content/uploads/2013/05/COMPONENTE.rar 
Instalando o componente utilizarei a versão Delphi 7:1º Passo:
Depois de baixar o componente, salve ele em uma pasta de preferencia a pasta que você utiliza pra salvar outros componentes.
2º Passo:
 Abra o delphi é necessário encerrar as aplicações abertas para isto clique em FILE e clique em CLOSE ALL

Mais de 600GB de material para estudo em TI: Cursos, vídeo aulas, livros, apostilas de todas as variantes da Tecnologia da informação:

 60 GB em vídeos aulas de Java 16 DVDS – Senha = pr0mp7.torrent

Tamanho:153 KB
https://mega.co.nz/#!JRgjRLBT!nNg8JO31WWskPXH96xn1efu9mZqfgM%20jVZo24v6CAiLg

Livro Python para Pentester e Hackers

https://mega.nz/#!atQHACib!jff1wMGqCDMq1s8CjGWcbLDAcgol53DXvWYrwehV6tE

Curso de PHP

https://mega.nz/#F!WJVmQI4K!oosRA55mOWFMGR5qu9ssJg

Curso DreamWeaver

https://mega.nz/#F!AUhkiSpK!HlSxR0lexLecXjCowGG3AQ

Curso de Redes

https://mega.co.nz/#F!hZxDHLIZ!Pw8xfRmJirbL9Jvvip_iKw

Segurança em Redes

https://mega.co.nz/#F!cdQWjA5S!cX1sn4-sDpl1iWTH2b8-8w

Banco de Dados

https://mega.co.nz/#F!4R4ywJYb!-QLSTcDQ7GyhLeauC9HOlA

Curso de Eletrônica

https://mega.co.nz/#F!EYplFZRJ!Hd3g53t4SWuZ_ocF1fGLaw

Curso de JOOMLA completo

https://mega.co.nz/#F!kAohEChQ!C0XDspJDpw7tVxAgZizcaw

Curso de Linux

https://mega.co.nz/#F!YNI3kS5R!VsbYhu0sYIidqlKwwnH14Q

Curso Hardware

https://mega.co.nz/#F!EBAUCBDC!M2L3z07ypj05HtAQSeXkGA

Mega pacote de cursos Alura

https://mega.nz/#!FhxXwK7K!-Kzt-IDBs-rhVWC1_DgaULd7vSkZG7dWULCi_99kiOY

Curso Wireless Hacking

https://mega.co.nz/#F!AFJm2TLK!I6f4pZSX2ltoGBs0b1ztsQ

Curso WordPress

https://mega.co.nz/#F!cBIUBDTZ!Qtx1ahx-YeXUPdzIghwatA

Engenharia de software

https://mega.co.nz/#F!gUAmjbpD!BW7cylJHD_rcO1rryJ1sVQ

Hacking

https://mega.co.nz/#F!ER53kboI!H2RKhe5oMegv0APK2cQoFQ

https://mega.co.nz/#F!9QhWHbTI!oarMp7t3tzyY_yu08KHoEQ

Hardware

https://mega.co.nz/#F!oIZW3AzQ!LqcZV5fNLLmsxKfXAl6EtA

Introdução aos Sistemas Operacionais

https://mega.co.nz/#F!oZpVgbTR!MnX35yBQTexHPm4J8nIP2A

Linux

https://mega.co.nz/#F!YNg3xYhY!KQxsOV5rOF4ZhZm5LaiTwQ

Linux Essentials

https://mega.co.nz/#F!sBZhXDAI!NCWJslFznUXBaymdg_kmuA

Lógica de Programação Usando Python

https://mega.co.nz/#F!QAZ31aYY!JtCs0a5who41VK3jNsBa4Q

OYS pentest – Curso Teste de Invasão em Redes e Sistemas

https://mega.co.nz/#F!dVQkDTIQ!MLNKb5ZELHuIarpqHA0HxQ

Programação WEB

https://mega.co.nz/#F!AQQU3LYI!MIYAsxFZtfFTxpIqfHfIBg

Redes

https://mega.co.nz/#F!NMh1SZQC!5CKtEXGJy2JrIafPhvUuew

Segurança

https://mega.co.nz/#F!MN402QIb!_S4Jg-opFAFQVtl3lR4yJQ

Sistemas Operacionais

https://mega.co.nz/#F!JJAVwQAC!FB-jqhynRl_3CUuNzt7oMw

Software Livre

https://mega.co.nz/#F!EMgUkKxI!Wmv2SRC5bQNiLaZdbNBa9w

Teste de Invasão em Redes Sem Fio

https://mega.co.nz/#F!AUQwgIpa!NFW83TBeph3-7A7-LZqy4Q

Apostila HTML CSS

https://mega.co.nz/#!8FpXjbKB!11EMXK2wdfH3OC5BseR0PMbT9MYSGO%20tMtJrfiv5umEE

Artigo – wireshark

https://mega.co.nz/#!pc43VIpR!qy50wLU0yM7TsaeJtNu7RdaFw88BId%20VmDxCqd_E7ouQ

Curso Android Básico

https://mega.co.nz/#!pRAglZqB!hxJ9kG6dvUVukuT5tKQFMzf7_2jKdx%20V4SjM-IFzl2ns

Curso Banco de dados SQL e Modelagem

https://mega.co.nz/#!QYZSlCLB!FudRrApaiBV1oshkcHo2Rm38KeKSk1%20i_WN_0G84Q41M

Curso completo de Python

https://mega.co.nz/#!pEwA1IBL!REq1z_rnrc-ttqhEI-aGnxHcxc__0x%20gix5F98CwCkKI

Curso Linux

https://mega.co.nz/#!JIxVgYTZ!2aVR4SMtttlGoaEbTl7NGXa8n_VuhE%20K9XzjrlchSqss

Curso ipv6

https://mega.co.nz/#!xd50wAjA!sXt5m6tdZkZ_0ppNw7RKAw9gWgNYsM%20qVR12tr9FoTvM

Hackeando Mentes

https://mega.co.nz/#!kIBzmYAQ!VEYe_yI1Q6xBBsq_m5yvv_eIG3DH3n%20Xbp2AKkqLly88

Hacker inside

https://mega.co.nz/#!9ZgSyCCY!sBTV9Mva-fCYw5QKF0TkJfolcDsuox%20KqadjDqrjQTIM

Kevinmitnick a arte de enganar

https://mega.co.nz/#!INJglDRQ!H1KGBLTP9pEWtfZrp5VAbspu0Uo_Me%20_hkvtNh4B3Dm0

Banco de dados

https://mega.nz/#F!edRGmCIC!RS7TIjy7Krd4blcpLk2_hw

Computação Forense

https://mega.nz/#F!LVZgyKxT!0UEl9uphWKK5XN2iHo2ZTg

Curso inglês

https://mega.nz/#F!rMQW2CiD!nUNJvZ1nIeRHBMx33Vw8oQ

DeepWeb

https://mega.nz/#F!SdACSJSL!ck9c2S2FvjdI-L1ji-8JkQ

Edição de imagens

https://mega.nz/#F!vFIGFBpI!eRnEOpNziIS_mZx4IAIUsg

Engenharia de software

https://mega.nz/#F!ScwiGDhY!mFZz6mdkPMGVs5_6ZPOQeQ

Hacking

https://mega.nz/#F!vVoUhSrY!CCRwM3BC7U31BaAFZHl5SQ

Introdução a sistemas operacionais

https://mega.nz/#F!3doigIaC!pbDI81QC_3K2sD-Y08i1_g

Microsoft office

https://mega.nz/#F!KE4h2KQJ!ARugbDhPAqm9WWet6R606g

Normas para a apresentação de trabalhos acadêmicos

https://mega.nz/#F!2YpWWYrQ!njzFN2wdEjcL-n48ouCwvA

Programação WEB

https://mega.nz/#F!Lc4jwILR!YjIOrB8spSKjbwHmNvP8hQ

Redes

https://mega.nz/#F!vdIXgCRB!LpBx2GGbuthGu7FLHL5CsA

Segurança

https://mega.nz/#F!bFgHiBZB!XHC6bDoVYO3JEMJzf3pPmg

Sistemas operacionais

https://mega.nz/#F!fBxDULYK!g6jOZV3cjXwLYzuWhqCUnA

Software Livre

https://mega.nz/#F!HFABDDgQ!eH-cL2wdBu5y_fbY8yV78A

Teoria da computação

https://mega.nz/#F!rRwjTSiC!QOCkako5vL8sIarKYrZHPA

Vídeo aulas

https://mega.nz/#F!iJgkhDRI!LcvTfLA5rRUe1fwdqa1BUA

São tantos cursos que não dá nem pra mencionar aqui do que eles tratam, mas tem coisa muito boa lá, e grande parte deles são bem atuais, tratando sobre Web, Deepweb, Programação, Pentest, Hacker, Linux. Office, Idiomas, e muitos mais.

+BONUS DE MAIS 380GB em cursos ainda não catalogados:

https://mega.co.nz/#F!98cg2TSR!1q1OctEo3sOq25J11JAbOg

https://mega.nz/#F!V55BFDbD!3cBs3zMuk168LXfhfRmm-g
https://mega.nz/#F!wVsCjS7A!K7jrAMW6b7RX_AC6TT3msA!tZcAXCrK
https://mega.nz/#F!mIcTSRgJ!or6uaG2MJdh4jEKuHPYo_g!SAEDHBbB
https://mega.nz/#F!wVsCjS7A!K7jrAMW6b7RX_AC6TT3msA!ARcBlRhZ
https://mega.nz/#F!WJVmQI4K!oosRA55mOWFMGR5qu9ssJg
https://mega.nz/#F!wVsCjS7A!K7jrAMW6b7RX_AC6TT3msA
https://mega.nz/#F!WcBzgZhK!pJ1WsYkq8Evo1EhJi5oiJA
https://mega.nz/#F!mBB1BSrJ!RPojuKs757rJAIk-hVo4vw

https://mega.nz/#F!khhRAbwa!W5xZdG5Yat_y10Em_rmCng

https://mega.nz/#F!AE9GlDRT!mQQ1laUDxLw52-q1DljDsg

https://mega.nz/#F!CV9WFJYK!cjNuwXYg5wm6rc0YZTqaIg

https://mega.nz/#F!YF12iJ6B!933zM4O_EAxQWR16jC7I3Q

https://mega.nz/#F!ml8xGDYT!8LXsPyDMvQj8jWaM1k4rYQ

https://mega.nz/#F!tsNijbTR!Qj–39YrI4RsIwu6NTrfTQ

http://suporteninja.com/mais-de-300gb-de-cursos-em-ti-para-download-no-mega/

( Na verdade tem mais de 600GB de conteúdo)

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

Application.Lock e Application.UnLock causa o servidor parar de responder no IIS 5.0

Quando você modificar variáveis de aplicativo de dentro de um componente que é chamado de uma página Active Server Pages (ASP), o servidor pode parar de responder (travar). O código no componente que causa o problema semelhante à seguinte:

Application.Lock
Application("myvar") = "hello world"
Application.UnLock
Causa:
Código incorporado nos métodos Application.Lock e Application.UnLock fornece proteção em um ambiente multiusuário. Com a introdução do COM+, o Internet Information Server (IIS) 5.0 tira proveito do neutro de Thread Apartment (NA) quando acessarem o objeto de aplicativo . Como resultado, quando você chamar explicitamente o Application.Lock e oApplication.UnLock de dentro de um componente, em alguns cenários talvez você encontre uma situação de deadlock que faz com que o servidor pare de responder. Esse problema geralmente é visto quando intrínsecos do ASP estão empacotados para frente e para trás entre o servidor IIS e o servidor de aplicativo COM+. Dois cenários a seguir podem fazer com que o servidor trave:

  • Quando você depurar um componente do ambiente integrado de desenvolvimento do Visual Basic (IDE) do Microsoft Visual Basic.
  • Quando você chamar um componente que está sendo executado como um aplicativo de servidor do COM+.

 

Resolução:

 

Os métodos Application.Lock e Application.UnLock não são necessários para atribuir uma variável de aplicativo única porque os métodos são chamados internamente.

Se você precisar atribuir várias variáveis de aplicativo dentro do mesmo método Application.Lock e Application.UnLock do seu componente, o componente deve ser executado no mesmo processo do chamador ou você deve modificar a lógica para incluir somente uma única atribuição. Por exemplo, o código a seguir

Application.Lock
Application("myvar1") = "hello"
Application("myvar2") = "world"
Application.UnLock

pode ser modificado para contornar esse problema da seguinte forma:

Dim array(1)
array(0) = "hello"
array(1) = "world"
Application("myvar") = array

Etapas para reproduzir o comportamento

  1. No Visual Basic, crie um novo projeto ActiveX DLL.
  2. Adicione uma referência às bibliotecas a seguir:
    Biblioteca de tipos de serviços COM+
    Biblioteca de objetos do Microsoft Active Server Pages
  3. Adicione o seguinte código ao módulo de classe:
    Implements ObjectControl
    
    Private oContext As ObjectContext
    Private oApplication As ASPTypeLibrary.Application
    
    Private Sub ObjectControl_Activate()
        Set oContext = GetObjectContext()
        Set oApplication = oContext("Application")
    End Sub
    
    Private Sub ObjectControl_Deactivate()
        Set oContext = Nothing
        Set oApplication = Nothing
    End Sub
    
    Private Function ObjectControl_CanBePooled() As Boolean
        ObjectControl_CanBePooled = False
    End Function
    
    Public Sub IISHang()
    
        oApplication.Lock
            oApplication("test") = "World"  '<= App HANGS here
        oApplication.UnLock
    
    End Sub
    
  4. Compile a DLL e registrar o componente COM+. Certifique-se de que a ativação digite do pacote COM+ é definida como aplicativo servidor.
  5. Crie uma nova página ASP e cole o código a seguir:
    <%
        Dim obj
        Set obj = Server.CreateObject("Project1.Class1")
        Call obj.IISHang()
        Set obj = nothing
    %>
    
  6. Execute a página ASP para fazer com que o servidor pare de responder.