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); } }
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; }
/// <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); } }
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; }