Ejemplo n.º 1
0
 public PrintMasivoCuotaViewModel()
 {
     LstComboUnidadTiempo = new List <SelectListItem>();
     LstCuota             = new List <Cuota>();
     LstDepartamento      = new List <Departamento>();
     CuotaComun           = new CuotaComun();
 }
Ejemplo n.º 2
0
        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>();
            }
        }