Пример #1
0
        public static List<Cuenta> Proyeccion(FinancyDB db, DateTime date, string user)
        {
            var currentDate = DateTime.Now;
            var curDate = new DateTime(currentDate.Year, currentDate.Month, 1).AddMonths(1);

            while (currentDate < date)
            {
                foreach (var r in db.TransaccionProyectadas.Where(r => r.Cuenta.User == user).ToList())
                {
                    try
                    {
                        ProyectaMes(db, r, currentDate, user);
                    }
                    catch
                    {
                        var z = 9;
                    }
                }

                currentDate = curDate;
                curDate = curDate.AddMonths(1);
            }
            db.SaveChanges();
            CuentaUtil.ActualizaMontos(db, user);
            return CuentaUtil.ActualizaMontosTemp(db, user);
        }
Пример #2
0
        public static void ActualizaMontos(FinancyDB db, string user)
        {
            var list = db.Cuentas.Where(r => r.User == user).ToList();
            foreach (var cuenta in list)
            {
                var monto = cuenta.Monto;

                var transacciones = (from r in db.Transacciones
                                     where r.Cuenta_Id == cuenta.Cuenta_Id
                                     && r.Fecha < DateTime.Now
                                     select (double?)r.Monto).Sum() ?? 0;

                cuenta.Balanc = monto + transacciones;
            }

            db.SaveChanges();
        }
Пример #3
0
        public static List<Cuenta> ActualizaMontosTemp(FinancyDB db, string user)
        {
            var list = db.Cuentas.AsNoTracking().Where(r => r.User == user).ToList();
            foreach (var cuenta in list)
            {
                var monto = cuenta.Monto;

                var transacciones = (from r in db.TransaccionTemps
                                     where r.Cuenta_Id == cuenta.Cuenta_Id
                                     select (double?)r.Monto).Sum() ?? 0;

                cuenta.Balanc = monto + transacciones;
            }

            return list;
            //db.SaveChanges();
        }
Пример #4
0
        public static List<Presupuesto> GetPresupuesto(FinancyDB db, DateTime date, string user)
        {
            var presupuestos = new List<Presupuesto>();

            foreach (var pres in db.TransaccionProyectadas.Include(x => x.Tipo).Where(x => x.Monto <= 0 && x.Cuenta.User == user).ToList())
            {
                var consumido = (from r in db.Transacciones
                                 where r.TransaccionProyectada_Id == pres.TransaccionProyectada_Id
                                 && r.Fecha.Month == date.Month
                                 && r.Cuenta.User == user
                                 select (double?)r.Monto).Sum() ?? 0;

                var limite = pres.Monto * pres.Tipo.Cantidad;

                presupuestos.Add(new Presupuesto()
                                                 {Presupuesto_Id = pres.TransaccionProyectada_Id,
                                                  Descripcion = pres.Descripcion,
                                                  Limite = Math.Abs(limite),
                                                  Gastado = Math.Abs(consumido)});
            }

            return presupuestos;
        }
Пример #5
0
        public static void Proyecta(FinancyDB db, TransaccionProyectada trans, DateTime lastDate, string user)
        {
            var transacciones = db.Transacciones
                                .Where(w => w.Estado == "Proyección"
                                    && w.TransaccionProyectada_Id == trans.TransaccionProyectada_Id
                                    && w.Cuenta.User == user);

            if (transacciones != null)
            {
                foreach (var transaccion in transacciones)
                {
                    db.Transacciones.Remove(transaccion);
                }
                db.SaveChanges();
            }

            trans = (from x in db.TransaccionProyectadas.Include(x => x.Tipo).Include(x => x.Cuenta)
                     where x.TransaccionProyectada_Id == trans.TransaccionProyectada_Id
                       && x.Cuenta.User == user
                     select x).First();

            var diaActual = lastDate.Day;
            var mesActual = lastDate.Month;
            var anoActual = lastDate.Year;
            var diasEnMes = DateTime.DaysInMonth(anoActual, mesActual);

            if (trans.Tipo.Descripcion == "Diario")
            {

                lastDate = lastDate.AddDays(1);

                var transaccion = new Transaccion()
                {
                    Cuenta = trans.Cuenta,
                    Descripcion = trans.Descripcion,
                    TransaccionProyectada = trans,
                    Estado = "Proyección",
                    Fecha = lastDate,
                    Monto = trans.Monto
                };
                db.Transacciones.Add(transaccion);

            }
            else if (trans.Tipo.Descripcion == "De Lunes a Viernes")
            {

                for (int i = diaActual; i <= diasEnMes; i++)
                {
                    lastDate = lastDate.AddDays(1);

                    if (lastDate.DayOfWeek != DayOfWeek.Saturday && lastDate.DayOfWeek != DayOfWeek.Sunday)
                    {
                        var transaccion = new Transaccion()
                        {
                            Cuenta = trans.Cuenta,
                            Descripcion = trans.Descripcion,
                            TransaccionProyectada = trans,
                            Estado = "Proyección",
                            Fecha = lastDate,
                            Monto = trans.Monto
                        };
                        db.Transacciones.Add(transaccion);
                        break;
                    }
                }
            }
            else if (trans.Tipo.Descripcion == "Semanal")
            {
                lastDate = GetNextWeekday(lastDate, (int)trans.Dia);

                var transaccion = new Transaccion()
                {
                    Cuenta = trans.Cuenta,
                    Descripcion = trans.Descripcion,
                    TransaccionProyectada = trans,
                    Estado = "Proyección",
                    Fecha = lastDate,
                    Monto = trans.Monto
                };

                db.Transacciones.Add(transaccion);

            } if (trans.Tipo.Descripcion == "Mensual")
            {
                var transaccion = new Transaccion()
                {
                    Cuenta = trans.Cuenta,
                    Descripcion = trans.Descripcion,
                    TransaccionProyectada = trans,
                    Estado = "Proyección",
                    Monto = trans.Monto
                };

                transaccion.Fecha = new DateTime(anoActual, mesActual, (int)trans.Dia);

                if (transaccion.Fecha <= lastDate)
                    transaccion.Fecha = new DateTime(anoActual, mesActual + 1, (int)trans.Dia);

                db.Transacciones.Add(transaccion);

            }
        }