Beispiel #1
0
        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;
                    }
                }
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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;
                }
            }
        }
Beispiel #5
0
 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;
         }
     }
 }
Beispiel #6
0
        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);
        }