/// <summary>
        /// Método para cancelar un registro
        /// </summary>
        /// <param name="strID"></param>
        protected void imgbtnCancelar_Click(object sender, DirectEventArgs e)
        {
            //1. Obtener registro que se quiere cancelar
            string strcookieEditarVolumetria = Cookies.GetCookie("cookieEditarVolumetria").Value;
            int    strID = Convert.ToInt32(strcookieEditarVolumetria);

            //Cambia el estatus del movimiento
            VolumetriaBusiness.CancelaVolumetriaPorID(strID);
            //Aqui se mandaria llamar el mismo sp para cancelar el preciario y devolverlo a sus cantidades iniciales
        }
        /// <summary>
        /// Método para elimnar un registro
        /// </summary>
        /// <param name="strID"></param>
        protected void imgbtnBorrar_Click(object sender, DirectEventArgs e)
        {
            //1. Obtener registro que se quiere eliminar
            string strcookieEditarVolumetria = Cookies.GetCookie("cookieEditarVolumetria").Value;
            int    strID = Convert.ToInt32(strcookieEditarVolumetria);

            //Borra de la base de datos el encabezado, detalle y fotos
            borrarImagenesPorMovimiento(strID);
            //VolumetriaBusiness.BorrarVolumetriaAfectaPreciario(strID);
            VolumetriaDBusiness.BorrarPorVolumetria(strID);
            VolumetriaBusiness.Borrar(strID);
        }
        /// <summary>
        /// Eveno de clic al boton aceptar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAceptar_Click(object sender, DirectEventArgs e)
        {
            //1. Obtener ID y el movimiento seleccionado
            int  iID    = Convert.ToInt32(e.ExtraParams["ID"]);
            bool strFin = Convert.ToBoolean(e.ExtraParams["Fin"]);

            //2. Avanzar una revisión
            if (strFin)
            {
                int iIDNuevo = VolumetriaBusiness.AvanzarVolumetriaPorID(iID, rFin.InputValue);
                e.ExtraParamsResponse.Add(new Ext.Net.Parameter("captura", iIDNuevo.ToString(), ParameterMode.Auto));
            }
        }
        /// <summary>
        /// Evento de clic del botón Afectar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void imgbtnAfectar_Click(object sender, DirectEventArgs e)
        {
            //1. Obtener datos de la Forma y saber si es edición o nuevo
            string strVolumetriaForma        = e.ExtraParams["VolumetriaForma"];
            string strVolumetria             = e.ExtraParams["Volumetria"];
            string strSucursal               = e.ExtraParams["sucursal"];
            string strVolumetriaD            = e.ExtraParams["VolumetriaD"];
            string strcookieEditarVolumetria = Cookies.GetCookie("cookieEditarVolumetria").Value;

            //2. Serializar el encabezado y el detalle
            Dictionary <string, string> dRegistro = JSON.Deserialize <Dictionary <string, string> >(strVolumetriaForma);
            Volumetria         oVolumetriaForma   = ObtenerObjetoDesdeForma(dRegistro, strSucursal);
            Volumetria         oVolumetria        = JSON.Deserialize <List <Volumetria> >(strVolumetria).FirstOrDefault();
            List <VolumetriaD> lVolumetriaD       = JSON.Deserialize <List <VolumetriaD> >(strVolumetriaD);

            //3. Guardar o Actuaizar el Movimiento
            string strAccion = GuardarMovimiento(ref oVolumetriaForma, oVolumetria, lVolumetriaD);

            //4. Validar que efecto realizará para Guardar o Afectar
            switch (strAccion)
            {
            case "insertar":
                e.ExtraParamsResponse.Add(new Ext.Net.Parameter("accion", "insertar", ParameterMode.Value));
                break;

            case "modificar":
                e.ExtraParamsResponse.Add(new Ext.Net.Parameter("accion", "modificar", ParameterMode.Value));
                break;
            }

            //4. Lanzar la afectación del Movimiento
            VolumetriaBusiness.AfectarVolumetriaPorID(oVolumetriaForma);

            //Actualiza las cantidades despues de afectar
            foreach (VolumetriaD sd in lVolumetriaD)
            {
                PreciarioConceptoBusiness.Actualizar(sd.ConceptoID, sd.Utilizada, sd.Volumetria);
            }

            oVolumetria = VolumetriaBusiness.ObtenerVolumetriaPorID(oVolumetriaForma.ID);
            //7. Actualizar store de Revision
            sVolumetria.GetAt(0).Set("MovID", oVolumetria.MovID);
            sVolumetria.GetAt(0).Set("Estatus", oVolumetria.Estatus);
        }
        /// <summary>
        /// Evento que se lanza al cargar la página
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            //1. Si no hay AjaxRequest
            if (!X.IsAjaxRequest)
            {
                //2. Checar ticket de autenticación
                //UsuarioBusiness.checkValidSession(this);

                //3. Llenar Store de Revisiones, Preciarios y Usuarios
                sVolumetrias.DataSource = VolumetriaBusiness.ObtenerVolumetrias();
                sVolumetrias.DataBind();

                sPreciarios.DataSource = PreciarioBusiness.ObtenerPreciarios();
                sPreciarios.DataBind();

                sUsuarios.DataSource = UsuarioBusiness.ObtenerUsuarios();
                sUsuarios.DataBind();

                rmVolumetrias.RegisterIcon(Icon.Delete);
            }
        }
        public void sVolumetria_Load()
        {
            //Obtener la cookie al cargar
            string strcookieEditarVolumetria = Cookies.GetCookie("cookieEditarVolumetria").Value;

            //Validar si es diferente de Nuevo
            if (!strcookieEditarVolumetria.Equals("Nuevo"))
            {
                //Cargar el encabezado del movimiento
                Volumetria oVolumetria = VolumetriaBusiness.ObtenerVolumetriaPorID(Convert.ToInt32(strcookieEditarVolumetria));

                //Cargar el detalle del movimiento
                //Cargar el detalle del movimiento
                sConceptos.DataSource = VolumetriaDBusiness.ObtenerVolumetriaDPorVolumetria(oVolumetria.ID);
                sConceptos.DataBind();

                sVolumetria.Add(new
                {
                    ID            = oVolumetria.ID,
                    Mov           = oVolumetria.Mov,
                    MovID         = oVolumetria.MovID,
                    Sucursal      = oVolumetria.Sucursal,
                    FechaEmision  = oVolumetria.FechaEmision,
                    Observaciones = oVolumetria.Observaciones,
                    Estatus       = oVolumetria.Estatus,
                    Usuario       = oVolumetria.Usuario,
                    Preciario     = oVolumetria.Preciario,
                    RPreciario    = oVolumetria.RPreciario,
                    RSucursal     = oVolumetria.RSucursal,
                    Origen        = oVolumetria.Origen,
                    OrigenID      = oVolumetria.Origenid,
                    Cliente       = oVolumetria.Cliente,
                    RCliente      = oVolumetria.RCliente
                });
            }
        }
        /// <summary>
        /// Evento que Guarda o actualiza un Movimiento
        /// </summary>
        /// <param name="oVolumetriaForma"></param>
        /// <param name="oVolumetria"></param>
        /// <param name="lVolumetriaD"></param>
        private string GuardarMovimiento(ref Volumetria oVolumetriaForma, Volumetria oVolumetria, List <VolumetriaD> lVolumetriaD)
        {
            //1. Lo que sucede cuando es nuevo y no se habia guardado
            if (oVolumetria == null)
            {
                //Checar ticket de autenticación
                UsuarioBusiness.checkValidSession(this);
                //2. Traemeos el objeto de sesion para llenr el objeto con los datos de usuario
                Usuario oUsuario = (Usuario)Session["Usuario"];
                oVolumetriaForma.Usuario = oUsuario.ID;

                //3. Actualizamos el Estatus e Insertar en la base de datos
                oVolumetriaForma.Estatus = "BORRADOR";
                oVolumetriaForma.ID      = VolumetriaBusiness.insertarVolumetria(oVolumetriaForma);

                //4. Agregar el objeto al Store de Revisión
                sVolumetria.Add(new
                {
                    ID            = oVolumetriaForma.ID,
                    Mov           = oVolumetriaForma.Mov,
                    MovID         = oVolumetriaForma.MovID,
                    Sucursal      = oVolumetriaForma.Sucursal,
                    FechaEmision  = oVolumetriaForma.FechaEmision,
                    Observaciones = oVolumetriaForma.Observaciones,
                    Preciario     = oVolumetriaForma.Preciario,
                    RPreciario    = oVolumetriaForma.RPreciario,
                    RSucursal     = oVolumetriaForma.RSucursal,
                    Estatus       = oVolumetriaForma.Estatus,
                    Usuario       = oVolumetriaForma.Usuario,
                    //Cliente = oVolumetriaForma.Cliente,
                    RCliente = oVolumetriaForma.RCliente
                });

                //5. Guardar Detalle y regresar valor
                GuardarDetalleVolumetria(lVolumetriaD, oVolumetriaForma);
                return("insertar");
            }
            else
            {
                //6. Complementar datos y actualizar encabezado

                oVolumetriaForma.ID = oVolumetria.ID;
                //if (oVolumetriaForma.Cliente == null)
                //{
                //    oVolumetriaForma.Cliente = "";
                //    oVolumetria.RCliente.ID = "";
                //}
                VolumetriaBusiness.actualizarVolumetria(oVolumetriaForma);

                //7. Actualizar store de Revision
                sVolumetria.GetAt(0).Set("Mov", oVolumetriaForma.Mov);
                sVolumetria.GetAt(0).Set("Sucursal", oVolumetriaForma.Sucursal);
                sVolumetria.GetAt(0).Set("Preciario", oVolumetriaForma.Preciario);
                sVolumetria.GetAt(0).Set("FechaEmision", oVolumetriaForma.FechaEmision);
                sVolumetria.GetAt(0).Set("Observaciones", oVolumetriaForma.Observaciones);
                //sVolumetria.GetAt(0).Set("Cliente", oVolumetriaForma.Cliente);

                //8. Borrar todo el detalle e insertarlo de nuevo
                VolumetriaDBusiness.BorrarPorVolumetria(oVolumetriaForma.ID);
                GuardarDetalleVolumetria(lVolumetriaD, oVolumetriaForma);

                //9. Regresar valor
                return("modificar");
            }
        }
 public static Volumetria ObtenerVolumetria(int iID)
 {
     return(VolumetriaBusiness.ObtenerVolumetriaPorID(iID));
 }
 /// <summary>
 /// Evento que vuelve a leer los datos para ser cargados al store
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void OnReadData_sVolumetrias(object sender, StoreReadDataEventArgs e)
 {
     sVolumetrias.DataSource = VolumetriaBusiness.ObtenerVolumetrias();
     sVolumetrias.DataBind();
 }