DFe.NET
DFe.NET copied to clipboard
Criação do atributo personalizado "[TString]" o qual deve ser utiliza…
Criação do atributo personalizado "[TString]" o qual pode ser utilizado para decorar todas as proriedades referentes às tags do xml do tipo "TString". Com o objetivo de corrigir automaticamente os dados destas propriedades, evitando a falha de schema:
O elemento '<nome_elemento>' é inválido - O valor 'exemplo de valor inválido' é inválido de acordo com o seu tipo de dados 'String'
Já inclui a anotação em alguns atributos, mas será necessário incluir nos demais. São centenas.
Fiz algumas alterações nos dados da NFe gerados no arquivo "NFe.AppTeste.NetCore/Program.cs" somente para teste da funcionalidade.
Na solução em que uso este atributo corretor, inclui a chamada para o método "ExecutarCorrecaoDeDados" no construtor da classe "InfNFe". Pois aqui, tenho apenas um construtor, que solicita que todos os dados sejam enviados. Então, tenho algo como:
public partial class InfNFe : ClasseNFe
{
public InfNFe(ide ide, emit emit, avulsa avulsa, dest dest, TLocal retirada, TLocal entrega,
List<autXML> autXML, List<det> det, total total, transp transp, cobr cobr, pag pag,
infIntermed infIntermed, infAdic infAdic, exporta exporta, compra compra, cana cana,
infRespTec infRespTec, string versao, string id)
{
this.ide = ide;
this.emit = emit;
this.avulsa = avulsa;
this.dest = dest;
this.retirada = retirada;
this.entrega = entrega;
this.autXML = autXML;
this.det = det;
this.total = total;
this.transp = transp;
this.cobr = cobr;
this.pag = pag;
this.infIntermed = infIntermed;
this.infAdic = infAdic;
this.exporta = exporta;
this.compra = compra;
this.cana = cana;
this.infRespTec = infRespTec;
this.versao = versao;
Id = id;
ExecutarCorrecaoDeDados(this);
}
Assim tenho a garantia que todos os dados de todas as instâncias da classe "InfNFe" sempre estarão normalizados.
Mas aqui não foi possível pois existe apenas o construtor padrão:
public infNFe()
{
det = new List<det>();
}
Não encontrei um local centralizado, que garantisse a execução do método "ExecutarCorrecaoDeDados(this);". Portanto, ficaria a cargo do desenvolvedor encontrar o melhor local para invocação deste método.
Esse recurso me ajudou demais aqui, evitando centenas de verificações dentro do ERP.
Seguindo esta mesma idéia, outros atributos semelhantes ao [TString] poderão ser criados no futuro.
Olá tudo certo? Referenciamos seu Pull Request para o fork https://github.com/Hercules-NET/ZeusFiscal/pull/6 Caso tenha dúvidas veja o anúncio: https://github.com/Hercules-NET/ZeusFiscal/issues/1
Olá, tudo bem?
Obrigado por sua contribuição! Após uma análise, acredito que o tratamento mencionado não deve ser responsabilidade da biblioteca. Utilizando o seu exemplo, se o campo for do tipo string, cabe ao desenvolvedor que utiliza a biblioteca decidir como manipulá-lo da forma mais adequada para atender às necessidades específicas do seu software levando em considerações as validações.
Por esse motivo, estarei fechando este PR. No entanto, estamos sempre abertos a novas ideias e sugestões, então sinta-se à vontade para compartilhar outras sugestões conosco. Agradeço novamente e parabenizo por sua iniciativa! 🥇