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() { 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; }
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() { 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(); 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 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosConsCad = new DadosConsCad(); //Ler o XML para pegar parâmetros de envio ConsCad(NomeArquivoXML); if (this.vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosConsCad.cUF, dadosConsCad.tpAmb, (int)NFe.Components.TipoEmissao.teNormal, dadosConsCad.versao); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oConsCad = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosConsCad.cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosConsCad.cUF.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), this.dadosConsCad.versao); new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsCad, wsProxy.NomeMetodoWS[0], oCabecMsg, this, NFe.Components.Propriedade.ExtEnvio.ConsCad_XML.Replace(".xml", ""), NFe.Components.Propriedade.ExtRetorno.ConsCad_XML.Replace(".xml", ""));//"-cons-cad", "-ret-cons-cad"); } 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 da consulta cadastro do contribuinte a partir do TXT gerado pelo ERP GravarXml(f); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML { ExtRet = Propriedade.ExtEnvio.ConsCad_XML; } else //Se for TXT { ExtRet = Propriedade.ExtEnvio.ConsCad_TXT; } try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.ConsCad_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(); Servico = Servicos.NFeConsultaNFDest; try { oDadosConsultaNFeDest = new DadosConsultaNFeDest(); //Ler o XML para pegar parâmetros de envio EnvConsultaNFeDest(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) { int cUF = Empresas.Configuracoes[emp].UnidadeFederativaCodigo; //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, cUF, oDadosConsultaNFeDest.tpAmb); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(cUF, oDadosConsultaNFeDest.tpAmb, (int)TipoEmissao.teNormal, PadroesNFSe.NaoIdentificado, Servico); object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cUF.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEnvConsultaNFeDest); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsNFDestEvento, wsProxy.NomeMetodoWS[0], oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).RetornoXML, true, securityProtocolType); //Ler o retorno this.LerRetornoConsultaNFeDest(emp); } else { string f = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioTXT) + Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML; if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0) { f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f); } // Gerar o XML de eventos a partir do TXT gerado pelo ERP oGerarXML.EnvioConsultaNFeDest(f, oDadosConsultaNFeDest); } } catch (Exception ex) { try { var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioTXT; //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retConsNFeDest_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 evento, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); distDFeInt _distDFeInt = new distDFeInt(); Servico = Servicos.DFeEnviar; try { if (!this.vXmlNfeDadosMsgEhXML) { ///versao|1.00 ///tpAmb|1 ///cUFAutor|35 ///CNPJ| /// ou ///CPF| ///ultNSU|123456789012345 /// ou ///NSU|123456789012345 List <string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML); Functions.PopulateClasse(_distDFeInt, cLinhas); string f = System.IO.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 { XmlDocument doc = new XmlDocument(); doc.Load(this.NomeArquivoXML); XmlNodeList consdistDFeIntList = doc.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); 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, Propriedade.ExtEnvio.EnvDFe_XML.Replace(".xml", ""), Propriedade.ExtRetorno.retEnvDFe_XML.Replace(".xml", "")); LeRetornoDFe(emp, doc); } } 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(); 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 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { //Ler o XML para pegar parâmetros de envio EnvEvento(emp, dadosEnvEvento); string currentEvento = dadosEnvEvento.eventos[0].tpEvento; // mudei para aqui caso haja erro e qdo for gravar o arquivo de erro precisamos saber qual o servico switch (NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.tpEventos>(currentEvento)) { case ConvertTxt.tpEventos.tpEvCancelamentoNFe: Servico = Servicos.EventoCancelamento; break; case ConvertTxt.tpEventos.tpEvCCe: Servico = Servicos.EventoCCe; break; case ConvertTxt.tpEventos.tpEvEPEC: Servico = Servicos.EventoEPEC; break; case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_2: case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_2: case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_2: case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_2: Servico = Servicos.EventoRecepcao; break; default: Servico = Servicos.EventoManifestacaoDest; break; } ValidaEvento(emp, dadosEnvEvento); //Pegar o estado da chave, pois na cOrgao pode vir o estado 91 - Wandreuy 22/08/2012 int cOrgao = dadosEnvEvento.eventos[0].cOrgao; //vai pegar o ambiente da Chave da Nfe autorizada p/ corrigir tpEmis int tpEmis = this.dadosEnvEvento.eventos[0].tpEmis; //Convert.ToInt32(this.dadosEnvEvento.eventos[0].chNFe.Substring(34, 1)); int ufParaWS = cOrgao; //Se o cOrgao for igual a 91 tenho que mudar a ufParaWS para que na hora de buscar o WSDL para conectar ao serviço, ele consiga encontrar. Wandrey 23/01/2013 if (cOrgao == 91) { ufParaWS = Convert.ToInt32(dadosEnvEvento.eventos[0].chNFe.Substring(0, 2)); } switch (Servico) { case Servicos.EventoCancelamento: switch ((NFe.Components.TipoEmissao)tpEmis) { case NFe.Components.TipoEmissao.teSVCAN: case NFe.Components.TipoEmissao.teSVCRS: case NFe.Components.TipoEmissao.teSVCSP: case NFe.Components.TipoEmissao.teNormal: //Se a nota fiscal foi emitida em ambiente NORMAL, o cancelamento tem que ir para o ambiente normal ou gera uma rejeição. Wandrey 15/02/2013 break; default: //Os demais tipos de emissão tem que sempre ir para o ambiente NORMAL. Wandrey 22/02/2013 tpEmis = (int)NFe.Components.TipoEmissao.teNormal; break; } break; case Servicos.EventoCCe: //CCe só existe no ambiente Normal. Wandrey 22/04/2013 tpEmis = (int)NFe.Components.TipoEmissao.teNormal; break; } if (vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS( Servico, emp, ufParaWS, dadosEnvEvento.eventos[0].tpAmb, tpEmis, string.Empty, dadosEnvEvento.eventos[0].mod); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(ufParaWS, dadosEnvEvento.eventos[0].tpAmb, tpEmis, PadroesNFSe.NaoIdentificado, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oRecepcaoEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(cOrgao, Servico)); string xmlExtEnvio = string.Empty; string xmlExtRetorno = string.Empty; wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cOrgao.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEvento); if (novaNomenclatura) { xmlExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML.Replace(".xml", ""); xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).RetornoXML.Replace(".xml", ""); } else { switch (Servico) { case Servicos.EventoCCe: xmlExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML.Replace(".xml", ""); xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).RetornoXML.Replace(".xml", ""); break; case Servicos.EventoCancelamento: xmlExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML.Replace(".xml", ""); xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).RetornoXML.Replace(".xml", ""); break; default: xmlExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML.Replace(".xml", ""); xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).RetornoXML.Replace(".xml", ""); break; } } //Criar objeto da classe de assinatura digital AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, cOrgao); oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, wsProxy.NomeMetodoWS[0], oCabecMsg, this, xmlExtEnvio, xmlExtRetorno, true, securityProtocolType); //Ler o retorno LerRetornoEvento(emp); } else { // Gerar o XML de eventos a partir do TXT gerado pelo ERP string xmlFileExt = string.Empty; string xmlFileExtTXT = string.Empty; if (novaNomenclatura) { xmlFileExt = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML; xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT; } else { switch (Servico) { case Servicos.EventoCCe: xmlFileExt = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML; xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT; break; case Servicos.EventoCancelamento: xmlFileExt = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML; xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT; break; default: xmlFileExt = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML; xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT; break; } } string f = Functions.ExtrairNomeArq(NomeArquivoXML, xmlFileExtTXT) + xmlFileExt; if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0) { f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f); } oGerarXML.EnvioEvento(f, dadosEnvEvento); } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra string ExtRet = string.Empty; string ExtRetorno = string.Empty; if (novaNomenclatura) { ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT; ExtRetorno = Propriedade.ExtRetorno.Eve_ERR; } else { if (Servico == Servicos.Nulo) { // pode ter vindo de um txt e houve erro if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT)) { Servico = Servicos.EventoCCe; } else if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT)) { Servico = Servicos.EventoManifestacaoDest; } else if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT)) { Servico = Servicos.EventoCancelamento; } } switch (Servico) { case Servicos.EventoCCe: ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT; ExtRetorno = Propriedade.ExtRetorno.retEnvCCe_ERR; break; case Servicos.EventoCancelamento: ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT; ExtRetorno = Propriedade.ExtRetorno.retCancelamento_ERR; break; case Servicos.EventoManifestacaoDest: ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT; ExtRetorno = Propriedade.ExtRetorno.retManifestacao_ERR; break; default: throw new Exception("Nao pode identificar o tipo de serviço para o arquivo: " + NomeArquivoXML); } } if (ExtRetorno != string.Empty) { TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtRetorno, 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 evento, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
protected override void EnvEvento(int emp, DadosenvEvento dadosEnvEvento) { novaNomenclatura = NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT); /// /// danasa 6/2011 /// if (Path.GetExtension(NomeArquivoXML).ToLower() == ".txt") { #region --txt ///<<<<EVENTO DE CARTA DE CORRECAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID1101103511031029073900013955001000000001105112804101 <<opcional ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00 ///tpEvento|110110 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Carta de Correção <<opcional ///xCorrecao|Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao. ///xCondUso|A Carta de Correção é disciplinada pelo § 1º-A do art. .......... <<opcional ///evento|2 ///Id|ID1101103511031029073900013955001000000001105112804102 ///... ///evento|20 <<MAXIMO ///Id|ID1101103511031029073900013955001000000001105112804103 ///... ///<<<<EVENTO DE CANCELAMENTO>>>> /// idLote|000000000015255 /// evento|1 /// Id|ID1101113511031029073900013955001000000001105112804102 /// cOrgao|35 /// tpAmb|2 /// CNPJ|10290739000139 /// ou /// CPF|12345678901 /// chNFe|35110310290739000139550010000000011051128041 /// dhEvento|2011-03-03T08:06:00-03:00 /// tpEvento|110111 /// nSeqEvento|1 /// verEvento|1.00 /// descEvento|Cancelamento <<opcional /// xJust|Justificativa do cancelamento /// nProt|010101010101010 ///<<<<EVENTO DE CONFIRMACAO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102003511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210200 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Confirmacao da Operacao <<opcional ///xJust|Justificativa..... /// ------------------------------------ ///<<<<EVENTO DE CIENCIA DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102103511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210210 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Ciencia da Operacao <<opcional /// -------------------------------------------- ///<<<<EVENTO DE DESCONHECIMENTO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102203511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210220 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Desconhecimento da Operacao <<opcional ///xJust|Justificativa..... /// -------------------------------------------- ///<<<<EVENTO DE OPERACAO NAO REALIZADA>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210240 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Operacao nao realizada <<opcional /// -------------------------------------------- ///<<<<EVENTO EPEC>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|110140 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|EPEC <<opcional ///epec.cOrgaoAutor|35 ///epec.tpAutor|1 ///epec.verAplic|1.1.1.0 ///epec.dhEmi|2011-03-03T08:06:00-03:00 ///epec.tpNF|1 ///epec.IE|ISENTO ///epec.dest.UF|SP ///epec.dest.CNPJ|10290739000139 /// ou ///epec.dest.CPF|12345678901 /// ou ///epec.dest.idEstrangeiro|9999999 ///epec.dest.IE|nao pode conter o texto 'ISENTO' ///epec.dest.vNF|1234.00 ///epec.dest.vICMS|1.00 ///epec.dest.vST|2.00 /// -------------------------------------------- ///<<<<Evento pedido de prorrogação de ICMS | Evento cancelamento de pedido de prorrogação de ICMS>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|111500 ou 111501 ou 111502 ou 111503 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Pedido de Prorrogacao <<opcional ///nProt|0000000000001 ///itemPedido.numItem|1 ///itemPedido.qtdeItem|1 /// ///descEvento|Cancelamento de Pedido de Prorrogacao <<opcional ///nProt|0000000000001 ///idPedidoCancelado|ID999999CHAVE-NFE-9 /// -------------------------------------------- ///<<<<Evento Fisco Resposta ao Pedido de Prorrogação>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|411500 ou 411501 ou 411502 ou 411503 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Fisco – Prorrogação ICMS remessa para industrialização <<opcional ///idPedido| ///respPedido.statPrazo| ///respPedido.itemPedido.numItem| ///respPedido.itemPedido.statPedido| ///respPedido.itemPedido.justStatus| ///respPedido.itemPedido.justStaOutra| ///respCancPedido.statCancPedido| ///respCancPedido.justStatus| ///respCancPedido.justStaOutra| List <string> cLinhas = Functions.LerArquivo(NomeArquivoXML); ProrrogacaoICMS lpcICMS = null; ItemPedido itemPedido = null; const string err0 = "Informe a linha \"respPedido.itemPedido.numItem\""; foreach (string cTexto in cLinhas) { string[] dados = cTexto.Split(new char[] { '|' }); if (dados.Length == 1) { continue; } switch (dados[0].ToLower()) { case "idlote": this.dadosEnvEvento.idLote = dados[1].Trim(); break; case "evento": this.dadosEnvEvento.eventos.Add(new Evento()); break; case "id": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].Id = dados[1].Trim(); break; case "corgao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpamb": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpemis": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt32("0" + dados[1].Trim()); break; case "cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CNPJ = dados[1].Trim(); break; case "cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CPF = dados[1].Trim(); break; case "chnfe": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].chNFe = dados[1].Trim(); break; case "dhevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].dhEvento = dados[1].Trim(); break; case "tpevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEvento = dados[1].Trim(); break; case "nseqevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + dados[1].Trim()); break; case "verevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].verEvento = dados[1].Trim(); break; case "descevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].descEvento = dados[1].Trim(); break; case "xcorrecao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCorrecao = dados[1].Trim(); break; case "xconduso": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCondUso = dados[1].Trim(); break; case "xjust": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xJust = dados[1].Trim(); break; case "nprot": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nProt = dados[1].Trim(); break; /// /// Prorrogacao/Cancelamento de ICMS /// case "itempedido.numitem": lpcICMS = new ProrrogacaoICMS() { numItem = dados[1].Trim() }; this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].prorrogacaoICMS.Add(lpcICMS); break; case "itempedido.qtdeitem": if (lpcICMS == null) { throw new Exception("Informe a linha \"itemPedido.numItem\""); } lpcICMS.qtdeItem = dados[1].Trim(); lpcICMS = null; break; case "idpedidocancelado": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].idPedidoCancelado = dados[1].Trim(); break; /// /// Fisco – Prorrogação ICMS remessa para industrialização /// case "idpedido": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].idPedido = dados[1].Trim(); break; case "resppedido.statprazo": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respPedido.statPrazo = dados[1].Trim(); break; case "resppedido.itempedido.numitem": itemPedido = new ItemPedido() { numItem = Convert.ToInt32("0" + dados[1].Trim()) }; this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respPedido.itemPedido.Add(itemPedido); break; case "resppedido.itempedido.statpedido": if (itemPedido == null) { throw new Exception(err0); } itemPedido.statPedido = Convert.ToInt32("0" + dados[1].Trim()); break; case "resppedido.itempedido.juststatus": if (itemPedido == null) { throw new Exception(err0); } itemPedido.justStatus = Convert.ToInt32("0" + dados[1].Trim()); break; case "resppedido.itempedido.juststaoutra": if (!string.IsNullOrEmpty(dados[1].Trim())) { if (itemPedido == null) { throw new Exception(err0); } itemPedido.justStaOutra = dados[1].Trim(); } break; case "respcancpedido.statcancpedido": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.statCancPedido = Convert.ToInt32("0" + dados[1].Trim()); break; case "respcancpedido.juststatus": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.justStatus = Convert.ToInt32("0" + dados[1].Trim()); break; case "respcancpedido.juststaoutra": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.justStaOutra = dados[1].Trim(); break; /// /// EPEC /// case "epec.corgaoautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.cOrgaoAutor = Convert.ToInt32("0" + dados[1].Trim()); break; case "epec.dhemi": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dhEmi = dados[1].Trim(); break; case "epec.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.IE = dados[1].Trim(); break; case "epec.veraplic": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.verAplic = dados[1].Trim(); break; case "epec.tpautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpAutor = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoAutor>(dados[1].Trim()); break; case "epec.tpnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpNF = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoNFe>(dados[1].Trim()); break; case "epec.dest.idestrangeiro": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.idEstrangeiro = dados[1].Trim(); break; case "epec.dest.cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CNPJ = dados[1].Trim(); break; case "epec.dest.cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CPF = dados[1].Trim(); break; case "epec.dest.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.IE = dados[1].Trim(); break; case "epec.dest.uf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.UF = dados[1].Trim(); break; case "epec.dest.vnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vNF = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vicms": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vICMS = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vst": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vST = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; } } foreach (Evento evento in this.dadosEnvEvento.eventos) { ConvertTxt.tpEventos tpe = EnumHelper.StringToEnum <ConvertTxt.tpEventos>(evento.tpEvento); switch (tpe) { case ConvertTxt.tpEventos.tpEvEPEC: case ConvertTxt.tpEventos.tpEvCancelamentoNFe: case ConvertTxt.tpEventos.tpEvCienciaOperacao: case ConvertTxt.tpEventos.tpEvConfirmacaoOperacao: case ConvertTxt.tpEventos.tpEvDesconhecimentoOperacao: case ConvertTxt.tpEventos.tpEvOperacaoNaoRealizada: evento.nSeqEvento = 1; break; case ConvertTxt.tpEventos.tpEvEncerramentoMDFe: case ConvertTxt.tpEventos.tpEvInclusaoCondutor: case ConvertTxt.tpEventos.tpEvRegistroPassagem: case ConvertTxt.tpEventos.tpEvRegistroPassagemBRid: break; case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_1: //pedido de prorrogacao 1 case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_2: //pedido de prorrogacao 2 if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = "Pedido de Prorrogacao"; } break; case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_1: //pedido de cancelamento 1 case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_2: //pedido de cancelamento 2 if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = "Cancelamento de Pedido de Prorrogacao"; } break; case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_2: case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_2: if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = "Fisco – Prorrogacao ICMS remessa para industrializacao"; } break; } if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = EnumHelper.GetDescription(tpe); } if (string.IsNullOrEmpty(evento.verEvento)) { evento.verEvento = "1.00"; } if (evento.nSeqEvento == 0) { evento.nSeqEvento = 1; } if (evento.tpAmb == 0) { evento.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; } if (evento.cOrgao == 0) { evento.cOrgao = Convert.ToInt32(evento.chNFe.Substring(0, 2)); } if (evento.tpEmis == 0) { evento.tpEmis = Convert.ToInt32(evento.chNFe.Substring(34, 1)); } if (string.IsNullOrEmpty(evento.Id)) { evento.Id = TpcnResources.ID.ToString() + evento.tpEvento + evento.chNFe + evento.nSeqEvento.ToString("00"); } if (string.IsNullOrEmpty(evento.xCondUso)) { if (evento.descEvento == "Carta de Correcao") { evento.xCondUso = "A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N, " + "de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido na emissao de " + "documento fiscal, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o " + "valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da " + "operacao ou da prestacao; II - a correcao de dados cadastrais que implique mudanca do remetente " + "ou do destinatario; III - a data de emissao ou de saida."; } else { evento.xCondUso = "A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser " + "utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado " + "com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, " + "quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do " + "remetente ou do destinatário; III - a data de emissão ou de saída."; } } } #endregion --txt } else { //<?xml version="1.0" encoding="UTF-8"?> //<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <idLote>000000000015255</idLote> // <evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <infEvento Id="ID1101103511031029073900013955001000000001105112804108"> // <cOrgao>35</cOrgao> // <tpAmb>2</tpAmb> // <CNPJ>10290739000139</CNPJ> // <chNFe>35110310290739000139550010000000011051128041</chNFe> // <dhEvento>2011-03-03T08:06:00-03:00</dhEvento> // <tpEvento>110110</tpEvento> // <nSeqEvento>8</nSeqEvento> // <verEvento>1.00</verEvento> // <detEvento versao="1.00"> // <descEvento>Carta de Correção</descEvento> // <xCorrecao>Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.</xCorrecao> // <xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso> // </detEvento> // </infEvento> // </evento> //</envEvento> base.EnvEvento(emp, dadosEnvEvento); } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosPedInut = new DadosPedInut(emp); PedInut(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, dadosPedInut.versao, dadosPedInut.mod.ToString()); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, PadroesNFSe.NaoIdentificado, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oInutilizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedInut.cUF, Servico)); //Atribuir conteúdo p ara duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosPedInut.cUF.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), dadosPedInut.versao); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, Convert.ToInt32(dadosPedInut.cUF)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oInutilizacao, wsProxy.NomeMetodoWS[0], oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).RetornoXML, true, securityProtocolType); //Ler o retorno do webservice LerRetornoInut(); } 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.Inutilizacao(f, dadosPedInut.tpAmb, dadosPedInut.tpEmis, dadosPedInut.cUF, dadosPedInut.ano, dadosPedInut.CNPJ, dadosPedInut.mod, dadosPedInut.serie, dadosPedInut.nNFIni, dadosPedInut.nNFFin, dadosPedInut.xJust, dadosPedInut.versao); } } catch (Exception ex) { string ExtRet = string.Empty; if (vXmlNfeDadosMsgEhXML) //Se for XML { ExtRet = Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML; } else //Se for TXT { ExtRet = Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioTXT; } try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, 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 } } finally { try { if (!vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML { Functions.DeletarArquivo(NomeArquivoXML); } } catch { //Se falhou algo na hora de deletar o XML de inutilização, infelizmente não posso //fazer mais nada. Com certeza o uninfe sendo restabelecido novamente vai tentar enviar o mesmo //xml de inutilização para o SEFAZ. Este erro pode ocorrer por falha no HD, rede, Permissão de pastas, etc. Wandrey 23/03/2010 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); List <string> arquivosNFe = new List <string>(); //Aguardar a assinatura de todos os arquivos da pasta de lotes arquivosNFe = oAux.ArquivosPasta(Empresas.Configuracoes[emp].PastaXmlEmLote, "*" + Propriedade.Extensao(Propriedade.TipoEnvio.NFe).EnvioXML); if (arquivosNFe.Count == 0) { if (NomeArquivoXML.IndexOf(Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioTXT) >= 0) { try { StringBuilder xml = new StringBuilder(); xml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); xml.Append("<MontarLoteNFe>"); foreach (var filename in File.ReadAllLines(NomeArquivoXML, Encoding.Default)) { xml.AppendFormat("<ArquivoNFe>{0}</ArquivoNFe>", filename + (filename.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.NFe).EnvioXML) ? "" : Propriedade.Extensao(Propriedade.TipoEnvio.NFe).EnvioXML)); } xml.Append("</MontarLoteNFe>"); File.WriteAllText(Path.Combine(Empresas.Configuracoes[emp].PastaXmlEmLote, Path.GetFileName(NomeArquivoXML.Replace(Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioTXT, Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioXML))), xml.ToString()); //Deletar o arquivo de solicitação de montagem do lote de NFe FileInfo oArquivo = new FileInfo(NomeArquivoXML); oArquivo.Delete(); } catch (Exception ex) { try { TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioTXT, Propriedade.ExtRetorno.MontarLote_ERR, ex); } catch { //Se deu algum erro na hora de gravar o arquivo de erro de retorno para o ERP, infelizmente não poderemos fazer nada //pois deve estar ocorrendo alguma falha de rede, hd, permissão de acesso a pasta ou arquivos, etc. Wandrey 22/03/2010 //TODO: Não poderia gravar algum LOG para análise? Erro de rede normalmente é erro de IO } } } else { List <ArquivoXMLDFe> notas = new List <ArquivoXMLDFe>(); FileStream fsArquivo = null; FluxoNfe fluxoNfe = new FluxoNfe(); try { try { XmlDocument doc = new XmlDocument(); //Criar instância do XmlDocument Class fsArquivo = new FileStream(NomeArquivoXML, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //Abrir um arquivo XML usando FileStream doc.Load(fsArquivo); //Carregar o arquivo aberto no XmlDocument string versaoXml = string.Empty; XmlNodeList documentoList = doc.GetElementsByTagName("MontarLoteNFe"); //Pesquisar o elemento Documento no arquivo XML foreach (XmlNode documentoNode in documentoList) { XmlElement documentoElemento = (XmlElement)documentoNode; int QtdeArquivo = documentoElemento.GetElementsByTagName("ArquivoNFe").Count; for (int d = 0; d < QtdeArquivo; d++) { string arquivoNFe = Empresas.Configuracoes[emp].PastaXmlEmLote + "\\temp\\" + documentoElemento.GetElementsByTagName("ArquivoNFe")[d].InnerText; if (File.Exists(arquivoNFe)) { XmlDocument conteudoXMLNFe = new XmlDocument(); conteudoXMLNFe.Load(arquivoNFe); DadosNFeClass oDadosNfe = LerXMLNFe(conteudoXMLNFe); if (string.IsNullOrEmpty(versaoXml)) { versaoXml = oDadosNfe.versao; } if (!fluxoNfe.NFeComLote(oDadosNfe.chavenfe)) { notas.Add(new ArquivoXMLDFe() { NomeArquivoXML = arquivoNFe, ConteudoXML = conteudoXMLNFe }); } else { throw new Exception("Arquivo: " + arquivoNFe + " já está no fluxo de envio e não será incluido em novo lote."); } } else { throw new Exception("Arquivo: " + arquivoNFe + " não existe e não será incluido no lote!"); } } } fsArquivo.Close(); XmlDocument xmlLote = LoteNfe(notas, versaoXml); TaskNFeRecepcao nfeRecepcao = new TaskNFeRecepcao(xmlLote); nfeRecepcao.Execute(); } catch { if (fsArquivo != null) { fsArquivo.Close(); } } //Deletar o arquivo de solicitão de montagem do lote de NFe FileInfo oArquivo = new FileInfo(NomeArquivoXML); oArquivo.Delete(); } catch (Exception ex) { try { TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioXML, Propriedade.ExtRetorno.MontarLote_ERR, ex); } catch { //Se deu algum erro na hora de gravar o arquivo de erro de retorno para o ERP, infelizmente não poderemos fazer nada //pois deve estar ocorrendo alguma falha de rede, hd, permissão de acesso a pasta ou arquivos, etc. Wandrey 22/03/2010 //TODO: Não poderia gravar algum LOG para análise? Erro de rede normalmente é erro de IO } } } } }