/// <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 } } }
/// <summary> /// Faz a leitura do XML de pedido do status de serviço /// </summary> /// <param name="cArquivoXml">Nome do XML a ser lido</param> /// <by>Wandrey Mundin Ferreira</by> /// protected override void PedSta(int emp, DadosPedSta dadosPedSta) { base.PedSta(emp, dadosPedSta); if (string.IsNullOrEmpty(dadosPedSta.versao)) { throw new Exception(NFeStrConstants.versaoError); } }
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); } }
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); } }
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 } } }
protected virtual void PedSta(int emp, DadosPedSta dadosPedSta) { dadosPedSta.tpAmb = 0; dadosPedSta.cUF = Empresas.Configuracoes[emp].UnidadeFederativaCodigo; dadosPedSta.tpEmis = Empresas.Configuracoes[emp].tpEmis; dadosPedSta.versao = "";// NFe.ConvertTxt.versoes.VersaoXMLStatusServico; /// /// danasa 12-9-2009 /// if (Path.GetExtension(this.NomeArquivoXML).ToLower() == ".txt") { // tpEmis|1 <<< opcional >>> // tpAmb|1 // cUF|35 // versao|3.10 List<string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML); Functions.PopulateClasse(dadosPedSta, cLinhas); } else { XmlDocument doc = new XmlDocument(); doc.Load(this.NomeArquivoXML); bool regravar = false; bool isCteMDFe = false; XmlNodeList consStatServList = doc.GetElementsByTagName("consStatServCte"); if (consStatServList.Count == 0) { consStatServList = doc.GetElementsByTagName("consStatServMDFe"); if (consStatServList.Count == 0) consStatServList = doc.GetElementsByTagName("consStatServ"); else isCteMDFe = true; } else isCteMDFe = true; foreach (XmlNode consStatServNode in consStatServList) { XmlElement consStatServElemento = (XmlElement)consStatServNode; dadosPedSta.tpAmb = Convert.ToInt32("0" + consStatServElemento.GetElementsByTagName(TpcnResources.tpAmb.ToString())[0].InnerText); dadosPedSta.versao = consStatServElemento.Attributes[NFe.Components.TpcnResources.versao.ToString()].InnerText; if (consStatServElemento.GetElementsByTagName(TpcnResources.cUF.ToString()).Count != 0) { dadosPedSta.cUF = Convert.ToInt32("0" + consStatServElemento.GetElementsByTagName(TpcnResources.cUF.ToString())[0].InnerText); if (isCteMDFe) { // para que o validador não rejeite, excluo a tag <cUF> doc.DocumentElement.RemoveChild(consStatServElemento.GetElementsByTagName(TpcnResources.cUF.ToString())[0]); regravar = true; } } if (consStatServElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString()).Count != 0) { dadosPedSta.tpEmis = Convert.ToInt16(consStatServElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0].InnerText); // para que o validador não rejeite, excluo a tag <tpEmis> doc.DocumentElement.RemoveChild(consStatServElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0]); regravar = true; } if (consStatServElemento.GetElementsByTagName(TpcnResources.mod.ToString()).Count != 0) { dadosPedSta.mod = consStatServElemento.GetElementsByTagName(TpcnResources.mod.ToString())[0].InnerText; /// para que o validador não rejeite, excluo a tag <mod> doc.DocumentElement.RemoveChild(consStatServElemento.GetElementsByTagName(TpcnResources.mod.ToString())[0]); regravar = true; } } // Salvar o arquivo modificado if (regravar) doc.Save(this.NomeArquivoXML); } }