Ir para conteúdo
  • Cadastre-se

  • Este tópico foi criado há 212 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde, pessoal! Tudo bem? 

Estou com uma dúvida sobre a geração de classes em C# a partir dos XSDs dos eventos da SEFAZ, e queria entender melhor como vocês costumam lidar com isso na prática.

Percebi que a SEFAZ disponibiliza vários pacotes de schemas para diferentes tipos de eventos — como cancelamento de nota, carta de correção, EPEC, entre outros. Ao analisar esses pacotes, notei que os XSDs são praticamente iguais, mudando basicamente a validação do campo detEvento, enquanto toda a parte geral do schema é praticamente idêntica.

Eu gerei as classes de dois schemas — o genérico e o de cancelamento — e, ao comparar, percebi que são quase iguais, mudando apenas o detEvento. No schema genérico, ele aceita qualquer tipo; no de cancelamento, é específico. O problema é que, ao gerar as classes, ambos acabam tendo o mesmo nome, o que causa duplicidade se eu tentar usar os dois juntos.

Nosso sistema já utiliza o schema específico de cancelamento há alguns anos, mas agora, com a implementação dos eventos da Reforma Tributária, tudo indica que precisaremos usar o schema genérico.
A dúvida é justamente como vocês tratam esse cenário:
— Costumam usar só o schema genérico para todos os eventos?
— Ou mantêm ambos e trabalham com namespaces diferentes?

Tentei separar os namespaces (um para cancelamento e outro para o genérico), mas acabei tendo problemas de dependência entre classes. E, sinceramente, gostaria de evitar alterar manualmente as classes geradas, porque isso pode complicar futuras atualizações dos schemas — outro dev que pegar o código pode nem perceber as alterações manuais e acabar quebrando algo.

Uma ideia que tive seria usar apenas o schema genérico e ajustar a implementação para que o detEvento aceite qualquer tipo (já que o próprio XSD do cancelamento referencia o arquivo e110111_v1.00.xsd). Isso resolveria tanto para o cancelamento quanto para os novos eventos da reforma.

Mas antes de seguir por esse caminho, queria ouvir de vocês: Qual abordagem acham mais segura e sustentável para manter no longo prazo?

 

  • Consultores
Postado

Creio que deveria procurar algum local com C# 

pois o que e usamos dos XSD é validar com o delphi ou lazarus ele

não é usado nem para gerar classes nem da forma que o C# usa.

sugestão tem o canal do Balta.io no discord pode ser que consiga um auxilio

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Segura na mão do Claude Code e vai, passa os XSD pra ele e manda gerar as classes pra ti. Vai te poupar um tempo grandioso. Claro que, nem tudo são flores, obrigatoriamente a validação final do código é sua. Apesar de eu trabalhar muito mais com C# do que com Delphi, a parte de emissão de documentos é gerada em uma aplicação Delphi aqui onde trabalho, então não cheguei muito perto das classes em C# no ACBr.

Postado
1 hora atrás, everson.turossi disse:

Segura na mão do Claude Code e vai, passa os XSD pra ele e manda gerar as classes pra ti. Vai te poupar um tempo grandioso. Claro que, nem tudo são flores, obrigatoriamente a validação final do código é sua. Apesar de eu trabalhar muito mais com C# do que com Delphi, a parte de emissão de documentos é gerada em uma aplicação Delphi aqui onde trabalho, então não cheguei muito perto das classes em C# no ACBr.

Que legal! No nosso software, nós usamos exclusivamente as classes geradas a partir dos XSDs para a emissão das notas. É uma forma prática, porque evita ter que criar tudo manualmente — mas, claro, tem suas desvantagens também… como essa que acabei encontrando agora kkkk.

Postado

Bom, li seu post mais atentamente agora com tempo vou dar uma resposta melhor.

Depois de 15 anos lidando com emissão de nota, diversas experiencias negativas com algumas implementações dos Sefaze´s e também experiencias negativas em C# em relação a "implementações genéricas", eu aplicaria uma boa orientação a objetos nas classes, usando herança para agrupar propriedades em comum de cada classe dos eventos, mas para cada evento, uma classe com sua responsabilidade bem definida. Esse negócio de implementação genérica uma hora a conta sempre chega e em se tratando de emissão de documentos fiscais, é sempre uma caixinha de surpresa. É minha opinião claro.

Postado

Concordo Everson, gostei da sua ideia, em nosso software já temos +/- uma estrutura que permite uma implementação bem definida para cada evento utilizando de herança para o compartilhamento de propriedades parecidas, precisa melhorar um pouco, mas o real BO que eu tava enfrentando era para a estrutura geral, já que a unica diferença dos eventos é apenas o campo detEvento até onde eu sei e no nosso software o detEvento tava especificado para os eventos de cancelamento, então quando eu fui dar uma olhada para implementar os novos eventos, acabei ficando travado, porque fiquei indo atrás de algum schema genérico que me permita indicar qualquer detEvento.

  • Este tópico foi criado há 212 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.