private void PercentOff(Coupon coupon, Basket basket, BasketCoupon basketCoupon)
 {
     if (coupon.MinSpend < basket.BasketTotal())
     {
         basketCoupon.Value             = (coupon.Value / 100) * basket.BasketTotal();
         basketCoupon.CouponCode        = coupon.CouponCode;
         basketCoupon.CouponDescription = coupon.CouponDescription;
         basketCoupon.CouponId          = coupon.CouponId;
         basket.AddBasketCoupon(basketCoupon);
     }
 }
Exemplo n.º 2
0
        protected void BasketGrid_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            Basket basket;
            int    index;

            switch (e.CommandName)
            {
            case "SaveItem":
                basket = AbleContext.Current.User.Basket;
                index  = basket.Items.IndexOf(AlwaysConvert.ToInt(e.CommandArgument.ToString()));
                if ((index > -1))
                {
                    basket.Items.MoveToWishlist(index, AbleContext.Current.User.PrimaryWishlist);
                }
                break;

            case "DeleteItem":
                basket = AbleContext.Current.User.Basket;
                index  = basket.Items.IndexOf(AlwaysConvert.ToInt(e.CommandArgument.ToString()));
                if ((index > -1))
                {
                    basket.Items.DeleteAt(index);
                }
                break;

            case "DeleteCoupon":
                // get coupon to be deleted
                string couponCode = e.CommandArgument.ToString();

                // delete the coupon
                basket = AbleContext.Current.User.Basket;
                for (int i = basket.BasketCoupons.Count - 1; i >= 0; i--)
                {
                    BasketCoupon cpn = basket.BasketCoupons[i];
                    if (cpn.Coupon.CouponCode == couponCode)
                    {
                        basket.BasketCoupons.DeleteAt(i);
                        break;
                    }
                }

                // delete items associated with the coupon
                for (int i = basket.Items.Count - 1; i >= 0; i--)
                {
                    BasketItem bitem = basket.Items[i];
                    if (bitem.OrderItemType == OrderItemType.Coupon && bitem.Sku == couponCode)
                    {
                        basket.Items.RemoveAt(i);
                    }
                }
                basket.Save();
                break;
            }
        }
        }         //end addCoupon

        private void MoneyOff(Coupon coupon, Basket basket, BasketCoupon basketCoupon)
        {
            decimal basketTotal = basket.BasketTotal();

            if (coupon.MinSpend < basketTotal)
            {
                basketCoupon.Value             = coupon.Value * -1;
                basketCoupon.CouponCode        = coupon.CouponCode;
                basketCoupon.CouponDescription = coupon.CouponDescription;
                basketCoupon.CouponId          = coupon.CouponId;
                basket.AddBasketCoupon(basketCoupon);
            }
        }
        public void AddCoupon(string couponCode, HttpContextBase httpContext)
        {
            Basket basket = GetBasket(httpContext);
            Coupon coupon = coupons.GetAll().FirstOrDefault(c => c.CouponCode == couponCode);

            if (coupon != null)
            {
                CouponType couponType = couponTypes.GetById(coupon.CouponTypeId);
                if (couponType != null)
                {
                    BasketCoupon basketCoupon = new BasketCoupon();
                    if (couponType.Type == "MoneyOff")
                    {
                        MoneyOff(coupon, basket, basketCoupon);
                    }
                    if (couponType.Type == "PercentOff")
                    {
                        PercentOff(coupon, basket, basketCoupon);
                    }
                    baskets.Commit();
                } //end couponType if
            }     //end coupon if
        }         //end addCoupon
        private void ApplyCoupon()
        {
            ValidCouponMessage.Visible = false;
            string couponCode            = StringHelper.StripHtml(Request.Form[CouponCode.UniqueID]);
            Coupon coupon                = CouponDataSource.LoadForCouponCode(couponCode);
            String couponValidityMessage = String.Empty;

            InvalidCouponMessage.Text = "Invalid coupon code.";
            if (coupon != null)
            {
                ICouponCalculator couponCalculator = AbleContext.Resolve <ICouponCalculator>();
                if (!couponCalculator.IsCouponAlreadyUsed(AbleContext.Current.User.Basket, coupon))
                {
                    if (couponCalculator.IsCouponValid(AbleContext.Current.User.Basket, coupon, out couponValidityMessage))
                    {
                        Basket       basket       = AbleContext.Current.User.Basket;
                        BasketCoupon recentCoupon = new BasketCoupon(AbleContext.Current.User.Basket, coupon);
                        recentCoupon.AppliedDate = LocaleHelper.LocalNow;
                        basket.BasketCoupons.Add(recentCoupon);
                        // APPLY COUPON COMBINE RULE
                        //THE RULE:
                        //If most recently applied coupon is marked "do not combine", then all previously
                        //entered coupons must be removed from basket.

                        //If most recently applied coupon is marked "combine", then remove any applied
                        //coupon that is marked "do not combine".  (Logically, in this instance there
                        //could be at most one other coupon of this type...)
                        string previousCouponsRemoved = "";

                        if (recentCoupon.Coupon.AllowCombine)
                        {
                            //IF ALLOW COMBINE, REMOVE ALL PREVIOUS NOCOMBINE COUPONS
                            for (int i = (basket.BasketCoupons.Count - 1); i >= 0; i--)
                            {
                                if (!basket.BasketCoupons[i].Coupon.AllowCombine)
                                {
                                    if (previousCouponsRemoved.Length > 0)
                                    {
                                        previousCouponsRemoved += "," + basket.BasketCoupons[i].Coupon.Name;
                                    }
                                    else
                                    {
                                        previousCouponsRemoved = basket.BasketCoupons[i].Coupon.Name;
                                    }

                                    basket.BasketCoupons.DeleteAt(i);
                                }
                            }
                        }
                        else
                        {
                            //IF NOT ALLOW COMBINE, REMOVE ALL EXCEPT THIS COUPON
                            for (int i = (basket.BasketCoupons.Count - 1); i >= 0; i--)
                            {
                                if (basket.BasketCoupons[i] != recentCoupon)
                                {
                                    if (previousCouponsRemoved.Length > 0)
                                    {
                                        previousCouponsRemoved += "," + basket.BasketCoupons[i].Coupon.Name;
                                    }
                                    else
                                    {
                                        previousCouponsRemoved = basket.BasketCoupons[i].Coupon.Name;
                                    }
                                    basket.BasketCoupons.DeleteAt(i);
                                }
                            }
                        }

                        basket.Save();
                        IBasketService preCheckoutService = AbleContext.Resolve <IBasketService>();
                        preCheckoutService.Recalculate(basket);
                        if (previousCouponsRemoved.Length > 0)
                        {
                            if (recentCoupon.Coupon.AllowCombine)
                            {
                                CombineCouponRemoveMessage.Text    = String.Format(CombineCouponRemoveMessage.Text, recentCoupon.Coupon.Name, previousCouponsRemoved, previousCouponsRemoved);
                                CombineCouponRemoveMessage.Visible = true;
                            }
                            else
                            {
                                NotCombineCouponRemoveMessage.Text    = String.Format(NotCombineCouponRemoveMessage.Text, recentCoupon.Coupon.Name, previousCouponsRemoved);
                                NotCombineCouponRemoveMessage.Visible = true;
                            }
                        }
                        ValidCouponMessage.Visible = true;
                    }
                    else
                    {
                        InvalidCouponMessage.Text = couponValidityMessage + "<br /><br />";
                    }
                }
                else
                {
                    InvalidCouponMessage.Text = string.Format(InvalidCouponMessage.Text, "The coupon code you've entered is already in use.");
                }
            }
            else
            {
                InvalidCouponMessage.Text = string.Format(InvalidCouponMessage.Text, "The coupon code you've entered is invalid.");
            }
            InvalidCouponMessage.Visible = !ValidCouponMessage.Visible;
        }
Exemplo n.º 6
0
        /// <summary>
        /// 적용 button Event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void btnSave_Click(object sender, EventArgs e)
        {
            if (_bDisable)
            {
                return;
            }

            if (grd.RowCount <= 0 || grd.CurrentRowIndex < 0 || _drRow == null)
            {
                return;
            }

            try
            {
                bool bFG_LIMIT = _drRow["FG_LIMIT"].ToString() == "0" ? true : false;                                                           //쿠폰적용 제한(0:제한없음, 1:단일브랜드)
                int  iAM_MAX   = TypeHelper.ToInt32(_drRow["AM_MAX"]);                                                                          //쿠폰 적용 판매 금엑
                /// = true: 금액으로 계산; false = Percentage
                /// FG_DC = 1, 금액
                bool bFG_DC = _drRow["FG_DC"].ToString() == "1" ? true : false;                                                                                                                                      //할인구분 (0:%, 1:금액)
                int  iAM_DC = TypeHelper.ToInt32(_drRow["AM_DC"] != null ? _drRow["AM_DC"].ToString().Replace(WSWD.WmallPos.FX.Shared.ConfigData.Current.SysMessage.GetMessage("00173"), "").Replace("%", "") : ""); //쿠폰 할인금액

                if (bFG_DC)
                {
                    if (TypeHelper.ToInt32(txtPaymentCnt.Text) <= 0)
                    {
                        StatusMessage = strMsg01;
                        return;
                    }
                }

                if (TypeHelper.ToInt32(txtPaymentAmt.Text) <= 0)
                {
                    StatusMessage = strMsg11;
                    return;
                }

                bool   bCdClass = false; //true:복합 false:단일
                string strTemp  = string.Empty;
                foreach (BasketItem bp in _BasketItems)
                {
                    if (bp.FgCanc == "0")
                    {
                        if (strTemp.Length <= 0)
                        {
                            strTemp = bp.CdClass;
                        }
                        else
                        {
                            if (strTemp != bp.CdClass)
                            {
                                bCdClass = true;
                            }
                        }
                    }
                }

                if (bCdClass)
                {
                    if (!bFG_LIMIT)
                    {
                        StatusMessage = strMsg10;
                        return;
                    }
                }

                if (iAM_MAX > _iGetAmt)
                {
                    StatusMessage = string.Format(strMsg09, iAM_MAX);
                    return;
                }

                if (_iGetAmt < TypeHelper.ToInt32(txtPaymentAmt.Text))
                {
                    //컨트롤 초기화
                    StatusMessage = strMsg02;
                    return;
                }

                #region Loc added 11.13 - 주석처리


                // 금액할인쿠폰
                if (bFG_DC)
                {
                    // Loc added 11.13
                    // 갯수 확인
                    int maxCount = _iGetAmt / iAM_MAX;

                    if (TypeHelper.ToInt32(txtPaymentCnt.Text) > maxCount)
                    {
                        StatusMessage = strMsg12;
                        return;
                    }
                }

                #endregion

                // 할인쿠폰 TRAN
                BasketCoupon basketCoupon = new BasketCoupon();
                basketCoupon.BasketType = BasketTypes.BasketPay;
                basketCoupon.PayGrpCd   = NetCommConstants.PAYMENT_GROUP_COUPON;
                basketCoupon.PayDtlCd   = NetCommConstants.PAYMENT_DETAIL_COUPON;
                basketCoupon.PayAmt     = txtPaymentAmt.Text;
                basketCoupon.BalGrpCd   = NetCommConstants.PAYMENT_GROUP_NONE;
                basketCoupon.BalDtlCd   = NetCommConstants.PAYMENT_DETAIL_NONE;
                basketCoupon.CancFg     = NetCommConstants.CANCEL_TYPE_NORMAL;
                basketCoupon.CouponCd   = ((System.Data.DataRow)(grd.GetRow(grd.CurrentRowIndex).ItemData)).ItemArray[0].ToString();
                basketCoupon.CouponNm   = ((System.Data.DataRow)(grd.GetRow(grd.CurrentRowIndex).ItemData)).ItemArray[1].ToString();
                basketCoupon.CouponCnt  = !bFG_DC ? "1" : txtPaymentCnt.Text.ToString();

                this.ReturnResult.Add("PAY_DATA", basketCoupon);
                this.DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                LogUtils.Instance.LogException(ex);
            }
            finally
            {
                SetControlDisable(false);
            }
        }
Exemplo n.º 7
0
        protected void ApplyCouponButton_Click(object sender, EventArgs e)
        {
            ValidCouponMessage.Visible = false;
            CouponCode.Text            = StringHelper.StripHtml(CouponCode.Text);
            Coupon            coupon = CouponDataSource.LoadForCouponCode(CouponCode.Text);
            String            couponValidityMessage = String.Empty;
            ICouponCalculator couponCalculator      = AbleContext.Resolve <ICouponCalculator>();

            if (coupon != null)
            {
                if (!couponCalculator.IsCouponAlreadyUsed(_Basket, coupon))
                {
                    if (couponCalculator.IsCouponValid(_Basket, coupon, out couponValidityMessage))
                    {
                        BasketCoupon recentCoupon = new BasketCoupon(_Basket, coupon);
                        _Basket.BasketCoupons.Add(recentCoupon);
                        // APPLY COUPON COMBINE RULE
                        //THE RULE:
                        //If most recently applied coupon is marked "do not combine", then all previously
                        //entered coupons must be removed from _Basket.

                        //If most recently applied coupon is marked "combine", then remove any applied
                        //coupon that is marked "do not combine".  (Logically, in this instance there
                        //could be at most one other coupon of this type...)
                        string previousCouponsRemoved = "";

                        if (recentCoupon.Coupon.AllowCombine)
                        {
                            //IF ALLOW COMBINE, REMOVE ALL PREVIOUS NOCOMBINE COUPONS
                            for (int i = (_Basket.BasketCoupons.Count - 1); i >= 0; i--)
                            {
                                if (!_Basket.BasketCoupons[i].Coupon.AllowCombine)
                                {
                                    if (previousCouponsRemoved.Length > 0)
                                    {
                                        previousCouponsRemoved += "," + _Basket.BasketCoupons[i].Coupon.Name;
                                    }
                                    else
                                    {
                                        previousCouponsRemoved = _Basket.BasketCoupons[i].Coupon.Name;
                                    }

                                    _Basket.BasketCoupons.DeleteAt(i);
                                }
                            }
                        }
                        else
                        {
                            //IF NOT ALLOW COMBINE, REMOVE ALL EXCEPT THIS COUPON
                            for (int i = (_Basket.BasketCoupons.Count - 1); i >= 0; i--)
                            {
                                if (_Basket.BasketCoupons[i] != recentCoupon)
                                {
                                    if (previousCouponsRemoved.Length > 0)
                                    {
                                        previousCouponsRemoved += "," + _Basket.BasketCoupons[i].Coupon.Name;
                                    }
                                    else
                                    {
                                        previousCouponsRemoved = _Basket.BasketCoupons[i].Coupon.Name;
                                    }
                                    _Basket.BasketCoupons.DeleteAt(i);
                                }
                            }
                        }

                        _Basket.Save();
                        IBasketService preCheckoutService = AbleContext.Resolve <IBasketService>();
                        preCheckoutService.Recalculate(_Basket);
                        if (previousCouponsRemoved.Length > 0)
                        {
                            if (recentCoupon.Coupon.AllowCombine)
                            {
                                CombineCouponRemoveMessage.Text    = String.Format(CombineCouponRemoveMessage.Text, recentCoupon.Coupon.Name, previousCouponsRemoved, previousCouponsRemoved);
                                CombineCouponRemoveMessage.Visible = true;
                            }
                            else
                            {
                                NotCombineCouponRemoveMessage.Text    = String.Format(NotCombineCouponRemoveMessage.Text, recentCoupon.Coupon.Name, previousCouponsRemoved);
                                NotCombineCouponRemoveMessage.Visible = true;
                            }
                        }
                        ValidCouponMessage.Visible = true;
                    }
                    else
                    {
                        InvalidCouponMessage.Text = couponValidityMessage + "<br /><br />";
                    }
                }
                else
                {
                    InvalidCouponMessage.Text = "The coupon code you've entered is already in use.<br /><br />";
                }
            }
            else
            {
                InvalidCouponMessage.Text = "The coupon code you've entered is invalid.<br /><br />";
            }
            CouponCode.Text = string.Empty;
            InvalidCouponMessage.Visible = !ValidCouponMessage.Visible;
        }