/// <summary> /// Envia pedido de consulta não encerrados para SEFAZ /// </summary> /// <param name="idLoja"></param> /// <returns></returns> public static string EnviaConsultaNaoEncerrados(uint idLoja) { try { var tipoEmissao = Configuracoes.FiscalConfig.ManifestoEletronico.ContingenciaMDFe == Helper.DataSources.TipoContingenciaMDFe.NaoUtilizar ? TipoEmissao.Normal : TipoEmissao.Contingencia; var lojaEmitente = LojaDAO.Instance.GetElement(idLoja); // Busca XML de encerramento XmlDocument xmlConsMDFeNaoEnc = ManifestoEletronicoDAO.Instance.GerarXmlMDFeConsultaNaoEncerrados(lojaEmitente); #region Envia XML // Salva o callback padrão do WebService System.Net.Security.RemoteCertificateValidationCallback callback = System.Net.ServicePointManager.ServerCertificateValidationCallback; // Instancia xml de retorno XmlNode xmlRetorno = null; // Realiza 3 tentativas de envio, se não funcionar, gera mensagem de erro for (int i = 0; i < 3; i++) { try { // Altera o callback de validação do WebService System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors error) { // Verifica se a data do certificado é válida DateTime beginDate = DateTime.Parse(cert.GetEffectiveDateString()); DateTime endDate = DateTime.Parse(cert.GetExpirationDateString()); bool isDateValid = (DateTime.Now >= beginDate) && (DateTime.Now <= endDate); // Retorna o resultado da função return(isDateValid); }; #region Envia o arquivo e recebe o retorno if (tipoEmissao == TipoEmissao.Normal) { if (ConfigMDFe.TipoAmbiente == ConfigMDFe.TipoAmbienteMDFe.Producao) { xmlRetorno = GetWebService.PSVRSMDFeConsultaNaoEncerrado(lojaEmitente, null).mdfeConsNaoEnc(xmlConsMDFeNaoEnc); } // TipoAmbienteMDFe.Homologacao else { xmlRetorno = GetWebService.HSVRSMDFeConsultaNaoEncerrado(lojaEmitente, null).mdfeConsNaoEnc(xmlConsMDFeNaoEnc); } } // TipoEmissao.Contingencia else { if (ConfigMDFe.TipoAmbiente == ConfigMDFe.TipoAmbienteMDFe.Producao) { xmlRetorno = GetWebService.PSVRSMDFeConsultaNaoEncerrado(lojaEmitente, null).mdfeConsNaoEnc(xmlConsMDFeNaoEnc); } // TipoAmbienteMDFe.Homologacao else { xmlRetorno = GetWebService.HSVRSMDFeConsultaNaoEncerrado(lojaEmitente, null).mdfeConsNaoEnc(xmlConsMDFeNaoEnc); } } #endregion break; } catch (Exception ex) { if (i == 2) { throw new Exception(ex.Message); } } finally { // Restaura o callback padrão para o WebService System.Net.ServicePointManager.ServerCertificateValidationCallback = callback; } } #endregion #region Lê Xml de retorno do consulta não encerrados return(ManifestoEletronicoDAO.Instance.RetornoConsultaNaoEncerrados(xmlRetorno)); #endregion } catch (Exception ex) { throw ex; } }