/// <summary> /// consulta un documento de hacienda, requiere numero de de 50 digitos /// </summary> public static void consultarDocumento(OAuth2Token token) { string clave = "50613021800060354097400100002010000000003188888888"; //secured web api request string response = getRecepcion(token, clave) .GetAwaiter() .GetResult(); if (string.IsNullOrWhiteSpace(response)) { Console.WriteLine("NOT Response received from WebAPI:"); } else { WSRecepcionGET trama = JsonConvert.DeserializeObject <WSRecepcionGET>(response); Console.WriteLine(""); Console.WriteLine("Response received from WebAPI:"); Console.WriteLine("clave -> " + trama.clave); Console.WriteLine("fecha -> " + trama.fecha); Console.WriteLine("indEstado -> " + trama.indEstado); //Console.WriteLine(response); string xmlDecode = EncodeXML.XMLUtils.base64Decode(trama.respuestaXml); string data = EncodeXML.XMLUtils.buscarValorEtiquetaXML("MensajeHacienda", "DetalleMensaje", xmlDecode); Console.WriteLine(data); } }
/// <summary> /// lista de comprobantes de hacienda /// </summary> /// <param name="token"></param> /// <param name="parametro"></param> public static void consultarComprobantes(OAuth2Token token) { ComprobanteParametro parametro = new ComprobanteParametro(); parametro.limit = 2; parametro.offset = 1; //secured web api request string response = getComprobantes(token, parametro.ToString()) .GetAwaiter() .GetResult(); WSRecepcionGET trama = JsonConvert.DeserializeObject <WSRecepcionGET>(response); Console.WriteLine(""); Console.WriteLine("Response received from WebAPI:"); Console.WriteLine("clave -> " + trama.clave); Console.WriteLine("fecha -> " + trama.fecha); Console.WriteLine("indEstado -> " + trama.indEstado); //Console.WriteLine(response); string xmlDecode = EncodeXML.XMLUtils.base64Decode(trama.respuestaXml); string data = EncodeXML.XMLUtils.buscarValorEtiquetaXML("MensajeHacienda", "DetalleMensaje", xmlDecode); Console.WriteLine(data); }
/// <summary> /// Se actualizan los mensajes del ministerio de hacienda que esten pendientes /// </summary> /// <returns></returns> public async Task <bool> actualizarMensajesHacienda() { try { EmisorReceptorIMEC emisor = null; OAuth2.OAuth2Config config = null; Thread.CurrentThread.CurrentCulture = Utilidades.getCulture(); using (var conexion = new DataModelFE()) { List <WSRecepcionPOST> lista = conexion.WSRecepcionPOST. Where(x => x.indEstado == 0 /*ENVIADO*/ || x.indEstado == 8 /*RECIBIDO*/ || x.indEstado == 9 /*PENDIENTE || * x.comprobanteRespXML == null*/).ToList(); foreach (var item in lista) { if (config == null) { emisor = conexion.EmisorReceptorIMEC.Find(Usuario.USUARIO_TOKEN); string ambiente = ConfigurationManager.AppSettings["ENVIROMENT"].ToString(); config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault(); config.username = emisor.usernameOAuth2; config.password = emisor.passwordOAuth2; await OAuth2.OAuth2Config.getTokenWeb(config); } string respuestaJSON = await Services.getRecepcion(config.token, item.clave); if (!string.IsNullOrWhiteSpace(respuestaJSON)) { WSRecepcionGET respuesta = JsonConvert.DeserializeObject <WSRecepcionGET>(respuestaJSON); if (respuesta.respuestaXml != null) { string respuestaXML = EncodeXML.XMLUtils.base64Decode(respuesta.respuestaXml); MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML); using (var conexionWS = new DataModelFE()) { WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave); dato.mensaje = mensajeHacienda.mensajeDetalle; dato.indEstado = mensajeHacienda.mensaje; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; dato.montoTotalFactura = mensajeHacienda.montoTotalFactura; dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto; dato.comprobanteRespXML = respuestaXML; if (mensajeHacienda.montoTotalFactura == 0) { string xml = XMLUtils.base64Decode(dato.comprobanteXml); try { dato.montoTotalImpuesto = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalImpuesto", xml)); dato.montoTotalFactura = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalComprobante", xml)); } catch (Exception ex) { dato.montoTotalImpuesto = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalImpuesto", xml).Replace(".", ",")); dato.montoTotalFactura = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalComprobante", xml).Replace(".", ",")); } } conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); } } else { if (respuesta.indEstado.Equals("recibido")) { using (var conexionWS = new DataModelFE()) { WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave); dato.indEstado = 8 /*recibido por hacienda*/; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); } } } } } } } catch (Exception e) { String data = e.Message; } return(true); }
/// <summary> /// Se actualizan los mensajes del ministerio de hacienda que esten pendientes /// </summary> /// <returns></returns> public async Task<bool> actualizarMensajesHacienda() { try { EmisorReceptorIMEC emisor = null; OAuth2.OAuth2Config config = null; using (var conexion = new DataModelFE()) { // se buscan los paquetes que esten enviados y esten esperando un respuesta de hacienda (indEstado == 8) o esten enviandas (indEstado == 0) List<Models.WS.WSRecepcionPOST> lista = conexion.WSRecepcionPOST.Where(x => x.indEstado == 0 || x.indEstado == 8 ).ToList(); foreach (var item in lista) { if (config == null) { emisor = conexion.EmisorReceptorIMEC.Find(Usuario.USUARIO_TOKEN); string ambiente = ConfigurationManager.AppSettings["ENVIROMENT"].ToString(); config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault(); config.username = emisor.usernameOAuth2; config.password = emisor.passwordOAuth2; await OAuth2.OAuth2Config.getTokenWeb(config); } string respuestaJSON = await ServicesHacienda.getRecepcion(config.token, item.clave); if (!string.IsNullOrWhiteSpace(respuestaJSON)) { WSRecepcionGET respuesta = JsonConvert.DeserializeObject<WSRecepcionGET>(respuestaJSON); if (respuesta.respuestaXml != null) { string respuestaXML = EncodeXML.XMLUtils.base64Decode(respuesta.respuestaXml); MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML); using (var conexionWS = new DataModelFE()) { Models.WS.WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave); dato.mensaje = mensajeHacienda.mensajeDetalle; dato.indEstado = mensajeHacienda.mensaje; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; dato.montoTotalFactura = mensajeHacienda.montoTotalFactura; dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto; conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); } } else { if (respuesta.indEstado.Equals("recibido")) { using (var conexionWS = new DataModelFE()) { Models.WS.WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave); dato.indEstado = 8/*recibido por hacienda*/; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); } } } } } } } catch (Exception e) { String data = e.Message; } return true; }
protected async void btnActualizar_Click(object sender, EventArgs e) { try { using (var conexion = new DataModelFE()) { EmisorReceptorIMEC emisor = (EmisorReceptorIMEC)Session["elEmisor"]; string ambiente = ConfigurationManager.AppSettings["ENVIROMENT"].ToString(); OAuth2.OAuth2Config config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault(); config.username = emisor.usernameOAuth2; config.password = emisor.passwordOAuth2; await OAuth2.OAuth2Config.getTokenWeb(config); string clave = Session["clave"].ToString(); string respuestaJSON = await Services.getRecepcion(config.token, clave); if (!string.IsNullOrWhiteSpace(respuestaJSON)) { WSRecepcionGET respuesta = JsonConvert.DeserializeObject <WSRecepcionGET>(respuestaJSON); if (!string.IsNullOrWhiteSpace(respuesta.respuestaXml)) { string respuestaXML = EncodeXML.XMLUtils.base64Decode(respuesta.respuestaXml); MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML); using (var conexionWS = new DataModelFE()) { WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(clave); dato.mensaje = mensajeHacienda.mensajeDetalle; dato.indEstado = mensajeHacienda.mensaje; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Session["usuario"].ToString(); //dato.receptorIdentificacion = mensajeHacienda.receptorNumeroCedula; dato.montoTotalFactura = mensajeHacienda.montoTotalFactura; dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto; dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto; dato.comprobanteRespXML = respuestaXML; if (mensajeHacienda.montoTotalFactura == 0) { string xml = XMLUtils.base64Decode(dato.comprobanteXml); dato.montoTotalImpuesto = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalImpuesto", xml)); dato.montoTotalFactura = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalComprobante", xml)); } conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); Session["indEstado"] = dato.indEstado; } } else { if (respuesta.indEstado.Equals("recibido")) { using (var conexionWS = new DataModelFE()) { WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(clave); dato.indEstado = 8 /*recibido por hacienda*/; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); } } this.alertMessages.Attributes["class"] = "alert alert-info"; this.alertMessages.InnerText = String.Format("Documento eléctronico se encuentra RECIBIDO pero aún pendiente de ser ACEPTADO"); } } } } catch (Exception ex) { throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException); } finally { //refescar los datos this.refreshData(); } }
public async Task <IHttpActionResult> respuestamesajehacienda(string clave) { try { using (var conexion = new DataModelFE()) { Models.WS.WSRecepcionPOST dato = conexion.WSRecepcionPOST.Find(clave); if (dato != null) { if (dato.montoTotalFactura == 0) { return(Ok(new Models.WS.WSRespuestaGET(dato))); } else { string respuestaJSON = await ServicesHacienda.getRecepcion(await this.getToken(), clave); if (!string.IsNullOrWhiteSpace(respuestaJSON)) { WSRecepcionGET respuesta = JsonConvert.DeserializeObject <WSRecepcionGET>(respuestaJSON); if (respuesta.respuestaXml != null) { string respuestaXML = EncodeXML.XMLUtils.base64Decode(respuesta.respuestaXml); MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML); //dato = conexion.WSRecepcionPOST.Where(x=>x.clave==clave).FirstOrDefault(); dato.mensaje = mensajeHacienda.mensajeDetalle; dato.indEstado = mensajeHacienda.mensaje; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; //dato.receptorIdentificacion = mensajeHacienda.receptorNumeroCedula; dato.montoTotalFactura = mensajeHacienda.montoTotalFactura; dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto; conexion.Entry(dato).State = EntityState.Modified; conexion.SaveChanges(); return(Ok(new Models.WS.WSRespuestaGET(dato))); } else { if (respuesta.indEstado.ToLower().Equals("recibido")) { using (var conexionWS = new DataModelFE()) { dato = conexionWS.WSRecepcionPOST.Find(clave); dato.indEstado = 8 /*recibido por hacienda*/; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); return(Ok(new Models.WS.WSRespuestaGET(dato))); } } } } } } } return(NotFound()); } catch (DbEntityValidationException ex) { // Retrieve the error messages as a list of strings. var errorMessages = ex.EntityValidationErrors .SelectMany(x => x.ValidationErrors) .Select(x => x.ErrorMessage); // Join the list to a single string. var fullErrorMessage = string.Join("; ", errorMessages); // Throw a new DbEntityValidationException with the improved exception message. //return fullErrorMessage; return(Ok(fullErrorMessage)); } catch (Exception ex) { return(Ok(ex.Message)); } }
public async Task <IHttpActionResult> respuestamesajehacienda(string clave) { using (var conexion = new DataModelFE()) { WSRecepcionPOST dato = conexion.WSRecepcionPOST.Find(clave); if (dato.montoTotalFactura > 0) { return(Ok(new WSDomain.WSRespuestaGET(dato))); } else { EmisorReceptorIMEC elEmisor = conexion.EmisorReceptorIMEC.Find(Usuario.USUARIO_TOKEN); string ambiente = ConfigurationManager.AppSettings["ENVIROMENT"].ToString(); OAuth2.OAuth2Config config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault(); config.username = elEmisor.usernameOAuth2; config.password = elEmisor.passwordOAuth2; await OAuth2.OAuth2Config.getTokenWeb(config); string respuestaJSON = await ServicesHacienda.getRecepcion(config.token, clave); if (!string.IsNullOrWhiteSpace(respuestaJSON)) { WSRecepcionGET respuesta = JsonConvert.DeserializeObject <WSRecepcionGET>(respuestaJSON); if (respuesta.respuestaXml != null) { string respuestaXML = EncodeXML.EncondeXML.base64Decode(respuesta.respuestaXml); MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML); dato = conexion.WSRecepcionPOST.Find(clave); dato.mensaje = mensajeHacienda.mensajeDetalle; dato.indEstado = mensajeHacienda.mensaje; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; //dato.receptorIdentificacion = mensajeHacienda.receptorNumeroCedula; dato.montoTotalFactura = mensajeHacienda.montoTotalFactura; dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto; conexion.Entry(dato).State = EntityState.Modified; conexion.SaveChanges(); return(Ok(new WSRespuestaGET(dato))); } else { if (respuesta.indEstado.ToLower().Equals("recibido")) { using (var conexionWS = new DataModelFE()) { dato = conexionWS.WSRecepcionPOST.Find(clave); dato.indEstado = 8 /*recibido por hacienda*/; dato.fechaModificacion = Date.DateTimeNow(); dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; conexionWS.Entry(dato).State = EntityState.Modified; conexionWS.SaveChanges(); return(Ok(new WSRespuestaGET(dato))); } } } } } } return(NotFound()); }