public static PlanPago Insertar(int idAlumno, int idCurso, short porcentajeBeca, int modalidad, TipoBeca tipoBeca) { using (var db = new SMPorresEntities()) { 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 el curso seleccionado."); } db.Database.Log = s => _log.Debug(s); using (var trx = db.Database.BeginTransaction()) { try { var plan = CrearPlanPago(db, idAlumno, idCurso, porcentajeBeca, modalidad, tipoBeca); PagosRepository.CrearMatrícula(db, plan); PagosRepository.CrearCuotas(db, plan, modalidad); trx.Commit(); return(plan); } catch (Exception ex) { _log.Error(ex); trx.Rollback(); throw; } } } }
private static void EliminaCuotas(int?modActual, int idPlanPago) { var minC = CursosRepository.ObtieneMinCuota(modActual); var maxC = CursosRepository.ObtieneMaxCuota(modActual); for (int i = minC; i <= maxC; i++) { PagosRepository.EliminarCuotaGenerada(i, idPlanPago); } }
private static void GeneraCuotas(int modalidad, int idPlanPago, Curso curso) { var minC = CursosRepository.ObtieneMinCuota(modalidad); var maxC = CursosRepository.ObtieneMaxCuota(modalidad); for (int i = minC; i <= maxC; i++) { PagosRepository.GeneraNuevaCuota(idPlanPago, i, curso); } }
public static void GrabarRendición(string archivo, List <PagoBSE> pagos) { using (var db = new SMPorresEntities()) { var trx = db.Database.BeginTransaction(); try { var ca = CabecerasArchivosRepository.Insertar(db, TipoArchivo.RendiciónBSE, archivo); var id = db.RendicionesBSE.Any() ? db.RendicionesBSE.Max(t => t.Id) + 1 : 1; foreach (var p in pagos) { var rend = new RendicionBSE(); rend.Id = id++; rend.IdCabeceraArchivo = ca.Id; rend.CodigoSucursal = p.CodigoSucursal; rend.NombreSucursal = p.NombreSucursal; rend.Moneda = p.Moneda; rend.Comprobante = p.Comprobante; rend.TipoMovimiento = p.TipoMovimiento; rend.Importe = p.Importe; rend.FechaProceso = p.FechaProceso; rend.CuilUsuario = p.CuilUsuario; rend.NombreUsuario = p.NombreUsuario; rend.Hora = p.Hora; rend.CodigoBarra = p.CodigoBarra; rend.GrupoTerminal = p.GrupoTerminal; rend.NroRendicion = p.NroRendicion; rend.FechaMovimiento = p.FechaMovimiento; db.RendicionesBSE.Add(rend); if (p.DetallePago != null) { var pago = p.DetallePago; pago.Fecha = rend.FechaPago; pago.IdMedioPago = 2; //BSE pago.IdArchivo = ca.Id; pago.Descripcion = "Importado desde " + ca.NombreArchivo; PagosRepository.PagarCuota(db, pago); } } db.SaveChanges(); trx.Commit(); } catch (Exception) { trx.Rollback(); throw; } } }
public static void Actualizar(int id, string nombre, int idCarrera, decimal importeMatrícula, decimal descuentoMatrícula, DateTime descuentoHasta, decimal cuota1, decimal cuota2, decimal cuota3, decimal importeCuota, int modalidad, short estado) { using (var db = new SMPorresEntities()) { if (!db.Cursos.Any(t => t.Id == id)) { throw new Exception(String.Format("No existe el curso {0} - {1}", id, nombre)); } var c = db.Cursos.Find(id); c.Nombre = nombre; c.IdCarrera = idCarrera; //c.Estado = estado; //c.Modalidad = modalidad; //la baja desde listado / botón eliminar var trx = db.Database.BeginTransaction(); try { if (c.DescuentoMatricula != descuentoMatrícula) { c.DescuentoMatricula = descuentoMatrícula; } if (c.FechaVencDescuento != descuentoHasta) { c.FechaVencDescuento = descuentoHasta; } if (c.Cuota1 != cuota1) { c.Cuota1 = cuota1; } if (c.Cuota2 != cuota2) { c.Cuota2 = cuota2; } if (c.Cuota3 != cuota3) { c.Cuota3 = cuota3; } if (c.Modalidad != modalidad) { c.Modalidad = modalidad; } if (c.ImporteMatricula != importeMatrícula) { c.ImporteMatricula = importeMatrícula; PagosRepository.ActualizarCuotas(id, importeMatrícula, true); } if (c.ImporteCuota != importeCuota) { c.ImporteCuota = importeCuota; PagosRepository.ActualizarCuotas(id, importeCuota, false); PlanesPagoRepository.Actualizar(id, importeCuota); } db.SaveChanges(); trx.Commit(); } catch (Exception) { trx.Rollback(); throw; } } }
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); }