Olá pessoal,
Para quem ainda não sabe estou promovendo um Refactoring no componente ACBrNFSe.
Ele praticamente foi reescrito do zero e infelizmente teremos algumas quebras de código quando ele for liberado.
Mas vamos falar de coisas boas.
Hoje temos que disponibilizar para os nossos clientes além do executável, DLLs, os famosos arquivos INI, o arquivo Cidades.ini e os arquivos INI dos provedores.
Pois bem, isso acabou.
Os arquivos INI referente aos provedores se transformaram em Unit, ou seja, fazem parte do fonte do componente.
O conteúdo do arquivo Cidades.ini migrou para o arquivo ACBrNFSeServicos.ini que é transformando no ACBrNFSeServicos.res através do BAT: Compila_RES.
O arquivo ACBrNFSeServicos.res é incorporado ao executável, logo vocês só vão precisar distribuir o executável e as DLLs para os seus clientes.
O que vocês acharam dessa mudança?
Ainda não esta 100%, em função das diferenças dos provedores, mas criei um novo método chamado Emitir que tem por finalidade gerar o XML do RPS, assinar se necessário, gerar o Lote e assinar se necessário, enviar, aguardar o retorno do XML da NFSe.
Independente do serviço que o provedor se utiliza para recepcionar o XML do RPS.
Vou dar um exemplo:
O provedor 4R que segue a versão 2 do layout da ABRASF implementou somente o método EnviarLoteRpsSincrono para recepcionar o RPS, sendo que no Manual da ABRASF versão 2 estão previstos os métodos: EnviarLoteRps, EnviarLoteRpsSincrono e GerarNfse.
Por outro lado o provedor ISSJoinville que também segue a versão 2 do layout da ABRASF implementou somente o método EnviarLoteRps.
Se vocês tem clientes cujas cidades utilizam o provedor 4R e tem clientes em Joinville, ou vocês tem duas aplicações ou a aplicação tem uma tela de configuração para definir qual método a ser utilizado.
O método Emitir vem para tentar resolver esse problema da seguinte forma: se o provedor for 4R ele vai se utilizar do método EnviarLoteRpsSincrono automaticamente, agora se for ISSJoinville vai usar o EnviarLoteRps.
Desta forma não precisamos de nos preocuparmos com qual o método devemos usar para enviar o RPS para o webservice.
Acredito que vai ficar muito bom e pratico.
O que vocês acham?
Muita coisa já foi feita e muito mais precisa ser feito.
Para que vocês tenham uma ideia foi criado 32 Units, ou seja, uma para cada provedor que segue a versão 1 do layout da ABRASF, mais 53 Units para os provedores que seguem a versão 2 do layout da ABRASF e mais 19 Units para os provedores que tem o seu próprio layout.
Até o final deste mês de outubro estarei disponibilizando o programa exemplo compilado para que vocês possam fazer mais testes.
Em breve vou explicar como vão ser os testes e como reportar os resultados.
Antes que eu esqueça, esse Refactoring visa poder incluir a emissão da NFS-e no ACBrMonitor Plus e a criação do ACBrLibNFSe (DLL).
Um forte abraço a todos.