Exemplo n.º 1
0
        private Pago[] ObtenerPagos(Models.SMPorresEntities db, int idAlumno, int idCurso, int díasVtoPagoTermino)
        {
            var query = (from pp in db.PlanesPago
                         join p in db.Pagos on pp.Id equals p.IdPlanPago
                         join ca in db.CursosAlumnos on
                         new { pp.IdAlumno, pp.IdCurso } equals new { ca.IdAlumno, ca.IdCurso }
                         into ca2
                         join c in db.Cuotas on
                         new { cl = ca2.FirstOrDefault().CicloLectivo, p.NroCuota } equals
                         new { cl = c.CicloLectivo.Value, c.NroCuota }
                         into pc
                         from c in pc.DefaultIfEmpty()
                         where
                         pp.IdAlumno == idAlumno &&
                         pp.IdCurso == idCurso    //&& p.Fecha != null
                         select new
            {
                p.Id,
                p.IdPlanPago,
                p.NroCuota,
                Cuota = c,
                CursoAlumno = ca2.FirstOrDefault(),
                p.Fecha,
                p.ImporteCuota,
                p.ImporteBeca,
                p.ImporteRecargo,
                p.ImportePagado,
                pp.TipoBeca,
                p.FechaVto,
                p.Estado
            })
                        .ToList()
                        .Select(
                p => new 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 ?? p.Cuota.VtoCuota,
                Fecha          = p.Fecha ?? default(DateTime),
                ImporteCuota   = p.ImporteCuota,
                ImporteBeca    = p.ImporteBeca ?? 0,
                ImporteRecargo = p.ImporteRecargo ?? 0,
                ImportePagado  = p.ImportePagado ?? 0,
                TipoBeca       = p.TipoBeca,
                Estado         = p.Estado
            })
                        .ToArray();

            foreach (var p in query)
            {
                p.FechaVtoPagoTérmino = p.FechaVto.AddDays(-díasVtoPagoTermino);
                if (p.Fecha == default(DateTime))
                {
                    var pago = PagosRepository.ObtenerDetallePago(p.Id, p.FechaVtoPagoTérmino);
                    p.ImportePagoTérmino = pago.ImportePagoTermino;
                    p.PorcentajeBeca     = (short)Math.Round(pago.PorcBeca ?? 0 * 100);
                    p.ImporteBeca        = pago.ImporteBeca;
                }

                int cc    = PagosRepository.CantidadCuotasImpagasMatrícula(p.IdPlanPago);
                var curso = CursosRepository.ObtenerCurso(p.IdPlanPago);
                if (p.NroCuota == 0)
                {
                    if (cc == 1)
                    {
                        p.FechaVtoPagoTérmino = (DateTime)curso.FechaVencDescuento;
                    }
                    if (cc == 3)
                    {
                        p.FechaVtoPagoTérmino = p.FechaVto;
                    }
                }
            }

            return(query);
        }