Caros colegas, estou anexando os arquivos que alterei para fazer a geração dos arquivos TXT da NFe 3.10. Algumas notas importantes:
1) O manual do txt possui vários erros. Alguns deles:
Não traz as tags pai, como "BA|" e "GA|", mas sem elas o emissor recusa o arquivo.
Mostra o refCTe (B19) como filho do refNFP (B10), mas na verdade, ele é filho do NFref (B01).
2) Criei uma uma procedure gtEliminarRegistros no pcnGerador para eliminar os registros não utilizados (identica à rotina que já existia em gtAjustarRegistros) e alterei a wGrupo para realizar essa "limpeza" sempre que um grupo for fechado. Essa alteração é importante para evitar erros na geração de alguns registros (e.g., BA13/BA14, GA02/GA03). Apenas para deixar mais claro qual o erro que ocorre:
With NFe.autXML.Add Do
CNPJCPF := '00000000000000';
With NFe.autXML.Add Do
CNPJCPF := '11111111111111';
With NFe.autXML.Add Do
CNPJCPF := '11111111111';
With NFe.autXML.Add Do
CNPJCPF := '22222222222222';
Esse código gera no TXT os seguintes registros:
GA|
GA02|00000000000000
GA03|11111111111
GA|
GA02|11111111111111
GA03|11111111111
GA|
GA02|22222222222222
GA03|11111111111
GA|
GA02|22222222222222
3) Existem muitas situações que eu não testei. Eu mantive a convenção de comentar um //ok no final das linhas testadas.
4) A maior parte das correções aqui são consequência direta de erros no manual do TXT. A equipe do ACBr está dependendo de a receita liberar uma versão corrigida do manual para corrigir os fontes no SVN oficial. Além disso, como não sou da equipe, não posso garantir que os arquivos no SVN oficial serão exatamente esses que coloco aqui. Eles são apenas uma sugestão que funciona para mim e para alguns colegas que deram feedback.
pcnGerador.pas
pcnLayoutTXT.pas
pcnNFeW.pas
pcnNFeRTXT.pas