public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { oDadosenvDownload = new DadosenvDownload(); EnvDownloadNFe(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), oDadosenvDownload.tpAmb, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), oDadosenvDownload.tpAmb, (int)TipoEmissao.teNormal, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oDownloadEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), oDadosenvDownload.chNFe.Substring(0, 2)); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), ConvertTxt.versoes.VersaoXMLEnvDownload); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oDownloadEvento, wsProxy.NomeMetodoWS[0], oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).RetornoXML, false, securityProtocolType); //Ler o retorno LerRetornoDownloadNFe(emp); //Gravar o xml de retorno para o ERP. Não pode gravar antes de extrair os downloads, para que o ERP saiba quando realmente terminou. Wandrey 03/04/2013 oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).RetornoXML, vStrXmlRetorno); } else { // Gerar o XML de eventos a partir do TXT gerado pelo ERP oGerarXML.EnvioDownloadNFe(Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioTXT) + Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML, oDadosenvDownload); } } catch (Exception ex) { try { var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML : Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioTXT; //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retDownload_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 } } }
private DadosenvDownload oDadosenvDownload;// = new DadosenvDownload(); #endregion #region Execute public override void Execute() { int emp = Empresas.FindEmpresaByThread(); Servico = Servicos.NFeDownload; try { oDadosenvDownload = new DadosenvDownload(); //Ler o XML para pegar parâmetros de envio EnvDownloadNFe(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), oDadosenvDownload.tpAmb); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oDownloadEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), oDadosenvDownload.chNFe.Substring(0, 2)); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEnvDownload); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oDownloadEvento, wsProxy.NomeMetodoWS[0], oCabecMsg, this); //Ler o retorno LerRetornoDownloadNFe(emp); //Gravar o xml de retorno para o ERP. Não pode gravar antes de extrair os downloads, para que o ERP saiba quando realmente terminou. Wandrey 03/04/2013 oGerarXML.XmlRetorno(Propriedade.ExtEnvio.EnvDownload_XML, Propriedade.ExtRetorno.retDownload_XML, this.vStrXmlRetorno); } else { // Gerar o XML de eventos a partir do TXT gerado pelo ERP oGerarXML.EnvioDownloadNFe(Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvDownload_TXT) + Propriedade.ExtEnvio.EnvDownload_XML, /*oLer.*/oDadosenvDownload); } } catch (Exception ex) { try { var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.ExtEnvio.EnvDownload_XML : Propriedade.ExtEnvio.EnvDownload_TXT; //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retDownload_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 } } }