public bool UpdateCartItem(bool isSubscriptionable, out string errMsg)
    {
        errMsg = String.Empty;
        if (!VerifyValidInput(out errMsg))
        {
            if (!String.IsNullOrEmpty(errMsg))
            {
                DisplayErrorMessage(errMsg);
                return(false);
            }
        }

        //string errMsg;
        if (!VerifyQuantity(out errMsg))
        {
            DisplayErrorMessage(errMsg);
            return(false);
        }
        if (!IsMatchQuantity())
        {
            return(false);
        }

        ICartItem item = StoreContext.ShoppingCart.FindCartItemByID(CartItemID);
        OptionItemValueCollection selectedOptions = uxProductOptionGroupDetails.GetSelectedOptions();
        CartItemGiftDetails       giftDetails     = CreateGiftDetails();

        Currency currency   = DataAccessContext.CurrencyRepository.GetOne(CurrencyCode);
        decimal  enterPrice = ConvertUtilities.ToDecimal(currency.FormatPriceWithOutSymbolInvert(ConvertUtilities.ToDecimal(uxEnterAmountText.Text)));

        if (enterPrice == item.Product.GetProductPrice(StoreID).Price)
        {
            enterPrice = 0;
        }

        decimal customPrice = 0;

        if (item.Product.IsCustomPrice)
        {
            customPrice = ConvertUtilities.ToDecimal(currency.FormatPriceWithOutSymbolInvert(ConvertUtilities.ToDecimal(uxEnterAmountText.Text)));
        }

        int    currentStock;
        string errorOptionName;

        StoreContext.ShoppingCart.DeleteItem(CartItemID);

        CartAddItemService addToCartService = new CartAddItemService(
            StoreContext.Culture, StoreContext.ShoppingCart);
        bool stockOK = addToCartService.AddToCartByAdmin(
            item.Product,
            selectedOptions,
            ConvertUtilities.ToInt32(uxQuantityText.Text),
            giftDetails,
            customPrice,
            enterPrice,
            StoreID,
            out errorOptionName,
            out currentStock,
            isSubscriptionable);

        if (stockOK)
        {
            return(true);
        }
        else
        {
            errMsg = DisplayOutOfStockError(currentStock, errorOptionName);

            return(false);
        }
    }