示例#1
0
        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);
        }
示例#2
0
        public static PlanPago Insertar(SMPorresEntities db, int idAlumno, int idCurso)
        {
            _log.Debug("Creando plan de pago");

            if (idAlumno == 0)
            {
                throw new Exception("No se pudo determinar el alumno.");
            }
            if (idCurso == 0)
            {
                throw new Exception("No se pudo determinar el curso.");
            }

            if (db.PlanesPago.Any(pp => pp.IdAlumno == idAlumno && pp.IdCurso == idCurso & pp.Estado == (short)EstadoPlanPago.Vigente))
            {
                throw new Exception("El alumno ya tiene un plan de pago vigente en este curso.");
            }

            var curso = CursosRepository.ObtenerCursoPorId(idCurso);

            if (curso == null)
            {
                throw new Exception("No se encontró el curso " + idCurso);
            }

            var id = db.PlanesPago.Any() ? db.PlanesPago.Max(c1 => c1.Id) + 1 : 1;
            //var trx = db.Database.BeginTransaction();
            var plan = new PlanPago
            {
                Id              = id,
                IdAlumno        = idAlumno,
                IdCurso         = idCurso,
                CantidadCuotas  = CursosRepository.ObtieneMaxCuota(curso.Modalidad), //Configuration.MaxCuotas,
                NroCuota        = CursosRepository.ObtieneMinCuota(curso.Modalidad), //1,
                ImporteCuota    = curso.ImporteCuota,
                PorcentajeBeca  = 0,
                TipoBeca        = (byte)TipoBeca.AplicaHastaVto,
                Estado          = (short)EstadoPlanPago.Vigente,
                IdUsuarioEstado = Session.CurrentUser.Id,
                FechaGrabacion  = Configuration.CurrentDate,
                IdUsuario       = Session.CurrentUser.Id,
                Modalidad       = curso.Modalidad
            };

            _log.Debug("Generando pagos");
            try
            {
                db.PlanesPago.Add(plan);
                db.SaveChanges();

                PagosRepository.InsertarMatricula(db, curso, id);

                PagosRepository.InsertarPagosCuotas(db, curso, id);
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);
                //trx.Rollback();
                throw;
            }
            return(plan);
        }