/// <summary>
        /// Inicia todos los componentes para el MVC a travez del CMvx
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Init(object sender, EventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }
            var mvx = new CMvx();

            mvx.RegisterSingleton <IConfiguracionDeConexion, frmMainMenu.ConfiguracionDeConexion>(new frmMainMenu.ConfiguracionDeConexion());
            mvx.RegisterType <IBaseDeDatosServicio, BaseDeDatosServicio>();

            mvx.RegisterType <IPromoServicio, PromoServicio>();
            mvx.RegisterType <ISkuServicio, SkuServicio>();
            mvx.RegisterType <IParametroServicio, ParametroServicio>();
            mvx.RegisterSingleton <IPromoPrecioEspecialVista, FrmPromoBySpecialPrice>(this);
            mvx.RegisterType <IPromoPrecioEspecialContolador, PromoPrecioEspecialContolador>();

            mvx.Resolve <IPromoPrecioEspecialContolador>();

            if (!Page.IsPostBack)
            {
                Session["UiListaSkusDisponiblesParaPromocionPorPrecioEspecial"] = null;
                Session["UiVistaSkusAsociadosPromoPorPrecioEspecial"]           = null;
                Session["UiVistaDePromocionesPorPrecioEspecial"] = null;
                UsuarioDeseaObtenerPromosPorPrecioEspecial?.Invoke(sender, new PromoArgumento {
                    Promo = new Promo {
                        PROMO_TYPE = Enums.GetStringValue(TiposDePromocion.PrecioEspecial)
                    }
                });
                UsuarioDeseaObtenerSkusSinAsociarAPromo?.Invoke(sender, null);
                EstablecerDecimalesParaControles();
            }
        }
        /// <summary>
        /// Callback para el mantenimiento de la vista de promociones
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void UiVistaDePromocionesPorPrecioEspecial_OnCustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }

            var idPromo = int.Parse(UiTxtCodigoDePromocionDeDescuentoPorPrecioEspecial.Value.ToString());

            if (listadoError != null)
            {
                listadoError.Clear();
            }
            switch (e.Parameters.ToString())
            {
            case "ObtenerDatosDePromoSelecionada":
                UsuarioDeseaObtenerPromosPorPrecioEspecial?.Invoke(sender, new PromoArgumento {
                    Promo = new Promo {
                        PROMO_TYPE = Enums.GetStringValue(TiposDePromocion.PrecioEspecial)
                    }
                });
                break;

            case "RefrescarVistaPromos":
                UsuarioDeseaObtenerPromosPorPrecioEspecial?.Invoke(sender, new PromoArgumento {
                    Promo = new Promo {
                        PROMO_TYPE = Enums.GetStringValue(TiposDePromocion.PrecioEspecial)
                    }
                });
                break;

            case "GuardarPromoPorPrecioEspecialPorEscala":
                if (UiTxtNombreDePromocionDeDescuentoPorPrecioEspecial.Value == null)
                {
                    EstablecerError(Enums.GetStringValue(ErrorEnPreciosEspeciales.NombreSinValor), sender);
                    return;
                }
                AsignarSkusAPReciosEspecialesPorEscala(sender);

                break;

            case "EliminarPromoPorPrecioEspecialPorEscala":
                if (idPromo > 0)
                {
                    UsuarioDeseaEliminarPromo?.Invoke(sender,
                                                      new PromoArgumento
                    {
                        Promo = new Promo
                        {
                            PROMO_ID   = idPromo,
                            PROMO_TYPE = Enums.GetStringValue(TiposDePromocion.PrecioEspecial)
                        }
                    });
                }
                else
                {
                    EstablecerError(Enums.GetStringValue(ErrorEnPreciosEspeciales.SinPromoParaEliminar), sender);
                }
                break;
            }
        }