Exemplo n.º 1
0
        public void TestMerchantCodeResult()
        {
            MerchantCodeResult mcr = new MerchantCodeResult();

            mcr.Amount  = 12.975m;
            mcr.Message = "Hello";
            mcr.Type    = GCheckout.MerchantCalculation.MerchantCodeType.Coupon;
            mcr.Valid   = true;

            Assert.AreEqual(12.98, mcr.Amount);
            Assert.AreEqual("Hello", mcr.Message);
            Assert.AreEqual(GCheckout.MerchantCalculation.MerchantCodeType.Coupon, mcr.Type);
            Assert.IsTrue(mcr.Valid);
        }
Exemplo n.º 2
0
        public override MerchantCodeResult GetMerchantCodeResult(Order ThisOrder, AnonymousAddress Address, string MerchantCode)
        {
            MerchantCodeResult RetVal = new MerchantCodeResult();

            RetVal.Valid = false;

            CommerceBuilder.Orders.Basket basket = ThisOrder.AcBasket;
            if (basket == null)
            {
                basket = AcHelper.GetAcBasket(ThisOrder.ShoppingCart);
                if (basket != null)
                {
                    basket.Package(false);
                }
                ThisOrder.AcBasket = basket;
            }

            if (basket != null)
            {
                Marketing.Coupon coupon = AcHelper.GetAcCoupon(MerchantCode);
                if (coupon != null)
                {
                    RetVal.Type = MerchantCodeType.Coupon;
                    if (!Marketing.CouponCalculator.IsCouponValid(basket, coupon))
                    {
                        RetVal.Message = "Coupon '" + MerchantCode + "' is not valid.";
                        return(RetVal);
                    }

                    if (coupon.AllowCombine)
                    {
                        if (HasNoCombineCoupon(basket))
                        {
                            //Basket already has a no combine coupon.
                            RetVal.Message = "The existing coupon applied to the basket can not combine other coupons.";
                            return(RetVal);
                        }
                    }
                    else
                    {
                        if (basket.BasketCoupons.Count > 0)
                        {
                            RetVal.Message = "Coupon " + MerchantCode + " can not combine with other coupons.";
                            return(RetVal);
                        }
                    }

                    if (!Marketing.CouponCalculator.IsCouponAlreadyUsed(basket, coupon))
                    {
                        //Coupon can be applied now.
                        CommerceBuilder.Orders.BasketCoupon recentCoupon = new CommerceBuilder.Orders.BasketCoupon(basket.BasketId, coupon.CouponId);
                        basket.BasketCoupons.Add(recentCoupon);
                        basket.Save();
                    }

                    CouponCalculator.ProcessBasket(basket, false);
                    //basket.Recalculate();

                    CommerceBuilder.Orders.BasketItem couponItem = GetAppliedCouponItem(basket, coupon);

                    if (couponItem != null)
                    {
                        RetVal.Valid   = true;
                        RetVal.Message = "Coupon '" + MerchantCode + "' has been applied.";
                        RetVal.Amount  = Math.Abs(couponItem.ExtendedPrice.ToDecimal(null));
                    }
                    else
                    {
                        RetVal.Message = "Coupon '" + MerchantCode + "' could not be applied.";
                    }

                    return(RetVal);
                }
                else
                {
                    //check giftcertificate
                    Payments.GiftCertificate giftCert = AcHelper.GetAcGiftCert(MerchantCode);
                    if (giftCert != null)
                    {
                        RetVal.Type   = MerchantCodeType.GiftCertificate;
                        RetVal.Amount = giftCert.Balance;
                        if (DateTime.Compare(giftCert.ExpirationDate, DateTime.UtcNow) < 0)
                        {
                            RetVal.Valid = true;
                        }
                        else
                        {
                            RetVal.Message = "Giftcertificate '" + MerchantCode + "' is expired.";
                        }
                    }
                    else
                    {
                        RetVal.Message = "Sorry, we didn't the recognize code '" + MerchantCode + "'.";
                    }
                }
            }

            if (!RetVal.Valid)
            {
                RetVal.Message = "Sorry, we didn't the recognize code '" + MerchantCode + "'.";
            }
            return(RetVal);
        }