Ir para conteúdo
  • Cadastre-se

dev botao

Criar Opção Para Desabilitar A Validação Dos Schemas


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

Recommended Posts

Olá pessoal! Tudo bem? Eu espero que sim...

 

Uma dor de cabeça bem grande para o pessoal do suporte técnico é manter os schemas da NF-e atualizados.

 

Pensando nisso nós criamos a propriedade "ValidarXMLUsandoSchemas" nas configurações gerais na qual serve para ligar/desligar a validação do XML. Como nós fizemos uma série de validações antes mesmo de gerar o XML, tal validação se torna redundante.

 

O comportamento padrão da propriedade é validar, ou seja, o comportamento atual do componente. E a modificação é muito pequena. Apenas criamos a propriedade e colocamos um IF em volta do método "NotaUtil.Valida".

 

Segue em anexo um patch contendo as modificações.

Caso necessário, posso fazer um patch para cada unit modificada....

 

Existe a possibilidade da mudança ser acatada?

 

 

validacao_schemas.zip

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Isso não pode ser feito, é obrigatória a validação dos XMLs utilizando os schemas de forma a gerar XMLs corretos tanto em estrutura quanto em conteúdo, isso é o padrão de qualquer XML gerado no mundo inteiro e está de acordo com o manual de integração da NF-e.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Olá Régys! Em primeiro lugar nós gostaríamos de agradecer pela sua atenção.
 
Ao longo deste e-mail a gente espera conseguir passar pra você a nossa visão sobre o problema.
 
A gente compartilha com você que é uma boa prática validar o XML gerado com os arquivos XSD. Isto não está descartado em nosso software. 
 
Esta validação só acontece em momento diferente e com um mecanismo fora do ACBr no qual não nos obriga ter fisicamente a pasta de schemas.
 
O problema é que NEM SEMPRE o ACBr não nos deixa escolha. Eles nos obriga a passar por este passo.
 
Na transmissão, por exemplo, a gente não tem problema. Nós não usamos mais o método "ACBr.Enviar" que faz implicitamente a validação. Nós usamos os métodos "ACBr.NotasFiscais.Assinar" e "ACBr.WebServices.Envia(x)" separadamente.
 
Nosso problema está em métodos como "ACBr.Enviar" no qual tem mais de uma responsabilidade nele. Este cara, além de quebrar o SRP (http://en.wikipedia.org/wiki/Single_responsibility_principle), acaba tirando a liberdade de escolha.
 
Se o método de transmissão fosse mais fragmentado e nos permitisse "programaticamente" escolher se iremos invocar o método de validação ou não, a proposta acima seria desnecessária.
Na transmissão eu até posso não chamar a validação, mas ao transmitir a CC-e e também ao enviar o cancelamento eu não tenho como fazer isto.
 
Você teria uma alternativa, além da nossa, para resolver este problema?
 
Agradecemos a sua ajuda e aguardamos sua orientação.
Link para o comentário
Compartilhar em outros sites

Opinião minha:

 

eu acho valida a proposta do _asseinfo, mesmo que seja obrigatório a validacao através de schemas, o envio do arquivo XML para o destinatario da nota também é obrigatorio, e nem por isso é feito tudo automaticamente. O usuario do ACBr tem a escolha de enviar pelo componente ou por ele mesmo. 

 

Daí vem a pergunta:

Pq deixar de utilizar uma coisa pronta para utilizar outras solucoes? Eu não sei mas cada um pode ter uma razão, ou mesmo uma vontade. No meu caso eu acho super importante a validação pelos arquivos de schema, porem aqui utilizamos outra solucao que envia os XML da NFe.

 

Acredito que fazer um metodo novo, fragmentado como o amigo disse não é uma idéia ruim. Ou mesmo uma sobrecarga com parametros a mais. 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

A ideia do fórum é essa mesma, discutir e chegarmos a um bem comum a todos. :)

 

_asseinfo hoje os métodos já são desmembrados, então daria para fazer algo assim:

  ACBrNFe1.NotasFiscais.Assinar;
  ACBrNFe1.WebServices.Envia(...);

Isso passaria por cima da validação, verifique se essa solução pode lhe ajudar, por favor.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Bom dia Régys,

 

Como eu havia explicado no meu Post, para o envio da NF-e já funciona desta maneira sem problemas.

O problema está nos outros processos, o cancelamento, o envio de eventos e a inutilização.

Analisando estes métodos, acho que o patch que enviamos no primeiro post seria a melhor solução.

 

Agradecemos a sua ajuda e aguardamos sua orientação.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • Este tópico foi criado há 3885 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.