示例#1
0
        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();
                }
            }
        }
示例#2
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);
        }
示例#3
0
        public Pago ObtenerDetallePago(int idPago, DateTime fechaCompromiso)
        {
            Pago pago = ObtenerPago(idPago);

            if (pago == null)
            {
                return(null);
            }
            var impBase = pago.ImporteCuota;
            var cc      = ConfiguracionRepository.ObtenerConfiguracion().CicloLectivo;

            pago.PorcBeca            = 0;
            pago.ImporteBeca         = 0;
            pago.PorcDescPagoTermino = 0;
            pago.ImportePagoTermino  = 0;
            pago.PorcRecargo         = 0;
            pago.ImporteRecargo      = 0;
            pago.ImportePagado       = pago.ImporteCuota;

            if (pago.NroCuota == 0)
            {
                pago.FechaVto = new DateTime(cc, 12, 31);
                var curso = CursosRepository.ObtenerCursoPorId(pago.PlanPago.Curso.Id);
                if (fechaCompromiso <= curso.FechaVencDescuento)
                {
                    decimal descuentoMatrícula = Convert.ToDecimal(curso.DescuentoMatricula);
                    pago.ImportePagoTermino = descuentoMatrícula;
                    pago.ImportePagado      = impBase - descuentoMatrícula;
                }
                return(pago);
            }

            var descBeca = (decimal)0;

            if (pago.BecaAlumno == null)
            {
                descBeca = (decimal)pago.PlanPago.PorcentajeBeca;
            }
            else
            {
                descBeca = (decimal)pago.BecaAlumno.PorcentajeBeca;
            }
            decimal beca = 0;

            if (descBeca > 0)
            {
                beca = Math.Round(impBase * (descBeca / 100));
            }

            var cuota = CuotasRepository.ObtenerCuotas().Where(c => c.NroCuota == pago.NroCuota).FirstOrDefault();

            if (cuota == null)
            {
                return(null);
            }
            pago.FechaVto = cuota.VtoCuota;
            var totalAPagar = (decimal)0;
            var impBecado   = impBase - beca;
            var conf        = ConfiguracionRepository.ObtenerConfiguracion();

            if (fechaCompromiso <= pago.FechaVto)
            {
                var dpt             = (decimal)(conf.DescuentoPagoTermino / 100);
                var descPagoTérmino = Math.Round(impBecado * dpt, 2);

                if (fechaCompromiso > pago.FechaVto.Value.AddDays(-conf.DiasVtoPagoTermino ?? 0))
                {
                    dpt             = 0;
                    descPagoTérmino = 0;
                }

                totalAPagar = impBase - beca - descPagoTérmino;

                pago.PorcDescPagoTermino = (double)Math.Truncate(dpt * 100);
                pago.ImportePagoTermino  = descPagoTérmino;
            }
            else
            {
                var porcRecargo      = (conf.InteresPorMora / 100) / 30.0;
                var díasAtraso       = Math.Truncate((fechaCompromiso - pago.FechaVto.Value).TotalDays);
                var porcRecargoTotal = (decimal)(porcRecargo * díasAtraso);
                //impBecado = impBase;
                //var recargoPorMora = Math.Round(impBecado * porcRecargoTotal, 2);
                //totalAPagar = impBase - beca + recargoPorMora;

                decimal recargoPorMora = 0;
                if (pago.PlanPago.TipoBeca == (byte)TipoBeca.AplicaSiempre)
                {
                    recargoPorMora = Math.Round(impBecado * porcRecargoTotal, 2);
                }
                else
                {
                    recargoPorMora = Math.Round(pago.ImporteCuota * porcRecargoTotal, 2);
                    beca           = 0;
                }
                totalAPagar = impBase - beca + recargoPorMora;

                pago.PorcRecargo    = porcRecargo;
                pago.ImporteRecargo = recargoPorMora;
            }

            pago.PorcBeca      = (double)descBeca;
            pago.ImporteBeca   = beca;
            pago.IdBecaAlumno  = null;
            pago.ImportePagado = totalAPagar;

            return(pago);
        }