示例#1
0
        public ActionResult Create(Transaccion transaccion)
        {
            if (ModelState.IsValid)
            {
                db.Transacciones.Add(transaccion);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.Cuenta_Id = new SelectList(db.Cuentas.Where(r => r.User == User.Identity.Name), "Cuenta_Id", "Descripcion", transaccion.Cuenta_Id);
            return View(transaccion);
        }
示例#2
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);

            }
        }