Beispiel #1
0
        internal static void ActualizarCuotas(int idCurso, decimal importe, bool esMatrícula)
        {
            var ciclo = ConfiguracionRepository.ObtenerConfiguracion().CicloLectivo;

            using (var db = new SMPorresEntities())
            {
                var pagos = from p in db.Pagos
                            join pp in db.PlanesPago on p.IdPlanPago equals pp.Id
                            join ca in db.CursosAlumnos on
                            new { pp.IdCurso, pp.IdAlumno } equals new { ca.IdCurso, ca.IdAlumno }
                where !p.Fecha.HasValue &&
                pp.IdCurso == idCurso &&
                ca.CicloLectivo == ciclo
                select p;
                db.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
                if (esMatrícula)
                {
                    pagos = pagos.Where(m => m.NroCuota == 0);
                }
                else
                {
                    pagos = pagos.Where(m => m.NroCuota > 0);
                }
                foreach (var m in pagos)
                {
                    m.ImporteCuota = importe;
                }
                db.SaveChanges();
            }
        }
        internal static IList <Alumno> ObtenerAlumnosPorCursoId(int idCurso)
        {
            var ciclo = ConfiguracionRepository.ObtenerConfiguracion().CicloLectivo;

            using (var db = new SMPorresEntities())
            {
                db.Database.Log = s => System.Diagnostics.Debug.Print(s);
                var query = (from a in db.Alumnos
                             join ca in db.CursosAlumnos on a.Id equals ca.IdAlumno
                             where
                             a.Estado == 1 &&
                             ca.IdCurso == idCurso &&
                             ca.CicloLectivo == ciclo
                             select a)
                            .ToList()
                            .Select(
                    a => new Alumno
                {
                    Id              = a.Id,
                    Nombre          = a.Nombre,
                    Apellido        = a.Apellido,
                    IdTipoDocumento = a.IdTipoDocumento,
                    TipoDocumento   = a.TipoDocumento,
                    NroDocumento    = a.NroDocumento,
                    FechaNacimiento = a.FechaNacimiento,
                    EMail           = a.EMail,
                    Direccion       = a.Direccion,
                    IdDomicilio     = a.IdDomicilio,
                    Estado          = a.Estado
                });
                return(query.OrderBy(a => a.NroDocumento).ToList());
            }
        }
Beispiel #3
0
        public IEnumerable <Alumno> ObtenerDatos()
        {
            var conf = ConfiguracionRepository.ObtenerConfiguracion();

            _cicloLectivo       = conf.CicloLectivo;
            _díasVtoPagoTermino = conf.DiasVtoPagoTermino ?? 0;
            using (var db = new Models.SMPorresEntities())
            {
                var result = (from a in db.Alumnos
                              join ca in db.CursosAlumnos on a.Id equals ca.IdAlumno
                              where
                              ca.CicloLectivo == _cicloLectivo &&
                              a.Contraseña != null
                              select a
                              ).ToList()
                             .Select(a => new Alumno
                {
                    Id            = a.Id,
                    Nombre        = a.Nombre,
                    Apellido      = a.Apellido,
                    TipoDocumento = a.TipoDocumento.Descripcion,
                    NroDocumento  = a.NroDocumento,
                    Contraseña    = a.Contraseña
                })
                             .ToList();
                return(result);
            }
        }
 internal static void Insertar(int idCurso, int idAlumno)
 {
     using (var db = new SMPorresEntities())
     {
         var id = db.CursosAlumnos.Any() ? db.CursosAlumnos.Max(c1 => c1.Id) + 1 : 1;
         var ca = new CursosAlumno {
             Id           = id,
             IdCurso      = idCurso,
             IdAlumno     = idAlumno,
             CicloLectivo = ConfiguracionRepository.ObtenerConfiguracion().CicloLectivo
         };
         db.CursosAlumnos.Add(ca);
         db.SaveChanges();
     }
 }
Beispiel #5
0
        public static void Actualizar(int idCurso, decimal importeCuota)
        {
            var ciclo = ConfiguracionRepository.ObtenerConfiguracion().CicloLectivo;

            using (var db = new SMPorresEntities())
            {
                var planes = from pp in db.PlanesPago
                             join ca in db.CursosAlumnos on
                             new { pp.IdCurso, pp.IdAlumno } equals new { ca.IdCurso, ca.IdAlumno }
                where pp.IdCurso == idCurso &&
                pp.Estado == (short)EstadoPlanPago.Vigente &&
                ca.CicloLectivo == ciclo
                select pp;
                foreach (var p in planes)
                {
                    p.ImporteCuota = importeCuota;
                }
                db.SaveChanges();
            }
        }
Beispiel #6
0
        public static Pago ObtenerDetallePago(int idPago, DateTime fechaCompromiso)
        {
            _log.Debug($"Obteniendo detalle de pago - idpago = {idPago}|fechaCompromiso = {fechaCompromiso}");
            Pago pago = ObtenerPago(idPago);

            if (pago == null)
            {
                return(null);
            }
            var impBase = pago.ImporteCuota;

            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)
            {
                #region La fila del pago debe tener una fecha de vto
                //var cc = ConfiguracionRepository.ObtenerConfiguracion().CicloLectivo;
                //pago.FechaVto = new DateTime(cc, 12, 31);
                #endregion
                int cantCuotas = CantidadCuotasImpagasMatrícula(pago.IdPlanPago);
                //var curso = CursosRepository.ObtenerCursoPorId(pago.PlanPago.Curso.Id);
                var curso = pago.PlanPago.Curso;
                if (fechaCompromiso <= curso.FechaVencDescuento && cantCuotas == 1) //EsMatriculaSinCuotas(pago))
                {
                    pago.ImportePagoTermino = curso.DescuentoMatricula;
                    pago.ImportePagado      = impBase - curso.DescuentoMatricula;
                }
                return(pago);
            }

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

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


            #region La fila del pago debe tener una fecha de vto
            //var cl = CursosAlumnosRepository.ObtenerCursosPorAlumno(pago.PlanPago.IdAlumno)
            //            .First(ca => ca.IdCurso == pago.PlanPago.IdCurso)
            //            .CicloLectivo;
            //var cuota = CuotasRepository.ObtenerCuotas()
            //                .FirstOrDefault(c => c.CicloLectivo == cl &&
            //                                     c.NroCuota == pago.NroCuota);
            //if (cuota == null)
            //{
            //    return null;
            //}
            //pago.FechaVto = cuota.VtoCuota;
            #endregion

            decimal totalAPagar = 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);

                //Los becados no tienen descuento por pago a término
                if (fechaCompromiso > pago.FechaVto.Value.AddDays(-conf.DiasVtoPagoTermino ?? 0) || beca > 0)
                {
                    dpt             = 0;
                    descPagoTérmino = 0;
                }

                //totalAPagar = impBase - beca - descPagoTérmino;
                totalAPagar = impBecado - descPagoTérmino;

                //pago.PorcDescPagoTermino = (double)Math.Truncate(dpt * 100);
                pago.PorcDescPagoTermino = conf.DescuentoPagoTermino;
                pago.ImportePagoTermino  = descPagoTérmino;
            }
            else
            {
                decimal recargoPorMora = 0;
                double  porcRecargo    = 0;

                #region Cálculo con tasa única, sin tipo de beca (no se usa)
                //impBecado = impBase;
                //var recargoPorMora = Math.Round(impBecado * porcRecargoTotal, 2);
                //totalAPagar = impBase - beca + recargoPorMora;
                #endregion

                #region Cálculo con tasa única y tipo de beca (no se usa)
                //var porcRecargo = (conf.InteresPorMora / 100) / 30.0;
                //var díasAtraso = Math.Truncate((fechaCompromiso - pago.FechaVto.Value).TotalDays);
                //var porcRecargoTotal = (decimal)(porcRecargo * díasAtraso);
                //if (pago.PlanPago.TipoBeca == (byte)TipoBeca.AplicaSiempre)
                //{
                //    recargoPorMora = Math.Round(impBecado * porcRecargoTotal, 2);
                //}
                //else
                //{
                //    recargoPorMora = Math.Round(pago.ImporteCuota * porcRecargoTotal, 2);
                //    beca = 0;
                //}
                #endregion

                if (pago.PlanPago.TipoBeca == (byte)TipoBeca.AplicaHastaVto)
                {
                    beca = 0;
                }
                recargoPorMora = CalcularMoraPorTramo(fechaCompromiso, pago, impBase, impBecado);
                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);
        }