diff --git a/DFe.Utils/Assinatura/CertificadoDigital.cs b/DFe.Utils/Assinatura/CertificadoDigital.cs index 8136299c3..34f4ccc1d 100755 --- a/DFe.Utils/Assinatura/CertificadoDigital.cs +++ b/DFe.Utils/Assinatura/CertificadoDigital.cs @@ -203,6 +203,14 @@ public static X509Certificate2 ObterCertificado(ConfiguracaoCertificado configur _certificado = ObterDadosCertificado(configuracaoCertificado); return _certificado; } + + + public static void clearCache() + { + if (_certificado != null) + _certificado =null; + + } } internal static class MetodosNativos diff --git a/NFe.AppTeste/MainWindow.xaml.cs b/NFe.AppTeste/MainWindow.xaml.cs index cdc405fe8..1d6ec4085 100644 --- a/NFe.AppTeste/MainWindow.xaml.cs +++ b/NFe.AppTeste/MainWindow.xaml.cs @@ -77,6 +77,7 @@ using WebBrowser = System.Windows.Controls.WebBrowser; using System.Windows.Media; using System.Windows.Media.Imaging; +using DFe.Classes.Extensoes; using NFe.Danfe.Base; using NFe.Danfe.Base.Fontes; using NFe.Danfe.Base.NFCe; @@ -241,6 +242,9 @@ private void BtnConsultaXml_Click(object sender, RoutedEventArgs e) #region Consulta Situação NFe pelo XML var arquivoXml = Funcoes.BuscarArquivoXml(); + if (string.IsNullOrWhiteSpace(arquivoXml)) + return; + var nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); var chave = nfe.infNFe.Id.Substring(3); @@ -316,7 +320,10 @@ private void GeranNfe(VersaoServico versaoServico, ModeloDocumento modelo) _nfe = GetNf(Convert.ToInt32(numero), modelo, versaoServico); _nfe.Assina(); - _nfe.infNFeSupl = new infNFeSupl() { qrCode = _nfe.infNFeSupl.ObterUrlQrCode(_nfe, _configuracoes.ConfiguracaoCsc.CIdToken, _configuracoes.ConfiguracaoCsc.Csc) }; + + if (_nfe.infNFe.ide.mod == ModeloDocumento.NFCe) + _nfe.infNFeSupl = new infNFeSupl() { qrCode = _nfe.infNFeSupl.ObterUrlQrCode(_nfe, _configuracoes.ConfiguracaoCsc.CIdToken, _configuracoes.ConfiguracaoCsc.Csc) }; + _nfe.Valida(); #endregion @@ -386,10 +393,15 @@ private void BtnCriareEnviar3_Click(object sender, RoutedEventArgs e) _nfe = GetNf(Convert.ToInt32(numero), _configuracoes.CfgServico.ModeloDocumento, _configuracoes.CfgServico.VersaoNFeAutorizacao); _nfe.Assina(); //não precisa validar aqui, pois o lote será validado em ServicosNFe.NFeAutorizacao - //A URL do QR-Code deve ser gerada em um objeto nfe já assinado, pois na URL vai o DigestValue que é gerado por ocasião da assinatura - _nfe.infNFeSupl = new infNFeSupl() { qrCode = _nfe.infNFeSupl.ObterUrlQrCode(_nfe, _configuracoes.ConfiguracaoCsc.CIdToken, _configuracoes.ConfiguracaoCsc.Csc) }; //Define a URL do QR-Code. + + if (_nfe.infNFe.ide.mod == ModeloDocumento.NFCe) + { + //A URL do QR-Code deve ser gerada em um objeto nfe já assinado, pois na URL vai o DigestValue que é gerado por ocasião da assinatura + _nfe.infNFeSupl = new infNFeSupl() { qrCode = _nfe.infNFeSupl.ObterUrlQrCode(_nfe, _configuracoes.ConfiguracaoCsc.CIdToken, _configuracoes.ConfiguracaoCsc.Csc) }; //Define a URL do QR-Code. + } + var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); - var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Assincrono, new List {_nfe}, true/*Envia a mensagem compactada para a SEFAZ*/); + var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Assincrono, new List {_nfe}, false/*Envia a mensagem compactada para a SEFAZ*/); //Para consumir o serviço de forma síncrona, use a linha abaixo: //var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Sincrono, new List { _nfe }, true/*Envia a mensagem compactada para a SEFAZ*/); @@ -724,7 +736,9 @@ private void ExibeNfe() private void CarregaArquivoNfe() { var arquivoXml = Funcoes.BuscarArquivoXml(); - _nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); + + if (!string.IsNullOrWhiteSpace(arquivoXml)) + _nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); } private void BtnValida_Click(object sender, RoutedEventArgs e) @@ -797,6 +811,10 @@ private void BtnAdicionaNfeproc_Click(object sender, RoutedEventArgs e) try { var arquivoXml = Funcoes.BuscarArquivoXml(); + + if (string.IsNullOrWhiteSpace(arquivoXml)) + return; + var nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); var chave = nfe.infNFe.Id.Substring(3); @@ -945,16 +963,18 @@ protected virtual infNFe GetInf(int numero, ModeloDocumento modelo, VersaoServic protected virtual ide GetIdentificacao(int numero, ModeloDocumento modelo, VersaoServico versao) { + var estado = Estado.SE; + var ide = new ide { - cUF = Estado.SE, + cUF = estado.SiglaParaEstado(_configuracoes.Emitente.enderEmit.UF), natOp = "VENDA", indPag = IndicadorPagamento.ipVista, mod = modelo, serie = 1, nNF = numero, tpNF = TipoNFe.tnSaida, - cMunFG = 2802908, + cMunFG = _configuracoes.EnderecoEmitente.cMun, tpEmis = _configuracoes.CfgServico.tpEmis, tpImp = TipoImpressao.tiRetrato, cNF = "1234", diff --git a/NFe.Servicos/Properties/AssemblyInfo.cs b/NFe.Servicos/Properties/AssemblyInfo.cs index 0feb666da..e19555057 100644 --- a/NFe.Servicos/Properties/AssemblyInfo.cs +++ b/NFe.Servicos/Properties/AssemblyInfo.cs @@ -67,5 +67,5 @@ // utilizando o '*' como mostrado abaixo: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.1.456")] -[assembly: AssemblyFileVersion("1.0.1.456")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.1.457")] +[assembly: AssemblyFileVersion("1.0.1.457")] \ No newline at end of file diff --git a/NFe.Servicos/ServicosNFe.cs b/NFe.Servicos/ServicosNFe.cs index fd2bf2259..820cef275 100644 --- a/NFe.Servicos/ServicosNFe.cs +++ b/NFe.Servicos/ServicosNFe.cs @@ -863,7 +863,7 @@ public RetornoNfeDistDFeInt NfeDistDFeInteresse(string ufAutor, string documento string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe); string chNFe = string.Empty; - if (conteudo.StartsWith("(conteudo); @@ -876,8 +876,21 @@ public RetornoNfeDistDFeInt NfeDistDFeInteresse(string ufAutor, string documento conteudo); chNFe = procEventoNFeConteudo.retEvento.infEvento.chNFe; } + else if (conteudo.StartsWith("( + conteudo); + chNFe = resEventoConteudo.chNFe; + } string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_'); + + if (chNFe == string.Empty) + { + chNFe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE_"; + } + SalvarArquivoXml(chNFe + "_" + schema[0] + ".xml", conteudo); } @@ -1159,7 +1172,7 @@ public RetornoNFeRetAutorizacao NFeRetAutorizacao(string recibo) /// Consulta a Situação da NFe /// /// Retorna um objeto da classe RetornoNfeConsultaProtocolo com os dados da Situação da NFe - public RetornoNfeDownload NfeDownloadNf(string cnpj, List chaves) + public RetornoNfeDownload NfeDownloadNf(string cnpj, List chaves, string nomeSaida = "") { var versaoServico = ServicoNFe.NfeDownloadNF.VersaoServicoParaString(_cFgServico.VersaoNfeDownloadNF); @@ -1196,7 +1209,12 @@ public RetornoNfeDownload NfeDownloadNf(string cnpj, List chaves) var dadosDownload = new XmlDocument(); dadosDownload.LoadXml(xmlDownload); - SalvarArquivoXml(cnpj + "-ped-down.xml", xmlDownload); + if (nomeSaida == "") + { + nomeSaida = cnpj; + } + + SalvarArquivoXml(nomeSaida + "-ped-down.xml", xmlDownload); XmlNode retorno; try @@ -1211,7 +1229,7 @@ public RetornoNfeDownload NfeDownloadNf(string cnpj, List chaves) var retornoXmlString = retorno.OuterXml; var retDownload = new retDownloadNFe().CarregarDeXmlString(retornoXmlString); - SalvarArquivoXml(cnpj + "-down.xml", retornoXmlString); + SalvarArquivoXml(nomeSaida + "-down.xml", retornoXmlString); return new RetornoNfeDownload(pedDownload.ObterXmlString(), retDownload.ObterXmlString(), retornoXmlString, retDownload); diff --git a/NFe.Utils/InformacoesSuplementares/ExtinfNFeSupl.cs b/NFe.Utils/InformacoesSuplementares/ExtinfNFeSupl.cs index e7d97d834..c48b956ce 100644 --- a/NFe.Utils/InformacoesSuplementares/ExtinfNFeSupl.cs +++ b/NFe.Utils/InformacoesSuplementares/ExtinfNFeSupl.cs @@ -106,9 +106,9 @@ private static List CarregarUrls() new EnderecoConsultaPublicaNfce(Estado.DF, TipoAmbiente.taHomologacao, TipoUrlConsultaPublica.UrlConsulta, "http://dec.fazenda.df.gov.br/nfce"), new EnderecoConsultaPublicaNfce(Estado.GO, TipoAmbiente.taProducao, TipoUrlConsultaPublica.UrlQrCode, "http://nfe.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCe"), - new EnderecoConsultaPublicaNfce(Estado.GO, TipoAmbiente.taProducao, TipoUrlConsultaPublica.UrlConsulta, "http://nfe.sefaz.go.gov.br/nfeweb/sites/nfce/ConsultaDANFENFCe"), + new EnderecoConsultaPublicaNfce(Estado.GO, TipoAmbiente.taProducao, TipoUrlConsultaPublica.UrlConsulta, "http://www.nfce.go.gov.br/post/ver/214278/consumid"), new EnderecoConsultaPublicaNfce(Estado.GO, TipoAmbiente.taHomologacao, TipoUrlConsultaPublica.UrlQrCode, "http://homolog.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCe"), - new EnderecoConsultaPublicaNfce(Estado.GO, TipoAmbiente.taHomologacao, TipoUrlConsultaPublica.UrlConsulta, "http://homolog.sefaz.go.gov.br/nfeweb/sites/nfce/ConsultaDANFENFCe"), + new EnderecoConsultaPublicaNfce(Estado.GO, TipoAmbiente.taHomologacao, TipoUrlConsultaPublica.UrlConsulta, "http://www.nfce.go.gov.br/post/ver/214413/consulta-nfc-e-homologacao"), new EnderecoConsultaPublicaNfce(Estado.ES, TipoAmbiente.taProducao, TipoUrlConsultaPublica.UrlQrCode, "http://app.sefaz.es.gov.br/ConsultaNFCe/qrcode.aspx"), new EnderecoConsultaPublicaNfce(Estado.ES, TipoAmbiente.taProducao, TipoUrlConsultaPublica.UrlConsulta, "http://app.sefaz.es.gov.br/ConsultaNFCe"),