/// <summary> /// Valida que existan los parametros de la factura para generarla /// </summary> /// <param name="organizacionId"></param> /// <returns></returns> public void ValidarDatosDeConfiguracion(int organizacionId) { try { Logger.Info(); var parametrosBl = new ParametroOrganizacionBL(); var parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SerieFactura.ToString()); if (parametroInfo != null) { parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.FolioFactura.ToString()); if (parametroInfo != null) { parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SELLER_ID.ToString()); if (parametroInfo != null) { parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SHIP_FROM.ToString()); if (parametroInfo == null) { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorAlGenerarFactura); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorParametros); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorFolioFactura); } } else { throw new ExcepcionServicio(Properties.ResourceServices.FacturaElectronica_MensajeErrorSerie); } } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
internal FacturaInfo ObtenerDatosDeFacturacionSalidaVentaTransito(FacturaInfo facturaInfo, int organizacionId) { try { Logger.Info(); if (facturaInfo != null) { var parametrosBl = new ParametroOrganizacionBL(); var ruta = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.RutaCFDI.ToString()); if (ruta != null) { var parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SerieFactura.ToString()); if (parametroInfo != null) { parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SELLER_ID.ToString()); if (parametroInfo != null) { facturaInfo.SellerId = parametroInfo.Valor; parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SHIP_FROM.ToString()); if (parametroInfo != null) { facturaInfo.ShipFrom = parametroInfo.Valor; facturaInfo.BuyerId = facturaInfo.DatosCliente.PartyId; facturaInfo.ShipTo = facturaInfo.DatosCliente.PartyId; } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorParametros); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorParametros); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorFolioFactura); } } else { throw new ExcepcionServicio(Properties.ResourceServices.FacturaElectronica_MensajeErrorSerie); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorAlConsultarDatos); } return facturaInfo; } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Genera la factura en la ruta especificada /// </summary> /// <param name="datosFactura"></param> /// <param name="organizacionId"></param> internal void GenerarFactura(FacturaInfo datosFactura, int organizacionId) { var doc = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "")); try { var parametrosBl = new ParametroOrganizacionBL(); var parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.RutaCFDI.ToString()); if (parametroInfo != null) { string rutaRepositorio = parametroInfo.Valor; if (datosFactura != null && rutaRepositorio != "") { doc.Add( new XElement("TRANSACTIONS", new XAttribute("EMITER", "VIZ-MPEIRO"), new XElement("TRANSACTION", new XElement("SERIE", datosFactura.Serie), new XElement("TRX_NUMBER", datosFactura.TrxNumber), new XElement("CUST_TRX_TYPE_ID", datosFactura.TipoCliente), new XElement("TRX_DATE", datosFactura.FechaFactura), new XElement("BILL_TO_CUSTOMER", new XElement("PARTY", new XElement("CODIGO_CLIENTE", datosFactura.DatosDeEnvio.CodigoCliente), new XElement("PARTY_ID", datosFactura.DatosDeEnvio.PartyId), datosFactura.DatosDeEnvio.Nombre == null ? new XElement("PARTY_NAME") : new XElement("PARTY_NAME", new XCData(datosFactura.DatosDeEnvio.Nombre)), new XElement("PARTY_TYPE", datosFactura.DatosDeEnvio.PartyType), datosFactura.DatosDeEnvio.CodigoFiscal == null ? new XElement("JGZZ_FISCAL_CODE") : new XElement("JGZZ_FISCAL_CODE", new XCData(datosFactura.DatosDeEnvio.CodigoFiscal)), datosFactura.DatosDeEnvio.Direccion1 == null ? new XElement("ADDRESS1") : new XElement("ADDRESS1", new XCData(datosFactura.DatosDeEnvio.Direccion1)), datosFactura.DatosDeEnvio.Direccion2 == null ? new XElement("ADDRESS2") : new XElement("ADDRESS2", new XCData(datosFactura.DatosDeEnvio.Direccion2)), datosFactura.DatosDeEnvio.Direccion3 == null ? new XElement("ADDRESS3") : new XElement("ADDRESS3", new XCData(datosFactura.DatosDeEnvio.Direccion3)), datosFactura.DatosDeEnvio.Direccion4 == null ? new XElement("ADDRESS4") : new XElement("ADDRESS4", new XCData(datosFactura.DatosDeEnvio.Direccion4)), new XElement("POSTAL_CODE", datosFactura.DatosDeEnvio.CodigoPostal), datosFactura.DatosDeEnvio.Ciudad == null ? new XElement("CITY") : new XElement("CITY", new XCData(datosFactura.DatosDeEnvio.Ciudad)), datosFactura.DatosDeEnvio.Estado == null ? new XElement("STATE") : new XElement("STATE", new XCData(datosFactura.DatosDeEnvio.Estado)), datosFactura.DatosDeEnvio.Pais == null ? new XElement("COUNTRY") : new XElement("COUNTRY", new XCData(datosFactura.DatosDeEnvio.Pais)), new XElement("METODO_PAGO", datosFactura.DatosCliente.MetodoDePago), new XElement("COND_PAGO", datosFactura.DatosCliente.CondicionDePago), new XElement("DIAS_PAGO", datosFactura.DatosCliente.DiasDePago) ) ), new XElement("TIPO_MONEDA", datosFactura.TipoMoneda), new XElement("TASA_DE_CAMBIO", datosFactura.TasaDeCambio), new XElement("SELLER_ID", datosFactura.SellerId), new XElement("BUYER_ID", datosFactura.BuyerId), new XElement("SHIP_FROM", datosFactura.ShipFrom), new XElement("SHIP_TO", datosFactura.ShipTo), new XElement("ACCOUNT_NUMBER", datosFactura.NumeroDeCuenta), new XElement("SHIP_TO_CUSTOMER", new XElement("PARTY", new XElement("CODIGO_CLIENTE", datosFactura.DatosDeEnvio.CodigoCliente), new XElement("PARTY_ID", datosFactura.DatosDeEnvio.PartyId), datosFactura.DatosDeEnvio.Nombre == null ? new XElement("PARTY_NAME", "") : new XElement("PARTY_NAME", new XCData(datosFactura.DatosDeEnvio.Nombre)), new XElement("PARTY_TYPE", datosFactura.DatosDeEnvio.PartyType), datosFactura.DatosDeEnvio.CodigoFiscal == null ? new XElement("JGZZ_FISCAL_CODE") : new XElement("JGZZ_FISCAL_CODE", new XCData(datosFactura.DatosDeEnvio.CodigoFiscal)), datosFactura.DatosDeEnvio.Direccion1 == null ? new XElement("ADDRESS1") : new XElement("ADDRESS1", new XCData(datosFactura.DatosDeEnvio.Direccion1)), datosFactura.DatosDeEnvio.Direccion2 == null ? new XElement("ADDRESS2") : new XElement("ADDRESS2", new XCData(datosFactura.DatosDeEnvio.Direccion2)), datosFactura.DatosDeEnvio.Direccion3 == null ? new XElement("ADDRESS3") : new XElement("ADDRESS3", new XCData(datosFactura.DatosDeEnvio.Direccion3)), datosFactura.DatosDeEnvio.Direccion4 == null ? new XElement("ADDRESS4") : new XElement("ADDRESS4", new XCData(datosFactura.DatosDeEnvio.Direccion4)), new XElement("POSTAL_CODE", datosFactura.DatosDeEnvio.CodigoPostal), datosFactura.DatosDeEnvio.Ciudad == null ? new XElement("CITY") : new XElement("CITY", new XCData(datosFactura.DatosDeEnvio.Ciudad)), datosFactura.DatosDeEnvio.Estado == null ? new XElement("STATE") : new XElement("STATE", new XCData(datosFactura.DatosDeEnvio.Estado)), datosFactura.DatosDeEnvio.Pais == null ? new XElement("COUNTRY") : new XElement("COUNTRY", new XCData(datosFactura.DatosDeEnvio.Pais)) ) ), new XElement("STATUS_FACTURA", datosFactura.EstatusFactura), new XElement("TRANSACTION_LINES", from transaction in datosFactura.ItemsFactura select new XElement("TRANSACTION_LINE", new XElement("LINE_NUMBER", transaction.LineNumber), new XElement("LINE_TYPE", transaction.LineType), new XElement("INVENTORY_ITEM_ID", transaction.InventoryItemId), new XElement("ITEM_EAN_NUMBER", transaction.ItemEanNumber), new XElement("SERIAL", transaction.Serial), new XElement("DESCRIPTION", new XCData(transaction.Description)), new XElement("QUANTITY_INVOICED", transaction.QuantityInvoiced), new XElement("QUANTITY_CREDITED", transaction.QuantityCredited), new XElement("UNIT_SELLING_PRICE", transaction.UnitSellingPrice), new XElement("UOM_CODE", transaction.UomCode), new XElement("TAX_RATE", transaction.TaxRate), new XElement("TAXABLE_AMOUNT", transaction.TaxableAmount), new XElement("PRECIO_NETO", transaction.PrecioNeto), new XElement("DESCUENTO", transaction.Descuento), new XElement("VAT_TAX_ID", transaction.VatTaxId), new XElement("CANTIDAD_BULTOS", transaction.CantidadBultos) ) ), new XElement("ADDENDA", new XAttribute("TYPE", "NONE")), new XElement("COMPLEMENTO", new XAttribute("TYPE", "NONE")), new XElement("IMPRESION", new XAttribute("ORIGINAL", "1"), new XAttribute("PREFACTURA", "0"), new XAttribute("BN", "false"), new XAttribute("PRINTER", "2")), new XElement("PRINTER", new XAttribute("ROUTE", "Finanzas FE")) ) ) ); } if (Directory.Exists(rutaRepositorio)) { string nombreCompleto = String.Format("{0}\\{1}", rutaRepositorio, datosFactura.NombreFactura); doc.Save(nombreCompleto); } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorDirectorioNoExiste); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorRutaXml); } } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo que crear una entrada de ganado /// </summary> /// <param name="entradaGanadoSobranteInfo"></param> internal int GuardarEntradaGanadoSobrante(EntradaGanadoSobranteInfo entradaGanadoSobranteInfo) { try { Logger.Info(); var entradaGanadoSobranteDAL = new EntradaGanadoSobranteDAL(); var entradaGanadoTransitoBL = new EntradaGanadoTransitoBL(); var parametroBL = new ParametroOrganizacionBL(); var animalBl = new AnimalBL(); int entradaGanadoID = 0; /* Obtener Tipo de organizacion Origen*/ ParametrosEnum corralFaltante = entradaGanadoSobranteInfo.EntradaGanado.TipoOrganizacionOrigenId == (int)TipoOrganizacion.CompraDirecta ? ParametrosEnum.CORRALFALTDIRECTA : ParametrosEnum.CORRALFALTPROPIO; /* Obtener Codigo Corral de parametroOrganizacion*/ ParametroOrganizacionInfo parametroOrganizacionInfo = parametroBL.ObtenerPorOrganizacionIDClaveParametro( entradaGanadoSobranteInfo.EntradaGanado.OrganizacionID, corralFaltante.ToString()); if (parametroOrganizacionInfo != null) { /* Obtener entradaGanadoTransitoInfo del corral faltante parametrizado*/ EntradaGanadoTransitoInfo entradaGanadoTransitoInfo = entradaGanadoTransitoBL.ObtenerPorCorralOrganizacion( parametroOrganizacionInfo.Valor, entradaGanadoSobranteInfo.EntradaGanado.OrganizacionID); if (entradaGanadoTransitoInfo != null && entradaGanadoTransitoInfo.Cabezas > 0) { /* Obtener el importe prorrateado mediante el siguiente calculo: Importe = Importe / Cabezas */ List <EntradaGanadoTransitoDetalleInfo> detalles = entradaGanadoTransitoInfo.EntradasGanadoTransitoDetalles; for (int indexDetalle = 0; indexDetalle < detalles.Count; indexDetalle++) { entradaGanadoSobranteInfo.Importe = detalles[indexDetalle].Importe / entradaGanadoTransitoInfo.Cabezas; /* Se almacena la entrada Ganado Sobrante*/ entradaGanadoID = entradaGanadoSobranteDAL.GuardarEntradaGanadoSobrante(entradaGanadoSobranteInfo); /* Se actuacon los datos a actualizar en la tabla entradaGanadoTransito */ detalles[indexDetalle].Importe = entradaGanadoSobranteInfo.Importe * -1; entradaGanadoTransitoInfo.Peso = (entradaGanadoTransitoInfo.Peso / entradaGanadoTransitoInfo.Cabezas) * -1; entradaGanadoTransitoInfo.Cabezas = -1; entradaGanadoTransitoInfo.UsuarioModificacionID = entradaGanadoSobranteInfo.UsuarioCreacionID; /* Al ingresar los registros sobrantes se deben descontar de los faltantes de la tabla 'EntradaGanadoTransito' */ entradaGanadoTransitoBL.Guardar(entradaGanadoTransitoInfo); } /* Actualziar el Peso Compra del Animal */ entradaGanadoSobranteInfo.Animal.UsuarioModificacionID = entradaGanadoSobranteInfo.UsuarioCreacionID; entradaGanadoSobranteInfo.Animal.PesoCompra = (int)entradaGanadoTransitoInfo.Peso; animalBl.ActualizaPesoCompra(entradaGanadoSobranteInfo.Animal); } else { throw new ExcepcionDesconocida("No hay suficientes cabezas faltantes para cubrir las sobrantes de la partida. Favor de validar."); } } else { throw new ExcepcionDesconocida("No existe un corral de cabezas faltantes configurado. Favor de validar."); } return(entradaGanadoID); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
//const string saltoLinea = "\n"; /// <summary> /// Obtiene registros de RepartoDetalle /// </summary> /// <returns> </returns> public ResultadoOperacion GenerarArchivoDatalink(RepartoInfo repartoInfo, int tipoServicioID) { ResultadoOperacion resultadoOperacion; var parametroOrganizacionBL = new ParametroOrganizacionBL(); var ruta = parametroOrganizacionBL.ObtenerPorOrganizacionIDClaveParametro(repartoInfo.OrganizacionID, ParametrosEnum.rutaGenerarArchivoDatalink.ToString()); var nombre = parametroOrganizacionBL.ObtenerPorOrganizacionIDClaveParametro(repartoInfo.OrganizacionID, ParametrosEnum.nombreGenerarArchivoDatalink.ToString()); var archivo = String.Format("{0}{1}", ruta.Valor, nombre.Valor); try { Logger.Info(); var generarArchivoDatalinkDAL = new GenerarArchivoDatalinkDAL(); var listadoDetalle = generarArchivoDatalinkDAL.ObtenerDatosRepartoDetalle(repartoInfo, tipoServicioID); if (listadoDetalle != null) { if (File.Exists(archivo)) { File.Delete(archivo); } using (var sw = new StreamWriter(archivo)) { var cabecero = string.Format("{0}{1}{0}", comillas, letraP); sw.WriteLine(cabecero); foreach (var generarArchivoDatalinkInfo in listadoDetalle) { var contenido = string.Format("{0}{1}{0}{2}{0}{3}{0}{2}{0}{4}{0}{2}{5}{2}{6}{2}{7}{2}{8}", comillas, generarArchivoDatalinkInfo.Servicio, coma, generarArchivoDatalinkInfo.Corral.Trim().PadLeft(numeroCaracteres, espacio), generarArchivoDatalinkInfo.Formula.ToString(CultureInfo.InvariantCulture).Trim().PadLeft(numeroCaracteres, espacio), generarArchivoDatalinkInfo.Kilos.ToString(CultureInfo.InvariantCulture).Trim().PadLeft(numeroCaracteres, espacio), generarArchivoDatalinkInfo.Cero.ToString(CultureInfo.InvariantCulture).Trim().PadLeft(numeroCaracteres, espacio), generarArchivoDatalinkInfo.Seccion, generarArchivoDatalinkInfo.Uno.ToString(CultureInfo.InvariantCulture).Trim().PadLeft(numeroCaracteres, espacio)); sw.WriteLine(contenido); } var pie = string.Format("{0}{1}{0}", comillas, simboloPeso); sw.WriteLine(pie); } resultadoOperacion = new ResultadoOperacion() { Resultado = true }; } else { if (File.Exists(archivo)) { File.Delete(archivo); } using (var sw = new StreamWriter(archivo)) { var cabecero = string.Format("{0}{1}{0}", comillas, letraP); sw.WriteLine(cabecero); var pie = string.Format("{0}{1}{0}", comillas, simboloPeso); sw.WriteLine(pie); } resultadoOperacion = new ResultadoOperacion() { Resultado = true }; } } catch (ExcepcionGenerica ex) { Logger.Error(ex); return(new ResultadoOperacion() { Resultado = false }); } catch (Exception ex) { Logger.Error(ex); return(new ResultadoOperacion() { Resultado = false }); } return(resultadoOperacion); }
/// <summary> /// Método Para Guardar en en la Tabla Animal /// </summary> internal OrdenSacrificioInfo GuardarOrdenSacrificio(OrdenSacrificioInfo ordenInfo, IList <OrdenSacrificioDetalleInfo> detalleOrden, int organizacionId) { OrdenSacrificioInfo result = null; try { Logger.Info(); IList <SalidaSacrificioInfo> salidaSacrificio = null; var paramOrgPl = new ParametroOrganizacionBL(); var salidaSacrificioDal = new SalidaSacrificioDAL(); var ordenSacrificioDal = new OrdenSacrificioDAL(); var salidaSacrificioNuevos = new List <SalidaSacrificioInfo>(); var osId = 0; var aplicaMarel = false; string conexion = salidaSacrificioDal.ObtenerCadenaConexionSPI(organizacionId); var paramOrg = paramOrgPl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.AplicaSalidaSacrificioMarel.ToString()); if (paramOrg != null) { if (paramOrg.Valor.Trim() == "1") { aplicaMarel = true; IList <SalidaSacrificioDetalleInfo> detalleSacrificio = null; using (var transaction = new TransactionScope()) { result = ordenSacrificioDal.GuardarOrdenSacrificio(ordenInfo); if (result != null) { result.UsuarioCreacion = ordenInfo.UsuarioCreacion; ordenSacrificioDal.GuardarDetalleOrdenSacrificio(result, detalleOrden); salidaSacrificio = salidaSacrificioDal.ObtenerPorOrdenSacrificioID(result.OrdenSacrificioID); } //Obtenemos registros de la orden de sacrificio del SIAP para enviarlos al SCP osId = Convert.ToInt32(result.OrdenSacrificioID); detalleSacrificio = salidaSacrificioDal.ObtenerPorOrdenSacrificioId(osId, organizacionId, 0, ordenInfo.UsuarioCreacion); transaction.Complete(); } if (salidaSacrificio != null && salidaSacrificio.Count > 0) { foreach (var corralSacrificio in salidaSacrificio) { OrdenSacrificioDetalleInfo detalleValidar = detalleOrden.FirstOrDefault(orden => corralSacrificio.NUM_CORR.Equals(orden.Corral.Codigo.Trim().PadLeft(3, '0'), StringComparison.InvariantCultureIgnoreCase)); if (detalleValidar != null) { if (detalleValidar.OrdenSacrificioDetalleID == 0) { salidaSacrificioNuevos.Add(corralSacrificio); } } } var guardoSCP = false; using (var transaction = new TransactionScope()) { if (!salidaSacrificioDal.CrearLista(salidaSacrificioNuevos, conexion)) { Logger.Error(new Exception("Ocurrió un error al enviar información al SCP.")); result = null; } else { //Obtenemos salida de sacrificio del SCP para insertarla en Marel var sacrificio = salidaSacrificioDal.ObtenerSalidaSacrificio(detalleSacrificio.ToList(), organizacionId, conexion); if (sacrificio.Count > 0) { //Guardar información en Marel if (!salidaSacrificioDal.GuardarSalidaSacrificioMarel(sacrificio, organizacionId, conexion)) { Logger.Error(new Exception("Ocurrió un error al enviar información al SCP-Marel.")); result = null; } else { guardoSCP = true; transaction.Complete(); } } else { Logger.Error(new Exception("Ocurrió un error al obtener información del SCP para enviarla a Marel")); result = null; } } } if (!guardoSCP) { salidaSacrificioDal.EliminarDetalleOrdenSacrificio(salidaSacrificioNuevos, organizacionId, osId, 1, ordenInfo.UsuarioCreacion); } } } } if (!aplicaMarel) { using (var transaction = new TransactionScope()) { result = ordenSacrificioDal.GuardarOrdenSacrificio(ordenInfo); if (result != null) { result.UsuarioCreacion = ordenInfo.UsuarioCreacion; ordenSacrificioDal.GuardarDetalleOrdenSacrificio(result, detalleOrden); salidaSacrificio = salidaSacrificioDal.ObtenerPorOrdenSacrificioID(result.OrdenSacrificioID); } osId = Convert.ToInt32(result.OrdenSacrificioID); transaction.Complete(); } if (salidaSacrificio != null && salidaSacrificio.Count > 0) { foreach (var corralSacrificio in salidaSacrificio) { OrdenSacrificioDetalleInfo detalleValidar = detalleOrden.FirstOrDefault(orden => corralSacrificio.NUM_CORR.Equals(orden.Corral.Codigo.Trim().PadLeft(3, '0'), StringComparison.InvariantCultureIgnoreCase)); if (detalleValidar != null) { if (detalleValidar.OrdenSacrificioDetalleID == 0) { salidaSacrificioNuevos.Add(corralSacrificio); } } } var guardoSCP = false; using (var transaction = new TransactionScope()) { if (!salidaSacrificioDal.CrearLista(salidaSacrificioNuevos, conexion)) { Logger.Error(new Exception("Ocurrió un error al enviar información al SCP.")); result = null; } else { guardoSCP = true; transaction.Complete(); } } if (!guardoSCP) { salidaSacrificioDal.EliminarDetalleOrdenSacrificio(salidaSacrificioNuevos, organizacionId, osId, 0, ordenInfo.UsuarioCreacion); } } } } catch (ExcepcionGenerica ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }