public static void InsertarPagosCuotas(SMPorresEntities db, Curso curso, int id) { short minC = CursosRepository.ObtieneMinCuota(curso.Modalidad); short maxC = CursosRepository.ObtieneMaxCuota(curso.Modalidad); var cuotas = from c in CuotasRepository.ObtenerCuotasActuales() select new { c.NroCuota, c.VtoCuota }; if (minC != maxC) { //for (short i = 0; i <= Configuration.MaxCuotas; i++) for (short i = minC; i <= maxC; i++) { var p = new Pago(); p.Id = db.Pagos.Any() ? db.Pagos.Max(p1 => p1.Id) + 1 : 1; p.IdPlanPago = id; p.NroCuota = i; p.ImporteCuota = (i == 0) ? curso.ImporteMatricula : curso.ImporteCuota; p.Estado = (byte)EstadoPago.Impago; p.FechaVto = cuotas.First(c => c.NroCuota == i).VtoCuota; db.Pagos.Add(p); db.SaveChanges(); } } }
private ConsultasWeb.Pago[] ObtenerPagos(SMPorresEntities db, int idAlumno, int idCurso, int díasVtoPagoTermino) { _log.Debug("Obteniendo pagos"); var cuotasActuales = CuotasRepository.ObtenerCuotasActuales(); var query = (from pp in db.PlanesPago join p in db.Pagos on pp.Id equals p.IdPlanPago //join c in cuotasActuales on p.NroCuota equals c.NroCuota into pc //from c in pc.DefaultIfEmpty() join ca in db.CursosAlumnos on new { pp.IdAlumno, pp.IdCurso } equals new { ca.IdAlumno, ca.IdCurso } into ca2 where pp.IdAlumno == idAlumno && pp.IdCurso == idCurso //&& p.Fecha != null select new { p.Id, p.IdPlanPago, p.NroCuota, //Cuota = c, CursoAlumno = ca2.FirstOrDefault(), p.FechaVto, p.Fecha, p.ImporteCuota, p.ImporteBeca, p.ImporteRecargo, p.ImportePagado, pp.TipoBeca }) .ToList() .Select( p => new ConsultasWeb.Pago { Id = p.Id, IdPlanPago = p.IdPlanPago, NroCuota = p.NroCuota, //FechaVto = (p.Cuota == null) ? new DateTime(p.CursoAlumno.CicloLectivo, 12, 31) : p.Cuota.VtoCuota, FechaVto = p.FechaVto ?? default(DateTime), Fecha = p.Fecha ?? default(DateTime), ImporteCuota = p.ImporteCuota, ImporteBeca = p.ImporteBeca ?? 0, ImporteRecargo = p.ImporteRecargo ?? 0, ImportePagado = p.ImportePagado ?? 0, TipoBeca = p.TipoBeca }) .ToArray(); foreach (var p in query) { if (p.Fecha == default(DateTime)) { var pago = new PagosRepository(db).ObtenerDetallePago(p.Id, p.FechaVto.AddDays(-díasVtoPagoTermino)); p.ImportePagoTérmino = pago.ImportePagoTermino; p.PorcentajeBeca = (short)Math.Round(pago.PorcBeca ?? 0 * 100); p.ImporteBeca = pago.ImporteBeca; } p.FechaVtoPagoTérmino = p.FechaVto.AddDays(-díasVtoPagoTermino); } return(query); }