Translate

quarta-feira, 4 de novembro de 2015

409 - Rejection: cUF field does not exist in the nfeCabecMSg element from the SOAP Header error when trying to send a NF-e file to SEFAZ-PE.

Um amigo havia passado por este problema e após resolve-lo me enviou o "workaround" para resolve-lo!

O erro ocorre ao cria uma NF e envia-la ao Sefaz de Pernambuco, neste momento ocorre o erro abaixo:

Em inglês:
"409 - Rejection: cUF field does not exist in the nfeCabecMSg element from the SOAP Header."

Em português:
Rejeição: Código 409 - Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header.

Não existe KB para este caso, e de acordo com o LCS não haverá tal KB!

Sendo assim é preciso uma alteração manual no AX, vamos a ela!

Abra a AOT e expanda até Classes\EFDocMsgTransport_WebService_BR, clique com o botão direito, crie um novo método e coloque o conteúdo abaixo:



private System.ServiceModel.Channels.Binding createBindingStandard()
{
    System.ServiceModel.Channels.Binding binding;
    System.ServiceModel.Channels.BindingElement[] bindingElementArray;
    System.ServiceModel.Channels.TextMessageEncodingBindingElement messageEncodingBinding;
    System.ServiceModel.Channels.HttpsTransportBindingElement transportBinding;

    if (this.isHttps())
    {
        messageEncodingBinding =
        // BP Deviation Documented
        new System.ServiceModel.Channels.TextMessageEncodingBindingElement(
        System.ServiceModel.Channels.MessageVersion::get_Soap12(),
        System.Text.Encoding::get_UTF8());

        // 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(messageEncodingBinding, 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;
}


Agora clique no botão Compilar para compilar o noto método.




Agora abra o método createWcfClient e encontre a linha binding que estará exatamente como na imagem abaixo:

Vamos remover o conteudo destacado em amarelo e incluir o seguinte:




    if (this.parmIssuingStateCode() == '26')
    {
        binding = this.createBindingStandard();
    }
    else
    {
        binding = this.createBinding();
    }

 Agora teremos o método como na imagem abaixo:



Clique novamente no botão compilar e após a compilação clique no botão para gerar o IL Incremental.




Feche tudo e tente enviar a NF novamente!

Espero que isso de certo pra vocês!