/// <summary> /// Le o retorno do LMC, e de acordo com o status guarda o XML enviado na pasta enviados /// </summary> private void LerRetornoLMC(DadosLMC dadosLMC) { int emp = Empresas.FindEmpresaByThread(); var doc = new XmlDocument(); doc.Load(Functions.StringXmlToStreamUTF8(vStrXmlRetorno)); XmlElement protLivroCombustivel = (XmlElement)doc.GetElementsByTagName(TpcnResources.protLivroCombustivel.ToString())[0]; string cStat = protLivroCombustivel.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText; if (cStat == "1001" || cStat == "100" || cStat == "101") { var arquivoNFeProc = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.LMC) + Propriedade.ExtRetorno.ProcLMC; var protLMC = protLivroCombustivel.OuterXml; if (!File.Exists(arquivoNFeProc)) { oGerarXML.XmlDistLMC(NomeArquivoXML, protLMC, Propriedade.ExtRetorno.ProcLMC); } if (!oAux.EstaAutorizada(NomeArquivoXML, dadosLMC.dEmissao, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.ProcLMC)) { TFunctions.MoverArquivo(arquivoNFeProc, PastaEnviados.Autorizados, dadosLMC.dEmissao); } if (!oAux.EstaAutorizada(NomeArquivoXML, dadosLMC.dEmissao, Propriedade.ExtEnvio.LMC, Propriedade.ExtEnvio.LMC)) { TFunctions.MoverArquivo(NomeArquivoXML, PastaEnviados.Autorizados, dadosLMC.dEmissao); } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { //Leitura dos dados do XML dadosLMC = new DadosLMC(); XmlLMC(emp, dadosLMC); //Criar objeto para envio do XML WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosLMC.cUF, Empresas.Configuracoes[emp].AmbienteCodigo); object oAutorizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); //Assinar o XML new AssinaturaDigital().Assinar(NomeArquivoXML, emp, Empresas.Configuracoes[emp].UnidadeFederativaCodigo); //Enviar o XML oInvocarObj.Invocar(wsProxy, oAutorizacao, wsProxy.NomeMetodoWS[0], null, this); LerRetornoLMC(dadosLMC); oGerarXML.XmlRetorno(Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet, vStrXmlRetorno); } catch (ExceptionEnvioXML ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet_ERR, ex, false); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. } } catch (ExceptionSemInternet ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet_ERR, ex, false); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet_ERR, ex, false); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { } } }
/// <summary> /// Le o retorno do LMC, e de acordo com o status guarda o XML enviado na pasta enviados /// </summary> private void LerRetornoLMC(DadosLMC dadosLMC) { int emp = Empresas.FindEmpresaByThread(); var doc = new XmlDocument(); doc.Load(Functions.StringXmlToStreamUTF8(vStrXmlRetorno)); XmlElement protLivroCombustivel = (XmlElement)doc.GetElementsByTagName(TpcnResources.protLivroCombustivel.ToString())[0]; string cStat = protLivroCombustivel.GetElementsByTagName(TpcnResources.cStat.ToString())[0].InnerText; if (cStat == "1001" || cStat == "100" || cStat == "101") { var arquivoNFeProc = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.LMC) + Propriedade.ExtRetorno.ProcLMC; var protLMC = protLivroCombustivel.OuterXml; if (!File.Exists(arquivoNFeProc)) { oGerarXML.XmlDistLMC(NomeArquivoXML, protLMC, Propriedade.ExtRetorno.ProcLMC); } if (!oAux.EstaAutorizada(NomeArquivoXML, dadosLMC.dEmissao, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.ProcLMC)) { TFunctions.MoverArquivo(arquivoNFeProc, PastaEnviados.Autorizados, dadosLMC.dEmissao); } if (!oAux.EstaAutorizada(NomeArquivoXML, dadosLMC.dEmissao, Propriedade.ExtEnvio.LMC, Propriedade.ExtEnvio.LMC)) { TFunctions.MoverArquivo(NomeArquivoXML, PastaEnviados.Autorizados, dadosLMC.dEmissao); } } }
/// <summary> /// Efetua a leitura do XML de LMC e grava os dados no objeto "dadosLMC" /// </summary> /// <param name="emp">Empresa</param> /// <param name="dadosLMC">Objeto dados LMC para receber os valores</param> protected virtual void XmlLMC(int emp, DadosLMC dadosLMC) { dadosLMC.tpAmb = 0; dadosLMC.Id = string.Empty; dadosLMC.cUF = Empresas.Configuracoes[emp].UnidadeFederativaCodigo; dadosLMC.versao = string.Empty; XmlDocument doc = new XmlDocument(); doc.Load(NomeArquivoXML); XmlElement infLivroCombustivel = (XmlElement)doc.GetElementsByTagName("infLivroCombustivel")[0]; dadosLMC.tpAmb = Convert.ToInt32("0" + infLivroCombustivel.GetElementsByTagName(TpcnResources.tpAmb.ToString())[0].InnerText); dadosLMC.versao = infLivroCombustivel.Attributes[TpcnResources.versao.ToString()].InnerText; dadosLMC.Id = infLivroCombustivel.Attributes[TpcnResources.Id.ToString()].InnerText; XmlElement movimento = (XmlElement)infLivroCombustivel.GetElementsByTagName("movimento")[0]; dadosLMC.dEmissao = Convert.ToDateTime(movimento.Attributes[TpcnResources.dEmissao.ToString()].InnerText); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { //Leitura dos dados do XML dadosLMC = new DadosLMC(); XmlLMC(emp, dadosLMC); //Criar objeto para envio do XML WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosLMC.cUF, Empresas.Configuracoes[emp].AmbienteCodigo); object oAutorizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); //Assinar o XML new AssinaturaDigital().Assinar(NomeArquivoXML, emp, Empresas.Configuracoes[emp].UnidadeFederativaCodigo); //Enviar o XML oInvocarObj.Invocar(wsProxy, oAutorizacao, wsProxy.NomeMetodoWS[0], null, this); LerRetornoLMC(dadosLMC); oGerarXML.XmlRetorno(Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet, vStrXmlRetorno); } catch (ExceptionEnvioXML ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet_ERR, ex, false); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. } } catch (ExceptionSemInternet ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet_ERR, ex, false); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.LMC, Propriedade.ExtRetorno.LMCRet_ERR, ex, false); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { } } }