private bool VerificarInteresesDetallesPago(DateTime FechaCalcular) { DateTime FechaActual = FechaCalcular; mIntereses oTI = new mIntereses(); bool Ok = true; foreach (detalles_pagoDto item in oDto.detalles_pago.Where(t => t.tipo == "CA").ToList()) { int ValorIntereses = 0; config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); carterap cart = ctx.carterap.Where(t => t.id == item.id_cartera).FirstOrDefault(); DateTime FechaUltimoCalculoIntereses = cart.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; if (FechaActual > FechaVencimientoPeriodo) { ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, (float)item.valor, item.vigencia, item.periodo, item.id); } } if (ValorIntereses > 0) { detalles_pagoDto detailsPaymentOld = oDto.detalles_pago.Where(t => t.tipo == "IN" && t.id_cartera == item.id_cartera).FirstOrDefault(); if ((detailsPaymentOld == null) || (detailsPaymentOld.valor != ValorIntereses)) { Ok = false; break; } } } return Ok; }
public void OperacionIntereses() { if (oDto.causar_intereses) { int ultId = 0; try { ultId = ctx.carterap.Max(t => t.id); } catch { } DateTime FechaActual = oDto.fecha_pago.Value.Date; mIntereses oTI = new mIntereses(); foreach (detalles_pago item in Dto.detalles_pago.Where(t => t.tipo == "CA").ToList()) { int ValorIntereses = 0; config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); DateTime FechaUltimoCalculoIntereses = item.carterap.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; if (FechaActual > FechaVencimientoPeriodo) { ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, (float)item.valor, item.vigencia, item.periodo, item.id); } } if (ValorIntereses > 0) { detalles_pago detailsPaymentOld = Dto.detalles_pago.Where(t => t.tipo == "IN" && t.id_cartera == item.id_cartera).FirstOrDefault(); if ((detailsPaymentOld == null) || (detailsPaymentOld.valor != ValorIntereses)) { detalles_pago detPag = Dto.detalles_pago.Where(t => t.tipo == "CA" && t.id_cartera == item.id_cartera).FirstOrDefault(); carterap itemCart = detPag.carterap; if (itemCart.valor - itemCart.pagado == 0) { ultId++; carterap itemCartera = new carterap(); itemCartera.id = ultId; itemCartera.vigencia = item.vigencia; itemCartera.id_concepto = 6; itemCartera.periodo = item.periodo; itemCartera.valor = ValorIntereses; itemCartera.id_matricula = item.carterap.id_matricula; itemCartera.id_estudiante = item.carterap.id_estudiante; itemCartera.pagado = 0; itemCartera.id_est = item.carterap.id_est; itemCartera.id_grupo = item.carterap.id_grupo; itemCartera.estado = "PR"; itemCartera.pago_genero_intereses = Dto.id; ctx.carterap.Add(itemCartera); } } } } } }
private string VerificarInteresesDetallesPago() { string CadenaTabla = "<table class='table table-bordered table-hover table-striped tablesorter'>" + "<thead>" + "<tr>" + "<th>Concepto <i class='fa fa-sort'></i></th>" + "<th style='text-align:right'>Valor Antes <i class='fa fa-sort'></i></th>" + "<th style='text-align:right'>Valor Ahora <i class='fa fa-sort'></i></th>" + "</tr>" + "</thead>" + "<tbody>"; DateTime FechaActual = oDto.fecha_pago.Value.Date; mIntereses oTI = new mIntereses(); foreach (detalles_pago item in Dto.detalles_pago.Where(t => t.tipo == "CA").ToList()) { int ValorIntereses = 0; config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); DateTime FechaUltimoCalculoIntereses = item.carterap.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; if (FechaActual > FechaVencimientoPeriodo) { ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, (float)item.valor, item.vigencia, item.periodo, item.id); } } if (ValorIntereses > 0) { detalles_pago detailsPaymentOld = Dto.detalles_pago.Where(t => t.tipo == "IN" && t.id_cartera == item.id_cartera).FirstOrDefault(); if ((detailsPaymentOld == null) || (detailsPaymentOld.valor != ValorIntereses)) { detalles_pago detPag = Dto.detalles_pago.Where(t => t.tipo == "CA" && t.id_cartera == item.id_cartera).FirstOrDefault(); carterap itemCart = detPag.carterap; if (itemCart.valor - itemCart.pagado - detPag.valor == 0) { int interesesPri = 0; if (detailsPaymentOld != null) interesesPri = (int)detailsPaymentOld.valor; detalles_pago det = Dto.detalles_pago.Where(t => t.tipo == "CA" && t.id_cartera == item.id_cartera).FirstOrDefault(); CadenaTabla += "<tr>" + "<td>" + det.conceptos.nombre + ", periodo: " + det.periodo + "</td>" + "<td style='text-align:right'>" + interesesPri.ToString("C") + "</td>" + "<td style='text-align:right'>" + ValorIntereses.ToString("C") + "</td>" + "</tr>"; } } } } CadenaTabla += "</tbody></table>"; return CadenaTabla; }
private DateTime? CalcularFechaVencimientoLiquidacion() { DateTime FechaActual = oDto.fecha.Date; mIntereses oTI = new mIntereses(); bool Ok = false; foreach (detalles_pagoDto item in oDto.detalles_pago.Where(t => t.tipo == "CA").ToList()) { config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) Ok = true; } if (Ok == false) return null; else { bool Seguir = true; DateTime FechaExtrema = new DateTime(2100, 1, 1); if (VerificarInteresesDetallesPago(FechaExtrema)) return null; else { DateTime FechaVencimiento = oDto.fecha; while (Seguir) { FechaVencimiento = FechaVencimiento.AddDays(1); bool InteresesIguales = VerificarInteresesDetallesPago(FechaVencimiento); if (InteresesIguales) Seguir = true; else Seguir = false; } return FechaVencimiento.AddDays(-1); } } }
// los dos siguientes metodos son los de liquidar de manera provisional public List<detalles_pagoDto> GetDeudaEstudianteL(bDeudaEstudianteFecha reg) { mCausacion.Causar(reg.id_estudiante); using (ctx = new ieEntities()) { DateTime FechaActual = reg.fecha; List<detalles_pagoDto> lDeuda = new List<detalles_pagoDto>(); int VigPerAct = int.Parse(FechaActual.Year.ToString() + FechaActual.Month.ToString().PadLeft(2, '0')); List<carterap> lCartera = new List<carterap>(); if (reg.id_grupo == null) lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && (t.estado == "PR" || t.estado == "CA") && (t.vigencia * 100 + t.periodo) <= VigPerAct && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList(); else lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && t.id_grupo == reg.id_grupo && (t.estado == "PR" || t.estado == "CA") && (t.vigencia * 100 + t.periodo) <= VigPerAct && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList(); bool ban = false; foreach (carterap item in lCartera) { if (((item.id_grupo == lCartera[0].id_grupo) && (ban == false)) || reg.id_grupo == null) { detalles_pagoDto pagoCapital = new detalles_pagoDto(); detalles_pagoDto pagoIntereses = new detalles_pagoDto(); pagoCapital.id_concepto = item.id_concepto; pagoCapital.valor = (int)(item.valor - item.pagado); pagoCapital.nombre_concepto = item.conceptos.nombre; pagoCapital.periodo = item.periodo; pagoCapital.id_cartera = item.id; pagoCapital.vigencia = item.vigencia; pagoCapital.id_grupo = item.id_grupo; pagoCapital.tipo = "CA"; lDeuda.Add(pagoCapital); config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); if (FechaActual > FechaVencimientoPeriodo) { mIntereses oTI = new mIntereses(); DiasInteresesDto DiasTipo = oTI.GetNumeroDiasPagoIntereses(0, 0, pagoCapital.vigencia); DateTime FechaUltimoCalculoIntereses = item.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; int ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, pagoCapital.valor, pagoCapital.vigencia, pagoCapital.periodo, pagoCapital.id_cartera); if (ValorIntereses > 0) { pagoIntereses.id_cartera = item.id; pagoIntereses.fecha_calculo_intereses = FechaActual; pagoIntereses.id_concepto = 6; pagoIntereses.valor = ValorIntereses; if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + pagoCapital.nombre_concepto + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaActual.ToShortDateString(); else pagoIntereses.nombre_concepto = "Intereses: " + pagoCapital.nombre_concepto; pagoIntereses.periodo = pagoCapital.periodo; pagoIntereses.vigencia = pagoCapital.vigencia; pagoIntereses.id_grupo = item.id_grupo; pagoIntereses.tipo = "IN"; lDeuda.Add(pagoIntereses); } } } } else { ban = true; } } return lDeuda; } }
private List<detalles_pagoDto> GetDeudaTotal(string id_estudiante) { mCausacion.Causar(id_estudiante); using (ctx = new ieEntities()) { DateTime FechaActual = DateTime.Now; List<detalles_pagoDto> lDeuda = new List<detalles_pagoDto>(); List<carterap> lCartera = ctx.carterap.Where(t => t.id_estudiante == id_estudiante && t.estado == "CA" && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.id_concepto).ToList(); foreach (carterap item in lCartera) { detalles_pagoDto pagoCapital = new detalles_pagoDto(); detalles_pagoDto pagoIntereses = new detalles_pagoDto(); pagoCapital.id_concepto = item.id_concepto; pagoCapital.valor = (int)(item.valor - item.pagado); pagoCapital.nombre_concepto = item.conceptos.nombre; pagoCapital.periodo = item.periodo; pagoCapital.id_cartera = item.id; pagoCapital.vigencia = item.vigencia; pagoCapital.tipo = "CA"; lDeuda.Add(pagoCapital); config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); if (FechaActual > FechaVencimientoPeriodo) { mIntereses oTI = new mIntereses(); DateTime FechaUltimoCalculoIntereses = item.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; int ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, pagoCapital.valor, pagoCapital.vigencia, pagoCapital.periodo, pagoCapital.id_cartera); if (ValorIntereses > 0) { pagoIntereses.id_cartera = item.id; pagoIntereses.fecha_calculo_intereses = FechaActual; pagoIntereses.id_concepto = 6; pagoIntereses.valor = ValorIntereses; pagoIntereses.nombre_concepto = "Intereses: " + pagoCapital.nombre_concepto + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaActual.ToShortDateString(); pagoIntereses.periodo = pagoCapital.periodo; pagoIntereses.vigencia = pagoCapital.vigencia; pagoIntereses.tipo = "IN"; lDeuda.Add(pagoIntereses); } } } } return lDeuda; } }
public List<detalles_pagoDto> GetDeudaEstudianteValorL(bDeudaEstudianteFecha reg) { mCausacion.Causar(reg.id_estudiante); using (ctx = new ieEntities()) { int ValorLiquidado = 0; int i = 0; DateTime FechaActual = reg.fecha; List<detalles_pagoDto> lDeuda = new List<detalles_pagoDto>(); int VigPerAct = int.Parse(FechaActual.Year.ToString() + FechaActual.Month.ToString().PadLeft(2, '0')); List<carterap> lCartera = new List<carterap>(); if(reg.id_grupo == null) lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && (t.estado == "PR" || t.estado == "CA") && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList(); else lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && t.id_grupo == reg.id_grupo && (t.estado == "PR" || t.estado == "CA") && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList(); //List<carterap> lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && (t.estado == "CA" || t.estado == "PR") && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList(); bool ban = false; while ((i <= lCartera.Count() - 1) && (ValorLiquidado < reg.ValorPagar) && (!ban)) { if (((lCartera[i].id_grupo == lCartera[0].id_grupo) && (ban == false)) || reg.id_grupo == null) { detalles_pagoDto pagoCapital = new detalles_pagoDto(); detalles_pagoDto pagoIntereses = new detalles_pagoDto(); int ValorPeriodo = (int)(lCartera[i].valor - lCartera[i].pagado); int ValorIntereses = 0; int vigenciaCartera = lCartera[i].vigencia; int periodoCartera = lCartera[i].periodo; int id_concepto = lCartera[i].id_concepto; config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == id_concepto && t.vigencia == vigenciaCartera).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == periodoCartera && t.vigencia == vigenciaCartera).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); DateTime FechaUltimoCalculoIntereses = lCartera[i].fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; mIntereses oTI = new mIntereses(); DiasInteresesDto DiasTipo = oTI.GetNumeroDiasPagoIntereses(ValorPeriodo, reg.ValorPagar - ValorLiquidado, lCartera[i].vigencia); if (FechaActual > FechaVencimientoPeriodo) { ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, ValorPeriodo, lCartera[i].vigencia, lCartera[i].periodo, lCartera[i].id); } if ((ValorIntereses + ValorPeriodo) <= (reg.ValorPagar - ValorLiquidado)) { pagoCapital.id_cartera = lCartera[i].id; pagoCapital.id_concepto = lCartera[i].id_concepto; pagoCapital.valor = (int)(ValorPeriodo); pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre; pagoCapital.periodo = lCartera[i].periodo; pagoCapital.vigencia = lCartera[i].vigencia; pagoCapital.id_grupo = lCartera[i].id_grupo; pagoCapital.tipo = "CA"; lDeuda.Add(pagoCapital); ValorLiquidado += (int)pagoCapital.valor; if (ValorIntereses > 0) { pagoIntereses.id_concepto = 6; pagoIntereses.valor = ValorIntereses; if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString(); else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre; pagoIntereses.id_cartera = lCartera[i].id; pagoIntereses.fecha_calculo_intereses = FechaActual; pagoIntereses.periodo = pagoCapital.periodo; pagoIntereses.vigencia = pagoCapital.vigencia; pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(1); pagoIntereses.id_grupo = lCartera[i].id_grupo; pagoIntereses.tipo = "IN"; lDeuda.Add(pagoIntereses); ValorLiquidado += (int)pagoIntereses.valor; } } else { if (ValorIntereses == (reg.ValorPagar - ValorLiquidado)) { pagoIntereses.id_concepto = 6; pagoIntereses.valor = ValorIntereses; if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString(); else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre; pagoIntereses.id_cartera = lCartera[i].id; pagoIntereses.fecha_calculo_intereses = FechaActual; pagoIntereses.periodo = lCartera[i].periodo; pagoIntereses.vigencia = lCartera[i].vigencia; pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(1); pagoIntereses.id_grupo = lCartera[i].id_grupo; pagoIntereses.tipo = "IN"; lDeuda.Add(pagoIntereses); ValorLiquidado += (int)pagoIntereses.valor; } else { if (ValorIntereses < (reg.ValorPagar - ValorLiquidado)) { pagoCapital.id_cartera = lCartera[i].id; pagoCapital.id_concepto = lCartera[i].id_concepto; pagoCapital.valor = (int)((reg.ValorPagar - ValorLiquidado) - ValorIntereses); pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre; pagoCapital.periodo = lCartera[i].periodo; pagoCapital.vigencia = lCartera[i].vigencia; pagoCapital.id_grupo = lCartera[i].id_grupo; pagoCapital.tipo = "CA"; lDeuda.Add(pagoCapital); ValorLiquidado += (int)pagoCapital.valor; if (ValorIntereses > 0) { pagoIntereses.id_concepto = 6; pagoIntereses.valor = ValorIntereses; if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString(); else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre; pagoIntereses.id_cartera = lCartera[i].id; pagoIntereses.fecha_calculo_intereses = FechaActual; pagoIntereses.periodo = lCartera[i].periodo; pagoIntereses.vigencia = lCartera[i].vigencia; pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(1); pagoIntereses.id_grupo = lCartera[i].id_grupo; pagoIntereses.tipo = "IN"; lDeuda.Add(pagoIntereses); ValorLiquidado += (int)pagoIntereses.valor; } } else { pagoIntereses.id_concepto = 6; pagoIntereses.valor = reg.ValorPagar - ValorLiquidado; if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString(); else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre; pagoIntereses.id_cartera = lCartera[i].id; pagoIntereses.fecha_calculo_intereses = FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias); pagoIntereses.periodo = lCartera[i].periodo; pagoIntereses.vigencia = lCartera[i].vigencia; pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(DiasTipo.NumeroDias + 1); pagoIntereses.id_grupo = lCartera[i].id_grupo; pagoIntereses.tipo = "IN"; lDeuda.Add(pagoIntereses); ValorLiquidado += (int)pagoIntereses.valor; } } } } else { if (ValorPeriodo <= (reg.ValorPagar - ValorLiquidado)) { pagoCapital.id_cartera = lCartera[i].id; pagoCapital.id_concepto = lCartera[i].id_concepto; pagoCapital.valor = (int)(ValorPeriodo); pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre; pagoCapital.periodo = lCartera[i].periodo; pagoCapital.vigencia = lCartera[i].vigencia; pagoCapital.id_grupo = lCartera[i].id_grupo; pagoCapital.tipo = "CA"; lDeuda.Add(pagoCapital); ValorLiquidado += (int)pagoCapital.valor; } else { pagoCapital.id_cartera = lCartera[i].id; pagoCapital.id_concepto = lCartera[i].id_concepto; pagoCapital.valor = (int)(reg.ValorPagar - ValorLiquidado); pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre; pagoCapital.periodo = lCartera[i].periodo; pagoCapital.vigencia = lCartera[i].vigencia; pagoCapital.id_grupo = lCartera[i].id_grupo; pagoCapital.tipo = "CA"; lDeuda.Add(pagoCapital); ValorLiquidado += (int)pagoCapital.valor; } } i++; } else { ban = true; } } return lDeuda; } }
private int GetDeudaTotalEstudiante(ieEntities ctx, string id_estudiante) { int ValorDeuda = 0; DateTime FechaCausacion = mCausacion.FechaCausacion(); int VigPerAct = int.Parse(FechaCausacion.Year.ToString() + FechaCausacion.Month.ToString().PadLeft(2, '0')); List<detalles_pagoDto> lDeuda = new List<detalles_pagoDto>(); List<carterap> lCartera = ctx.carterap.Where(t => t.id_estudiante == id_estudiante && (t.estado == "PR" || t.estado == "CA") && (t.vigencia * 100 + t.periodo) <= VigPerAct && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.id_concepto).ToList(); foreach (carterap item in lCartera) { int PagoCapital = (int)(item.valor - item.pagado); ValorDeuda += PagoCapital; config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); if (FechaCausacion > FechaVencimientoPeriodo) { mIntereses oTI = new mIntereses(); DateTime FechaUltimoCalculoIntereses = item.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; int ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaCausacion, PagoCapital,item.vigencia,item.periodo,item.id); if (ValorIntereses > 0) { ValorDeuda += ValorIntereses; } } } } return ValorDeuda; }
private int CalcularValorInteresesCartera(DateTime FechaCausacion, carterap cartera, int ValorIntereses) { config_grupos_pagos config = db.config_grupos_pagos.Where(t => t.id_concepto == cartera.id_concepto && t.vigencia == cartera.vigencia).FirstOrDefault(); if ((config != null) && (config.intereses == "SI")) { periodos periodo = db.periodos.Where(t => t.periodo == cartera.periodo && t.vigencia == cartera.vigencia).FirstOrDefault(); DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia); if (FechaCausacion > FechaVencimientoPeriodo) { mIntereses oTI = new mIntereses(); DiasInteresesDto DiasTipo = oTI.GetNumeroDiasPagoIntereses(0, 0, cartera.vigencia); DateTime FechaUltimoCalculoIntereses = cartera.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha; ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaCausacion, cartera.valor, cartera.vigencia, cartera.periodo, cartera.id); } } return ValorIntereses; }