Пример #1
0
        public void GetCoupon_UnitOfWorkReturnsCoupon_UutReturnsCorrectType()
        {
            var key = new object[] { defaultCoupon.BarName, defaultCoupon.CouponID };

            mockUnitOfWork.CouponRepository.Get(key)
            .Returns(defaultCoupon);

            var result = uut.GetCoupon(defaultCouponDto.CouponID,
                                       defaultCouponDto.BarName);

            Assert.That(result, Is.TypeOf <OkObjectResult>());
        }
Пример #2
0
        private void BindCoupon()
        {
            if (CouponID != Null.NullInteger)
            {
                var objCouponController = new CouponController();
                var objCoupon           = objCouponController.GetCoupon(CouponID, ModuleId);

                if (objCoupon == null)
                {
                    Response.Redirect(EditUrl("EditCoupons"));
                }
                else
                {
                    txtCode.Text = objCoupon.Code;
                    if (lstDiscountType.Items.FindByValue(objCoupon.DiscountType.ToString()) != null)
                    {
                        lstDiscountType.SelectedValue = objCoupon.DiscountType.ToString();
                    }
                    txtAmount.Text            = objCoupon.Amount.ToString();
                    txtQuantity.Text          = objCoupon.Quantity.ToString();
                    txtStartDate.SelectedDate = objCoupon.StartDate;
                    txtEndDate.SelectedDate   = objCoupon.EndDate;
                    chkIsActive.Checked       = objCoupon.IsActive;

                    // Allow users to delete coupon
                    cmdDelete.Visible = true;
                }
            }
        }
Пример #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Get Coupon ID
            _couponId = (int)DataSource;

            // Handle CouponID=0 as Null.NullInteger
            if (_couponId == 0)
            {
                _couponId = Null.NullInteger;
            }

            if (Page.IsPostBack == false)
            {
                cmdDelete.Attributes.Add("onClick", "javascript:return confirm('" + Localization.GetString("DeleteItem") + "');");

                if (_couponId != Null.NullInteger)
                {
                    // Get the selected coupon to edit
                    CouponInfo coupon = _controller.GetCoupon(PortalId, _couponId);
                    if (coupon != null)
                    {
                        txtCode.Text              = coupon.Code;
                        txtDescription.Text       = coupon.Description;
                        rblRuleType.SelectedIndex = (int)coupon.RuleType;
                        decimal ruleAmount = coupon.RuleAmount;
                        txtRuleAmount.Text            = Null.IsNull(ruleAmount) ? "0" : ruleAmount.ToString("0.00");
                        rblDiscountType.SelectedIndex = (int)coupon.DiscountType;
                        int discountPercentage = coupon.DiscountPercentage;
                        txtDiscountPercentage.Text = Null.IsNull(discountPercentage) ? "0" : discountPercentage.ToString("0");
                        decimal discountAmount = coupon.DiscountAmount;
                        txtDiscountAmount.Text          = Null.IsNull(discountAmount) ? "0" : discountAmount.ToString("0.00");
                        rblApplyTo.SelectedIndex        = (int)coupon.ApplyTo;
                        hfItemID.Value                  = coupon.ItemID.ToString();
                        chkIncludeSubCategories.Checked = coupon.IncludeSubCategories;
                        txtStartDate.Text               = coupon.StartDate.ToShortDateString();
                        rblValidity.SelectedIndex       = (int)coupon.Validity;
                        txtEndDate.Text                 = coupon.EndDate.ToShortDateString();
                        cmdDelete.Visible               = true;
                    }
                }
                else
                {
                    // Initialize default values
                    txtRuleAmount.Text         = "0";
                    txtDiscountPercentage.Text = "0";
                    txtDiscountAmount.Text     = "0";
                    hfItemID.Value             = "-1";
                    txtStartDate.Text          = DateTime.Now.ToShortDateString();
                    txtEndDate.Text            = "";
                }

                // Update UI elements
                trRuleAmount.Visible = rblRuleType.SelectedIndex != 0;
                DisplayDiscountTypeRows();
                DisplaySelectedItem((CouponApplyTo)rblApplyTo.SelectedIndex, Int32.Parse(hfItemID.Value));
                DisplayValidityRows();
            }
            MakeCalendars();
        }
Пример #4
0
        protected void OnDeleteClick(object sender, EventArgs e)
        {
            try
            {
                if (CouponID != Null.NullInteger)
                {
                    // Update Coupon
                    var objCouponController = new CouponController();
                    var objCoupon           = objCouponController.GetCoupon(CouponID, ModuleId);

                    if (objCoupon != null)
                    {
                        objCouponController.DeleteCoupon(objCoupon);
                    }
                }

                Response.Redirect(EditUrl("EditCoupons"));
            }
            catch (Exception ex)
            {
                Exceptions.ProcessModuleLoadException(this, ex);
            }
        }
Пример #5
0
        protected void OnSaveClick(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid)
                {
                    if (CouponID != Null.NullInteger)
                    {
                        // Update Coupon
                        var objCouponController = new CouponController();
                        var objCoupon           = objCouponController.GetCoupon(CouponID, ModuleId);

                        if (objCoupon != null)
                        {
                            objCoupon.ModuleID     = ModuleId;
                            objCoupon.Code         = txtCode.Text;
                            objCoupon.DiscountType = (DiscountType)Enum.Parse(typeof(DiscountType), lstDiscountType.SelectedValue);

                            Int32 amount;
                            if (!Int32.TryParse(txtAmount.Text, out amount))
                            {
                                amount = 0;
                            }
                            if (amount < 0)
                            {
                                amount = 0;
                            }
                            objCoupon.Amount = amount;

                            Int32 quantity;
                            if (Int32.TryParse(txtQuantity.Text, out quantity))
                            {
                                if (quantity > 0)
                                {
                                    objCoupon.Quantity = quantity;
                                }
                            }
                            objCoupon.Quantity = null;

                            if (txtStartDate.SelectedDate.HasValue)
                            {
                                objCoupon.StartDate = txtStartDate.SelectedDate.Value;
                            }

                            if (txtEndDate.SelectedDate.HasValue)
                            {
                                objCoupon.EndDate = txtEndDate.SelectedDate.Value;
                            }

                            objCoupon.IsActive = chkIsActive.Checked;

                            objCouponController.UpdateCoupon(objCoupon);
                        }
                    }
                    else
                    {
                        // Add Coupon
                        var objCoupon = new Coupon();

                        objCoupon.ModuleID     = ModuleId;
                        objCoupon.Code         = txtCode.Text;
                        objCoupon.DiscountType = (DiscountType)Enum.Parse(typeof(DiscountType), lstDiscountType.SelectedValue);

                        Int32 amount;
                        if (!Int32.TryParse(txtAmount.Text, out amount))
                        {
                            amount = 0;
                        }
                        if (amount < 0)
                        {
                            amount = 0;
                        }
                        objCoupon.Amount = amount;

                        Int32 quantity;
                        if (Int32.TryParse(txtQuantity.Text, out quantity))
                        {
                            if (quantity > 0)
                            {
                                objCoupon.Quantity = quantity;
                            }
                        }

                        if (txtStartDate.SelectedDate.HasValue)
                        {
                            objCoupon.StartDate = txtStartDate.SelectedDate.Value;
                        }

                        if (txtEndDate.SelectedDate.HasValue)
                        {
                            objCoupon.EndDate = txtEndDate.SelectedDate.Value;
                        }

                        objCoupon.IsActive = chkIsActive.Checked;

                        var objCouponController = new CouponController();
                        objCouponController.AddCoupon(objCoupon);
                    }

                    Response.Redirect(EditUrl("EditCoupons"));
                }
            }
            catch (Exception ex)
            {
                Exceptions.ProcessModuleLoadException(this, ex);
            }
        }
Пример #6
0
        /// <summary>
        /// Calculate the tax and shipping cost for the order.
        /// </summary>
        private void CalculateTaxAndShipping(CouponInfo coupon)
        {
            if (Order != null)
            {
                List <ItemInfo> cartItems = CurrentCart.GetItems(PortalId, StoreSettings.SecureCookie);
                IShippingInfo   shippingInfo;

                // Calculate Shipping if enabled
                IShippingProvider shippingProvider = StoreController.GetShippingProvider(StoreSettings.ShippingName);
                if (StoreSettings.NoDelivery || Shipping == ShippingMode.None || ApplyFreeShipping(cartItems, ShippingAddress.CountryCode))
                {
                    shippingInfo = shippingProvider.GetFreeShipping();
                }
                else
                {
                    shippingInfo = shippingProvider.CalculateShippingFee(PortalId, BillingAddress, ShippingAddress, cartItems);
                }

                if (shippingInfo == null)
                {
                    plhCheckout.Visible = false;
                    lblError.Text       = String.Format(Localization.GetString("ErrorShippingRates", LocalResourceFile), StoreSettings.DefaultEmailAddress);
                    plhError.Visible    = true;
                    return;
                }

                plhCheckout.Visible = true;
                plhError.Visible    = false;

                // Check for coupon validity
                bool couponIsValid = false;
                if (StoreSettings.AllowCoupons)
                {
                    int couponID = Order.CouponID;
                    if (couponID != Null.NullInteger)
                    {
                        if (coupon == null || coupon.CouponID != couponID)
                        {
                            CouponController couponController = new CouponController();
                            coupon = couponController.GetCoupon(PortalId, couponID);
                        }
                        couponIsValid = ValidateCoupon(coupon, Order);
                    }
                    divStoreCheckoutCoupon.Visible = true;
                }
                else
                {
                    divStoreCheckoutCoupon.Visible = false;
                }

                // Apply Discount if coupon is valid
                if (couponIsValid)
                {
                    decimal discountTotal = 0;
                    switch (coupon.DiscountType)
                    {
                    case CouponDiscount.Percentage:
                        decimal discountPercentage = Convert.ToDecimal(coupon.DiscountPercentage) / 100;
                        foreach (ItemInfo cartItem in cartItems)
                        {
                            switch (coupon.ApplyTo)
                            {
                            case CouponApplyTo.Order:
                                cartItem.Discount = cartItem.SubTotal * discountPercentage;
                                discountTotal    += cartItem.Discount;
                                break;

                            case CouponApplyTo.Category:
                                if (ValidateCategoryCoupon(coupon, cartItem.CategoryID))
                                {
                                    cartItem.Discount = cartItem.SubTotal * discountPercentage;
                                    discountTotal    += cartItem.Discount;
                                }
                                break;

                            case CouponApplyTo.Product:
                                if (cartItem.ProductID == coupon.ItemID)
                                {
                                    cartItem.Discount = cartItem.SubTotal * discountPercentage;
                                    discountTotal    += cartItem.Discount;
                                }
                                break;
                            }
                        }
                        break;

                    case CouponDiscount.FixedAmount:
                        int itemsCount = cartItems.Count;
                        foreach (ItemInfo cartItem in cartItems)
                        {
                            switch (coupon.ApplyTo)
                            {
                            case CouponApplyTo.Order:
                                cartItem.Discount = coupon.DiscountAmount / itemsCount;
                                discountTotal     = coupon.DiscountAmount;
                                break;

                            case CouponApplyTo.Category:
                                if (ValidateCategoryCoupon(coupon, cartItem.CategoryID))
                                {
                                    cartItem.Discount = coupon.DiscountAmount * cartItem.Quantity;
                                    discountTotal    += cartItem.Discount;
                                }
                                break;

                            case CouponApplyTo.Product:
                                if (cartItem.ProductID == coupon.ItemID)
                                {
                                    cartItem.Discount = coupon.DiscountAmount * cartItem.Quantity;
                                    discountTotal    += cartItem.Discount;
                                }
                                break;
                            }
                        }
                        break;

                    case CouponDiscount.FreeShipping:
                        discountTotal = shippingInfo.Cost;
                        // If Free Shipping exclude amount before tax computation!
                        shippingInfo.Cost = 0;
                        break;
                    }
                    Order.Discount     = -discountTotal;
                    lblDiscount.Text   = Order.Discount.ToString("C", _localFormat);
                    tbDiscount.Visible = Order.Discount > 0;
                }
                else
                {
                    // Reset order discount
                    Order.CouponID = Null.NullInteger;
                    Order.Discount = Null.NullDecimal;
                    foreach (ItemInfo cartItem in cartItems)
                    {
                        cartItem.Discount = 0;
                    }
                    tbDiscount.Visible = false;
                }

                // Add Surcharges if any
                decimal fixedSurcharge   = PaymentControl.SurchargeFixed;
                decimal percentSurcharge = PaymentControl.SurchargePercent;

                if (fixedSurcharge != 0 || percentSurcharge != 0)
                {
                    Order.ShippingCost = shippingInfo.Cost + fixedSurcharge + ((Order.OrderNetTotal + shippingInfo.Cost + fixedSurcharge) * (percentSurcharge / 100));
                    shippingInfo.Cost  = Order.ShippingCost;
                }
                else
                {
                    Order.ShippingCost = shippingInfo.Cost;
                }

                plhShippingCheckout.Visible = Order.ShippingCost > 0;

                // Calculate Tax Amount
                ITaxProvider taxProvider = StoreController.GetTaxProvider(StoreSettings.TaxName);
                ITaxInfo     taxInfo     = taxProvider.CalculateSalesTax(PortalId, cartItems, shippingInfo, BillingAddress);
                if (taxInfo.ShowTax && taxInfo.SalesTax > 0)
                {
                    plhTaxCheckout.Visible = true;
                    Order.TaxTotal         = taxInfo.SalesTax;
                    Order.ShippingTax      = taxInfo.ShippingTax;
                }
                else
                {
                    plhTaxCheckout.Visible = false;
                    Order.TaxTotal         = 0;
                    Order.ShippingTax      = 0;
                }
            }
        }