public DataTable ObtenerDatos(bool todas, int idPago, DateTime fechaCompromiso) { var cupón = new dsConsultas.CupónPagoDataTable(); var idPagoStr = String.Format("{0:0000000}", idPago); var fechaEmisión = String.Format("{0:dd/MM/yyyy}", Lib.Configuration.CurrentDate); var fechaVencimiento = String.Format("{0:dd/MM/yyyy}", fechaCompromiso); var pago = PagosRepository.ObtenerDetallePago(idPago, fechaCompromiso); var nombre = String.Format("{0} {1}", pago.CursoAlumnoWeb.AlumnoWeb.Nombre, pago.CursoAlumnoWeb.AlumnoWeb.Apellido); var tipoDocumento = pago.CursoAlumnoWeb.AlumnoWeb.TipoDocumento; var documento = pago.CursoAlumnoWeb.AlumnoWeb.NroDocumento.ToString("N0"); var curso = pago.CursoAlumnoWeb.Curso; var carrera = pago.CursoAlumnoWeb.Carrera; if (todas) { return(GenerarDetalleTodas(cupón, idPagoStr, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento, curso, carrera, fechaCompromiso, pago)); } else if (pago.NroCuota > 0) { return(GenerarDetalleCuota(cupón, idPagoStr, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento, curso, carrera, fechaCompromiso, pago)); } else { return(GenerarMatrícula(cupón, idPagoStr, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento, curso, carrera, fechaCompromiso, pago)); } }
private DataTable GenerarMatrícula(dsConsultas.CupónPagoDataTable cupón, string idPago, string fechaEmisión, string fechaVencimiento, string nombre, string tipoDocumento, string documento, string curso, string carrera, DateTime fechaCompromiso, PagoWeb pago) { var p = PagosRepository.ObtenerDetallePago(pago.Id, fechaCompromiso); var importe = String.Format("{0:$ 0,0.00}", p.ImporteCuota); cupón.AddCupónPagoRow(idPago, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento, //carrera, curso, "", "", "1", "Matrícula", importe); carrera, curso, "", "", "1", PagosRepository.ObtenerConceptoMatrícula(p.IdPlanPago, p), importe); if (DescuentoMatrículaPagoTermino(p, fechaCompromiso)) { importe = p.ImportePagoTermino.Value.ToString("$ -0,0.00"); string concepto = "Descuento por pago a término"; cupón.AddCupónPagoRow(idPago, fechaEmisión, fechaVencimiento, nombre, tipoDocumento, documento, carrera, curso, "", "", "2", concepto, importe); } //string codBarra = GenerarCódigoBarras(idPago, p.ImportePagado.Value); string codBarra = GenerarCódigoBarras(idPago, p.ImportePagado.Value, fechaCompromiso); foreach (dsConsultas.CupónPagoRow row in cupón.Rows) { row.Total = String.Format("{0:$ 0,0.00}", p.ImportePagado.Value); row.CódigoBarra = codBarra; } return(cupón); }
private bool DescuentoMatrículaPagoTermino(PagoWeb pago, DateTime fechaCompromiso) { bool pagoTermino = false; int cc = PagosRepository.CantidadCuotasMatrícula(pago.IdPlanPago); if (cc == 1 && fechaCompromiso <= pago.FechaVtoPagoTermino && pago.ImportePagoTermino > 0) { pagoTermino = true; } return(pagoTermino); }
private void ActualizarDatos(Models.WebServices.Alumno alumno) { using (var db = new SMPorresEntities()) { var idRol = db.RolesUsuariosWeb.First().Id; var trx = db.Database.BeginTransaction(); try { var a = db.AlumnosWeb.Find(alumno.Id); bool insertar = a == null; if (insertar) { a = new AlumnoWeb(); } a.Id = alumno.Id; a.Nombre = alumno.Nombre; a.Apellido = alumno.Apellido; a.TipoDocumento = alumno.TipoDocumento; a.NroDocumento = alumno.NroDocumento; a.Estado = (byte)alumno.Estado; a.Contraseña = alumno.Contraseña; a.IdRolUsuarioWeb = idRol; if (insertar) { db.AlumnosWeb.Add(a); } db.SaveChanges(); var caRepo = new CursosAlumnosRepository(); var pagosRepo = new PagosRepository(); pagosRepo.EliminarPagos(db, alumno.CursosAlumnos); foreach (var ca in alumno.CursosAlumnos) { var id = caRepo.Actualizar(db, a.Id, ca).Id; foreach (var p in ca.Pagos) { pagosRepo.Actualizar(db, id, p); } } trx.Commit(); } catch (Exception ex) { _log.Error("Error al intentar actualizar los datos:", ex); trx.Rollback(); throw ex; } } }
public static PagoWeb ObtenerDetallePago(int idPago, DateTime fechaCompromiso) { var pago = new PagosRepository().ObtenerPago(idPago); pago.ImporteRecargo = 0; pago.ImportePagado = pago.ImporteCuota; var totalAPagar = (decimal)0; //var impBecado = pago.ImporteCuota - pago.ImporteBeca ?? 0; if (fechaCompromiso <= pago.FechaVto) { //Los becados no tienen descuento por pago a término _log.Debug($"fechaCompromiso = {fechaCompromiso}|pago.FechaVtoPagoTermino = {pago.FechaVtoPagoTermino}||pago.ImporteBeca = {pago.ImporteBeca}"); if (fechaCompromiso > pago.FechaVtoPagoTermino || pago.ImporteBeca > 0) { pago.ImportePagoTermino = 0; //la beca y el pago a término son excluyentes totalAPagar = pago.ImporteCuota - pago.ImporteBeca ?? 0; } else { _log.Debug($"fechaCompromiso > pago.FechaVtoPagoTermino - {fechaCompromiso} > {pago.FechaVtoPagoTermino}"); pago.ImporteBeca = 0; totalAPagar = pago.ImporteCuota - pago.ImportePagoTermino ?? 0; } } else { _log.Debug($"fechaCompromiso <= pago.FechaVto - {fechaCompromiso} > {pago.FechaVto}"); var impBecado = pago.ImporteCuota - pago.ImporteBeca ?? 0; decimal recargoPorMora = 0; #region Modelo de cálculo de recargo anterior //var porcRecargo = (new ConfiguracionRepository().ObtenerConfiguracion().InteresPorMora / 100) / 30.0; //var díasAtraso = Math.Truncate((fechaCompromiso - pago.FechaVto).TotalDays); //var porcRecargoTotal = (decimal)(porcRecargo * díasAtraso); //if (pago.TipoBeca == (byte)TipoBeca.AplicaSiempre) //{ // recargoPorMora = Math.Round(impBecado * porcRecargoTotal, 2); //} //else //{ // recargoPorMora = Math.Round(pago.ImporteCuota * porcRecargoTotal, 2); // pago.ImporteBeca = 0; //} //totalAPagar = pago.ImporteCuota - (pago.ImporteBeca ?? 0) + recargoPorMora; //pago.ImporteRecargo = recargoPorMora; #endregion decimal beca = 0; recargoPorMora = CalcularMoraPorTramo(fechaCompromiso, pago, pago.ImporteCuota, impBecado); totalAPagar = pago.ImporteCuota - beca + recargoPorMora; if (recargoPorMora > 0 && (pago.TipoBeca != (byte)TipoBeca.AplicaSiempre)) { pago.ImporteBeca = beca; } pago.ImporteRecargo = recargoPorMora; _log.Debug($"totalAPagar = {totalAPagar}|pago.ImporteBeca = {pago.ImporteBeca}|pago.ImporteRecargo = {pago.ImporteRecargo}"); } pago.ImportePagado = totalAPagar; return(pago); }