Logo

Dynamics AX Brasil

  • Arquivo
  • RSS
  • Contato

[NFe 2.0] Solucionando problemas SEFAZ-PR

Bom dia pessoal,

Recentemente entrei em um novo projeto onde foi necessário realizar a comunicação com o SEFAZ-PR (o mais chato diga-se de passagem) para emissão da NF-e. Onde encontramos algumas dificuldades e gostaría de compartilhar com a solução.

O Problema

Quando enviamos o xml para o SEFAZ-PR validar recebemos o código de rejeição 215(Erro de validação no schema), mesmo que ele tenha sido validado contra o schema oficial.

Causa e explicação

De acordo com os comunicados que podem ser lidos aqui e aqui. A SEFAZ-PR explica que o xml está sendo rejeitado devido a falta de declaração do atributo namespace na tag NFe. Por exemplo:

XML enviado ao SEFAZ-PR:

<NFe>
    <infNFe Id="NFe41110303126900000259550000000150531000244250" versao="2.00">
        <ide>
            ...
        </ide>
    </infNFe>
</NFe>

XML esperado pelo SEFAZ-PR:

<NFe xmlns="www.portalfiscal.inf.br/nfe">
    <infNFe Id="NFe41110303126900000259550000000150531000244250" versao="2.00">
        <ide>
            ...
        </ide>
    </infNFe>
</NFe>

O que ocorre é que o WCF com a intenção de melhorar a performance da comunicação, retira as duplicidades do arquivo XML, consequentemente reduzindo o tamanho do arquivo. Sendo assim a namespace da tag NFe é retirada, pois a mesma namespace é declarada na tag enviNFe.

O problema é que somente a SEFAZ-PR faz a validação da namespace na tag NFe, ou seja, não se trata de um bug do AX e sim uma validação extra exclusiva do SEFAZ-PR.

Solução

Para solucionar este problema foi disponibilizada uma DLL para que o AX realize a comunicação com o SEFAZ-PR sem a otimização do XML, disponível para download aqui. Feito o download siga os seguintes passos:

  • Copie a dll para pasta bin do client do AX, algo parecido com isso: C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin
  • Copie a dll para a pasta bin do server do AX, algo parecido com isso: C:\Program Files\Microsoft Dynamics AX\50\Server\\Bin
  • Abra o DAX, e adicione uma nova referência apontando para a dll do client. AOT > References > Botão direito > Add references > Browse.
  • Abra o método “createBinding” da classe EFDocMsgTransport_WebServiceV4_BR, classe responsável pela comunicação entre AX x SEFAZ-PR e cole o código abaixo.
  • Reinicie a AOS.
private System.ServiceModel.Channels.Binding createBinding()
{
    System.ServiceModel.Channels.Binding                        binding;
    System.ServiceModel.Channels.BindingElement[]               bindingElementArray;
    NFe.CustomTextMessageBindingElement                                                customTextMessageBindingElement;
    System.ServiceModel.Channels.HttpsTransportBindingElement   transportBinding;
    ;
 
    if (this.isHttps())
    {
                // BP Deviation Documented
        customTextMessageBindingElement = new NFe.CustomTextMessageBindingElement('utf-8', "application/soap+xml", System.ServiceModel.Channels.MessageVersion::get_Soap12());
 
        // BP Deviation Documented
        transportBinding = new System.ServiceModel.Channels.HttpsTransportBindingElement();
        transportBinding.set_RequireClientCertificate(true);
 
        // BP Deviation Documented
        bindingElementArray = new System.ServiceModel.Channels.BindingElement[2]();
        bindingElementArray.SetValue(customTextMessageBindingElement, 0);
        bindingElementArray.SetValue(transportBinding, 1);
 
        // BP Deviation Documented
        binding = new System.ServiceModel.Channels.CustomBinding(bindingElementArray);
    }
    else
    {
        // BP Deviation Documented
        binding = new System.ServiceModel.BasicHttpBinding();
    }
 
    return binding;
}

Feito isso o AX não irá mais retirar o namespace e o código de rejeição 215 desaparece :D.

Outro erro encontrado, mas já explorado pelo Matiazzo em seu weblog, veja.

Abraços,
Peterson Ferreira

    • #DAX 2009
    • #NFe
  • 4 months ago
  • Comments
  • Permalink
  • Share
    Tweet

Recent comments

Blog comments powered by Disqus
← Previous • Next →

Portrait/Logo

Sobre

Meu nome é Peterson Ferreira. Este blog contém novidades, dicas e informações para consultores, desenvolvedores e usuários do Microsoft Dynamics AX. Aproveitem!

Entre em contato

  • @petersonfs on Twitter
  • Facebook Profile
  • petersonferreiras on Youtube
  • petersonferreira on Flickr
  • Linkedin Profile
  • petersonferreira on github

Comunidade Dynamics

Comunidade Dynamics

Categorias

Links

  • Jobs | Dynamics AX Brasil
  • Partner Source
  • DAXBR por Pichler
  • Dynamics AX por Brandon

Anúncios Patrocinados

  • RSS
  • Random
  • Arquivo
  • Contato
  • Mobile
  • Licença Creative Commons

Powered by Tumblr