/** * Realizamos el calculo del salario diario y la fecha de entrada */ private void accionesAdicionalesAsegurados(Asegurado asegurado) { int aseguradoId = asegurado.id; DateTime ahora = DateTime.Now; //obtenemos el ultimo reingreso, si existe. var movTemp = (from s in db.MovimientosAseguradoes .Where(s => s.aseguradoId.Equals(aseguradoId) && s.catalogoMovimiento.tipo.Equals("08")) .OrderByDescending(s => s.fechaInicio) select s).FirstOrDefault(); if (movTemp != null) { asegurado.fechaAlta = movTemp.fechaInicio; } if (asegurado.salarioDiario == null) { asegurado.salarioDiario = 0; } var movTemp2 = (from s in db.MovimientosAseguradoes where s.aseguradoId.Equals(aseguradoId) && (s.catalogoMovimiento.tipo.Equals("01") || s.catalogoMovimiento.tipo.Equals("02") || s.catalogoMovimiento.tipo.Equals("07") || s.catalogoMovimiento.tipo.Equals("08") || s.catalogoMovimiento.tipo.Equals("13")) orderby s.fechaInicio descending select s).ToList(); MovimientosAsegurado movto = new MovimientosAsegurado(); if (movTemp2 != null && movTemp2.Count() > 0) { foreach (var movItem in movTemp2) { movto = movItem; break; } if (movto.catalogoMovimiento.tipo.Trim().Equals("08")) { asegurado.salarioDiario = Decimal.Parse(movto.sdi.ToString()); asegurado.salarioImss = Decimal.Parse(movto.sdi.ToString()); } else if (movto.catalogoMovimiento.tipo.Trim().Equals("01") || movto.catalogoMovimiento.tipo.Trim().Equals("07") || movto.catalogoMovimiento.tipo.Trim().Equals("13")) { long annos = DatesHelper.DateDiffInYears(asegurado.fechaAlta, ahora); if (annos.Equals(0)) { annos = 1; } Factore factor = (db.Factores.Where(x => x.anosTrabajados == annos).FirstOrDefault()); if (factor != null) { asegurado.salarioDiario = Decimal.Parse(movto.sdi.Trim()) / factor.factorIntegracion; asegurado.salarioImss = Decimal.Parse(movto.sdi.ToString()); } else { asegurado.salarioDiario = 0; } } else if (movto.catalogoMovimiento.tipo.Trim().Equals("02")) { asegurado.salarioDiario = 0; asegurado.salarioImss = 0; } } else { long annos = DatesHelper.DateDiffInYears(asegurado.fechaAlta, ahora); if (annos.Equals(0)) { annos = 1; } Factore factor = (db.Factores.Where(x => x.anosTrabajados == annos).FirstOrDefault()); if (factor != null) { asegurado.salarioDiario = asegurado.salarioImss / factor.factorIntegracion; } else { asegurado.salarioDiario = 0; } } if (asegurado.fechaBaja.HasValue) { asegurado.salarioDiario = 0; asegurado.salarioImss = 0; } db.Entry(asegurado).State = EntityState.Modified; db.SaveChanges(); Acreditado acreditado = (from s in db.Acreditados where s.PatroneId == asegurado.PatroneId && s.numeroAfiliacion.Equals(asegurado.numeroAfiliacion) select s).FirstOrDefault(); if (acreditado != null) { acreditado.fechaAlta = asegurado.fechaAlta; acreditado.sd = Decimal.Parse(asegurado.salarioDiario.ToString()); acreditado.sdi = Double.Parse(asegurado.salarioImss.ToString()); //calcular el descuento tipo uno que ocupa sdi DateTime date = DateTime.Now; Decimal valueToCalculate = Decimal.Parse(asegurado.valorDescuento.ToString()); Decimal newValue = Decimal.Parse("0.0"); if (asegurado.tipoDescuento.Trim().Equals("1")) { try { ParametrosHelper parameterHelper = new ParametrosHelper(); Parametro sinfonParameter = parameterHelper.getParameterByKey("SINFON"); decimal sinfon = decimal.Parse(sinfonParameter.valorMoneda.ToString()); // Descuento tipo porcentaje acreditado.cuotaFija = 0; acreditado.vsm = 0; acreditado.porcentaje = valueToCalculate / 100; newValue = (Decimal.Parse(acreditado.sdi.ToString()) * 60); newValue = newValue * (valueToCalculate / 100); newValue = newValue + sinfon; 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; } catch (OleDbException ex) { if (ex.Source != null) { Console.WriteLine(ex.Source); } } } db.Entry(acreditado).State = EntityState.Modified; db.SaveChanges(); } }
public void uploadMovimientos(String registro, String numeroAfiliacion, int aseguradoId, String path) { SUAHelper sua = null; try { //Realizamos la conexión sua = new SUAHelper(path); String sSQL = "SELECT a.REG_PATR , a.NUM_AFIL , a.TIP_MOVS , a.FEC_INIC , a.CON_SEC , " + " a.NUM_DIAS , a.SAL_MOVT , a.SAL_MOVT2 , a.MES_ANO , a.FEC_REAL , " + " a.FOL_INC , a.CVE_MOVS , a.SAL_MOVT3 , a.TIP_INC , a.EDO_MOV , " + " a.FEC_EXT , a.SAL_ANT1 , a.SAL_ANT2 , a.SAL_ANT3 , a.ART_33 , " + " a.TIP_SAL , a.TIP_RIE , a.TIP_REC , a.NUM_CRE , a.VAL_DES , " + " a.TIP_DES , a.TAB_DISM " + " FROM Movtos a " + " WHERE a.REG_PATR = '" + registro + "'" + " AND a.NUM_AFIL = '" + numeroAfiliacion + "'" + " ORDER BY a.NUM_AFIL "; //Ejecutamos la consulta DataTable dt = sua.ejecutarSQL(sSQL); foreach (DataRow rows in dt.Rows) { String folio = rows["FOL_INC"].ToString(); MovimientosAsegurado movimiento = new MovimientosAsegurado(); movimiento.fechaInicio = DateTime.Parse(rows["FEC_INIC"].ToString()); movimiento.aseguradoId = aseguradoId; movimiento.sdi = rows["SAL_MOVT"].ToString(); String tipoMov = "01"; if (!string.IsNullOrEmpty(rows["TIP_MOVS"].ToString().Trim())) { tipoMov = rows["TIP_MOVS"].ToString().Trim(); } //Validamos que ese movimiento no se haya guardado anteriormente var movTemp = (from s in db.MovimientosAseguradoes .Where(s => s.aseguradoId.Equals(aseguradoId) && s.catalogoMovimiento.tipo.Equals(tipoMov.Trim()) && s.fechaInicio.Equals(movimiento.fechaInicio)) select s).FirstOrDefault(); if (movTemp == null) { if (rows["NUM_DIAS"].ToString() != null && !rows["NUM_DIAS"].ToString().Equals("")) { movimiento.numeroDias = int.Parse(rows["NUM_DIAS"].ToString()); } if (folio != null && !folio.Equals("")) { var incapacidadTemp = from b in db.Incapacidades where b.folioIncapacidad.Equals(folio.Trim()) select b; if (incapacidadTemp != null && incapacidadTemp.Count() > 0) { foreach (var incapacidadItem in incapacidadTemp) { movimiento.Incapacidade = incapacidadItem; movimiento.incapacidadId = incapacidadItem.id; break; }//Definimos los valores para la plaza } } var tipoTemp = db.catalogoMovimientos.Where(b => b.tipo == tipoMov).FirstOrDefault(); if (tipoTemp != null) { movimiento.catalogoMovimiento = (catalogoMovimiento)tipoTemp; } else { catalogoMovimiento catMov = new catalogoMovimiento(); catMov.id = 1; catMov.tipo = "01"; movimiento.catalogoMovimiento = catMov; } movimiento.credito = rows["NUM_CRE"].ToString(); movimiento.estatus = rows["EDO_MOV"].ToString(); //Guardamos el movimiento try { db.MovimientosAseguradoes.Add(movimiento); 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(); } } } } }//Ya existe ese movimiento for fecha y tipo? } catch (OleDbException ex) { if (ex.Source != null) { Console.WriteLine(ex.Source); } } finally { if (sua != null) { sua.cerrarConexion(); } } }