/// <summary> /// Le o retorno do LMC, e de acordo com o status guarda o XML enviado na pasta enviados /// </summary> private void LerRetornoLMC(DadosLMC dadosLMC) { int emp = Empresas.FindEmpresaByThread(); var doc = new XmlDocument(); doc.Load(Functions.StringXmlToStreamUTF8(vStrXmlRetorno)); XmlElement protLivroCombustivel = (XmlElement)doc.GetElementsByTagName(TpcnResources.protLivroCombustivel.ToString())[0]; string cStat = protLivroCombustivel.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText; if (cStat == "1001" || cStat == "100" || cStat == "101") { var arquivoNFeProc = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.LMC) + Propriedade.ExtRetorno.ProcLMC; var protLMC = protLivroCombustivel.OuterXml; if (!File.Exists(arquivoNFeProc)) { oGerarXML.XmlDistLMC(NomeArquivoXML, protLMC, Propriedade.ExtRetorno.ProcLMC); } if (!oAux.EstaAutorizada(NomeArquivoXML, dadosLMC.dEmissao, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.ProcLMC)) { TFunctions.MoverArquivo(arquivoNFeProc, PastaEnviados.Autorizados, dadosLMC.dEmissao); } if (!oAux.EstaAutorizada(NomeArquivoXML, dadosLMC.dEmissao, Propriedade.ExtEnvio.LMC, Propriedade.ExtEnvio.LMC)) { TFunctions.MoverArquivo(NomeArquivoXML, PastaEnviados.Autorizados, dadosLMC.dEmissao); } } }
/// <summary> /// Executa o serviço solicitado /// </summary> public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosPedSta = new DadosPedSta(); //Ler o XML para pegar parâmetros de envio PedSta(emp, dadosPedSta); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ var statusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); var cabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(cabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString()); wsProxy.SetProp(cabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSta.versao); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, statusServico, wsProxy.NomeMetodoWS[0], cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML, true, securityProtocolType); } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML, Propriedade.ExtRetorno.Sta_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de solicitação do serviço, //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar //o arquivo novamente para o webservice //Wandrey 09/03/2010 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosPedSit = new DadosPedSit(); //Ler o XML para pegar parâmetros de envio PedSit(emp, dadosPedSit);// NomeArquivoXML); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oConsulta = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedSit.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSit.cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosPedSit.cUF.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLMDFePedSit); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsulta, wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedSit.cUF), oCabecMsg, this); //Efetuar a leitura do retorno da situação para ver se foi autorizada ou não //Na versão 1 não posso gerar o -procNfe, ou vou ter que tratar a estrutura do XML de acordo com a versão, a consulta na versão 1 é somente para obter o resultado mesmo. LerRetornoSitMDFe(dadosPedSit.chNFe); //Gerar o retorno para o ERP oGerarXML.XmlRetorno(Propriedade.ExtEnvio.PedSit_XML, Propriedade.ExtRetorno.Sit_XML, this.vStrXmlRetorno); } catch (Exception ex) { try { TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML, Propriedade.ExtRetorno.Sit_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de pedido da consulta da situação da NFe, infelizmente //não posso fazser mais nada, o UniNFe vai tentar mantar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 22/03/2010 } } }
private void IdentificarProviderValido() { Wait.Show("Procurando por um provider válido..."); CertificadoProviders certificadoProviders = new CertificadoProviders(empresa.X509Certificado, empresa.PastaXmlEnvio, Empresas.FindEmpresaByThread(), txtPinCertificado.Text); if (certificadoProviders.Run()) { Wait.Close(); if (certificadoProviders.ProviderIdentificado) { DialogResult result = MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Foi identificado um provider para o Certificado: " + certificadoProviders.ProviderValido.NameKey + "\n" + "Deseja defini-lo com provider para este certificado?", "Identificação automatica de Provider", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { cboProviders.SelectedItem = certificadoProviders.ProviderValido.NameKey; } } else { MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Não foi identificado um provider para o funcionamento adequado do Certificado selecionado \n" + "Tente reiniciar o Certificado e a Senha do PIN e tente novamente.", "Identificação automatica de Provider", MessageBoxButtons.OK); } } else { Wait.Close(); } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.MDFePedidoSituacaoLote; try { #region Parte do código que envia o XML de pedido de consulta do recibo dadosPedRec = new DadosPedRecClass(); PedRec(emp, NomeArquivoXML); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedRec.cUF, dadosPedRec.tpAmb, dadosPedRec.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ var oRepRecepcao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedRec.cUF)); var oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedRec.cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosPedRec.cUF.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLMDFePedRec); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oRepRecepcao, wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedRec.cUF), oCabecMsg, this); #endregion #region Parte do código que trata o XML de retorno da consulta do recibo //Efetuar a leituras das notas do lote para ver se foi autorizada ou não LerRetornoLoteMDFe(); //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo //Wandrey 18/06/2009 oGerarXML.XmlRetorno(Propriedade.ExtEnvio.PedRec_XML, Propriedade.ExtRetorno.ProRec_XML, vStrXmlRetorno); #endregion } catch (Exception ex) { try { TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedRec_XML, Propriedade.ExtRetorno.ProRec_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Pois ocorreu algum erro de rede, hd, permissão das pastas, etc. Wandrey 22/03/2010 } } finally { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } }
public FluxoNfe() { int emp = Empresas.FindEmpresaByThread(); empresa = emp; NomeXmlControleFluxo = Empresas.Configuracoes[emp].PastaEmpresa + "\\fluxonfe.xml"; }
public TaskCTeRetRecepcao(XmlDocument conteudoXML) { Servico = Servicos.CTePedidoSituacaoLote; ConteudoXML = conteudoXML; ConteudoXML.PreserveWhitespace = false; NomeArquivoXML = Empresas.Configuracoes[Empresas.FindEmpresaByThread()].PastaXmlEnvio + "\\temp\\" + conteudoXML.GetElementsByTagName(TpcnResources.nRec.ToString())[0].InnerText + Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).EnvioXML; }
private void ValidarCertificadoA3(bool salvando) { if (String.IsNullOrEmpty(empresa.CertificadoPIN)) { throw new Exception("Informe o PIN do certificado"); } if (cboProviders.SelectedItem.ToString() == "") { throw new Exception("Informe o provedor do certificado"); } Wait.Show("Validando provider..."); try { CertificadoProviders certificadoProviders = new CertificadoProviders(empresa.X509Certificado, empresa.PastaXmlEnvio, Empresas.FindEmpresaByThread(), empresa.CertificadoPIN); CertProviders xCertProviders = new CertProviders(); xCertProviders.NameKey = cboProviders.SelectedItem.ToString(); xCertProviders.Type = certificadoProviders.GetProviderType(xCertProviders.NameKey); if (certificadoProviders.TestarProvider(xCertProviders)) { Wait.Close(); if (!salvando) { MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Provider válido, XML assinado com sucesso.", provError, MessageBoxButtons.OK); } } else { Wait.Close(); MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Provider inválido, não foi possível assinar um XML com este provider.", provError, MessageBoxButtons.OK); if (salvando) { throw new Exception("Não foi possível salvar a configuração."); } } } catch (Exception ex) { throw ex; } finally { Wait.Close(); } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosPedInut = new DadosPedInut(emp); PedInut(emp); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oInutilizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedInut.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedInut.cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedInut.cUF.ToString()); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedInut.versao); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(ConteudoXML, emp, Convert.ToInt32(dadosPedInut.cUF)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oInutilizacao, wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedInut.cUF), oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).RetornoXML, true, securityProtocolType); //Ler o retorno do webservice this.LerRetornoInut(); } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML, Propriedade.ExtRetorno.Inu_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.CTeConsultaStatusServico; try { dadosPedSta = new DadosPedSta(); //Ler o XML para pegar parâmetros de envio PedSta(emp, dadosPedSta);//NomeArquivoXML); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ var oStatusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); var oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico, dadosPedSta.tpEmis)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLCTeStatusServico); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oStatusServico, wsProxy.NomeMetodoWS[0], oCabecMsg, this, "-ped-sta", "-sta"); } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML, Propriedade.ExtRetorno.Sta_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de solicitação do serviço, //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar //o arquivo novamente para o webservice //Wandrey 09/03/2010 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); /// /// danasa: 06-2018 ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(this.NomeArquivoXML); if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML) + Propriedade.ExtRetorno.retEnvCCe_ERR)); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML) + Propriedade.ExtRetorno.retCancelamento_ERR)); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML) + Propriedade.ExtRetorno.retManifestacao_ERR)); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML) + Propriedade.ExtRetorno.Eve_ERR)); } DadosenvEvento eve = new DadosenvEvento(); EnvEvento(emp, eve); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlErro, Path.GetFileName(NomeArquivoXML))); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML) + Propriedade.ExtRetorno.Sit_ERR)); DadosPedSit sit = new DadosPedSit(); PedSit(emp, sit); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { var fn = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, fn + Propriedade.ExtRetorno.Sta_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, fn + Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML));//"-ped-sta-ret.xml")); DadosPedSta sta = new DadosPedSta(); PedSta(emp, sta); } }
/// <summary> /// Alguns estados nao tem o servico de consulta ao cadastro de contribuinte, por exemplo. /// Então, antes da aplicacao chamar um servico, ela pode consultar para saber ser um servico está disponivel para um estado /// </summary> public override void Execute() { int emp = Empresas.FindEmpresaByThread(); pedidoWSExiste odados = new pedidoWSExiste(); odados.cUF = Empresas.Configuracoes[emp].UnidadeFederativaCodigo; odados.tpEmis = Empresas.Configuracoes[emp].tpEmis; odados.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; odados.servicos = ""; //Definir o serviço que será executado para a classe Servico = Servicos.WSExiste; try { int intValue; if (this.vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { #if modelo_xml <?xml version = "1.0" encoding = "utf-8"?> < dados > < cUF > 31 < / cUF > opcional ou se informada a UF por sigla, convertemos para UF->inteiro < tpAmb > 2 < / tpAmb > opcional < tpEmis > 1 < / tpEmis > opcional <servicos> NFeConsultaCadastro, NFeStatusServico, ...< / servicos > < / dados > #endif Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Path.GetFileName(NomeArquivoXML.Replace(Propriedade.Extensao(Propriedade.TipoEnvio.EnvWSExiste).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvWSExiste).RetornoXML).Replace(".xml", ".err")))); XmlDocument doc = new XmlDocument(); doc.Load(NomeArquivoXML); foreach (XmlNode node in doc.GetElementsByTagName("dados")) { XmlElement elementConfig = (XmlElement)node; odados.tpEmis = Convert.ToInt32(Functions.LerTag(elementConfig, TpcnResources.tpEmis.ToString(), odados.tpEmis.ToString())); odados.tpAmb = Convert.ToInt32(Functions.LerTag(elementConfig, TpcnResources.tpAmb.ToString(), odados.tpAmb.ToString())); string temp = Functions.LerTag(elementConfig, TpcnResources.cUF.ToString(), odados.cUF.ToString()); if (int.TryParse(temp, out intValue)) { odados.cUF = intValue; } else { odados.cUF = Functions.UFParaCodigo(temp); } odados.servicos = Functions.LerTag(elementConfig, "servicos", false); } }
public override void Execute() { try { int emp = Empresas.FindEmpresaByThread(); //AssinarValidarNFe(this, this.NomeArquivoXML, Empresas.Configuracoes[emp].PastaEnvio); this.AssinarValidarXMLNFe(Empresas.Configuracoes[emp].PastaXmlEnvio); //Definir o nome do arquivo assinado FileInfo arq = new FileInfo(this.NomeArquivoXML); string arquivoAssinado = arq.DirectoryName.Substring(0, arq.DirectoryName.Length - 5) + Propriedade.NomePastaXMLAssinado + "\\" + arq.Name; //Montar lote de nfe FluxoNfe oFluxoNfe = new FluxoNfe(); string cError = ""; try { DadosNFeClass oDadosNfe = this.LerXMLNFe(arquivoAssinado); if (!oFluxoNfe.NFeComLote(oDadosNfe.chavenfe)) { //Gerar lote this.NomeArquivoXML = arquivoAssinado; this.LoteNfe(arquivoAssinado, oDadosNfe.versao); } } catch (IOException ex) { cError = (ex.InnerException != null ? ex.InnerException.Message : ex.Message); } catch (Exception ex) { cError = (ex.InnerException != null ? ex.InnerException.Message : ex.Message); } if (!string.IsNullOrEmpty(cError)) { try { // grava o arquivo de erro oAux.GravarArqErroERP(Path.GetFileNameWithoutExtension(arquivoAssinado) + ".err", cError); // move o arquivo para a pasta de erro oAux.MoveArqErro(arquivoAssinado); } catch { // A principio não vou fazer nada Wandrey 24/04/2011 } } } catch { } }
/// <summary> /// Efetua a leitura do XML de retorno do processamento da Inutilização /// </summary> /// <by>Wandrey Mundin Ferreira</by> /// <date>21/04/2009</date> private void LerRetornoInut() { int emp = Empresas.FindEmpresaByThread(); // vStrXmlRetorno = "<retInutCTe versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/cte\"><infInut><tpAmb>2</tpAmb><verAplic>SP-CTe-05-12-2013</verAplic><cStat>102</cStat><xMotivo>Inutilização de número homologado</xMotivo><cUF>35</cUF><ano>13</ano><CNPJ>11319532000102</CNPJ><mod>57</mod><serie>1</serie><nCTIni>2017</nCTIni><nCTFin>2017</nCTFin><dhRecbto>2013-12-13T17:43:06</dhRecbto><nProt>135130006325186</nProt></infInut></retInutCTe>"; XmlDocument doc = new XmlDocument(); doc.Load(Functions.StringXmlToStream(vStrXmlRetorno)); XmlNodeList retInutNFeList = doc.GetElementsByTagName("retInutCTe"); foreach (XmlNode retInutNFeNode in retInutNFeList) { XmlElement retInutNFeElemento = (XmlElement)retInutNFeNode; XmlNodeList infInutList = retInutNFeElemento.GetElementsByTagName("infInut"); foreach (XmlNode infInutNode in infInutList) { XmlElement infInutElemento = (XmlElement)infInutNode; if (infInutElemento.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText == "102") //Inutilização de Número Homologado { string strRetInutNFe = retInutNFeNode.OuterXml; dadosPedInut = new DadosPedInut(emp); PedInut(emp); oGerarXML.XmlDistInutCTe(ConteudoXML, strRetInutNFe, NomeArquivoXML, dadosPedInut.versao); //Move o arquivo de solicitação do serviço para a pasta de enviados autorizados StreamWriter sw = File.CreateText(NomeArquivoXML); sw.Write(ConteudoXML.OuterXml); sw.Close(); TFunctions.MoverArquivo(NomeArquivoXML, PastaEnviados.Autorizados, DateTime.Now); //Move o arquivo de Distribuição para a pasta de enviados autorizados string strNomeArqProcInutNFe = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML) + Propriedade.ExtRetorno.ProcInutCTe; TFunctions.MoverArquivo(strNomeArqProcInutNFe, PastaEnviados.Autorizados, DateTime.Now); } else { //Deletar o arquivo de solicitação do serviço da pasta de envio Functions.DeletarArquivo(NomeArquivoXML); } } } }
/// <summary> /// Na tentativa de somente validar ou assinar o XML se encontrar um erro vai ser retornado um XML para o ERP /// </summary> /// <param name="Arquivo">Nome do arquivo XML validado</param> /// <param name="PastaXMLRetorno">Pasta de retorno para ser gravado o XML</param> /// <param name="cStat">Status da validação</param> /// <param name="xMotivo">Status descritivo da validação</param> /// <by>Wandrey Mundin Ferreira</by> /// <date>28/05/2009</date> private void GravarXMLRetornoValidacao(string Arquivo, string cStat, string xMotivo) { int emp = Empresas.FindEmpresaByThread(); //Definir o nome do arquivo de retorno string ArquivoRetorno = Functions.ExtrairNomeArq(Arquivo, ".xml") + "-ret.xml"; var xml = new XDocument(new XDeclaration("1.0", "utf-8", null), new XElement("Validacao", new XElement(NFe.Components.TpcnResources.cStat.ToString(), cStat), new XElement(NFe.Components.TpcnResources.xMotivo.ToString(), xMotivo))); xml.Save(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + ArquivoRetorno); }
public override void Execute() { try { int emp = Empresas.FindEmpresaByThread(); DadosNFeClass oDadosNfe = LerXMLNFe(ConteudoXML); AssinarValidarXMLNFe(ConteudoXML); //Montar lote de nfe FluxoNfe oFluxoNfe = new FluxoNfe(); string cError = ""; try { if (!oFluxoNfe.NFeComLote(oDadosNfe.chavenfe)) { XmlDocument xmlLote = LoteNfe(ConteudoXML, NomeArquivoXML, oDadosNfe.versao); TaskNFeRecepcao nfeRecepcao = new TaskNFeRecepcao(xmlLote); nfeRecepcao.Execute(); } } catch (IOException ex) { cError = (ex.InnerException != null ? ex.InnerException.Message : ex.Message); } catch (Exception ex) { cError = (ex.InnerException != null ? ex.InnerException.Message : ex.Message); } if (!string.IsNullOrEmpty(cError)) { try { // grava o arquivo de erro oAux.GravarArqErroERP(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".err", cError); // move o arquivo para a pasta de erro oAux.MoveArqErro(NomeArquivoXML); } catch { // A principio não vou fazer nada Wandrey 24/04/2011 } } } catch { } }
/// <summary> /// Fazer a leitura do conteúdo do XML de consulta situação do lote rps e disponibilizar conteúdo em um objeto para analise /// </summary> /// <param name="arquivoXML">Arquivo XML que é para efetuar a leitura</param> private void PedSitLoteRps(string arquivoXML) { int emp = Empresas.FindEmpresaByThread(); XmlDocument doc = new XmlDocument(); doc.Load(arquivoXML); XmlNodeList infConsList = doc.GetElementsByTagName("ConsultarSituacaoLoteRpsEnvio"); foreach (XmlNode infConsNode in infConsList) { XmlElement infConsElemento = (XmlElement)infConsNode; } }
private void LerRetDPEC() { int emp = Empresas.FindEmpresaByThread(); XmlDocument doc = new XmlDocument(); MemoryStream msXml = Functions.StringXmlToStream(this.vStrXmlRetorno); doc.Load(msXml); XmlNodeList retDPECList = doc.GetElementsByTagName("retDPEC"); foreach (XmlNode retDPECNode in retDPECList) { XmlElement retDPECElemento = (XmlElement)retDPECNode; XmlNodeList infDPECRegList = retDPECElemento.GetElementsByTagName("infDPECReg"); foreach (XmlNode infDPECRegNode in infDPECRegList) { XmlElement infDPECRegElemento = (XmlElement)infDPECRegNode; if (infDPECRegElemento.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText == "124" || infDPECRegElemento.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText == "125") //DPEC Homologado { string cChaveNFe = infDPECRegElemento.GetElementsByTagName(NFe.Components.TpcnResources.chNFe.ToString())[0].InnerText; string dhRegDPEC = infDPECRegElemento.GetElementsByTagName("dhRegDPEC")[0].InnerText; DateTime dtEmissaoDPEC = new DateTime(Convert.ToInt16(dhRegDPEC.Substring(0, 4)), Convert.ToInt16(dhRegDPEC.Substring(5, 2)), Convert.ToInt16(dhRegDPEC.Substring(8, 2))); //Move o arquivo de solicitação do serviço para a pasta de enviados autorizados TFunctions.MoverArquivo(NomeArquivoXML, PastaEnviados.Autorizados, dtEmissaoDPEC); //Gravar o XML retornado pelo WebService do SEFAZ na pasta de autorizados. Wandrey 25/11/2010 string nomePastaEnviado = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.Autorizados.ToString() + "\\" + Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString(dtEmissaoDPEC); oGerarXML.XmlRetorno(Propriedade.ExtEnvio.EnvDPEC_XML, Propriedade.ExtRetorno.retDPEC_XML, vStrXmlRetorno, nomePastaEnviado); } else { //Deletar o arquivo de solicitação do serviço da pasta de envio Functions.DeletarArquivo(NomeArquivoXML); } } } }
public TaskMDFeRecepcao(string arquivo) { int emp = Empresas.FindEmpresaByThread(); if (Empresas.Configuracoes[emp].IndSincMDFe) { Servico = Servicos.MDFeEnviarLoteSinc; } else { Servico = Servicos.MDFeEnviarLote; } NomeArquivoXML = arquivo; ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(arquivo); }
/// <summary> /// Efetua a leitura do XML de retorno do processamento da Inutilização /// </summary> /// <by>Wandrey Mundin Ferreira</by> /// <date>21/04/2009</date> private void LerRetornoInut() { int emp = Empresas.FindEmpresaByThread(); XmlDocument doc = new XmlDocument(); MemoryStream msXml = Functions.StringXmlToStream(vStrXmlRetorno); doc.Load(msXml); XmlNodeList retInutNFeList = doc.GetElementsByTagName("retInutNFe"); foreach (XmlNode retInutNFeNode in retInutNFeList) { XmlElement retInutNFeElemento = (XmlElement)retInutNFeNode; XmlNodeList infInutList = retInutNFeElemento.GetElementsByTagName("infInut"); foreach (XmlNode infInutNode in infInutList) { XmlElement infInutElemento = (XmlElement)infInutNode; if (infInutElemento.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText == "102") //Inutilização de Número Homologado { string strRetInutNFe = retInutNFeNode.OuterXml; oGerarXML.XmlDistInut(NomeArquivoXML, strRetInutNFe); //Move o arquivo de solicitação do serviço para a pasta de enviados autorizados TFunctions.MoverArquivo(NomeArquivoXML, PastaEnviados.Autorizados, DateTime.Now); //Move o arquivo de Distribuição para a pasta de enviados autorizados string strNomeArqProcInutNFe = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML) + Propriedade.ExtRetorno.ProcInutNFe; TFunctions.MoverArquivo(strNomeArqProcInutNFe, PastaEnviados.Autorizados, DateTime.Now); } else { //Deletar o arquivo de solicitação do serviço da pasta de envio Functions.DeletarArquivo(NomeArquivoXML); } } } }
public TaskMDFeRecepcao(XmlDocument conteudoXML) { int emp = Empresas.FindEmpresaByThread(); if (Empresas.Configuracoes[emp].IndSincMDFe) { Servico = Servicos.MDFeEnviarLoteSinc; } else { Servico = Servicos.MDFeEnviarLote; } ConteudoXML = conteudoXML; ConteudoXML.PreserveWhitespace = false; NomeArquivoXML = Empresas.Configuracoes[emp].PastaXmlEnvio + "\\temp\\" + conteudoXML.GetElementsByTagName(TpcnResources.idLote.ToString())[0].InnerText + Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML; }
public override void Execute() { Servico = Servicos.DANFERelatorio; int emp = Empresas.FindEmpresaByThread(); DateTime datai = DateTime.MinValue, dataf = DateTime.MaxValue; bool imprimir = false; string exportarPasta = "Enviados"; string fm = ""; try { if (this.vXmlNfeDadosMsgEhXML) { #if modelo_xml <?xml version = "1.0" encoding = "utf-8"?> < dados > < DataInicial > 2014 - 1 - 1 < / DataInicial > < DataFinal > 2014 - 12 - 1 < / DataFinal > < Imprimir > true </ Imprimir> < ExportarPasta > Enviar | Enviados | Erros </ ExportarPasta> < / dados > #endif Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Path.GetFileName(NomeArquivoXML.Replace(Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).RetornoXML).Replace(".xml", ".err")))); XmlDocument doc = new XmlDocument(); doc.Load(NomeArquivoXML); foreach (XmlNode node in doc.GetElementsByTagName("dados")) { XmlElement elementConfig = (XmlElement)node; exportarPasta = Functions.LerTag(elementConfig, "ExportarPasta", "Enviados"); datai = Convert.ToDateTime(Functions.LerTag(elementConfig, "DataInicial", "2001-1-1")); dataf = Convert.ToDateTime(Functions.LerTag(elementConfig, "DataFinal", "2999-1-1")); imprimir = Convert.ToBoolean(Functions.LerTag(elementConfig, "Imprimir", "true")); } fm = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).RetornoXML; }
private void ValidarCertificadoA3(bool salvando) { Wait.Show("Validando provider..."); CertificadoProviders certificadoProviders = new CertificadoProviders(empresa.X509Certificado, empresa.PastaXmlEnvio, Empresas.FindEmpresaByThread(), empresa.CertificadoPIN); CertProviders xCertProviders = new CertProviders(); xCertProviders.NameKey = cboProviders.SelectedItem.ToString(); xCertProviders.Type = certificadoProviders.GetProviderType(xCertProviders.NameKey); if (certificadoProviders.TestarProvider(xCertProviders)) { Wait.Close(); if (!salvando) { MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Provider Válido, XML assinado com sucesso.", "Validação do Provider - Resultado:", MessageBoxButtons.OK); } } else { Wait.Close(); MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Provider Inválido, não foi possível assinar um XML com este provider.", "Validação do Provider - Resultado:", MessageBoxButtons.OK); if (salvando) { throw new Exception("Não foi possível salvar a configuração."); } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvCCe_XML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvCancelamento_XML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvManifestacao_XML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedEve, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvCCe_XML) + Propriedade.ExtRetorno.retEnvCCe_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvCancelamento_XML) + Propriedade.ExtRetorno.retCancelamento_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvManifestacao_XML) + Propriedade.ExtRetorno.retManifestacao_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedEve) + Propriedade.ExtRetorno.Eve_ERR)); DadosenvEvento eve = new DadosenvEvento(); EnvEvento(emp, eve); } if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedSit_XML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlErro, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML))); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML) + Propriedade.ExtRetorno.Sit_ERR)); DadosPedSit sit = new DadosPedSit(); PedSit(emp, sit); } if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedSta_XML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML) + Propriedade.ExtRetorno.Sta_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML) + "-ped-sta-ret.xml")); DadosPedSta sta = new DadosPedSta(); PedSta(emp, sta); } }
/// <summary> /// Grava XML com algumas informações do aplicativo, dentre elas os dados do certificado digital configurado nos parâmetros, versão, última modificação, etc. /// </summary> /// <param name="sArquivo">Pasta e nome do arquivo XML a ser gravado com as informações</param> public void GravarXMLInformacoes(string sArquivo, bool somenteConfigGeral) { int emp = Empresas.FindEmpresaByThread(); string cStat = "1"; string xMotivo = "Consulta efetuada com sucesso"; //Ler os dados do certificado digital string sSubject = ""; string sValIni = ""; string sValFin = ""; if (!somenteConfigGeral) { CertificadoDigital cert = new CertificadoDigital(); if (Empresas.Configuracoes[emp].UsaCertificado) { if (cert.PrepInfCertificado(Empresas.Configuracoes[emp])) { sSubject = cert.sSubject; sValIni = cert.dValidadeInicial.ToString("dd/MM/yyyy HH:mm:ss"); sValFin = cert.dValidadeFinal.ToString("dd/MM/yyyy HH:mm:ss"); } else { //if (!Empresas.Configuracoes[emp].UsaCertificado) // xMotivo = "Empresa sem certificado digital informado e/ou não necessário"; //else { cStat = "2"; xMotivo = "Certificado digital não foi localizado"; } } } else { xMotivo = "Empresa sem certificado digital informado e/ou não necessário"; } } //danasa 22/7/2011 //pega a data da ultima modificacao do 'uninfe.exe' diretamente porque pode ser que esteja sendo executado o servico //então, precisamos dos dados do uninfe.exe e não do servico string dtUltModif; URLws item; string tipo = ""; dtUltModif = File.GetLastWriteTime(Propriedade.NomeAplicacao + ".exe").ToString("dd/MM/yyyy - HH:mm:ss"); //Gravar o XML com as informações do aplicativo try { bool isXml = false; object oXmlGravar; if (Path.GetExtension(sArquivo).ToLower() == ".txt") { oXmlGravar = new System.IO.StringWriter(); } else { isXml = true; XmlWriterSettings oSettings = new XmlWriterSettings(); UTF8Encoding c = new UTF8Encoding(true); //Para começar, vamos criar um XmlWriterSettings para configurar nosso XML oSettings.Encoding = c; oSettings.Indent = true; oSettings.IndentChars = ""; oSettings.NewLineOnAttributes = false; oSettings.OmitXmlDeclaration = false; //Agora vamos criar um XML Writer oXmlGravar = XmlWriter.Create(sArquivo, oSettings); } //Abrir o XML if (isXml) { ((XmlWriter)oXmlGravar).WriteStartDocument(); ((XmlWriter)oXmlGravar).WriteStartElement("retConsInf"); } Functions.GravaTxtXml(oXmlGravar, NFe.Components.TpcnResources.cStat.ToString(), cStat); Functions.GravaTxtXml(oXmlGravar, NFe.Components.TpcnResources.xMotivo.ToString(), xMotivo); if (!somenteConfigGeral) { if (Empresas.Configuracoes[emp].UsaCertificado) { //Dados do certificado digital if (isXml) { ((XmlWriter)oXmlGravar).WriteStartElement("DadosCertificado"); } Functions.GravaTxtXml(oXmlGravar, "sSubject", sSubject); Functions.GravaTxtXml(oXmlGravar, "dValIni", sValIni); Functions.GravaTxtXml(oXmlGravar, "dValFin", sValFin); if (isXml) { ((XmlWriter)oXmlGravar).WriteEndElement(); //DadosCertificado } } } //Dados gerais do Aplicativo if (isXml) { ((XmlWriter)oXmlGravar).WriteStartElement("DadosUniNfe"); } Functions.GravaTxtXml(oXmlGravar, NFe.Components.TpcnResources.versao.ToString(), Propriedade.Versao); Functions.GravaTxtXml(oXmlGravar, "dUltModif", dtUltModif); Functions.GravaTxtXml(oXmlGravar, "PastaExecutavel", Propriedade.PastaExecutavel); Functions.GravaTxtXml(oXmlGravar, "NomeComputador", Environment.MachineName); Functions.GravaTxtXml(oXmlGravar, "UsuarioComputador", Environment.UserName); //danasa 22/7/2011 Functions.GravaTxtXml(oXmlGravar, "ExecutandoPeloServico", Propriedade.ServicoRodando.ToString()); Functions.GravaTxtXml(oXmlGravar, "ConexaoInternet", Functions.IsConnectedToInternet().ToString()); if (isXml) { ((XmlWriter)oXmlGravar).WriteEndElement(); //DadosUniNfe } //Dados das configurações do aplicativo if (isXml) { ((XmlWriter)oXmlGravar).WriteStartElement(NFeStrConstants.nfe_configuracoes); } //Functions.GravaTxtXml(oXmlGravar, NFe.Components.NFeStrConstants.DiretorioSalvarComo, Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString()); if (!somenteConfigGeral) { bool hasFTP = false; foreach (var pT in Empresas.Configuracoes[emp].GetType().GetProperties()) { if (pT.CanWrite) { if (pT.Name.Equals("diretorioSalvarComo")) { continue; } if (isXml) { if (!hasFTP && pT.Name.StartsWith("FTP")) { ((XmlWriter)oXmlGravar).WriteStartElement("FTP"); hasFTP = true; } else if (hasFTP && !pT.Name.StartsWith("FTP")) { ((XmlWriter)oXmlGravar).WriteEndElement(); hasFTP = false; } } object v = pT.GetValue(Empresas.Configuracoes[emp], null); NFe.Components.Functions.GravaTxtXml(oXmlGravar, pT.Name, v == null ? "" : v.ToString()); } } if (hasFTP && isXml) { ((XmlWriter)oXmlGravar).WriteEndElement(); } /// /// o ERP poderá verificar se determinado servico está definido no UniNFe /// foreach (webServices list in WebServiceProxy.webServicesList) { if (list.ID == Empresas.Configuracoes[emp].UnidadeFederativaCodigo) { if (isXml) { ((XmlWriter)oXmlGravar).WriteStartElement(list.UF); } if (Empresas.Configuracoes[emp].AmbienteCodigo == 2) { item = list.LocalHomologacao; if (isXml) { ((XmlWriter)oXmlGravar).WriteStartElement("Homologacao"); } else { tipo = list.UF + ".Homologacao."; } } else { item = list.LocalProducao; if (isXml) { ((XmlWriter)oXmlGravar).WriteStartElement("Producao"); } else { tipo = list.UF + ".Producao."; } } switch (Empresas.Configuracoes[emp].Servico) { case TipoAplicativo.Nfse: Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeCancelar.ToString(), (!string.IsNullOrEmpty(item.CancelarNfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultar.ToString(), (!string.IsNullOrEmpty(item.ConsultarNfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultarLoteRps.ToString(), (!string.IsNullOrEmpty(item.ConsultarLoteRps)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultarPorRps.ToString(), (!string.IsNullOrEmpty(item.ConsultarNfsePorRps)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultarNFSePDF.ToString(), (!string.IsNullOrEmpty(item.ConsultarNFSePDF)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultarNFSePNG.ToString(), (!string.IsNullOrEmpty(item.ConsultarNFSePNG)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultarURL.ToString(), (!string.IsNullOrEmpty(item.ConsultarURLNfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultarSituacaoLoteRps.ToString(), (!string.IsNullOrEmpty(item.ConsultarSituacaoLoteRps)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeRecepcionarLoteRps.ToString(), (!string.IsNullOrEmpty(item.RecepcionarLoteRps)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeInutilizarNFSe.ToString(), (!string.IsNullOrEmpty(item.InutilizarNFSe)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeObterNotaFiscal.ToString(), (!string.IsNullOrEmpty(item.ObterNotaFiscal)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeConsultaSequenciaLoteNotaRPS.ToString(), (!string.IsNullOrEmpty(item.ConsultaSequenciaLoteNotaRPS)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.NFSeSubstituirNfse.ToString(), (!string.IsNullOrEmpty(item.SubstituirNfse)).ToString()); break; default: if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.NFCe || Empresas.Configuracoes[emp].Servico == TipoAplicativo.Nfe || Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos) { Functions.GravaTxtXml(oXmlGravar, tipo + "NFeConsulta", (!string.IsNullOrEmpty(item.NFeConsulta)).ToString()); //Functions.GravaTxtXml(oXmlGravar, tipo + "NFeRecepcao", (!string.IsNullOrEmpty(item.NFeRecepcao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeRecepcaoEvento", (!string.IsNullOrEmpty(item.NFeRecepcaoEvento)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeConsultaCadastro", (!string.IsNullOrEmpty(item.NFeConsultaCadastro)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeInutilizacao", (!string.IsNullOrEmpty(item.NFeInutilizacao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeManifDest", (!string.IsNullOrEmpty(item.NFeManifDest)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeStatusServico", (!string.IsNullOrEmpty(item.NFeStatusServico)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeAutorizacao", (!string.IsNullOrEmpty(item.NFeAutorizacao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "NFeRetAutorizacao", (!string.IsNullOrEmpty(item.NFeRetAutorizacao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "DFeRecepcao", (!string.IsNullOrEmpty(item.DFeRecepcao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.LMCAutorizacao.ToString(), (!string.IsNullOrEmpty(item.LMCAutorizacao)).ToString()); } if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.MDFe || Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos) { Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeRecepcao", (!string.IsNullOrEmpty(item.MDFeRecepcao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeRecepcaoSinc", (!string.IsNullOrEmpty(item.MDFeRecepcaoSinc)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeRetRecepcao", (!string.IsNullOrEmpty(item.MDFeRetRecepcao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeConsulta", (!string.IsNullOrEmpty(item.MDFeConsulta)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeStatusServico", (!string.IsNullOrEmpty(item.MDFeStatusServico)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.MDFeRecepcaoEvento.ToString(), (!string.IsNullOrEmpty(item.MDFeRecepcaoEvento)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.MDFeConsultaNaoEncerrado.ToString(), (!string.IsNullOrEmpty(item.MDFeNaoEncerrado)).ToString()); } if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.Cte || Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos) { Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.CTeRecepcaoEvento.ToString(), (!string.IsNullOrEmpty(item.CTeRecepcaoEvento)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "CTeConsultaCadastro", (!string.IsNullOrEmpty(item.CTeConsultaCadastro)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "CTeInutilizacao", (!string.IsNullOrEmpty(item.CTeInutilizacao)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "CTeStatusServico", (!string.IsNullOrEmpty(item.CTeStatusServico)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + "CTeDistribuicaoDFe", (!string.IsNullOrEmpty(item.CTeDistribuicaoDFe)).ToString()); } if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.EFDReinf || Empresas.Configuracoes[emp].Servico == TipoAplicativo.EFDReinfeSocial || Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos) { Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.RecepcaoLoteReinf.ToString(), (!string.IsNullOrEmpty(item.RecepcaoLoteReinf)).ToString()); } if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.eSocial || Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos) { Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.ConsultarLoteeSocial.ToString(), (!string.IsNullOrEmpty(item.ConsultarLoteeSocial)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.RecepcaoLoteeSocial.ToString(), (!string.IsNullOrEmpty(item.RecepcaoLoteeSocial)).ToString()); } Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.CancelarCfse.ToString(), (!string.IsNullOrEmpty(item.CancelarCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.ConfigurarTerminalCfse.ToString(), (!string.IsNullOrEmpty(item.ConfigurarTerminalCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.ConsultarCfse.ToString(), (!string.IsNullOrEmpty(item.ConsultarCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.ConsultarDadosCadastroCfse.ToString(), (!string.IsNullOrEmpty(item.ConsultarDadosCadastroCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.ConsultarLoteCfse.ToString(), (!string.IsNullOrEmpty(item.ConsultarLoteCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.EnviarInformeManutencaoCfse.ToString(), (!string.IsNullOrEmpty(item.EnviarInformeManutencaoCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.InformeTrasmissaoSemMovimentoCfse.ToString(), (!string.IsNullOrEmpty(item.InformeTrasmissaoSemMovimentoCfse)).ToString()); Functions.GravaTxtXml(oXmlGravar, tipo + Servicos.RecepcionarLoteCfse.ToString(), (!string.IsNullOrEmpty(item.RecepcionarLoteCfse)).ToString()); break; } if (isXml) { ((XmlWriter)oXmlGravar).WriteEndElement(); //Ambiente ((XmlWriter)oXmlGravar).WriteEndElement(); //list.UF } } } } //Finalizar o XML if (isXml) { ((XmlWriter)oXmlGravar).WriteEndElement(); //nfe_configuracoes ((XmlWriter)oXmlGravar).WriteEndElement(); //retConsInf ((XmlWriter)oXmlGravar).WriteEndDocument(); ((XmlWriter)oXmlGravar).Flush(); ((XmlWriter)oXmlGravar).Close(); } else { ((StringWriter)oXmlGravar).Flush(); File.WriteAllText(sArquivo, ((StringWriter)oXmlGravar).GetStringBuilder().ToString()); ((StringWriter)oXmlGravar).Close(); } } catch (Exception ex) { Functions.DeletarArquivo(sArquivo); /// /// danasa 8-2009 /// Auxiliar oAux = new Auxiliar(); oAux.GravarArqErroERP(Path.GetFileNameWithoutExtension(sArquivo) + ".err", ex.Message); } }
public override void Execute() { switch (Servico) { case Servicos.DFeEnviar: ExtEnvioDFe = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).EnvioXML; ExtEnvioDFeTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).EnvioTXT; ExtRetornoDFe = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).RetornoXML; ExtRetEnvDFe_ERR = Propriedade.ExtRetorno.retEnvDFe_ERR; break; case Servicos.CTeDistribuicaoDFe: ExtEnvioDFe = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).EnvioXML; ExtEnvioDFeTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).EnvioTXT; ExtRetornoDFe = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).RetornoXML; ExtRetEnvDFe_ERR = Propriedade.ExtRetorno.retEnvDFeCTe_ERR; break; } int emp = Empresas.FindEmpresaByThread(); distDFeInt _distDFeInt = new distDFeInt(); try { if (!this.vXmlNfeDadosMsgEhXML) { ///versao|1.00 ///tpAmb|1 ///cUFAutor|35 ///CNPJ| /// ou ///CPF| ///ultNSU|123456789012345 /// ou ///NSU|123456789012345 List <string> cLinhas = Functions.LerArquivo(NomeArquivoXML); Functions.PopulateClasse(_distDFeInt, cLinhas); string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml"; if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0) { f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f); } // Gerar o XML de envio de DFe a partir do TXT gerado pelo ERP oGerarXML.RecepcaoDFe(f, _distDFeInt); } else { XmlNodeList consdistDFeIntList = ConteudoXML.GetElementsByTagName("distDFeInt"); foreach (XmlNode consdistDFeIntNode in consdistDFeIntList) { XmlElement consdistDFeIntElemento = (XmlElement)consdistDFeIntNode; Functions.PopulateClasse(_distDFeInt, consdistDFeIntElemento); } //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, 991, _distDFeInt.tpAmb, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(991, _distDFeInt.tpAmb, 1, Servico); object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsNFDestEvento, wsProxy.NomeMetodoWS[0], null, this, ExtEnvioDFe, ExtRetornoDFe, true, securityProtocolType); LeRetornoDFe(emp, ConteudoXML); } } catch (Exception ex) { WriteLogError(ex); } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); Execute(emp); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosPedSta = new DadosPedSta(); //Ler o XML para pegar parâmetros de envio PedSta(emp, dadosPedSta); if (vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, dadosPedSta.versao, dadosPedSta.mod, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ var oStatusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = null; if (dadosPedSta.versao != "4.00") { oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico)); wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString()); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSta.versao); } new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oStatusServico, wsProxy.NomeMetodoWS[0], oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML, true, securityProtocolType); } else { string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml"; if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0) { f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f); } // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP oGerarXML.StatusServicoNFe(f, dadosPedSta.tpAmb, dadosPedSta.tpEmis, dadosPedSta.cUF, dadosPedSta.versao); } } catch (Exception ex) { var extRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioTXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, extRet, Propriedade.ExtRetorno.Sta_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de solicitação do serviço, //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar //o arquivo novamente para o webservice //Wandrey 09/03/2010 } } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="wsProxy">Objeto da classe construida do WSDL</param> /// <param name="servicoWS">Objeto da classe de envio do XML</param> /// <param name="metodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <param name="gravaRetorno">Grava o arquivo de retorno para o ERP na execução deste método?</param> public void Invocar(WebServiceProxy wsProxy, object servicoWS, string metodo, object cabecMsg, object servicoNFe, string finalArqEnvio, string finalArqRetorno, bool gravaRetorno, SecurityProtocolType securityProtocolType) { int emp = Empresas.FindEmpresaByThread(); finalArqEnvio = Functions.ExtractExtension(finalArqEnvio); finalArqRetorno = Functions.ExtractExtension(finalArqRetorno); XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = servicoNFe.GetType(); Servicos servico = (Servicos)wsProxy.GetProp(servicoNFe, NFeStrConstants.Servico); docXML = (XmlDocument)(typeServicoNFe.InvokeMember("ConteudoXML", System.Reflection.BindingFlags.GetField, null, servicoNFe, null)); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null)); // Exclui o Arquivo de Erro Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err"); if (docXML == null) { docXML.Load(XmlNfeDadosMsg); } // Validar o Arquivo XML switch (servico) { case Servicos.NFeEnviarLote: case Servicos.NFeEnviarLoteZip: case Servicos.CTeEnviarLote: case Servicos.MDFeEnviarLote: //XML de NFe, CTe e MDFe, na montagem do lote eu valido o XML antes, como o lote quem monta é o XML entendo que não está montando errado, sendo assim, não vou validar novamente o XML para ganhar desempenho. Wandrey 18/09/2016 break; default: ValidarXML validar = new ValidarXML(docXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false); string cResultadoValidacao = validar.ValidarArqXML(docXML, XmlNfeDadosMsg); if (cResultadoValidacao != "") { throw new Exception(cResultadoValidacao); } break; } // Definir Proxy if (ConfiguracaoApp.Proxy) { wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto)); } // Limpa a variável de retorno XmlNode XmlRetorno = null; string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. wsProxy.SetProp(servicoWS, "Timeout", 60000); if (cabecMsg != null) { switch (servico) { case Servicos.MDFePedidoConsultaSituacao: case Servicos.MDFePedidoSituacaoLote: case Servicos.MDFeEnviarLote: case Servicos.MDFeConsultaStatusServico: case Servicos.MDFeRecepcaoEvento: case Servicos.MDFeConsultaNaoEncerrado: wsProxy.SetProp(servicoWS, "mdfeCabecMsgValue", cabecMsg); break; case Servicos.CTeInutilizarNumeros: case Servicos.CTePedidoConsultaSituacao: case Servicos.CTePedidoSituacaoLote: case Servicos.CTeEnviarLote: case Servicos.CTeRecepcaoEvento: case Servicos.CTeConsultaStatusServico: case Servicos.CteRecepcaoOS: if (wsProxy.GetProp(cabecMsg, TpcnResources.cUF.ToString()).ToString() == "50") //Mato Grosso do Sul fugiu o padrão nacional { try { wsProxy.SetProp(servicoWS, "cteCabecMsg", cabecMsg); } catch //Se der erro é pq não está no ambiente normal então tem que ser o nome padrão pois Mato Grosso do Sul fugiu o padrão nacional. { wsProxy.SetProp(servicoWS, "cteCabecMsgValue", cabecMsg); } } else { wsProxy.SetProp(servicoWS, "cteCabecMsgValue", cabecMsg); } break; case Servicos.CTeDistribuicaoDFe: case Servicos.DFeEnviar: break; case Servicos.LMCAutorizacao: break; default: wsProxy.SetProp(servicoWS, "nfeCabecMsgValue", cabecMsg); break; } } //Definir novamente o protocolo de segurança, pois é uma propriedade estática e o seu valor pode ser alterado antes do envio. Wandrey 03/05/2016 ServicePointManager.SecurityProtocol = securityProtocolType; // Envio da NFe Compactada - Renan if (servico == Servicos.NFeEnviarLoteZip) { string encodedData = TFunctions.CompressXML(docXML); XmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { encodedData }); } else { XmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { docXML }); } if (XmlRetorno == null) { throw new Exception("Erro de envio da solicitação do serviço: " + servico.ToString()); } typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { XmlRetorno.OuterXml }); // Registra o retorno de acordo com o status obtido if (gravaRetorno) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" }); } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="wsProxy">Objeto da classe construida do WSDL</param> /// <param name="servicoWS">Objeto da classe de envio do XML</param> /// <param name="metodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy wsProxy, object servicoWS, string metodo, string cabecMsg, object servicoNFe, string finalArqEnvio, string finalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe, SecurityProtocolType securityProtocolType) { int emp = Empresas.FindEmpresaByThread(); finalArqEnvio = Functions.ExtractExtension(finalArqEnvio); finalArqRetorno = Functions.ExtractExtension(finalArqRetorno); XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = servicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null)); // Exclui o Arquivo de Erro Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err"); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { switch (padraoNFSe) { case PadroesNFSe.SMARAPD: break; default: throw new Exception(cResultadoValidacao); } } //Definir novamente o protocolo de segurança, pois é uma propriedade estática e o seu valor pode ser alterado antes do envio. Wandrey 03/05/2016 ServicePointManager.SecurityProtocol = securityProtocolType; // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy && wsProxy != null) { switch (padraoNFSe) { case PadroesNFSe.BETHA: wsProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto); break; default: wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto)); break; } } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (wsProxy != null) { switch (padraoNFSe) { case PadroesNFSe.NOTAINTELIGENTE: case PadroesNFSe.BETHA: break; default: wsProxy.SetProp(servicoWS, "Timeout", 120000); break; } } //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (metodo) { case "ConsultarSituacaoLoteRps": strRetorno = wsProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarLoteRps": strRetorno = wsProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "CancelarNfse": strRetorno = wsProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfse": strRetorno = wsProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfsePorRps": strRetorno = wsProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "RecepcionarLoteRps": strRetorno = wsProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; } break; #endregion Padrão BETHA #region NOTAINTELIGENTE case PadroesNFSe.NOTAINTELIGENTE: //NFe.Components.PClaudioMG.api_portClient wsClaudio = (NFe.Components.PClaudioMG.api_portClient)servicoWS; switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: //strRetorno = wsClaudio.RecepcionarLoteRps(docXML.OuterXml.ToString()); break; } //strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml.ToString() }); break; #endregion NOTAINTELIGENTE #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE_ASSESSORPUBLICO: int operacao; string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS); switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: operacao = 1; break; case Servicos.NFSeCancelar: operacao = 2; break; default: operacao = 3; break; } strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion Padrão ISSONLINE #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion Padrão Blumenau-SC #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion Padrão Paulistana #region TECNOSISTEMAS case PadroesNFSe.TECNOSISTEMAS: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml, cabecMsg.ToString() }); break; #endregion TECNOSISTEMAS #region SMARAPD case PadroesNFSe.SMARAPD: if (metodo == "nfdEntradaCancelar") { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), docXML.OuterXml }); } else if (metodo == "nfdSaida") { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo.ToString(), docXML.OuterXml }); } else if (metodo == "urlNfd") { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToInt32(docXML.GetElementsByTagName("codigoMunicipio")[0].InnerText), Convert.ToInt32(docXML.GetElementsByTagName("numeroNfd")[0].InnerText), Convert.ToInt32(docXML.GetElementsByTagName("serieNfd")[0].InnerText), docXML.GetElementsByTagName("inscricaoMunicipal")[0].InnerText }); } else { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo, docXML.OuterXml }); } break; #endregion SMARAPD #region ISSWEB case PadroesNFSe.ISSWEB: string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText; string cnpj = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText; strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cnpj, docXML.OuterXml, versao }); break; #endregion ISSWEB #region NA_INFORMATICA case PadroesNFSe.NA_INFORMATICA: switch (servicoNFSe) { #region Recepcionar Lote RPS - Assíncrono case Servicos.NFSeRecepcionarLoteRps: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.RecepcionarLoteRps dadosEnvio = new Components.PCorumbaMS.RecepcionarLoteRps(); // Components.PCorumbaMS.RecepcionarLoteRpsResponse dadosRetorno = new Components.PCorumbaMS.RecepcionarLoteRpsResponse(); // dadosEnvio.EnviarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.RecepcionarLoteRps dadosEnvio = new Components.HCorumbaMS.RecepcionarLoteRps(); // Components.HCorumbaMS.RecepcionarLoteRpsResponse dadosRetorno = new Components.HCorumbaMS.RecepcionarLoteRpsResponse(); // dadosEnvio.EnviarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsResposta; //} break; #endregion Recepcionar Lote RPS - Assíncrono #region Recepcionar Lote RPS - Síncrono case Servicos.NFSeRecepcionarLoteRpsSincrono: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.RecepcionarLoteRpsSincrono dadosEnvio = new Components.PCorumbaMS.RecepcionarLoteRpsSincrono(); // Components.PCorumbaMS.RecepcionarLoteRpsSincronoResponse dadosRetorno = new Components.PCorumbaMS.RecepcionarLoteRpsSincronoResponse(); // dadosEnvio.EnviarLoteRpsSincronoEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRpsSincrono(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsSincronoResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.RecepcionarLoteRpsSincrono dadosEnvio = new Components.HCorumbaMS.RecepcionarLoteRpsSincrono(); // Components.HCorumbaMS.RecepcionarLoteRpsSincronoResponse dadosRetorno = new Components.HCorumbaMS.RecepcionarLoteRpsSincronoResponse(); // dadosEnvio.EnviarLoteRpsSincronoEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRpsSincrono(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsSincronoResposta; //} break; #endregion Recepcionar Lote RPS - Síncrono #region Cancelar RPS case Servicos.NFSeCancelar: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.CancelarNfse dadosEnvio = new Components.PCorumbaMS.CancelarNfse(); // Components.PCorumbaMS.CancelarNfseResponse dadosRetorno = new Components.PCorumbaMS.CancelarNfseResponse(); // dadosEnvio.CancelarNfseEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).CancelarNfse(dadosEnvio); // strRetorno = dadosRetorno.CancelarNfseResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.CancelarNfse dadosEnvio = new Components.HCorumbaMS.CancelarNfse(); // Components.HCorumbaMS.CancelarNfseResponse dadosRetorno = new Components.HCorumbaMS.CancelarNfseResponse(); // dadosEnvio.CancelarNfseEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).CancelarNfse(dadosEnvio); // strRetorno = dadosRetorno.CancelarNfseResposta; //} break; #endregion Cancelar RPS #region Consultar Lote RPS case Servicos.NFSeConsultarLoteRps: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.ConsultarLoteRps dadosEnvio = new Components.PCorumbaMS.ConsultarLoteRps(); // Components.PCorumbaMS.ConsultarLoteRpsResponse dadosRetorno = new Components.PCorumbaMS.ConsultarLoteRpsResponse(); // dadosEnvio.ConsultarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarLoteRpsResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.ConsultarLoteRps dadosEnvio = new Components.HCorumbaMS.ConsultarLoteRps(); // Components.HCorumbaMS.ConsultarLoteRpsResponse dadosRetorno = new Components.HCorumbaMS.ConsultarLoteRpsResponse(); // dadosEnvio.ConsultarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarLoteRpsResposta; //} break; #endregion Consultar Lote RPS #region Consulta Situação Nfse case Servicos.NFSeConsultar: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.ConsultarNfsePorFaixa dadosEnvio = new Components.PCorumbaMS.ConsultarNfsePorFaixa(); // Components.PCorumbaMS.ConsultarNfsePorFaixaResponse dadosRetorno = new Components.PCorumbaMS.ConsultarNfsePorFaixaResponse(); // dadosEnvio.ConsultarNfsePorFaixaEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorFaixa(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorFaixaResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.ConsultarNfsePorFaixa dadosEnvio = new Components.HCorumbaMS.ConsultarNfsePorFaixa(); // Components.HCorumbaMS.ConsultarNfsePorFaixaResponse dadosRetorno = new Components.HCorumbaMS.ConsultarNfsePorFaixaResponse(); // dadosEnvio.ConsultarNfsePorFaixaEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorFaixa(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorFaixaResposta; //} break; #endregion Consulta Situação Nfse #region Consulta Situação Nfse por RPS case Servicos.NFSeConsultarPorRps: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.ConsultarNfsePorRps dadosEnvio = new Components.PCorumbaMS.ConsultarNfsePorRps(); // Components.PCorumbaMS.ConsultarNfsePorRpsResponse dadosRetorno = new Components.PCorumbaMS.ConsultarNfsePorRpsResponse(); // dadosEnvio.ConsultarNfsePorRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorRpsResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.ConsultarNfsePorRps dadosEnvio = new Components.HCorumbaMS.ConsultarNfsePorRps(); // Components.HCorumbaMS.ConsultarNfsePorRpsResponse dadosRetorno = new Components.HCorumbaMS.ConsultarNfsePorRpsResponse(); // dadosEnvio.ConsultarNfsePorRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorRpsResposta; //} break; #endregion Consulta Situação Nfse por RPS } break; #endregion NA_INFORMATICA #region ABASE case PadroesNFSe.ABASE: if (servicoNFSe == Servicos.NFSeConsultarPorRps) { goto default; } else { XmlNode xmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); strRetorno = xmlRetorno.OuterXml; } break; #endregion ABASE case PadroesNFSe.LEXSOM: XmlNode result = wsProxy.InvokeXML(servicoWS, metodo, new object[] { docXML }); strRetorno = result.OuterXml; break; default: #region Demais padrões if (string.IsNullOrEmpty(cabecMsg)) { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml }); } else { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); } break; #endregion Demais padrões } #region gerar arquivos assinados(somente debug) #if DEBUG string path = Application.StartupPath + "\\teste_assintura\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true); sw.Write(docXML.OuterXml); sw.Close(); StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true); sw2.Write(cabecMsg.ToString()); sw2.Close(); #endif #endregion gerar arquivos assinados(somente debug) //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (finalArqEnvio != string.Empty && finalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" }); } }