public PrintMasivoCuotaViewModel() { LstComboUnidadTiempo = new List <SelectListItem>(); LstCuota = new List <Cuota>(); LstDepartamento = new List <Departamento>(); CuotaComun = new CuotaComun(); }
public void Fill(CargarDatosContext datacontext) { try { baseFill(datacontext); UnidadTiempo unidadTiempoSig = null; Gasto gastoAcumulado = datacontext.context.Gasto.OrderBy(x => - x.UnidadTiempo.Orden).FirstOrDefault(x => x.Estado.Equals(ConstantHelpers.EstadoActivo) && x.EdificioId == EdificioId && x.SaldoMes.HasValue); if (gastoAcumulado != null) { Acumulado = gastoAcumulado.SaldoMes.Value; UltimaUnidadTiempoAcumulado = gastoAcumulado.UnidadTiempo.Descripcion; unidadTiempoSig = datacontext.context.UnidadTiempo.FirstOrDefault(x => x.Orden == gastoAcumulado.UnidadTiempo.Orden + 1 && x.Estado.Equals(ConstantHelpers.EstadoActivo)); } Edificio = datacontext.context.Edificio.FirstOrDefault(x => x.EdificioId == EdificioId); TipoMora = Edificio.TipoMora; MoraUnitariaGuardad = (double)Edificio.PMora.Value; List <UnidadTiempo> lstunidadtiempo = datacontext.context.UnidadTiempo.OrderBy(x => - x.Orden).Where(x => x.Estado == ConstantHelpers.EstadoActivo).ToList(); foreach (var item in lstunidadtiempo) { LstComboUnidadTiempo.Add(new SelectListItem { Value = item.UnidadTiempoId.ToString(), Text = item.Descripcion.ToUpper() }); } FechaActualMora = DateTime.Now; try { if (unidadTiempoSig != null) { CargarAcumuladoActual(datacontext, unidadTiempoSig); } } catch (Exception ex) { } if (UnidadTiempoId.HasValue) { LstLeyenda = datacontext.context.Leyenda.Where(X => X.BalanceUnidadTiempoEdificio.UnidadDeTiempoId == UnidadTiempoId && X.BalanceUnidadTiempoEdificio.EdificioId == EdificioId).ToList(); LeyendasPorDepartamento = new List <string>(); LstDepartamentos = new List <Departamento>(); LstDepartamentos = datacontext.context.Departamento.Where(x => x.EdificioId == EdificioId && x.Estado.Equals(ConstantHelpers.EstadoActivo)).ToList(); UnidadTiempo unidadTiempoActual = datacontext.context.UnidadTiempo.FirstOrDefault(x => x.UnidadTiempoId == UnidadTiempoId); List <DateTime> LstFechasEmision = new List <DateTime>(); //LstDepartamentos.ForEach(x => x.MontoMora = ); LstCuota = datacontext.context.Cuota.Where(x => x.UnidadTiempoId == UnidadTiempoId && x.Departamento.EdificioId == EdificioId).ToList(); CuotasPorUnidadTiempo.Add(unidadTiempoActual.UnidadTiempoId.ToString(), LstCuota); UnidadTiempo unidadTiempoAnterior = unidadTiempoActual; LstUnidadTiempoString.Add(unidadTiempoAnterior.Descripcion.Remove(unidadTiempoAnterior.Descripcion.Length - 5)); // DateTime fechaEmisionUnidadTiempoActual = new DateTime(unidadTiempoActual.Anio, unidadTiempoActual.Mes, Edificio.DiaEmisionCuota); // LstDepartamentos.ForEach(x => LstFechasEmision.Add(new DateTime(unidadTiempoAnterior.Anio, unidadTiempoAnterior.Mes, Edificio.DiaEmisionCuota))); for (int i = 0; i < LstCuota.Count; i++) { if (LstCuota[i].Leyenda.HasValue) { LeyendasPorDepartamento.Add(LstCuota[i].Leyenda.Value.ToString()); } else { LeyendasPorDepartamento.Add(" "); } if (!LstCuota[i].Pagado) { LstFechasEmision.Add(new DateTime(unidadTiempoAnterior.Anio, unidadTiempoAnterior.Mes, Edificio.DiaEmisionCuota)); } else { LstFechasEmision.Add(DateTime.MinValue); } } while (true) { if (unidadTiempoAnterior.Orden == 1) { break; } unidadTiempoAnterior = datacontext.context.UnidadTiempo.FirstOrDefault(x => x.Orden == unidadTiempoAnterior.Orden - 1 && x.Estado.Equals(ConstantHelpers.EstadoActivo)); if (unidadTiempoAnterior == null) { break; } CuotaComun cuotaComun = datacontext.context.CuotaComun.FirstOrDefault(x => x.EdificioId == EdificioId && x.UnidadTiempoId == unidadTiempoAnterior.UnidadTiempoId); if (cuotaComun == null || cuotaComun.Pagado) { break; } LstUnidadTiempoString.Add(unidadTiempoAnterior.Descripcion.Remove(unidadTiempoAnterior.Descripcion.Length - 5)); LstCuota = datacontext.context.Cuota.Where(x => x.UnidadTiempo.Estado.Equals(ConstantHelpers.EstadoActivo) && x.UnidadTiempo.Mes == unidadTiempoAnterior.Mes && x.UnidadTiempo.Anio == unidadTiempoAnterior.Anio && x.Departamento.EdificioId == EdificioId).ToList(); CuotasPorUnidadTiempo.Add(unidadTiempoAnterior.UnidadTiempoId.ToString(), LstCuota); for (int i = 0; i < Math.Min(LstCuota.Count, LstFechasEmision.Count); i++) { if (!LstCuota[i].Pagado) { LstFechasEmision[i] = new DateTime(unidadTiempoAnterior.Anio, unidadTiempoAnterior.Mes, Edificio.DiaEmisionCuota); } } } for (int i = 0; i < LstDepartamentos.Count; i++) { int DiasTranscurridosMora = ((LstDepartamentos[i].FechaPago.HasValue ? LstDepartamentos[i].FechaPago.Value.Date : FechaActualMora.Date) - FechaActualMora.Date).Days - 1; DiasTranscurridosMora = DiasTranscurridosMora < 0 ? 0 : DiasTranscurridosMora; Decimal moraUnitaria = Edificio.TipoMora.Equals(ConstantHelpers.TipoMoraPorcentual) ? Edificio.MontoCuota * Edificio.PMora.Value / 100M : Edificio.PMora.Value; LstDepartamentos[i].MontoMora = moraUnitaria * DiasTranscurridosMora; LstDepartamentos[i].FechaPago = LstDepartamentos[i].FechaPago == null ? DateTime.Now : LstDepartamentos[i].FechaPago; } //foreach (Cuota c in LstCuota) //{ // LstEstadoCuota.Add(c.Estado == "FIN"); // if (HasDebt(c)) LstObservacion.Add(ConstantHelpers.DeudasActivas); // else LstObservacion.Add(ConstantHelpers.DeudasCerradas); //} } } catch (Exception) { CuotasPorUnidadTiempo = new Dictionary <string, List <Cuota> >(); LstUnidadTiempoString = new List <string>(); LstDepartamentos = new List <Departamento>(); } }