public ActionResult Edit(Int32 id)
        {
            AlquileresMVC.Models.Cliente         cliente = db.ClienteSet.First(c => c.ID == id); Int32 _iIDCliente = cliente.ID;
            List <AlquileresMVC.Models.Alquiler> listAlquiler = db.AlquilerSet.Where(a => a.IDCliente == _iIDCliente && a.Estatus == 1).ToList();
            Double _dMontoEstimado = 0; _dMontoEstimado = (from e in listAlquiler select e.PrecioEstimado).Sum().Value;

            AlquileresMVC.Models.Cantidad_Alquileres_Por_Pagar_VW clienteAlq = dbVW.Cantidad_Alquileres_Por_Pagar_VW_Set.First(c => c.IDCliente == _iIDCliente);
            AlquileresMVC.Models.Descuento descuento = db.DescuentoSet.First(d => d.Codigo == "DEC1");
            Double       _dPorcentajeDescuento       = 0; _dPorcentajeDescuento = descuento.PorcentajeDescuento ?? 0;
            Double       _dDescuento          = _dPorcentajeDescuento * _dMontoEstimado;
            Double       _dMontoTotal         = _dMontoEstimado - _dDescuento;
            PagoCabecera pagoCabeceraToUpdate = db.PagoCabeceraSet.ToList().LastOrDefault();
            Int32        _iID    = pagoCabeceraToUpdate.ID; _iID = _iID + 1;
            DateTime     _dFecha = DateTime.Now;

            if (clienteAlq.NumAlquiler >= 3 && clienteAlq.NumAlquiler <= 5)
            {
                pagoCabeceraToUpdate.MontoExento = _dMontoEstimado;
                pagoCabeceraToUpdate.Descuento   = _dDescuento;
                pagoCabeceraToUpdate.MontoTotal  = _dMontoTotal;
            }
            else
            {
                pagoCabeceraToUpdate.MontoExento = _dMontoEstimado;
                pagoCabeceraToUpdate.Descuento   = 0;
                pagoCabeceraToUpdate.MontoTotal  = _dMontoEstimado;
            }
            pagoCabeceraToUpdate.IDCliente = _iIDCliente;
            pagoCabeceraToUpdate.Fecha     = _dFecha;
            pagoCabeceraToUpdate.ClienteLoad();
            return(View(pagoCabeceraToUpdate));
        }
        public ActionResult Edit(Int32 id, FormCollection form)
        {
            AlquileresMVC.Models.Cliente         cliente = db.ClienteSet.First(c => c.ID == id); Int32 _iIDCliente = cliente.ID;
            List <AlquileresMVC.Models.Alquiler> listAlquiler = db.AlquilerSet.Where(a => a.IDCliente == _iIDCliente && a.Estatus == 1).ToList();
            Double _dMontoEstimado = 0; _dMontoEstimado = (from e in listAlquiler select e.PrecioEstimado).Sum().Value;

            AlquileresMVC.Models.Cantidad_Alquileres_Por_Pagar_VW clienteAlq = dbVW.Cantidad_Alquileres_Por_Pagar_VW_Set.First(c => c.IDCliente == _iIDCliente);
            AlquileresMVC.Models.Descuento descuento = db.DescuentoSet.First(d => d.Codigo == "DEC1");
            Double       _dPorcentajeDescuento       = 0; _dPorcentajeDescuento = descuento.PorcentajeDescuento ?? 0;
            Double       _dDescuento          = _dPorcentajeDescuento * _dMontoEstimado;
            Double       _dMontoTotal         = _dMontoEstimado - _dDescuento;
            PagoCabecera pagoCabeceraToUpdate = db.PagoCabeceraSet.ToList().LastOrDefault();
            Int32        _iID    = pagoCabeceraToUpdate.ID; _iID = _iID + 1;
            DateTime     _dFecha = DateTime.Now;

            if (clienteAlq.NumAlquiler >= 3 && clienteAlq.NumAlquiler <= 5)
            {
                pagoCabeceraToUpdate.MontoExento = _dMontoEstimado;
                pagoCabeceraToUpdate.Descuento   = _dDescuento;
                pagoCabeceraToUpdate.MontoTotal  = _dMontoTotal;
            }
            else
            {
                pagoCabeceraToUpdate.MontoExento = _dMontoEstimado;
                pagoCabeceraToUpdate.Descuento   = 0;
                pagoCabeceraToUpdate.MontoTotal  = _dMontoEstimado;
            }
            pagoCabeceraToUpdate.IDCliente = _iIDCliente;
            pagoCabeceraToUpdate.Fecha     = _dFecha;
            pagoCabeceraToUpdate.ClienteLoad();
            Int32 iEstatus = 1;

            pagoCabeceraToUpdate.Estatus = iEstatus;

            TryUpdateModel(pagoCabeceraToUpdate, "PagoCabecera");

            // Si el modelo es valido, guardo en la BD
            if (ModelState.IsValid)
            {
                db.Connection.Open();
                DbTransaction dbTransaction = db.Connection.BeginTransaction();
                try
                {
                    // Guardar y confirmar.
                    db.AddToPagoCabeceraSet(pagoCabeceraToUpdate);
                    db.SaveChanges();
                    dbTransaction.Commit();
                    /// Si la transaccion es exitosa nos redirigimos a la pagina de detalles como
                    /// cofirmación de que la operacion resulto exitosa
                    return(RedirectToAction("List"));
                }
                catch (Exception ex)
                {
                    dbTransaction.Rollback();
                    HandleException excepcion = new HandleException();
                    String          msjLog    = "Error en " + ObtenerMetodoEnEjecucion(false).ToString() + ".\n" + excepcion.RegistrarExcepcion(ex, ObtenerMetodoEnEjecucion(false).ToString());
                    excepcion.EscribirLogExcepcion(msjLog); String clientMessage = excepcion.HandleExceptionEx(ex); excepcion = null;
                    ModelState.AddModelError("ID", clientMessage);
                }
            }

            // Refresca el formulario con los datos guardados
            return(View(pagoCabeceraToUpdate));
        }