/// <summary> /// Realiza el envio de los sobre por medio del web service de DGI. /// </summary> /// <param name="sobre"></param> public void EnviarSobre(Sobre sobre, Sobre sobreDgi, CFE cfe, CAE cae) { ParametrosJobWsDGI parametrosJobWsDGI = new ParametrosJobWsDGI(RUTA_CERTIFICADO, CLAVE_CERTIFICADO, URL_ENVIO, URL_CONSULTAS, cfe, cae); try { parametrosJobWsDGI.Sobre = sobre; parametrosJobWsDGI.SobreDgi = sobreDgi; comunicacionDGI.ConsumirWsEnviarSobre(parametrosJobWsDGI); } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString()); } finally { //if (parametrosJobWsDGI != null) //{ // //Libera de memoria el objeto factura // GC.SuppressFinalize(parametrosJobWsDGI); // GC.Collect(); //} } }
/// <summary> /// Realiza el envio de los sobre por medio del web service de DGI. /// </summary> /// <param name="sobre"></param> public void EnviarSobre(Sobre sobre) { ParametrosJobWsDGI parametrosJobWsDGI = new ParametrosJobWsDGI(RUTA_CERTIFICADO, CLAVE_CERTIFICADO, URL_ENVIO, URL_CONSULTAS, null, null); parametrosJobWsDGI.Sobre = sobre; parametrosJobWsDGI.SobreDgi = sobre; //Procesos web service ComunicacionDgi comunicacionDGI = new ComunicacionDgi(); comunicacionDGI.ConsumirWsEnviarSobre(parametrosJobWsDGI); }
/// <summary> /// Inicia el proceso de /// </summary> /// <param name="parametros"></param> public void Trabajar(object parametros) { string respuesta = Consumir(parametros); if (!respuesta.Equals("")) { ProcesarRespuesta(respuesta, parametros); } else { ManteUdoControlSobres manteUdoControlSobres = new ManteUdoControlSobres(); ParametrosJobWsDGI parametrosDGI = parametros as ParametrosJobWsDGI; ControlSobres controlSobres = new ControlSobres(); controlSobres.Estado = "Pendiente"; controlSobres.Serie = parametrosDGI.Cfe.SerieComprobante; controlSobres.Numero = parametrosDGI.Cfe.NumeroComprobante.ToString(); controlSobres.Tipo = parametrosDGI.Cfe.TipoCFEInt.ToString(); controlSobres.DocumentoSap = parametrosDGI.Cfe.DocumentoSAP; controlSobres.UsuarioSap = ProcConexion.Comp.UserName; manteUdoControlSobres.Almacenar(controlSobres); } }
/// <summary> /// Consume el web service /// </summary> /// <param name="parametros"></param> /// <returns></returns> public string Consumir(object parametros) { string respuesta = ""; WebServiceDGI webServiceDgi = new WebServiceDGI(parametros); ParametrosJobWsDGI parametrosJobWsDGI = parametros as ParametrosJobWsDGI; XmlDocument xmlDocumento = new XmlDocument(); try { if (File.Exists((RutasCarpetas.RutaCarpetaSobresDgi + "\\" + parametrosJobWsDGI.SobreDgi.Nombre + ".xml"))) { xmlDocumento.Load(RutasCarpetas.RutaCarpetaSobresDgi + "\\" + parametrosJobWsDGI.SobreDgi.Nombre + ".xml"); } else if (File.Exists((RutasCarpetas.RutaCarpetaContingenciaSobresDgi + "\\" + parametrosJobWsDGI.SobreDgi.Nombre + ".xml"))) { xmlDocumento.Load(RutasCarpetas.RutaCarpetaContingenciaSobresDgi + "\\" + parametrosJobWsDGI.SobreDgi.Nombre + ".xml"); } //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("Envio a DGI " + xmlDocumento.InnerXml); respuesta = webServiceDgi.WSDGI.SendWSDGI(xmlDocumento.InnerXml, clsWSDGI.WsMethod.Envelope); //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("Respuesta " + respuesta); //respuesta = respuesta.Replace("<IDEmisor>0</IDEmisor>", "<IDEmisor>" + xmlDocumento.GetElementsByTagName("DGICFE:Idemisor").Item(0).InnerText + "</IDEmisor>"); //respuesta = respuesta.Replace("<IDEmisor>0</IDEmisor>", "<IDEmisor>" + xmlDocumento.GetElementsByTagName("Idemisor").Item(0).InnerText + "</IDEmisor>"); } catch (Exception) { app.MessageBox("No se pudo enviar a DGI por problemas de conexión, recordar reenvio de documento."); respuesta = ""; } finally { if (webServiceDgi != null) { //Libera de memoria el objeto factura GC.SuppressFinalize(webServiceDgi); GC.Collect(); } if (parametrosJobWsDGI != null) { //Libera de memoria el objeto factura GC.SuppressFinalize(parametrosJobWsDGI); GC.Collect(); } if (xmlDocumento != null) { //Libera de memoria el objeto factura GC.SuppressFinalize(xmlDocumento); GC.Collect(); } } return(respuesta); }
/// <summary> /// Procesa la respuesta del web service de DGI /// </summary> /// <param name="xmlRespuesta"></param> /// <param name="parametros"></param> public void ProcesarRespuesta(string xmlRespuesta, object parametros) { string estadoRespuesta = "", token = "", idReceptor = ""; ParametrosJobWsDGI parametrosJob = parametros as ParametrosJobWsDGI; XmlDocument xmlDocumento = new XmlDocument(); ManteUdoSobre manteSobre = new ManteUdoSobre(); try { xmlDocumento.LoadXml(xmlRespuesta); idReceptor = xmlDocumento.GetElementsByTagName("IDReceptor").Item(0).InnerText; estadoRespuesta = xmlDocumento.GetElementsByTagName("Estado").Item(0).InnerText; if (estadoRespuesta.Equals("AS")) { token = xmlDocumento.GetElementsByTagName("Token").Item(0).InnerText; string hora = xmlDocumento.GetElementsByTagName("Fechahora").Item(0).InnerText; SobreTransito sobreTransito = new SobreTransito(); sobreTransito.NombreSobre = parametrosJob.Sobre.Nombre; sobreTransito.Token = token; sobreTransito.IdReceptor = idReceptor; sobreTransito.TipoReceptor = SobreTransito.ETipoReceptor.DGI; sobreTransito.Tipo = parametrosJob.Cfe.TipoCFEInt; sobreTransito.Serie = parametrosJob.Cfe.SerieComprobante; sobreTransito.Numero = parametrosJob.Cfe.NumeroComprobante; ManteUdoSobreTransito manteTransito = new ManteUdoSobreTransito(); manteTransito.Almacenar(sobreTransito); //True = AS, no se agrega detalle correspondiente a info de rechazo manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.Sobre.Nombre, true); //Se crea el documento Pdf //CrearPDF(parametrosJob.Cfe, parametrosJob.Cae); } else if (estadoRespuesta.Equals("BS")) { //False = BS, se agrega detalle correspondiente a info de rechazo manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.Sobre.Nombre, false); } } catch (Exception) { app.MessageBox("No se pudo enviar a DGI por problemas de conexión, recordar reenvio de documento."); ManteUdoControlSobres manteUdoControlSobres = new ManteUdoControlSobres(); ParametrosJobWsDGI parametrosDGI = parametros as ParametrosJobWsDGI; ControlSobres controlSobres = new ControlSobres(); controlSobres.Estado = "Pendiente"; controlSobres.Serie = parametrosDGI.Cfe.SerieComprobante; controlSobres.Numero = parametrosDGI.Cfe.NumeroComprobante.ToString(); controlSobres.Tipo = parametrosDGI.Cfe.TipoCFEInt.ToString(); controlSobres.DocumentoSap = parametrosDGI.Cfe.DocumentoSAP; controlSobres.UsuarioSap = ProcConexion.Comp.UserName; manteUdoControlSobres.Almacenar(controlSobres); //app.MessageBox("ERROR RESPUESTA: " + ex.ToString()); } finally { if (xmlDocumento != null) { //Libera de memoria el objeto factura GC.SuppressFinalize(xmlDocumento); GC.Collect(); } if (xmlDocumento != null) { //Libera de memoria el objeto factura GC.SuppressFinalize(xmlDocumento); GC.Collect(); } if (manteSobre != null) { //Libera de memoria el objeto factura GC.SuppressFinalize(manteSobre); GC.Collect(); } } }