1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

[NFe] Serviço Consulta Notas Destinadas 'NfeConsultaDest'

Bom dia,

Pessoal estou desenvolvendo uma aplicação desktop em C#, para realizar a consulta das NFe destinadas a um determinado CNPJ, utilizando o serviço web da Sefaz Ambiente Nacional 'NfeConsultaDest'.

Porém durante o processo de homologação, o Fiscal da empresa identificou algumas NFe que a aplicação não encontrou ao consultar a Sefaz, estou utilizando o UltNsu e IndCont.

Alguém já desenvolveu algo para este fim independente da linguagem, e esta tendo sucesso em localizar 100% das NFe?

Segue trecho do código:

//Bloco com Loop validando TAG <IndCont>
while (continua)
{
    nsu = Conexao.getNsu(emp.Key);

    continua = ConsultaDest(emp.Key, emp.Value);             

    if (!Conexao.setNsu(emp.Key, nsu))
        objLog.Debug("Falha salvar NSU");
}        

// Método contendo comunicação com Sefaz
private bool ConsultaDest(string cnpj, string uf)
{ 
    try
    {
        NFeConsultaDest.NFeConsultaDest nfeConsDest = new NFeConsultaDest.NFeConsultaDest();
        CriaXML criaXml = new CriaXML();
        Assinatura assina = new Assinatura();
        XML x = new XML();

        cert = Conexao.getCertificado(cnpj, Program.getLocalPrograma, out senha);
        // Declara variável de certificado com conteúdo do Certificado de Transmissão (chave pública) padrão X509
        X509Certificate2 certificado = new X509Certificate2();
        certificado.Import(cert, senha, X509KeyStorageFlags.Exportable);

        xml = criaXml.xmlConsDest(cnpj, txtVersao.Text, nsu).Replace("utf-16", "utf-8");

        if (!validaXML(xml, Program.getLocalPrograma + "\\Schemas\\NFe\\ManifestacaoDestinatario\\ConsultaNFDest_v101", out xmlValido, out error))
        {
            objLog.Error(error);
            return false;
        }

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlValido);

        // Adiciona o objeto certificado ao objeto Web Service 
        nfeConsDest.ClientCertificates.Add(certificado);

        // Informe o endereço (URL) do web service 
        nfeConsDest.Url = txtUrl.Text;

        // Cabeçalho
        NFeConsultaDest.nfeCabecMsg nfeCabec = new NFeConsultaDest.nfeCabecMsg();
        nfeCabec.cUF = uf;
        nfeCabec.versaoDados = txtVersao.Text;
        nfeConsDest.nfeCabecMsgValue = nfeCabec;

        try
        {
            XmlNode xmlDados = null;
            xmlDados = xmlDoc.DocumentElement;
            retorno = nfeConsDest.nfeConsultaNFDest(xmlDados).OuterXml;

            Dictionary<string, string> ret = x.xmlRetCons(retorno, out error);

            if (ret.ContainsKey("cStat"))
            {                        
                if (ret.ContainsKey("indCont") && ret.ContainsKey("ultNSU"))
                {                                
                    nsu = ret["ultNSU"].ToString();

                    if (ret["indCont"].ToString() == "1")
                        return true;
                    else
                        return false;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }

        }
        catch (Exception ex)
        {
            objLog.Error("Motivo: " + ex.Message);
            return false;
        }                
    }
    catch (Exception ex)
    {
        objLog.Error(ex.Message);
        return false;
    }
}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags c# .net ou faça a sua própria pergunta.