Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criação do atributo personalizado "[TString]" o qual deve ser utiliza… #1509

Conversation

silvairsoares
Copy link

@silvairsoares silvairsoares commented Apr 18, 2024

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.

…do 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 valor '@@@' é inválido dependendo do tipo de dados 'String'".
Já inclui a anotação em alguns atributos, mas será necessário incluir nos demais. São centenas.
@silvairsoares
Copy link
Author

silvairsoares commented Apr 18, 2024

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.

@danilobreda
Copy link
Contributor

Olá tudo certo? Referenciamos seu Pull Request para o fork Hercules-NET/ZeusFiscal#6
Caso tenha dúvidas veja o anúncio: Hercules-NET/ZeusFiscal#1

@AgnaldoSilva0
Copy link
Contributor

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! 🥇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants