ACBr é uma framework de automação comercial, geralmente usado por softhouses em seus programas. É uma suite – na minha opinião – completa para automação comercial. Ela inclui tratativas com bancos como a importação de extratos e geração de boletos, também tratativas governamentais como criar e enviar notas fiscais eletrônicas, também integrações com impressoras fiscais e muito mais. Para uma lista completa de suas funcionalidades é melhor visitar a página:
A sua instalação pode usar um Wizard que é fornecido na própria página de downloads. Há Wizards para Delphi e também para Lazarus. No Lazarus, porém, notei que ele só funciona se você for um usuário com permissão de administrador e isso não é muito recomendado porque o que é feito como “administrador” estará no perfil do usuário “administrador” e geralmente equipe de devocê abrir a IDE como usuário comum no ambiente de desenvolvimento.
A instalação do ACBr é na minha opinião uma das mais complexas que existem. Se você for instalar todos os componentes, a IDE (Delphi ou Lazarus) fica muito pesada e portanto recomendo instalar apenas o que for necessário para sua corporação.
O passo a passo a seguir ainda não está totalmente pronto e talvez precise de correções, por gentileza, ao encontrá-las me avise para que eu possa corrigi-los.
Um video que me auxiliou a criar este howto foi esse:
No entanto, a partir da metade do vídeo, meus métodos de instalação dos pacotes foram bem diferentes, vamos a eles.
Instalando o TortoiseSVN
Instale o TortoiseSVN obtido em:
2. Crie a pasta vazia como C:\ACBr
3. Copie o seguinte endereço abaixo “trunk2” com Ctrl+C:
https://svn.code.sf.net/p/acbr/code/trunk2
4. Caso use proxy dentro da sua empresa, usando o explorer, selecione a pasta C:\ACBr, clique com o botão direito escolha TortoiseSVN->Settings
E então selecione “Network” e faça os ajustes que julgar interessante:
5. Usando o explorer, selecione a pasta C:\ACBr, clique com o botão direito do mouse e selecione a opção TortoiseSVN->Checkout :
6. E então lhe será ofertado baixar o “trunk2” na pasta selecionado:
E então prossiga baixando todos os arquivos necessários.
Instalando os pacotes no Lazarus
Depois disso, vá em C:\ACBr\Doctos e abra o arquivo “Bem_Vindo_ao_Trunk2.odt”, nele haverá as instruções necessárias para a ordem de instalação dos pacotes – isso é bem chato – porque alguns pacotes precisam de que outros previamente instalados. Dentro deste documento há uma seção intitulada “Hierarquia de dependência dos Packages”, ela define a ordem que os pacotes deverão ser instalados. Então na pratica, olhando para o documento, voce escolhe o componente e vê de quem ele depende, aí aquele de quem depende também depende de outro que não tava documentado e enfim, é um pouco chato para iniciantes, instalar apenas o que deseja.
Nas instruções a seguir, eu vou colocar uma ordem que baseado na documentação original e na prática funcionou para mim. As linhas em negrito, eu as tornei obrigatória, embora possam não ser de fato.
Vá em Packages|Open Package(.lpk)… e na ordem faça a instalação(Use|Install) dos pacotes que você deseja ter na IDE, lembre-se quanto mais pacotes, mais pesado ficará sua IDE. Para facilitar coloquei alguns pacotes mais identados a direita para dizer que o pacote na linha de cima trata-se duma dependência:
1. C:\ACBr\Pacotes\Lazarus\synapse\laz_synapse.lpk (apenas compilar)
2. C:\ACBr\Pacotes\Lazarus\ACBrComum\ACBrComum.lpk
3. C:\ACBr\Pacotes\Lazarus\ACBrDiversos\ACBrDiversos.lpk
4. C:\ACBr\Pacotes\Lazarus\PCNComum\PCNComum.lpk (apenas compilar)
5. C:\ACBr\Pacotes\Lazarus\ACBrOpenSSL\ACBrOpenSSL.lpk
6. C:\ACBr\Pacotes\Lazarus\ACBrSerial\ACBrSerial.lpk
7. C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrTXTComum.lpk (apenas compilar)
- Opções para depois que o ACBrTXTComum.lpk for instalado:
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrADRCST\ACBr_ADRCST.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrConvenio115\ACBr_Convenio115.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrDeSTDA\ACBR_DeSTDA.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrEDI\acbr_edi.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrLCDPR\ACBr_LCDPR.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrLFD\ACBr_LFD.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrOFX\acbr_ofx.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrPAF\ACBr_PAF.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrPonto\ACBr_Ponto.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrSEF2\ACBr_SEF2.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrSintegra\ACBr_Sintegra.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrSPED\ACBr_SPED.lpk
8. C:\ACBr\Pacotes\Lazarus\ACBrTCP\ACBrTCP.lpk
9. C:\ACBr\Pacotes\Lazarus\ACBrTCP\ACBr_MTER.lpk
10. C:\ACBr\Pacotes\Lazarus\ACBrTEFD\ACBr_TEFD.lpk
11. C:\ACBr\Pacotes\Lazarus\ACBrIntegrador\ACBr_Integrador.lpk
12. C:\ACBr\Pacotes\Lazarus\ACBrPIXCD\ACBr_PIXCD.lpk
13. C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrDFeComum.lpk (apenas compilar)
14. C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrDFeReportRL.lpk
- Opções para depois que o ACBrDFeReportRL.lpk for instalado:
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrANe\ACBr_ANe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrBlocoX\ACBr_BlocoX.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrBPe\ACBr_BPe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrBPe\DABPE\EscPos\ACBr_BPeDabpeESCPOS.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrCIOT\ACBr_CIOT.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrCTe\ACBr_CTe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrCTe\DACTE\Fortes\ACBr_CTe_DACTeRL.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBreSocial\ACBre_Social.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrGNRE\ACBr_GNRE.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrGNRE\GNRE\Fortes\ACBr_GNREGuiaRL.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrGNRE\GNRE\Laz\ACBr_GNREGuiaLazReport.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrGTIN\ACBr_GTIN.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrMDFe\ACBr_MDFe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrMDFe\DAMDFE\Fortes\ACBr_MDFe_DAMDFeRL.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNF3e\ACBr_NF3e.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNF3e\DANF3e\EscPos\ACBr_NF3e_DANF3eESCPOS.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\ACBr_NFe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\ACBrECFVirtualNFCe\acbr_nfce_ecfvirtual.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFCe\EscPos\ACBr_NFe_DanfeESCPOS.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFe\Fortes\ACBr_NFe_DanfeRL.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFe\Laz\ACBr_NFe_Danfe_LazReport.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFSe\ACBr_NFSe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFSe\DANFSE\Fortes\ACBr_NFSe_DanfseRL.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFSeX\ACBr_NFSeX.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFSeX\DANFSE\Fortes\ACBr_NFSeXDanfseRL.lpk
C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFSeX\DANFSE\Fast\ACBr_NFSeXDanfseFR.lpk, requer:frxe_lazarusfrxPDFLazaruspr_lazarus
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrONE\ACBr_ONE.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrPAFNFCe\ACBr_PAFNFCe.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrReinf\ACBr_Reinf.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrSATWS\ACBr_SATWS.lpk
15. C:\ACBr\Pacotes\Lazarus\ACBrBoleto\ACBr_Boleto.lpk
- Opções para depois que o ACBr_Boleto.lpk for instalado:
- C:\ACBr\Pacotes\Lazarus\ACBrBoleto\FC\Fortes\ACBr_BoletoFC_Fortes.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrBoleto\FC\FPDF\ACBr_BoletoFC_FPDF.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrBoleto\FC\Laz\ACBr_BoletoFC_LazReport.lpk
16. C:\ACBr\Pacotes\Lazarus\ACBrSAT\ACBr_SAT.lpk
- Opções para depois que o ACBr_SAT.lpk for instalado:
- C:\ACBr\Pacotes\Lazarus\ACBrSAT\ACBrECFVirtualSAT\acbr_sat_ecfvirtual.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrSAT\Extrato\EscPos\ACBr_SAT_Extrato_ESCPOS.lpk
- C:\ACBr\Pacotes\Lazarus\ACBrSAT\Extrato\Fortes\ACBr_SAT_Extrato_Fortes.lpk
17. C:\ACBr\Pacotes\Lazarus\ACBrPagFor\ACBr_PagFor.lpk
18. C:\ACBr\Pacotes\Lazarus\ACBrOpenDelivery\ACBr_OpenDelivery.lpk
19. C:\ACBr\Pacotes\Lazarus\ACBrDebitoAutomatico\ACBr_DebitoAutomatico.lpk
Você encontrará nos nomes de componentes e pastas prefixos ou sufixos que determinam na prática o backend usado para gerar o relatório ou impressão:
- “Fortes” é a dependencia do FortesReport-CE
- “LazReport” e “ReportRL” é a dependencia do LazReport
- “EscPos” é uma pseudo-linguagem de impressão usada em impressoras matriciais ou compativeis.
Na minha opinião você pode dar preferencia para “Fortes” e ignorar os outros prefixos/sufixos porque praticamente ele é unipresente em todas as impressões enquanto os outros são opcionalmente usados quando não deseja usar o Fortes. Se eu pudesse fazer um pedido ao gênio da lâmpada, pediria que todos os relatórios fossem usando um único backend.
IMPORTANT: Você pode optar por não instalar os que não sejam essenciais para seu ambiente de trabalho.
ATUALIZAÇÕES DO ACBr
Depois de instalados, você fará atualizações via SVN e isso é muito bom, corrigirá bugs e incrementará novos recursos. Para atualizar, basta selecionar a pasta “ACBr” no explorer, clicar com o botão direito e clicar na opção “SVN Update”:
No entanto, boa parte das atualizações só passarão a vigorar quando você recompilar a sua IDE, então vá em Tools->”Build Lazarus with Profile: IDE …”:
E então começará o processo de recompilação da IDE e reconstrução de todos os pacotes, incluindo o ACBr.
Em algumas oportunidades, os arquivos que foram atualizados poderão falhar, a falha mais comum é não encontrar certas units que foram referenciadas por pacotes, se isso acontecer, não se preocupe, alguns desses diretórios precisam ser adicionados ao search path, por exemplo, a unit “ACBrSocket.pas” recentemente foi inserida ao projeto ACBr e ao compilar a IDE, o arquivo não é encontrado. Para solucionar o problema vá em Project->Compiler Options->Search Path->Other unit files e acrescente o caminho onde ela está, isto é:
- C:\ACBr\Testes\FPCUnit\ACBrTCP\ACBrSocket.pas
Olhe a figura para entender como acrescentar o caminho:
O repositório do ACBr usa subversion (SVN) e que tem mudanças constantes e sem nenhum branch, ou seja, você está sempre usando a mais recente versão. Isso parece bom, mas não é, já aconteceu de atuaizações recentes deixarem de compilar e aí a IDE não se reconstroi. Se isso acontecer, o Lazarus.exe anterior está renomeado para Lazarus.old.exe, apenas apague o anterior e renomeie Lazarus.old.exe para Lazarus.exe e evite fazer a atualização do ACBr neste instante.
Diferente de repositórios GIT onde podem ser mantidas separadamente versões estaveis e instáveis e até mesmo diferentes branches, os repositórios SVN usando repositório do sourceforge acumulam os commits no mesmo lugar dando a triste oportunidade de usarmos código quebrado.
CONCLUSION
Realmente, para uma softhouse, é imperativo conhecer essa framework.