Recentemente eu desenvolvi uma aplicação PAF-ECF e a mesma está homologada. O que adotamos aqui para o sistema foi:
- Criação de um projeto WinForms com as telas e tratamendo dos ECFs
- Criação de um projeto para a camada de Controle
- Criação de um projeto para a camada de Repositório
- Criação de um projeto para a camada de Domínio.
O que os homologadores pedem é que tudo que envolve a parte fiscal, diga-se envio de comandos para o ECF, geração de relatórios (EFD, SINTEGRA e outros), aplicação de impostos, parametrização e demais controles de execução (geração de MD5, validação de serial, etc) tem que ficar em uma aplicação que depois de homologada não pode mais ser alterada sem uma nova homologação.
Para resolver isso, eu deixei no projeto WinForms tudo que envolvia a parte fiscal destacada acima e as demais coisas ficaram em outras camadas. O limite da fronteira foi a forma de obter o preço do produto, que está na camada controle, mas a aplicação de impostos (cálculo de ICMS, PIS, COFINS) teve que ficar no WinForms. Até mesmo, algumas telas como importação de DAV e Pré-Venda, bem como o tratamento do TEF está em outro projeto, fora do WinForms.
Com isso a gente conseguiu a flexibilidade de mudar algumas coisas na aplicação SEM ALTERAR o executável principal, que é o que está homologado.
Agora, vou te dizer uma coisa: Preocupe-se e muito com a parte fiscal porque a validação do SPED e SINTEGRA é fod@ e a gente perdeu umas 4 horas de homologação para fazer essa goiaba validar. Ahh, preocupe-se também com o bloco 7 de testes, que trata da garantia de inviolabilidade do sistema e base de dados.
Com relação ao banco de dados, foi mole. A gente adotou a premissa de trabalhar com arquivos XMLs das informações necessárias para o sistema funcionar, no caso de uma queda da rede. Particularmente eu não adotaria o conceito de instalar um banco em cada máquina. Imagina se você precisar alterar a estrutura de uma tabela, sendo que seu cliente tem 5 PDVs em cada filial, num total de 10 filiais. Certamente você está criando um monstro...
Fora que ainda tem o problema da sincronização das informações (pense no estoque do produto ou na identificação de um cliente).
Se precisar de alguma ajuda, pode entrar em contato comigo em PVT.
Boa Sorte.
Jairo.