예제 #1
0
        internal static List <Pago> CrearCuotas(SMPorresEntities db, PlanPago planPago, int modalidad)
        {
            //leer modalidad y obtener minCuota y maxCuota
            short minC   = CursosRepository.ObtieneMinCuota(modalidad);
            short maxC   = CursosRepository.ObtieneMaxCuota(modalidad);
            var   result = new List <Pago>();

            if (minC != maxC)
            {
                var curso  = CursosRepository.ObtenerCursoPorId(planPago.IdCurso);
                var cuotas = from c in CuotasRepository.ObtenerCuotasActuales()
                             select new { c.NroCuota, c.VtoCuota };
                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   = planPago.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();
                    result.Add(p);
                }
            }
            return(result);
        }
예제 #2
0
        private string CargarCuotasImpagas(Alumno alumno, int _cuotasimpagas)
        {
            string c = "";

            if (_cuotasimpagas <= 0)
            {
                c = ", no registra cuotas adeudadas.";
            }
            if (_cuotasimpagas > 0)
            {
                c = ", se encuentra deudor";
                if (alumno.Sexo == "F")
                {
                    c += "a";
                }
                c += " en las cuotas ";

                foreach (var item in CuotasRepository.CuotasImpagas(alumno))
                {
                    c += item + ", ";
                }
                c += "de su plan de pagos.";
            }
            return(c);
        }
예제 #3
0
 private Models.Cuota ObtenerCuotaSeleccionada()
 {
     try
     {
         int rowindex = dgvDatos.CurrentCell.RowIndex;
         var id       = (int)dgvDatos.Rows[rowindex].Cells[0].Value;
         var c        = CuotasRepository.ObtenerCuotaPorId(id);
         return(c);
     }
     catch (Exception)
     {
         return(null);
     }
 }
예제 #4
0
        private string CargarPróxVencimiento()
        {
            var prox = CuotasRepository.ObtenerCuotasActuales()
                       .FirstOrDefault(c => c.VtoCuota >= Configuration.CurrentDate.Date);

            if (prox != null)
            {
                return("El próximo vencimiento de cuota es el día " + prox.VtoCuota.ToShortDateString() + ".");
            }
            else
            {
                return("No tiene cuotas próximas a vencer.");
            }
        }
예제 #5
0
        private void ObtenerDatos(Alumno alumno, string cursoyCarrera)
        {
            _cuotasimpagas = CuotasRepository.CuotasVencidasImpagas(alumno);

            _situación = CargarSituación(_cuotasimpagas);

            _fecha = CargarFecha(DateTime.Today);

            _alumno = CargarAlumno(alumno);

            _cursoyCarrera = cursoyCarrera;

            _cuotas = CargarCuotasImpagas(alumno, _cuotasimpagas);

            _proxVencimiento = CargarPróxVencimiento();
        }
예제 #6
0
 internal static void GeneraNuevaCuotaDeMatricula(int idPlanPago, int i, decimal importeCuota)
 {
     using (var db = new SMPorresEntities())
     {
         var p = new Pago();
         p.Id           = db.Pagos.Any() ? db.Pagos.Max(p1 => p1.Id) + 1 : 1;
         p.IdPlanPago   = idPlanPago;
         p.NroCuota     = (short)i;
         p.ImporteCuota = importeCuota;
         p.Estado       = (byte)EstadoPago.Impago;
         p.FechaVto     = (from c in CuotasRepository.ObtenerCuotasActuales()
                           where c.NroCuota == 0
                           select c.VtoCuota).First();
         db.Pagos.Add(p);
         db.SaveChanges();
     }
 }
예제 #7
0
 internal static void GeneraNuevaCuota(int idPlanPago, int i, Curso curso)
 {
     using (var db = new SMPorresEntities())
     {
         var p = new Pago();
         p.Id           = db.Pagos.Any() ? db.Pagos.Max(p1 => p1.Id) + 1 : 1;
         p.IdPlanPago   = idPlanPago;
         p.NroCuota     = (short)i;
         p.ImporteCuota = (i == 0) ? curso.ImporteMatricula : curso.ImporteCuota;
         var vto = (from c in CuotasRepository.ObtenerCuotasActuales()
                    where c.NroCuota == Convert.ToInt16(i)
                    select c.VtoCuota).First();
         p.FechaVto = vto;
         p.Estado   = (byte)EstadoPago.Impago;
         db.Pagos.Add(p);
         db.SaveChanges();
     }
 }
예제 #8
0
 private void btnEliminar_Click(object sender, EventArgs e)
 {
     Models.Cuota m = ObtenerCuotaSeleccionada();
     if (MessageBox.Show("¿Está seguro de que desea eliminar la cuota seleccionada?",
                         "Eliminar cuota", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
     {
         try
         {
             CuotasRepository.Eliminar(m.Id);
             ConsultarDatos();
             dgvDatos.SetRow(r => Convert.ToDecimal(r.Cells[0].Value) == m.Id);
         }
         catch (Exception ex)
         {
             ShowError(ex.Message);
         }
     }
 }
예제 #9
0
 private void btnNuevo_Click(object sender, EventArgs e)
 {
     using (var f = new frmEdición())
     {
         if (f.ShowDialog() == DialogResult.OK)
         {
             try
             {
                 var c = CuotasRepository.Insertar(f.NroCuota, f.VtoCuota, f.CicloLectivo);
                 ConsultarDatos();
                 dgvDatos.SetRow(r => Convert.ToDecimal(r.Cells[0].Value) == c.Id);
             }
             catch (Exception ex)
             {
                 ShowError("Error al intentar grabar los datos: \n", ex);
             }
         }
     }
 }
예제 #10
0
        internal static Pago CrearMatrícula(SMPorresEntities db, PlanPago planPago)
        {
            var p = new Pago();

            p.Id         = db.Pagos.Any() ? db.Pagos.Max(p1 => p1.Id) + 1 : 1;
            p.IdPlanPago = planPago.Id;
            p.NroCuota   = 0;
            var curso = CursosRepository.ObtenerCursoPorId(planPago.IdCurso);

            p.ImporteCuota = curso.ImporteMatricula;
            var vto = (from c in CuotasRepository.ObtenerCuotasActuales()
                       where c.NroCuota == 0
                       select c.VtoCuota).First();

            p.FechaVto = vto;
            p.Estado   = (byte)EstadoPago.Impago;
            db.Pagos.Add(p);
            db.SaveChanges();
            return(p);
        }
예제 #11
0
        private void btnEditar_Click(object sender, EventArgs e)
        {
            var c = ObtenerCuotaSeleccionada();

            using (var f = new frmEdición(c))
            {
                if (f.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        CuotasRepository.Actualizar(c.Id, f.NroCuota, f.VtoCuota, f.CicloLectivo);
                        ConsultarDatos();
                        dgvDatos.SetRow(r => Convert.ToDecimal(r.Cells[0].Value) == c.Id);
                    }
                    catch (Exception ex)
                    {
                        ShowError("Error al intentar grabar los datos: \n" + ex.Message);
                    }
                }
            }
        }
예제 #12
0
 private void ConsultarDatos()
 {
     dgvDatos.SetDataSource(CuotasRepository.ObtenerCuotas());
 }
예제 #13
0
        private DataTable GenerarDetalleTodas(dsImpresiones.CupónPagoDataTable cupón, string idPago, string fechaEmisión, string fechaVencimiento, string nombre, string tipoDocumento, string documento, string curso, string carrera, DateTime fechaCompromiso, Pago pago)
        {
            var pagos = PagosRepository.ObtenerPagos(pago.IdPlanPago).Where(p => p.Fecha == null && p.NroCuota > 0);
            var min   = pagos.Min(p => p.NroCuota);
            var max   = pagos.Max(p => p.NroCuota);

            // CUOTAS *************************
            var    totalBase = pagos.Sum(p => p.ImporteCuota);
            var    importe   = totalBase.ToString("$ 0,0.00");
            string concepto  = String.Format("Cuotas de {0} a {1} ", min, max);

            cupón.AddCupónPagoRow(idPago, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento,
                                  carrera, curso, "", "", "1", concepto, importe);

            // BECAS *************************
            decimal totalBecas = 0, totalPagoATérmino = 0, totalRecargos = 0;
            string  cuotasBecadas = "", cuotasPagoATérmino = "", cuotasRecargoPorMora = "";
            decimal descBeca    = 0;
            var     cuotas      = CuotasRepository.ObtenerCuotas();
            var     totalAPagar = (decimal)0;

            foreach (var p in pagos)
            {
                var     impBase = pago.ImporteCuota;
                decimal beca    = 0;

                var p1 = PagosRepository.ObtenerPago(p.Id);
                if (p1.PlanPago.PorcentajeBeca > 0)
                {
                    descBeca       = (decimal)p1.PlanPago.PorcentajeBeca;
                    beca           = p.ImporteCuota * (descBeca / 100);
                    totalBecas    += beca;
                    cuotasBecadas += String.IsNullOrEmpty(cuotasBecadas) ? p.NroCuota.ToString() : "," + p.NroCuota;
                }

                var cuota = cuotas.Where(c => c.NroCuota == p.NroCuota).FirstOrDefault();
                if (cuota == null)
                {
                    ShowError("Falta parametrizar la cuota " + p.NroCuota);
                    return(null);
                }
                var vtoCuota  = cuota.VtoCuota;
                var impBecado = impBase - beca;
                if (fechaCompromiso <= vtoCuota)
                {
                    var dpt             = (decimal)(ConfiguracionRepository.ObtenerConfiguracion().DescuentoPagoTermino / 100);
                    var descPagoTérmino = Math.Round(impBecado * dpt, 2);
                    totalPagoATérmino  += descPagoTérmino;
                    totalAPagar        += impBase - beca - descPagoTérmino;
                    cuotasPagoATérmino += cuotasPagoATérmino == "" ? p.NroCuota.ToString() : "," + p.NroCuota;
                }
                else
                {
                    var porcRecargo      = (ConfiguracionRepository.ObtenerConfiguracion().InteresPorMora / 100) / 30.0;
                    var díasAtraso       = Math.Truncate((fechaCompromiso - vtoCuota).TotalDays);
                    var porcRecargoTotal = (decimal)(porcRecargo * díasAtraso);
                    var recargoPorMora   = Math.Round(impBecado * porcRecargoTotal, 2);
                    totalRecargos        += recargoPorMora;
                    totalAPagar          += impBase - beca + recargoPorMora;
                    cuotasRecargoPorMora += cuotasRecargoPorMora == "" ? p.NroCuota.ToString() : "," + p.NroCuota;
                }
            }

            if (totalBecas > 0)
            {
                importe  = totalBecas.ToString("$ -0,0.00");
                concepto = String.Format("Descuento de %{0} por becas de cuotas {1} ", descBeca, cuotasBecadas);
                cupón.AddCupónPagoRow(idPago, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento,
                                      carrera, curso, "", "", "2", concepto, importe);
            }

            if (totalPagoATérmino > 0)
            {
                importe  = totalPagoATérmino.ToString("$ -0,0.00");
                concepto = String.Format("Descuento por pago a término de cuotas {0} ", cuotasPagoATérmino);
                cupón.AddCupónPagoRow(idPago, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento,
                                      carrera, curso, "", "", "2", concepto, importe);
            }

            if (totalRecargos > 0)
            {
                importe  = totalRecargos.ToString("$ 0,0.00");
                concepto = String.Format("Recargo por mora de cuotas {0} ", cuotasRecargoPorMora);
                cupón.AddCupónPagoRow(idPago, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento,
                                      carrera, curso, "", "", "2", concepto, importe);
            }

            var codBarra = GenerarCódigoBarras(idPago, totalAPagar);

            foreach (dsImpresiones.CupónPagoRow row in cupón.Rows)
            {
                row.Total       = String.Format("{0:$ 0,0.00}", totalAPagar);
                row.CódigoBarra = codBarra;
            }

            return(cupón);
        }