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 } } }
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, TpcnResources.cUF.ToString(), dadosPedSit.cUF.ToString()); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLCTePedSit); //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. LerRetornoSitCTe(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 } } }
/// <summary> /// Faz a leitura do XML de pedido de consulta da situação da NFe /// </summary> /// <param name="cArquivoXML">Nome do XML a ser lido</param> /// <by>Wandrey Mundin Ferreira</by> /// protected override void PedSit(int emp, DadosPedSit dadosPedSit) { dadosPedSit.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; dadosPedSit.chNFe = string.Empty; dadosPedSit.tpEmis = Empresas.Configuracoes[emp].tpEmis; dadosPedSit.versao = ""; if (Path.GetExtension(this.NomeArquivoXML).ToLower() == ".txt") { // tpAmb|2 // tpEmis|1 <<< opcional >>> // chNFe|35080600000000000000550000000000010000000000 // versao|3.10 List <string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML); Functions.PopulateClasse(dadosPedSit, cLinhas); if (dadosPedSit.versao == "2.00") { dadosPedSit.versao = "2.01"; } } else { XmlNodeList consSitNFeList = ConteudoXML.GetElementsByTagName("consSitNFe"); foreach (XmlNode consSitNFeNode in consSitNFeList) { XmlElement consSitNFeElemento = (XmlElement)consSitNFeNode; dadosPedSit.tpAmb = Convert.ToInt32("0" + consSitNFeElemento.GetElementsByTagName(TpcnResources.tpAmb.ToString())[0].InnerText); dadosPedSit.chNFe = consSitNFeElemento.GetElementsByTagName(TpcnResources.chNFe.ToString())[0].InnerText; dadosPedSit.versao = consSitNFeElemento.Attributes[TpcnResources.versao.ToString()].Value; dadosPedSit.mod = dadosPedSit.chNFe.Substring(20, 2); //Se alguém ainda gerar com a versão 2.00 vou mudar para a "2.01" para facilitar para o usuário do UniNFe if (dadosPedSit.versao == "2.00") { consSitNFeElemento.Attributes[TpcnResources.versao.ToString()].InnerText = dadosPedSit.versao = "2.01"; } if (consSitNFeElemento.GetElementsByTagName(TpcnResources.tpEmis.ToString()).Count != 0) { this.dadosPedSit.tpEmis = Convert.ToInt16(consSitNFeElemento.GetElementsByTagName(TpcnResources.tpEmis.ToString())[0].InnerText); /// para que o validador não rejeite, excluo a tag <tpEmis> ConteudoXML.DocumentElement.RemoveChild(consSitNFeElemento.GetElementsByTagName(TpcnResources.tpEmis.ToString())[0]); /// salvo o arquivo modificado } } } if (this.dadosPedSit.versao == "") { throw new Exception(NFeStrConstants.versaoError); } }
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 { dadosPedSit = new DadosPedSit(); PedSit(emp, dadosPedSit); if (vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis, dadosPedSit.versao, dadosPedSit.mod, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oConsulta = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = null; if (dadosPedSit.versao != "4.00") { oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSit.cUF, Servico)); wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSit.cUF.ToString()); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSit.versao); } new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsulta, wsProxy.NomeMetodoWS[0], oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).RetornoXML, false, securityProtocolType); //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. LerRetornoSitNFe(dadosPedSit.chNFe); //Gerar o retorno para o ERP oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).RetornoXML, this.vStrXmlRetorno); } 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); } oGerarXML.Consulta(TipoAplicativo.Nfe, f, dadosPedSit.tpAmb, dadosPedSit.tpEmis, dadosPedSit.chNFe, dadosPedSit.versao); } } catch (Exception ex) { string ExtEnvio = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML { ExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML; } else //Se for TXT { ExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioTXT; } try { TFunctions.GravarArqErroServico(NomeArquivoXML, ExtEnvio, 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 } } }
protected virtual void PedSit(int emp, DadosPedSit dadosPedSit) { dadosPedSit.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; dadosPedSit.chNFe = string.Empty; XmlDocument doc = new XmlDocument(); doc.Load(this.NomeArquivoXML); bool doSave = false; XmlNodeList consSitNFeList = doc.GetElementsByTagName("consSitCTe"); if (consSitNFeList.Count == 0) { consSitNFeList = doc.GetElementsByTagName("consSitMDFe"); } foreach (XmlNode consSitNFeNode in consSitNFeList) { XmlElement consSitNFeElemento = (XmlElement)consSitNFeNode; dadosPedSit.tpAmb = Convert.ToInt32("0" + consSitNFeElemento.GetElementsByTagName(TpcnResources.tpAmb.ToString())[0].InnerText); dadosPedSit.chNFe = Functions.LerTag(consSitNFeElemento, TpcnResources.chCTe.ToString(), "") + Functions.LerTag(consSitNFeElemento, TpcnResources.chMDFe.ToString(), ""); if (consSitNFeElemento.GetElementsByTagName(TpcnResources.tpEmis.ToString()).Count != 0) { dadosPedSit.tpEmis = Convert.ToInt16(consSitNFeElemento.GetElementsByTagName(TpcnResources.tpEmis.ToString())[0].InnerText); /// para que o validador não rejeite, excluo a tag <tpEmis> doc.DocumentElement.RemoveChild(consSitNFeElemento.GetElementsByTagName(TpcnResources.tpEmis.ToString())[0]); /// salvo o arquivo modificado doSave = true; } } /// salvo o arquivo modificado if (doSave) doc.Save(this.NomeArquivoXML); }