/** * Realizamos la carga de los acreditados */ public void uploadAcreditado(String path) { SUAHelper sua = null; Boolean isError = false; try { sua = new SUAHelper(path); ParametrosHelper parameterHelper = new ParametrosHelper(); Parametro smdfParameter = parameterHelper.getParameterByKey("SMDF"); Parametro sinfonParameter = parameterHelper.getParameterByKey("SINFON"); //Preparamos la consulta String sSQL = "SELECT a.REG_PATR , a.NUM_AFIL, a.CURP , a.RFC_CURP, a.NOM_ASEG, " + " a.SAL_IMSS , a.SAL_INFO, a.FEC_ALT , a.FEC_BAJ , a.TIP_TRA , " + " a.SEM_JORD , a.PAG_INFO, a.TIP_DSC , a.VAL_DSC , a.CVE_UBC , " + " a.TMP_NOM , a.FEC_DSC , a.FEC_FinDsc, a.ARTI_33 , a.SAL_AR33," + " a.TRA_PENIV, a.ESTADO , a.CVE_MUN , b.OCUPA , b.LUG_NAC " + " FROM Asegura a LEFT JOIN Afiliacion b " + " ON a.REG_PATR = b.REG_PATR AND a.NUM_AFIL = b.NUM_AFIL " + " WHERE a.PAG_INFO <> '' " + " ORDER BY a.REG_PATR, a.NUM_AFIL "; DataTable dt = sua.ejecutarSQL(sSQL); foreach (DataRow rows in dt.Rows) { String patronDescripcion = rows["REG_PATR"].ToString(); Patrone patron = new Patrone(); if (!patronDescripcion.Equals("")) { var patronTemp = from b in db.Patrones where b.registro.Equals(patronDescripcion.Trim()) select b; if (patronTemp != null && patronTemp.Count() > 0) { foreach (var patronItem in patronTemp) { patron = patronItem; break; }//Definimos los valores para la plaza } else { patron.registro = ""; } } if (!patron.registro.Trim().Equals("")) { Boolean bExist = false; //Creamos el nuevo asegurado Acreditado acreditado = new Acreditado(); String numAfil = rows["NUM_AFIL"].ToString().Trim(); String numCred = rows["PAG_INFO"].ToString().Trim(); //Revisamos la existencia del registro var acreditadoExist = from b in db.Acreditados where b.Patrone.registro.Equals(patron.registro.Trim()) && b.numeroAfiliacion.Equals(numAfil) && b.numeroCredito.Equals(numCred) select b; if (acreditadoExist != null && acreditadoExist.Count() > 0) { foreach (var acred in acreditadoExist) { acreditado = acred; bExist = true; break; }//Borramos cada registro. }//Ya existen datos con este patron? String tipoDescuento = rows["TIP_DSC"].ToString(); acreditado.PatroneId = patron.Id; acreditado.Patrone = patron; acreditado.numeroAfiliacion = rows["NUM_AFIL"].ToString(); acreditado.CURP = rows["CURP"].ToString(); acreditado.RFC = rows["RFC_CURP"].ToString(); String cliente = rows["CVE_UBC"].ToString(); var clienteTemp = db.Clientes.Where(b => b.claveCliente == cliente.Trim()).FirstOrDefault(); var clienteTemp2 = db.Clientes.Where(b => b.claveCliente.Equals("SIN CODIGO")).FirstOrDefault(); if (clienteTemp != null) { acreditado.Cliente = (Cliente)clienteTemp; acreditado.clienteId = clienteTemp.Id; } else { acreditado.Cliente = (Cliente)clienteTemp2; acreditado.clienteId = clienteTemp2.Id; ; //Cliente clienteNuevo = new Cliente(); //clienteNuevo.claveCliente = cliente; //clienteNuevo.rfc = "PENDIENTE"; //clienteNuevo.claveSua = "PENDIENTE"; //clienteNuevo.descripcion = "PENDIENTE"; //clienteNuevo.ejecutivo = "PENDIENTE"; //clienteNuevo.Plaza_id = 1; //clienteNuevo.Grupo_id = 4; //try //{ // db.Clientes.Add(clienteNuevo); // db.SaveChanges(); // acreditado.clienteId = clienteNuevo.Id; //} //catch (DbEntityValidationException dbEx) //{ // foreach (var validationErrors in dbEx.EntityValidationErrors) // { // foreach (var validationError in validationErrors.ValidationErrors) // { // Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); // } // } //} } String nombrePattern = rows["NOM_ASEG"].ToString(); nombrePattern = nombrePattern.Replace("$", ","); string[] substrings = Regex.Split(nombrePattern, ","); acreditado.nombre = substrings[2]; acreditado.apellidoPaterno = substrings[0]; acreditado.apellidoMaterno = substrings[1]; acreditado.nombreCompleto = substrings[0] + " " + substrings[1] + " " + substrings[2]; acreditado.ocupacion = rows["OCUPA"].ToString(); acreditado.fechaAlta = DateTime.Parse(rows["FEC_ALT"].ToString()); if (rows["FEC_BAJ"].ToString().Equals("")) { acreditado.fechaBaja = null; } else { acreditado.fechaBaja = DateTime.Parse(rows["FEC_BAJ"].ToString()); }//Trae fecha valida? acreditado.idGrupo = ""; acreditado.numeroCredito = rows["PAG_INFO"].ToString(); if (rows["FEC_DSC"].ToString().Equals("")) { acreditado.fechaInicioDescuento = null; } else { acreditado.fechaInicioDescuento = DateTime.Parse(rows["FEC_DSC"].ToString()); }//Trae fecha valida? if (rows["FEC_FinDsc"].ToString().Equals("")) { acreditado.fechaFinDescuento = null; } else { acreditado.fechaFinDescuento = DateTime.Parse(rows["FEC_FinDsc"].ToString()); }//Trae fecha valida? DateTime date = DateTime.Now; //Validamos que el ultimo movimiento no sea por baja o suspención. if (sua.esValidoActualizarPorMovimiento(acreditado.Patrone.registro, acreditado.numeroAfiliacion)) { //Validamos que el valor de los parametros sea mayor a cero. if (sinfonParameter.valorMoneda > 0 && smdfParameter.valorMoneda > 0) { if (bExist) { if(acreditado.fechaUltimoCalculo != null){ //Validamos que se haya modificado el valor de los parametros para el calculo if (DateTime.Compare((DateTime)acreditado.fechaUltimoCalculo, smdfParameter.fechaCreacion) <= 0 && DateTime.Compare((DateTime)acreditado.fechaUltimoCalculo, sinfonParameter.fechaCreacion) <= 0) { acreditado = calcularInfonavitInfo(acreditado, rows, tipoDescuento, Decimal.Parse(sinfonParameter.valorMoneda.ToString()), Decimal.Parse(smdfParameter.valorMoneda.ToString())); } //Se ha cambiado los parametros desde la ultima actualización ? }else{ acreditado = calcularInfonavitInfo(acreditado, rows, tipoDescuento, Decimal.Parse(sinfonParameter.valorMoneda.ToString()), Decimal.Parse(smdfParameter.valorMoneda.ToString())); } } else { acreditado = calcularInfonavitInfo(acreditado, rows, tipoDescuento, Decimal.Parse(sinfonParameter.valorMoneda.ToString()), Decimal.Parse(smdfParameter.valorMoneda.ToString())); } }//Los parametros son mayores a cero en su valor moneda ? }//El movimiento es por baja o suspención ? acreditado.Plaza_id = patron.Plaza_id; if (!bExist) { acreditado.fechaCreacion = date; } else { acreditado.fechaModificacion = date; } //Guardamos el asegurado try { if (!bExist) { db.Acreditados.Add(acreditado); } else { db.Entry(acreditado).State = EntityState.Modified; } db.SaveChanges(); } catch (DbEntityValidationException ex) { StringBuilder sb = new StringBuilder(); foreach (var failure in ex.EntityValidationErrors) { sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType()); foreach (var error in failure.ValidationErrors) { sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage); sb.AppendLine(); } } } } } } catch (OleDbException ex) { if (ex.Source != null) { Console.WriteLine(ex.Source); isError = true; } } finally { if (isError) { TempData["error"] = isError; TempData["viewMessage"] = "Ocurrio un error al intentar cargar el archivo de los Acreditados"; } else { TempData["error"] = isError; TempData["viewMessage"] = "Se ha realizado la actualización con exito!"; } if (sua != null) { sua.cerrarConexion(); } } }
private Acreditado calcularInfonavitInfo(Acreditado acreditado, DataRow rows, String tipoDescuento, Decimal sinfon, Decimal smdf) { DateTime date = DateTime.Now; Decimal valueToCalculate = Decimal.Parse(rows["VAL_DSC"].ToString()); acreditado.sdi = Double.Parse(rows["SAL_IMSS"].ToString()); Decimal sdi = Decimal.Parse(rows["SAL_IMSS"].ToString()); acreditado.smdv = Double.Parse(smdf.ToString()); TempData["sinfon"] = sinfon.ToString(); Decimal newValue = Decimal.Parse("0.0"); //Empezamos con los calculos /* if (tipoDescuento.Trim().Equals("1")) { // Descuento tipo porcentaje acreditado.sd = 0; acreditado.cuotaFija = 0; acreditado.vsm = 0; acreditado.porcentaje = valueToCalculate / 100; newValue = (sdi * 60); newValue = newValue * (valueToCalculate / 100); newValue = newValue + sinfon; acreditado.descuentoBimestral = newValue; } else */ if (tipoDescuento.Trim().Equals("2")) { // Descuento tipo cuota fija acreditado.sd = 0; acreditado.cuotaFija = valueToCalculate; acreditado.vsm = 0; acreditado.porcentaje = 0; newValue = valueToCalculate * 2; acreditado.descuentoBimestral = newValue; } else if (tipoDescuento.Trim().Equals("3")) { // Descuento tipo VSM acreditado.sd = 0; acreditado.cuotaFija = 0; acreditado.vsm = Math.Round(valueToCalculate, 3); acreditado.porcentaje = 0; newValue = valueToCalculate * smdf * 2; newValue = newValue + sinfon; newValue = Math.Round(newValue, 3); acreditado.descuentoBimestral = newValue; } acreditado.descuentoMensual = Math.Round(acreditado.descuentoBimestral / 2, 3); Decimal newValue2 = acreditado.descuentoMensual * Decimal.Parse((7 / 30.4).ToString()); newValue2 = Math.Round(newValue2, 3); acreditado.descuentoSemanal = newValue2; newValue2 = acreditado.descuentoMensual * Decimal.Parse((14 / 30.4).ToString()); newValue2 = Math.Round(newValue2, 3); acreditado.descuentoCatorcenal = newValue2; acreditado.descuentoQuincenal = Math.Round(acreditado.descuentoBimestral / 4, 3); acreditado.descuentoVeintiochonal = Math.Round(acreditado.descuentoMensual * Decimal.Parse((28 / 30.4).ToString()), 3); acreditado.descuentoDiario = Math.Round(acreditado.descuentoBimestral / Decimal.Parse("60.1"), 3); acreditado.fechaUltimoCalculo = date.Date; return acreditado; }