/// <summary>
        /// Page_Load(object sender, EventArgs e)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }

            if (Session["connectionString"] == null || Session["USER"] == null)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "Logoff", "LogOff();", true);
                return;
            }
            try {
                if (Session["UiListaDeSkusNoAsociadosAPromocionDeVentaPorMultiplo"] != null)
                {
                    UiListaDeSkusNoAsociadosAPromocionDeVentaPorMultiplo.DataSource =
                        Session["UiListaDeSkusNoAsociadosAPromocionDeVentaPorMultiplo"];
                    UiListaDeSkusNoAsociadosAPromocionDeVentaPorMultiplo.DataBind();
                }

                if (Session["UiVistaDePromocionesDeVentaPorMultiplo"] != null)
                {
                    UiVistaDePromocionesDeVentaPorMultiplo.DataSource = Session["UiVistaDePromocionesDeVentaPorMultiplo"];
                    UiVistaDePromocionesDeVentaPorMultiplo.DataBind();
                }

                if (Session["UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo"] != null)
                {
                    UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo.DataSource =
                        Session["UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo"];
                    UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo.DataBind();
                }
            }
            catch (Exception ex)
            {
                EstablecerError(ex.Message, sender);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo_OnCustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }
            try
            {
                switch (e.Parameters.Split('|')[0])
                {
                case "ExpandirGruposDeUiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo":
                    UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo.ExpandAll();
                    break;

                case "ContraerGruposDeUiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo":
                    UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo.CollapseAll();
                    break;

                case "EliminarSkusAsociadosAPromocionDeVentaPorMultiplo":
                    var listaDeSkusAEliminar = new List <VentaPorMultiploDePromo>();
                    for (var i = 0; i < UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo.VisibleRowCount; i++)
                    {
                        listaDeSkusAEliminar.Add((VentaPorMultiploDePromo)UiVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo.GetRow(i));
                    }

                    UsuarioDeseaEliminarSkuDeVentaPorMultiploAsociadoAPromocionDeVentaPorMultiplo?.Invoke(sender, new PromoArgumento
                    {
                        Promo = new Promo {
                            PROMO_ID = int.Parse(UiTxtCodigoDePromocionDeVentaPorMultiplo.Value.ToString())
                        }
                        ,
                        VentasPorMultiploDePromo = listaDeSkusAEliminar
                    });
                    break;

                case "LimpiarVistaDeSkusAsociadosAPromocionDeVentaPorMultiplo":
                    SkusAsociadosAPromocionDeVentaPorMultiplo = null;
                    break;

                case "CargarSkusAsociadosAPromocionDeVentaPorMultiplo":
                    UsuarioDeseaObtenerSkusDeVentaPorMultiploAsociadosAPromocionDeVentaPorMultiplo?.Invoke(sender, new PromoArgumento
                    {
                        Promo = new Promo
                        {
                            PROMO_ID = int.Parse(UiTxtCodigoDePromocionDeVentaPorMultiplo.Value.ToString())
                        }
                    });
                    break;

                case "AsociarSkusAPromocionDeVentaPorMultiplo":
                    if (double.Parse(UiQtyVentaMinimaParaAplicarASkuDeVentaPorMultiplo.Value.ToString()) <= 0)
                    {
                        EstablecerError("La cantidad de venta mínima debe ser mayor cero.", sender);
                        return;
                    }
                    var idPromocionDeVentaPorMultiplo = UiTxtCodigoDePromocionDeVentaPorMultiplo.Value == null
                            ? 0
                            : int.Parse(UiTxtCodigoDePromocionDeVentaPorMultiplo.Value.ToString());

                    var listaSkusAAsociar = UiListaDeSkusNoAsociadosAPromocionDeVentaPorMultiplo.GridView.GetSelectedFieldValues("CODE_SKU", "PACK_UNIT");

                    if (listaSkusAAsociar.Count <= 0)
                    {
                        EstablecerError("Por favor, seleccione los productos que desea asociar a la promoción.", sender);
                        return;
                    }
                    ;

                    var listaDeSkusConVentaPorMultiploAAsociar = listaSkusAAsociar.Select(sku => new VentaPorMultiploDePromo
                    {
                        PROMO_ID  = idPromocionDeVentaPorMultiplo,
                        CODE_SKU  = ((object[])sku)[0].ToString(),
                        PACK_UNIT = int.Parse(((object[])sku)[1].ToString()),
                        MULTIPLE  = int.Parse(UiQtyVentaMinimaParaAplicarASkuDeVentaPorMultiplo.Value.ToString())
                    }).ToList();

                    UsuarioDeseaAsociarSkuDeVentaPorMultiploAPromocionDeVentaPorMultiplo?.Invoke(sender, new PromoArgumento
                    {
                        Promo = new Promo {
                            PROMO_ID = idPromocionDeVentaPorMultiplo, PROMO_NAME = UiTxtNombreDePromocionDeVentaPorMultiplo.Value.ToString(), PROMO_TYPE = "SALES_BY_MULTIPLE"
                        }
                        ,
                        VentasPorMultiploDePromo = listaDeSkusConVentaPorMultiploAAsociar
                    });
                    break;
                }
            }
            catch (Exception exception)
            {
                EstablecerError(exception.Message, sender);
            }
        }