/// <summary> /// Carga una hoja de excel y retorna un datatable con la información de la misma /// </summary> /// <param name="rutaArchivo"></param> /// <param name="nombreHoja"></param> /// <returns></returns> public EDCargueMasivo CargarArchivoAusencias(EDCargueMasivo cargue) { RegistraLog registraLog = new RegistraLog(); EDCargueMasivo edCargue = new EDCargueMasivo(); try { using (ExcelPackage package = new ExcelPackage(new FileInfo(cargue.path))) { var sheet = package.Workbook.Worksheets[1]; bool validaEstruc = ValidarNombreColumnas(sheet); if (validaEstruc) { edCargue = ProcesarCargue(sheet, cargue); } else { edCargue.Message = "El cargue fallo: Los nombres de las columnas de la plantilla fueron modificados."; } return(edCargue); } } catch (Exception ex) { registraLog.RegistrarError(typeof(LNCargue), string.Format("Error en el método CargarArchivoAusencias {0}: {1}", DateTime.Now, ex.StackTrace), ex); edCargue.Message = "El proceso de cargue fallo: La estructura del archivo no es valida"; return(edCargue); } }
public HttpResponseMessage ObtenerReporteExcel(EDCargueMasivo cargue) { HttpResponseMessage response = null; try { LNCargue logica = new LNCargue(); var archivo = logica.CargarPlantillaCargueAusentismo(cargue); if (archivo != null) { response = Request.CreateResponse <EDCargueMasivo>(HttpStatusCode.Created, archivo); return(response); } else { response = Request.CreateResponse(HttpStatusCode.ExpectationFailed); return(response); } } catch (Exception ex) { response = Request.CreateResponse(HttpStatusCode.InternalServerError); return(response); } }
public EDCargueMasivo CargarPlantillaCargueAusentismo(EDCargueMasivo cargue) { RegistraLog registraLog = new RegistraLog(); EDCargueMasivo edCargue = new EDCargueMasivo(); try { edCargue = CargarArchivoAusencias(cargue); } catch (Exception ex) { registraLog.RegistrarError(typeof(LNCargue), string.Format("Error en el método CargarPlantillaCargueAusentismo {0}: {1}", DateTime.Now, ex.StackTrace), ex); edCargue.Message = "El proceso de cargue fallo: la estructura del archivo no es valida"; return(edCargue); } return(edCargue); }
public EDCargueMasivo InsertarAusenciasCargueMasivo(List <EDAusencia> AusenciasMasivo) { bool result = true; List <EDAusencia> Ausenciastmp = new List <EDAusencia>(); EDCargueMasivo edCargue = new EDCargueMasivo(); edCargue.Message = string.Empty; int contador = 1; using (SG_SSTContext context = new SG_SSTContext()) { using (var Transaction = context.Database.BeginTransaction()) { try { int idpadre = 0; foreach (EDAusencia ausencia in AusenciasMasivo) { contador++; Ausencia nuevaAusencia = new Ausencia(); bool puedeCrear = VerificarCrucesEnCargueMasivo(ausencia, Ausenciastmp); if (puedeCrear) { if (ausencia.consecutivoPadre > 0) { nuevaAusencia.FK_Id_Ausencias_Padre = idpadre; nuevaAusencia.Documento_Persona = ausencia.Documento; nuevaAusencia.NitEmpresa = ausencia.IdEmpresa; nuevaAusencia.FK_Id_EmpresaUsuaria = ausencia.IdEmpresaUsuaria; nuevaAusencia.FK_Id_Departamento = ausencia.idDepartamento; nuevaAusencia.FK_Id_Municipio = ausencia.idMunicipio; nuevaAusencia.FK_Id_Contingencia = ausencia.IdContingencia; nuevaAusencia.FK_Id_Diagnostico = ausencia.IdDiagnostico; nuevaAusencia.FK_Id_Sede = ausencia.IdSede; nuevaAusencia.FK_Id_Proceso = ausencia.IdProceso; nuevaAusencia.FechaInicio = ausencia.FechaInicio; nuevaAusencia.Fecha_Fin = ausencia.FechaFin; nuevaAusencia.DiasAusencia = ausencia.DiasAusencia; nuevaAusencia.Costo = ausencia.Costo; nuevaAusencia.Factor_Prestacional = ausencia.FactorPrestacional; nuevaAusencia.Observaciones = ausencia.Observaciones; nuevaAusencia.FK_Id_Ocupacion = ausencia.IdOcupacion; nuevaAusencia.Sexo = ausencia.Sexo; nuevaAusencia.Tipo_Vinculacion = ausencia.TipoVinculacion; nuevaAusencia.Edad = ausencia.Edad; nuevaAusencia.Eps = ausencia.Eps; nuevaAusencia.FechaModificacion = DateTime.Now; nuevaAusencia.FechaRegistro = DateTime.Now; nuevaAusencia.NombrePersona = ausencia.NombrePersona; context.Tbl_Ausencias.Add(nuevaAusencia); context.SaveChanges(); Ausenciastmp.Add(ausencia); } else { nuevaAusencia.Documento_Persona = ausencia.Documento; nuevaAusencia.NitEmpresa = ausencia.IdEmpresa; nuevaAusencia.FK_Id_EmpresaUsuaria = ausencia.IdEmpresaUsuaria; nuevaAusencia.FK_Id_Departamento = ausencia.idDepartamento; nuevaAusencia.FK_Id_Municipio = ausencia.idMunicipio; nuevaAusencia.FK_Id_Contingencia = ausencia.IdContingencia; nuevaAusencia.FK_Id_Diagnostico = ausencia.IdDiagnostico; nuevaAusencia.FK_Id_Sede = ausencia.IdSede; nuevaAusencia.FK_Id_Proceso = ausencia.IdProceso; nuevaAusencia.FechaInicio = ausencia.FechaInicio; nuevaAusencia.Fecha_Fin = ausencia.FechaFin; nuevaAusencia.DiasAusencia = ausencia.DiasAusencia; nuevaAusencia.Costo = ausencia.Costo; nuevaAusencia.Factor_Prestacional = ausencia.FactorPrestacional; nuevaAusencia.Observaciones = ausencia.Observaciones; nuevaAusencia.FK_Id_Ocupacion = ausencia.IdOcupacion; nuevaAusencia.Sexo = ausencia.Sexo; nuevaAusencia.Tipo_Vinculacion = ausencia.TipoVinculacion; nuevaAusencia.Edad = ausencia.Edad; nuevaAusencia.Eps = ausencia.Eps; nuevaAusencia.FechaModificacion = DateTime.Now; nuevaAusencia.FechaRegistro = DateTime.Now; nuevaAusencia.NombrePersona = ausencia.NombrePersona; context.Tbl_Ausencias.Add(nuevaAusencia); context.SaveChanges(); idpadre = nuevaAusencia.Pk_Id_Ausencias; Ausenciastmp.Add(ausencia); } } else { Transaction.Rollback(); edCargue.Message = "Proceso fallido, las fechas del registro de la fila " + contador + " se cruzan con registros ya reportados. "; result = false; break; } } if (result) { Transaction.Commit(); edCargue.Message = "OK"; } } catch { Transaction.Rollback(); edCargue.Message = "El proceso de cargue fallo, comuniquese con el administrador del sistema"; } } } return(edCargue); }
public ActionResult CargueMasivo(object form_data) { var objEvaluacion = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current); if (System.Web.HttpContext.Current.Request.Files.AllKeys.Any()) { var pic = System.Web.HttpContext.Current.Request.Files["cargarArchivo"]; var idempresausuaria = System.Web.HttpContext.Current.Request.Params["IdEmpresaUsuaria"]; HttpPostedFileBase file = new HttpPostedFileWrapper(pic); if (file.FileName.EndsWith("xls") || file.FileName.EndsWith("xlsx")) { var fileName = Path.GetFileName(file.FileName); string path = string.Empty; if (int.Parse(idempresausuaria) > 0) { path = Path.Combine(rutaPlantillaAusentismo, objEvaluacion.NitEmpresa, idempresausuaria); } else { path = Path.Combine(rutaPlantillaAusentismo, objEvaluacion.NitEmpresa); } if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = Path.Combine(path, fileName); if (System.IO.File.Exists(path)) { System.IO.File.Delete(path); } file.SaveAs(path); EDCargueMasivo cargue = new EDCargueMasivo(); cargue.Id_Empresa_Usuaria = int.Parse(idempresausuaria); cargue.path = path; cargue.NitEmpresa = objEvaluacion.NitEmpresa; ServiceClient.EliminarParametros(); var result = ServiceClient.RealizarPeticionesPostJsonRestFul <EDCargueMasivo>(urlServicioPlanificacion, CapacidadCargarplatillaausentismo, cargue); if (result != null) { if (result.Message.Equals("OK")) { return(Json(new { Data = "El registro del ausentismo laboral fue cargado satisfactoriamente.", Mensaje = "Success" })); } else { return(Json(new { Data = result.Message, Mensaje = "ERROR" })); } } else { return(Json(new { Data = "Se presento un error de comunicacion con el servidor; por favor intente nuevamente o comuniquese con el administrador del sistema.", Mensaje = "ERROR" })); } } else { return(Json(new { Data = "Debe seleccionar un archivo en formato excel con extencion .xls o .xlsx", Mensaje = "ERROR" })); } } else { return(Json(new { Data = "Se presento un error en la carga del archivo; por favor intente nuevamente o comuniquese con el administrador del sistema.", Mensaje = "ERROR" })); } }
private EDCargueMasivo ProcesarCargue(ExcelWorksheet sheet, EDCargueMasivo cargue) { EDCargueMasivo edCargue = new EDCargueMasivo(); List <EDAusencia> Ausencias = new List <EDAusencia>(); LNAusencia use = new LNAusencia(); bool tieneDatos = false; bool result = false; int consecutivo; int conscutivopadre; int CodTipoDocumento; string Nit_Empresa; int Cod_Departamento; int Cod_Municipio; int Cod_Sede; int Cod_Tipo_Documento; string Num_Documento; string Nombre_Trabajador; int Edad; string Genero; int Cod_Ocupacion; string Nombre_EPS; string Tipo_Vinculacion; int Salario_Base; int Cod_Contingencia; int Cod_Area; DateTime Fecha_Inicio; DateTime Fecha_Fin; int Cod_Diagnostico; decimal Factor_Prestacional; string Observacion; int DiasLaborables = 5; int diasCalculados = 0; try { var dt = new DataTable(); var rowCnt = sheet.Dimension.End.Row; LNAusencia lnAusencia = new LNAusencia(); //Verificamos los nombres de las columnas // Loop through Columns for (var fila = 2; fila <= rowCnt; fila++) { EDAusencia Ausencia = new EDAusencia(); if (sheet.Cells[fila, 1].Value == null || sheet.Cells[fila, 2].Value == null || sheet.Cells[fila, 3].Value == null || sheet.Cells[fila, 4].Value == null || sheet.Cells[fila, 5].Value == null || sheet.Cells[fila, 6].Value == null || sheet.Cells[fila, 7].Value == null || sheet.Cells[fila, 8].Value == null || sheet.Cells[fila, 9].Value == null || sheet.Cells[fila, 10].Value == null || sheet.Cells[fila, 11].Value == null || sheet.Cells[fila, 12].Value == null || sheet.Cells[fila, 13].Value == null || sheet.Cells[fila, 14].Value == null || sheet.Cells[fila, 15].Value == null || sheet.Cells[fila, 16].Value == null || sheet.Cells[fila, 17].Value == null || sheet.Cells[fila, 18].Value == null || sheet.Cells[fila, 19].Value == null || sheet.Cells[fila, 20].Value == null || sheet.Cells[fila, 21].Value == null || sheet.Cells[fila, 22].Value == null) { edCargue.Message = "Existen campos en blanco por favor revise la fila " + fila + "; es obligatorio diligenciar todas las columnas excepto observaciones."; return(edCargue); } try { consecutivo = int.Parse(sheet.Cells[fila, 1].Value.ToString()); } catch { edCargue.Message = "El valor del campo consecutivo en la fila " + fila + ", tiene que ser un número entero."; return(edCargue); } try { conscutivopadre = int.Parse(sheet.Cells[fila, 2].Value.ToString()); } catch { edCargue.Message = "El valor del campo consecutivopadre en la fila " + fila + ", tiene que ser un número entero."; return(edCargue); } if (conscutivopadre > 0 && fila == 2) { edCargue.Message = "El primer resgistro no puede ser un registro que indica prorroga, debe tener un registro padre que indica la ausencia inicial."; return(edCargue); } try { CodTipoDocumento = VerificarTipoDocumento(int.Parse(sheet.Cells[fila, 3].Value.ToString())); if (CodTipoDocumento < 1) { edCargue.Message = "No se encontró el Cod_Tipo_Documento ingresado en la fila " + fila + ", por favor verifique con la lista en la hoja Documentos. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Tipo_Documento en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Documentos."; return(edCargue); } Nit_Empresa = sheet.Cells[fila, 4].Value.ToString(); if (fila < 3) { DiasLaborables = lnAusencia.ObtenerDiasLaborablesEmpresa(Nit_Empresa); } try { Cod_Departamento = VerificarDepartamento(int.Parse(sheet.Cells[fila, 5].Value.ToString())); if (Cod_Departamento < 1) { edCargue.Message = "No se encontró el Cod_Departamento ingresado en la fila " + fila + ", por favor verifique con la lista en la hoja Departamentos. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Departamento en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Departamentos."; return(edCargue); } try { Cod_Municipio = VerificarMunicipio(int.Parse(sheet.Cells[fila, 6].Value.ToString()), Cod_Departamento); if (Cod_Municipio < 1) { edCargue.Message = "No se encontró el Cod_Municipio de la fila " + fila + " asociado al Cod_Departamento ingresado, por favor verifique con la lista en la hoja Municipios. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Municipio en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Municipios."; return(edCargue); } try { Cod_Sede = VerificarSede(int.Parse(sheet.Cells[fila, 7].Value.ToString()), Nit_Empresa); if (Cod_Sede < 1) { edCargue.Message = "No se encontró el Cod_Sede de la fila " + fila + " asociada al Nit ingresado, por favor verifique con la lista en la hoja Sedes. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Sede en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Sedes."; return(edCargue); } try { Cod_Tipo_Documento = VerificarTipoDocumento(int.Parse(sheet.Cells[fila, 8].Value.ToString())); if (Cod_Tipo_Documento < 1) { edCargue.Message = "No se encontró el Cod_Tipo_Documento ingresado en la fila " + fila + ", por favor verifique con la lista en la hoja Documentos. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Tipo_Documento en la fila" + fila + ", tiene que ser un número entero tomado de lista en la hoja Documentos."; return(edCargue); } Num_Documento = sheet.Cells[fila, 9].Value.ToString(); Nombre_Trabajador = sheet.Cells[fila, 10].Value.ToString(); try { Edad = int.Parse(sheet.Cells[fila, 11].Value.ToString()); } catch { edCargue.Message = "El valor del campo Edad en la fila " + fila + ", tiene que ser un número entero."; return(edCargue); } if (sheet.Cells[fila, 12].Value.ToString().ToUpper().Equals("F") || sheet.Cells[fila, 12].Value.ToString().ToUpper().Equals("M")) { Genero = sheet.Cells[fila, 12].Value.ToString().ToUpper(); } else { edCargue.Message = "El valor ingresado en Genero fila " + fila + ", no es un valor de genero valido, por favor ingrese F o M. "; return(edCargue); } try { Cod_Ocupacion = VerificarOcupacion(int.Parse(sheet.Cells[fila, 13].Value.ToString())); if (Cod_Ocupacion < 1) { edCargue.Message = "No se encontró el Cod_Ocupacion ingresado en la fila " + fila + ", por favor verifique con la lista en la hoja Ocupaciones. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Ocupacion en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Ocupaciones."; return(edCargue); } Nombre_EPS = sheet.Cells[fila, 14].Value.ToString(); Tipo_Vinculacion = sheet.Cells[fila, 15].Value.ToString(); try { Salario_Base = int.Parse(sheet.Cells[fila, 16].Value.ToString()); } catch { edCargue.Message = "El valor del campo Salario_Base en la fila " + fila + ", tiene que ser un número entero sin puntos."; return(edCargue); } try { Cod_Contingencia = VerificarContingencia(int.Parse(sheet.Cells[fila, 17].Value.ToString())); if (Cod_Contingencia < 1) { edCargue.Message = "No se encontró el Cod_Contingencia ingresado en la fila " + fila + ", por favor verifique con la lista en la hoja Contingencias. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Contingencia en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Contingencias."; return(edCargue); } try { Cod_Area = VerificarProceso(int.Parse(sheet.Cells[fila, 18].Value.ToString()), Nit_Empresa); if (Cod_Area < 1) { edCargue.Message = "No se encontró el Cod_Area de la fila " + fila + " asociado al Nit ingresado, por favor verifique con la lista en la hoja Areas. "; return(edCargue); } } catch { edCargue.Message = "El valor del campo Cod_Area en la fila " + fila + ", tiene que ser un número entero tomado de lista en la hoja Areas."; return(edCargue); } try { Fecha_Inicio = Convert.ToDateTime(sheet.Cells[fila, 19].Value, CultureInfo.InvariantCulture); } catch { edCargue.Message = "El valor del campo Fecha_Inicio en la fila " + fila + ", no es una fecha valida o no tiene el formato DD/MM/YYYY."; return(edCargue); } try { Fecha_Fin = Convert.ToDateTime(sheet.Cells[fila, 20].Value, CultureInfo.InvariantCulture); } catch { edCargue.Message = "El valor del campo Fecha_Fin en la fila " + fila + ", no es una fecha valida o no tiene el formato DD/MM/YYYY."; return(edCargue); } try { if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.AccidenteTrabajo || Cod_Contingencia == (int)EnumAusentismo.Contingencias.EnfermedadGeneral || Cod_Contingencia == (int)EnumAusentismo.Contingencias.EnfermedadLaboral) { Cod_Diagnostico = VerificarDiagnostico(sheet.Cells[fila, 21].Value.ToString()); if (Cod_Diagnostico < 1) { edCargue.Message = "No se encontró el Cod_Diagnostico ingresado en la fila " + fila + ", por favor verifique con la lista en la hoja Diagnosticos. "; return(edCargue); } } else { Cod_Diagnostico = 0; } } catch { edCargue.Message = "El valor del campo Cod_Diagnostico en la fila " + fila + ", debe ser alfanumerico tomado de lista en la hoja Diagnosticos."; return(edCargue); } try { Factor_Prestacional = Convert.ToDecimal(sheet.Cells[fila, 22].Value, CultureInfo.InvariantCulture); } catch { edCargue.Message = "El valor del campo Factor_Prestacional en la fila " + fila + ", no es valido."; return(edCargue); } if (Fecha_Inicio > Fecha_Fin) { edCargue.Message = "La fecha de inicio es mayor que la fecha fin en la fila " + fila + "."; return(edCargue); } Observacion = string.Empty; if (sheet.Cells[fila, 23].Value != null) { Observacion = sheet.Cells[fila, 23].Value.ToString(); } if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.LicenciaPaternidad) { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); if (diasCalculados != 8) { edCargue.Message = "La licencia de paternidad debe ser de 8 dias habiles, por favor verifique las fechas de inicio y fin en la fila " + fila; return(edCargue); } } else if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.LicenciaLuto) { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); if (diasCalculados != 5) { edCargue.Message = "La licencia de luto debe ser de 5 dias habiles, por favor verifique las fechas de inicio y fin en la fila " + fila; return(edCargue); } } else if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.LicenciaMaternidad) { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); if (diasCalculados != 126) { edCargue.Message = "La licencia de maternidad debe ser de 126 días calendario, por favor verifique las fechas de inicio y fin en la fila " + fila; return(edCargue); } } else if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.LicenciaMaternidadMultiple) { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); if (diasCalculados != 140) { edCargue.Message = "La licencia de maternidad por Parto Múltiple debe ser de 140 días calendario, por favor verifique las fechas de inicio y fin en la fila " + fila; return(edCargue); } } else if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.LicenciaMaternidadPrematuro) { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); if (diasCalculados <= 126 || diasCalculados > 217) { edCargue.Message = "La licencia de maternidad por Nacimiento Prematura debe ser superior a 126 dias y no sobrepasar los 217 días calendario, por favor verifique las fechas de inicio y fin en la fila " + fila; return(edCargue); } } else if (Cod_Contingencia == (int)EnumAusentismo.Contingencias.PermisoPorHorasDia) { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); if (diasCalculados > 1) { edCargue.Message = "El permiso por dias no debe superar 1 dia, por favor verifique que las fechas de inicio y fin sean iguales en la fila " + fila; return(edCargue); } } else { diasCalculados = lnAusencia.CalcularDiasLaborales(Fecha_Inicio, Fecha_Fin, DiasLaborables, Cod_Contingencia); } // Ausencia.IdAusencia = consecutivo; Ausencia.consecutivoPadre = conscutivopadre; Ausencia.Documento = Num_Documento; Ausencia.IdEmpresa = Nit_Empresa; Ausencia.IdEmpresaUsuaria = cargue.Id_Empresa_Usuaria; Ausencia.idDepartamento = Cod_Departamento; Ausencia.idMunicipio = Cod_Municipio; Ausencia.IdContingencia = Cod_Contingencia; Ausencia.IdDiagnostico = Cod_Diagnostico; Ausencia.IdSede = Cod_Sede; Ausencia.IdProceso = Cod_Area; Ausencia.FechaInicio = Fecha_Inicio; Ausencia.FechaFin = Fecha_Fin; Ausencia.DiasAusencia = diasCalculados; Ausencia.Costo = ((Salario_Base / 30) * Ausencia.DiasAusencia) * Factor_Prestacional; Ausencia.FactorPrestacional = Factor_Prestacional; Ausencia.Observaciones = Observacion; Ausencia.IdOcupacion = Cod_Ocupacion; Ausencia.Sexo = Genero; Ausencia.Edad = Edad; Ausencia.Eps = Nombre_EPS; Ausencia.TipoVinculacion = Tipo_Vinculacion; Ausencia.NombrePersona = Nombre_Trabajador; Ausencias.Add(Ausencia); tieneDatos = true; } if (tieneDatos) { return(aus.InsertarAusenciasCargueMasivo(Ausencias)); } else { edCargue.Message = "El proceso de cargue fallo, El archivo no contiene información valida"; } } catch (Exception ex) { RegistraLog registraLog = new RegistraLog(); registraLog.RegistrarError(typeof(LNCargue), string.Format("Error en el método WorksheetToDataTable {0}: {1}", DateTime.Now, ex.StackTrace), ex); edCargue.Message = "El proceso de cargue fallo: La estructura del archivo no es valida"; return(edCargue); } return(edCargue); }