예제 #1
0
 public ActionResult EditarMovimiento(int?IdTrasaccion)
 {
     try
     {
         tmovimiento Movimiento = new tmovimiento();
         if (IdTrasaccion != null)
         {
             Movimiento = db
                          .tmovimientoes
                          .Where(m => m.Id_Usuario == sesion.Usuario.Id && m.Id == IdTrasaccion).Include(c => c.tcuenta)
                          .SingleOrDefault();
             if (Movimiento != null)
             {
                 ViewBag.Id_Categoria = new SelectList(db.tcategorias.Where(c => c.IdUsuario == sesion.Usuario.Id &&
                                                                            c.Tipo == Movimiento.Tipo && c.Activo), "Id", "Nombre", Movimiento.Id_Categoria);
                 Movimiento.MontoAnterior = Movimiento.Monto;
                 ViewBag.Transaccion      = IdTrasaccion;
             }
             else
             {
                 ViewBag.Transaccion = null;
             }
         }
         return(View(Movimiento));
     }
     catch (Exception)
     {
         AddMsgWeb("Error al acceder a los datos", ToastType.Error);
         return(RedirectToAction("Index", "Inicio"));
     }
 }
예제 #2
0
        // GET: Cuentas/Gasto
        public ActionResult Gasto()
        {
            int         tipo  = IntValue(TipoMovimiento.Debito);
            tmovimiento gasto = new tmovimiento();

            gasto.Id_Usuario     = sesion.Usuario.Id;
            gasto.TipoMovimiento = TipoMovimiento.Debito;
            gasto.Fecha          = DateTime.Now;
            ViewBag.Id_Cuenta    = new SelectList(sesion.Cuentas, "Id", "Nombre", sesion.CuentaFiltro);
            ViewBag.Id_Categoria = new SelectList(db.tcategorias.Where(c => c.IdUsuario == sesion.Usuario.Id &&
                                                                       c.Tipo == tipo && c.Activo), "Id", "Nombre");
            return(View(gasto));
        }
예제 #3
0
        public ActionResult EditarCompleto([Bind(Include = "Id,Id_Usuario,Id_Categoria,Id_Cuenta,Fecha,Descripcion,Tipo,TipoMovimiento,Monto,MontoAnterior")] tmovimiento Movimiento)
        {
            try
            {
                bool has = db.tmovimientoes.Any(p => p.Id_Usuario == Movimiento.Id_Usuario && p.Id != Movimiento.Id);
                if (has)
                {
                    using (DbContextTransaction transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            //Edito el Movimiento
                            db.Entry(Movimiento).State = EntityState.Modified;
                            db.SaveChanges();
                            if (Movimiento.Monto != Movimiento.MontoAnterior)
                            {
                                decimal Diferencia = Movimiento.Monto - Movimiento.MontoAnterior;
                                //Actulizo Saldo
                                tcuenta Cuenta = db.tcuentas.Find(Movimiento.Id_Cuenta);
                                Cuenta.SaldoAnterior = Cuenta.SaldoActual;
                                if (Movimiento.Tipo == 1)
                                {
                                    Cuenta.SaldoActual += Diferencia;
                                }
                                else if (Movimiento.Tipo == 2)
                                {
                                    Cuenta.SaldoActual -= Diferencia;
                                }
                                else
                                {
                                    AddMsgWeb("Las transferencias no pueden alterarse.", ToastType.Warning);
                                    throw new Exception("Las transferencias no pueden alterarse.");
                                }
                                db.Entry(Cuenta).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                            //Cierro tracssaccion
                            transaction.Commit();
                            AddMsgWeb("Registro editado exitosamente", ToastType.Success);
                        }
                        catch (DbEntityValidationException exp)
                        {
                            transaction.Rollback();

                            foreach (var eve in exp.EntityValidationErrors)
                            {
                                string msg = string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                           eve.Entry.Entity.GetType().Name, eve.Entry.State);
                                AddMsgWeb("EntityValidationErrors: " + msg, ToastType.Error);

                                foreach (var ve in eve.ValidationErrors)
                                {
                                    string msg1 = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                                    AddMsgWeb("EntityValidationErrors: " + msg1, ToastType.Error);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            ModelState.AddModelError("ModelErr", ex.Message);
                            AddMsgWeb("Error al agregar el registro", ToastType.Error);
                        }
                    }
                }
                else
                {
                    AddMsgWeb("Error proceso invalido !!", ToastType.Error);
                }
            }
            catch (Exception)
            {
                AddMsgWeb("Error al acceder a los datos", ToastType.Error);
            }
            return(RedirectToAction("Index", "Inicio"));
        }
예제 #4
0
        public ActionResult Transferencia([Bind(Include = "CuentaOrigen,CuentaDestino,Descripcion,Monto")] Transferencia pTransferencia)
        {
            if (pTransferencia.Monto < 0)
            {
                AddMsgWeb("Monto invalido, valor negativo", ToastType.Error);
                ModelState.AddModelError("ModelErr", "Monto invalido, valor negativo");
            }
            tcuenta CuentaOrigen = db.tcuentas.Where(c => c.Id == pTransferencia.CuentaOrigen).SingleOrDefault();

            if (CuentaOrigen != null)
            {
                ViewBag.Saldo   = CuentaOrigen.SaldoActual_Format;
                ViewBag.Simbolo = CuentaOrigen.tmoneda.Simbolo;
                if (pTransferencia.Monto > CuentaOrigen.SaldoActual && (CuentaOrigen.CuentaCredito == false))
                {
                    ModelState.AddModelError("ModelErr", "Monto de transferencia mayor al saldo de la cuenta");
                    AddMsgWeb("Monto de transferencia mayor al saldo de la cuenta", ToastType.Error);
                }
            }
            else
            {
                ViewBag.Saldo = "0.0";
            }
            if (ModelState.IsValid)
            {
                using (DbContextTransaction transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var         Categoria = db.tcategorias.Where(c => c.IdUsuario == sesion.Usuario.Id && c.Tipo == 3).FirstOrDefault();
                        tmovimiento Gasto     = new tmovimiento();
                        //Ingreso Gasto
                        Gasto.Id_Usuario   = sesion.Usuario.Id;
                        Gasto.Fecha        = DateTime.Now;
                        Gasto.Id_Categoria = Categoria.Id;
                        Gasto.Id_Cuenta    = pTransferencia.CuentaOrigen;
                        Gasto.Monto        = pTransferencia.Monto;
                        Gasto.Descripcion  = "Transferencia " + pTransferencia.Descripcion;
                        Gasto.Tipo         = IntValue(TipoMovimiento.Debito);
                        db.tmovimientoes.Add(Gasto);


                        tmovimiento Ingreso = new tmovimiento();
                        //Ingreso Gasto
                        Ingreso.Id_Usuario   = sesion.Usuario.Id;
                        Ingreso.Fecha        = DateTime.Now;
                        Ingreso.Id_Categoria = Categoria.Id;
                        Ingreso.Id_Cuenta    = pTransferencia.CuentaDestino;
                        Ingreso.Monto        = pTransferencia.Monto;
                        Ingreso.Descripcion  = "Transferencia " + pTransferencia.Descripcion;
                        Ingreso.Tipo         = IntValue(TipoMovimiento.Credito);
                        db.tmovimientoes.Add(Ingreso);

                        db.SaveChanges();

                        //Actulizo Saldo
                        tcuenta COrigen = db.tcuentas.Find(pTransferencia.CuentaOrigen);
                        COrigen.SaldoAnterior = COrigen.SaldoActual;
                        //Cuentas de credito los montos de gastos se convierten en negativos
                        //if (COrigen.CuentaCredito == true)
                        //{
                        //    COrigen.SaldoActual -= (pTransferencia.Monto *= -1);
                        //}
                        //else {
                        COrigen.SaldoActual -= pTransferencia.Monto;
                        //}
                        db.Entry(COrigen).State = EntityState.Modified;


                        //Actulizo Saldo
                        tcuenta CDestino = db.tcuentas.Find(pTransferencia.CuentaDestino);
                        CDestino.SaldoAnterior   = CDestino.SaldoActual;
                        CDestino.SaldoActual    += pTransferencia.Monto;
                        db.Entry(CDestino).State = EntityState.Modified;

                        db.SaveChanges();

                        //Cierro tracssaccion
                        transaction.Commit();
                        AddMsgWeb("Gasto agregado exitosamente", ToastType.Success);
                        return(RedirectToAction("Index", "Inicio"));
                    }
                    catch (DbEntityValidationException exp)
                    {
                        transaction.Rollback();

                        foreach (var eve in exp.EntityValidationErrors)
                        {
                            string msg = string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                       eve.Entry.Entity.GetType().Name, eve.Entry.State);
                            AddMsgWeb("EntityValidationErrors: " + msg, ToastType.Error);

                            foreach (var ve in eve.ValidationErrors)
                            {
                                string msg1 = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                                AddMsgWeb("EntityValidationErrors: " + msg1, ToastType.Error);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        ModelState.AddModelError("ModelErr", ex.Message);
                        AddMsgWeb("Error al agregar el registro", ToastType.Error);
                    }
                }
            }
            ViewBag.CuentaOrigen  = new SelectList(sesion.Cuentas, "Id", "Nombre", pTransferencia.CuentaOrigen);
            ViewBag.CuentaDestino = new SelectList(sesion.Cuentas.Where(c => c.Id_Usuario == sesion.Usuario.Id &&
                                                                        c.Activo && c.Id != CuentaOrigen.Id && c.Id_Moneda == CuentaOrigen.Id_Moneda), "Id", "Nombre", pTransferencia.CuentaDestino);
            return(View(pTransferencia));
        }
예제 #5
0
        public ActionResult Gasto([Bind(Include = "Id_Usuario,Id_Categoria,Id_Cuenta,Fecha,Descripcion,TipoMovimiento,Monto")] tmovimiento pMovimiento)
        {
            if (pMovimiento.Monto < 0)
            {
                AddMsgWeb("Monto invalido, valor negativo", ToastType.Error);
                ModelState.AddModelError("ModelErr", "Monto invalido, valor negativo");
            }
            if (ModelState.IsValid)
            {
                using (DbContextTransaction transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        //Ingreso Movimiento
                        pMovimiento.Tipo = IntValue(pMovimiento.TipoMovimiento);
                        db.tmovimientoes.Add(pMovimiento);
                        //db.SaveChanges();

                        //Actulizo Saldo
                        tcuenta cuenta = db.tcuentas.Find(pMovimiento.Id_Cuenta);
                        cuenta.SaldoAnterior = cuenta.SaldoActual;
                        //Cuentas de credito los montos de gastos se convierten en negativos
                        //if (cuenta.CuentaCredito == true)
                        //{
                        //    decimal MontoCredito = pMovimiento.Monto *-1;
                        //    cuenta.SaldoActual += MontoCredito;
                        //}
                        //else
                        //{
                        cuenta.SaldoActual -= pMovimiento.Monto;
                        //}
                        db.Entry(cuenta).State = EntityState.Modified;
                        db.SaveChanges();

                        //Cierro tracssaccion
                        transaction.Commit();
                        AddMsgWeb("Gasto agregado exitosamente", ToastType.Success);
                        return(RedirectToAction("Index", "Inicio"));
                    }
                    catch (DbEntityValidationException exp)
                    {
                        transaction.Rollback();

                        foreach (var eve in exp.EntityValidationErrors)
                        {
                            string msg = string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                       eve.Entry.Entity.GetType().Name, eve.Entry.State);
                            AddMsgWeb("EntityValidationErrors: " + msg, ToastType.Error);

                            foreach (var ve in eve.ValidationErrors)
                            {
                                string msg1 = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                                AddMsgWeb("EntityValidationErrors: " + msg1, ToastType.Error);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        ModelState.AddModelError("ModelErr", ex.Message);
                        AddMsgWeb("Error al agregar el registro", ToastType.Error);
                    }
                }
            }
            ViewBag.Id_Cuenta = new SelectList(sesion.Cuentas, "Id", "Nombre", pMovimiento.Id_Cuenta);
            int tipo = IntValue(TipoMovimiento.Debito);

            ViewBag.Id_Categoria = new SelectList(db.tcategorias.Where(c => c.IdUsuario == sesion.Usuario.Id &&
                                                                       c.Tipo == tipo && c.Activo), "Id", "Nombre", pMovimiento.Id_Categoria);
            return(View(pMovimiento));
        }