コード例 #1
0
ファイル: EstadoController.cs プロジェクト: Laggel/Financy
        public ActionResult Create(TransaccionProyectada transaccionproyectada)
        {
            if (ModelState.IsValid)
            {
                db.TransaccionProyectadas.Add(transaccionproyectada);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.Cuenta_Id = new SelectList(db.Cuentas.Where(r => r.User == User.Identity.Name), "Cuenta_Id", "Descripcion", transaccionproyectada.Cuenta_Id);
            ViewBag.Tipo_Id = new SelectList(db.Tipos, "Tipo_Id", "Descripcion", transaccionproyectada.Tipo_Id);
            return View(transaccionproyectada);
        }
コード例 #2
0
        public ActionResult Create(TransaccionProyectada transaccionproyectada)
        {
            if (ModelState.IsValid)
            {
                transaccionproyectada.Dia = 1;
                transaccionproyectada.Monto = Math.Abs(transaccionproyectada.Monto) * -1;
                db.TransaccionProyectadas.Add(transaccionproyectada);
                db.SaveChanges();
                Proyectar.Proyecta(db, transaccionproyectada, DateTime.Now, User.Identity.Name);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.Cuenta_Id = new SelectList(db.Cuentas.Where(r => r.User == User.Identity.Name), "Cuenta_Id", "Descripcion", transaccionproyectada.Cuenta_Id);
            ViewBag.Tipo_Id = new SelectList(db.Tipos, "Tipo_Id", "Descripcion", transaccionproyectada.Tipo_Id);
            return View(transaccionproyectada);
        }
コード例 #3
0
ファイル: EntradaController.cs プロジェクト: Laggel/Financy
        public ActionResult Edit(TransaccionProyectada transaccionproyectada)
        {
            if (ModelState.IsValid)
            {
                db.Entry(transaccionproyectada).State = EntityState.Modified;
                db.SaveChanges();
                Proyectar.Proyecta(db, transaccionproyectada, DateTime.Now, User.Identity.Name);
                db.SaveChanges();

                return RedirectToAction("Index");
            }
            ViewBag.Cuenta_Id = new SelectList(db.Cuentas.Where(r => r.User == User.Identity.Name), "Cuenta_Id", "Descripcion", transaccionproyectada.Cuenta_Id);
            ViewBag.Tipo_Id = new SelectList(db.Tipos, "Tipo_Id", "Descripcion", transaccionproyectada.Tipo_Id);
            return View(transaccionproyectada);
        }
コード例 #4
0
ファイル: Proyectar.cs プロジェクト: Laggel/Financy
        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);

            }
        }