/// <summary> /// Procesa la respuesta /// </summary> /// <param name="nombreArchivo"></param> /// <param name="tipoReceptor"></param> public void ProcesarRespuesta(string nombreArchivo, CFE.ESTipoReceptor tipoReceptor) { XmlDocument xmlDocumento = new XmlDocument(); xmlDocumento.Load(RutasCarpetas.RutaCarpetaAcuseRecibidoCertificado + nombreArchivo); List <string> listaIDRespuesta = new List <string>(); listaIDRespuesta.Add("IDRespuesta"); listaIDRespuesta.Add("IdRespuesta"); listaIDRespuesta.Add("IDRESPUESTA"); listaIDRespuesta.Add("idrespuesta"); listaIDRespuesta.Add("Idrespuesta"); listaIDRespuesta.Add("idRespuesta"); string idRespuesta = ObtenerTag(xmlDocumento, listaIDRespuesta); string docEntry = manteUdoSobreTransito.ConsultarDocEntry(xmlDocumento.GetElementsByTagName("").Item(0).InnerText); List <string> listaEstado = new List <string>(); listaEstado.Add("ESTADO"); listaEstado.Add("estado"); listaEstado.Add("Estado"); string estado = ObtenerTag(xmlDocumento, listaEstado); //Validar si el certificado fue aceptado if (xmlDocumento.GetElementsByTagName(estado).Item(0).InnerText.Equals("AE"))//Comprobante aceptado { CertificadoAprobado(xmlDocumento, tipoReceptor, docEntry); } else if (xmlDocumento.GetElementsByTagName(estado).Item(0).InnerText.Equals("BE"))//Comprobante rechazado { CertificadoRechazado(xmlDocumento, tipoReceptor, docEntry); } else if (xmlDocumento.GetElementsByTagName(estado).Item(0).InnerText.Equals("CE"))//Comprobante observado { } }
/// <summary> /// Procesa la respuesta recibida para certificados /// </summary> /// <param name="xmlRespuesta"></param> /// <param name="tipoReceptor"></param> /// <param name="docEntry"></param> public void ProcesarRespuesta(string xmlRespuesta, CFE.ESTipoReceptor tipoReceptor, string docEntry) { try { XmlDocument xmlDocumento = new XmlDocument(); xmlDocumento.LoadXml(xmlRespuesta); List <string> listaEstado = new List <string>(); listaEstado.Add("ESTADO"); listaEstado.Add("estado"); listaEstado.Add("Estado"); string estado = ObtenerTag(xmlDocumento, listaEstado); //Validar si el certificado fue aceptado if (xmlDocumento.GetElementsByTagName(estado).Item(0).InnerText.Equals("AE"))//Comprobante aceptado { CertificadoAprobado(xmlDocumento, tipoReceptor, docEntry); } else if (xmlDocumento.GetElementsByTagName(estado).Item(0).InnerText.Equals("BE"))//Comprobante rechazado { CertificadoRechazado(xmlDocumento, tipoReceptor, docEntry); if (tipoReceptor == CFE.ESTipoReceptor.DGI) { anulacion.EnviarAnulacion(xmlDocumento); } } else if (xmlDocumento.GetElementsByTagName(estado).Item(0).InnerText.Equals("CE"))//Comprobante observado { } } catch (Exception) { //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("Error ProcesarRespuesta/ " + ex.ToString()); } }
/// <summary> /// Procesa la respuesta cuando el certificado esta aprobado /// </summary> /// <param name="xmlRespuesta"></param> /// <param name="docEntry"></param> private void CertificadoAprobado(XmlDocument xmlRespuesta, CFE.ESTipoReceptor tipoReceptor, string docEntry) { Comprobantes comprobante = new Comprobantes(); DetComprobante detComprobantes; XmlNodeList listaNodosCFE; try { //Cabecera comprobante.Version = "1.0"; comprobante.RucReceptor = long.Parse(xmlRespuesta.GetElementsByTagName("RUCReceptor").Item(0).InnerText); comprobante.RucEmisor = long.Parse(xmlRespuesta.GetElementsByTagName("RUCEmisor").Item(0).InnerText); comprobante.IdRespuesta = int.Parse(xmlRespuesta.GetElementsByTagName("IDRespuesta").Item(0).InnerText); comprobante.NombreArchivo = xmlRespuesta.GetElementsByTagName("NomArch").Item(0).InnerText; comprobante.FechaHoraRecepcion = xmlRespuesta.GetElementsByTagName("FecHRecibido").Item(0).InnerText; comprobante.IdEmisor = int.Parse(xmlRespuesta.GetElementsByTagName("IDEmisor").Item(0).InnerText); comprobante.IdReceptor = int.Parse(xmlRespuesta.GetElementsByTagName("IDReceptor").Item(0).InnerText); comprobante.CantidadComprobantesSobre = int.Parse(xmlRespuesta.GetElementsByTagName("CantenSobre").Item(0).InnerText); comprobante.CantidadComprobantesResponden = int.Parse(xmlRespuesta.GetElementsByTagName("CantResponden").Item(0).InnerText); comprobante.CantidadCFEAceptados = int.Parse(xmlRespuesta.GetElementsByTagName("CantCFEAceptados").Item(0).InnerText); comprobante.CantidadCFERechazados = int.Parse(xmlRespuesta.GetElementsByTagName("CantCFERechazados").Item(0).InnerText); comprobante.CantidadCFCAceptados = int.Parse(xmlRespuesta.GetElementsByTagName("CantCFCAceptados").Item(0).InnerText); comprobante.CantidadCFCObservados = int.Parse(xmlRespuesta.GetElementsByTagName("CantCFCObservados").Item(0).InnerText); comprobante.CantidadOtrosRechazados = int.Parse(xmlRespuesta.GetElementsByTagName("CantOtrosRechazados").Item(0).InnerText); comprobante.FechaHoraFirma = xmlRespuesta.GetElementsByTagName("Tmst").Item(0).InnerText; //Detalle listaNodosCFE = xmlRespuesta.GetElementsByTagName("ACKCFE_Det"); foreach (XmlElement nodoComprobante in listaNodosCFE) { detComprobantes = new DetComprobante(); detComprobantes.NumeroOrdinal = int.Parse(nodoComprobante.GetElementsByTagName("Nro_ordinal").Item(0).InnerText); detComprobantes.TipoCFE = int.Parse(nodoComprobante.GetElementsByTagName("TipoCFE").Item(0).InnerText); detComprobantes.SerieComprobante = nodoComprobante.GetElementsByTagName("Serie").Item(0).InnerText; detComprobantes.NumeroComprobante = int.Parse(nodoComprobante.GetElementsByTagName("NroCFE").Item(0).InnerText); detComprobantes.FechaComprobante = nodoComprobante.GetElementsByTagName("FechaCFE").Item(0).InnerText; detComprobantes.FechaHoraFirma = nodoComprobante.GetElementsByTagName("TmstCFE").Item(0).InnerText; detComprobantes.EstadoRecepcion = nodoComprobante.GetElementsByTagName("Estado").Item(0).InnerText; comprobante.DetalleComprobante.Add(detComprobantes); if (tipoReceptor == CFE.ESTipoReceptor.DGI) { //Actualiza el estado del CFE en el listado principal manteUdoCfe.Actualizar(detComprobantes.TipoCFE, detComprobantes.SerieComprobante, detComprobantes.NumeroComprobante, CFE.ESEstadoCFE.AprobadoDGI, CFE.ESTipoReceptor.DGI); } else if (tipoReceptor == CFE.ESTipoReceptor.Receptor) { //Actualiza el estado del CFE en el listado principal manteUdoCfe.Actualizar(detComprobantes.TipoCFE, detComprobantes.SerieComprobante, detComprobantes.NumeroComprobante, CFE.ESEstadoCFE.AprobadoReceptor, CFE.ESTipoReceptor.Receptor); } } //Almacenar en monitor de sobres bool respuestaAlmacenar = manteUdoComprobantes.AlmacenarMaestro(comprobante); if (respuestaAlmacenar) { //Eliminar de sobres en transito // manteUdoSobreTransito.Eliminar(docEntry); } } catch (Exception) { //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("CertiApro " + ex.ToString()); } }
/// <summary> /// Actualiza los datos del CFE /// </summary> /// <param name="comp"></param> /// <param name="tipo"></param> /// <param name="serie"></param> /// <param name="numero"></param> /// <returns></returns> public bool Actualizar(int tipo, string serie, int numero, CFE.ESEstadoCFE estado, CFE.ESTipoReceptor tipoReceptor) { bool resultado = false; GeneralService servicioGeneral = null; GeneralData dataGeneral = null; GeneralDataParams parametros = null; try { //Obtener servicio general de la compañia servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECFE"); //Obtener lista de parametros parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams); //Establecer parametros parametros.SetProperty("DocEntry", ConsultarDocEntryCFE(tipo, serie, numero)); //Apuntar al udo que corresponde con los parametros dataGeneral = servicioGeneral.GetByParams(parametros); if (tipoReceptor == CFE.ESTipoReceptor.DGI) { dataGeneral.SetProperty("U_EstadoDgi", estado.ToString()); } else { dataGeneral.SetProperty("U_EstadoRec", estado.ToString()); } //Agregar el nuevo registro a la base de datos mediante el servicio general servicioGeneral.Update(dataGeneral); resultado = true; } catch (Exception ex) { //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("actualizarCFE " + ex.ToString()); } finally { if (parametros != null) { //Liberar memoria utlizada por el objeto parametros System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros); System.GC.Collect(); } if (dataGeneral != null) { //Liberar memoria utlizada por el objeto dataGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral); System.GC.Collect(); } if (servicioGeneral != null) { //Liberar memoria utlizada por el objeto servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral); System.GC.Collect(); } } return(resultado); }