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()); } }
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(); } }
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(); } }
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); }