Discounts


List of examples:

Buy X Get Y discounts

Creating a Buy X Get Y discount




// Gets a product for a 2+1 free Buy X Get Y discount
SKUInfo product = SKUInfoProvider.GetSKUs()
                               .WhereStartsWith("SKUName", "New")
                               .FirstObject;

if (product != null)
{
    // Creates a new Buy X Get Y discount object and sets its properties
    MultiBuyDiscountInfo newDiscount = new MultiBuyDiscountInfo()
    {
        MultiBuyDiscountName = "MyDiscount",
        MultiBuyDiscountDisplayName = "My Discount",
        MultiBuyDiscountApplyFurtherDiscounts = true,
        MultiBuyDiscountMinimumBuyCount = 2,
        MultiBuyDiscountApplyToSKUID = product.SKUID,
        MultiBuyDiscountIsFlat = false,
        MultiBuyDiscountValue = 100,
        MultiBuyDiscountAutoAddEnabled = true,
        MultiBuyDiscountEnabled = true,
        MultiBuyDiscountCustomerRestriction = DiscountCustomerEnum.All,
        MultiBuyDiscountSiteID = SiteContext.CurrentSiteID
    };

    // Saves the Buy X Get Y discount to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(newDiscount);

    // Creates a new relationship of a product that needs to be bought and the discount
    MultiBuyDiscountSKUInfo newSkuDiscount = new MultiBuyDiscountSKUInfo();

    // Sets the product-discount relationship properties
    newSkuDiscount.MultiBuyDiscountID = newDiscount.MultiBuyDiscountID;
    newSkuDiscount.SKUID = product.SKUID;

    // Saves the product-discount relationship to the database
    MultiBuyDiscountSKUInfoProvider.SetMultiBuyDiscountSKUInfo(newSkuDiscount);
}


> Back to list of examples

Updating a Buy X Get Y discount




// Gets the first Buy X Get Y discount that contains 'MyDiscount' on the current site
MultiBuyDiscountInfo discount = MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "MyDiscount")
                                                            .FirstObject;

if (discount != null)
{
    // Updates the Buy X Get Y discount properties
    discount.MultiBuyDiscountMinimumBuyCount = 3;

    // Saves the changes to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(discount);
}


> Back to list of examples

Updating multiple Buy X Get Y discounts




// Gets all enabled Buy X Get Y discounts on the current site
var discounts = MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts(SiteContext.CurrentSiteID)
                                            .WhereTrue("MultiBuyDiscountEnabled");

// Loops through the Buy X Get Y discounts
foreach (MultiBuyDiscountInfo discount in discounts)
{
    // Updates the Buy X Get Y discounts properties
    discount.MultiBuyDiscountEnabled = false;

    // Saves the changes to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(discount);
}


> Back to list of examples

Adding coupon codes to a Buy X Get Y discount




// Gets the first Buy X Get Y discount on the current site whose name contains 'MyDiscount'
MultiBuyDiscountInfo discount = MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "MyDiscount")
                                                            .FirstObject;

if (discount != null)
{
    // Enables using of coupon codes for the Buy X Get Y discount
    discount.MultiBuyDiscountUsesCoupons = true;

    // Saves the change to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(discount);

    // Prepares a query that gets all existing coupon codes from the current site
    var existingCouponCodeQuery = ECommerceHelper.GetAllCouponCodesQuery(SiteContext.CurrentSiteID);

    // Creates a cache of coupon codes on the current site
    var existingCodes = existingCouponCodeQuery.GetListResult<string>();

    // Prepares an instance of a class that checks against existing coupon codes to avoid duplicates
    var coudeUniquenessChecker = new CodeUniquenessChecker(existingCodes);

    // Initializes a coupon code generator
    RandomCodeGenerator codeGenerator = new RandomCodeGenerator(coudeUniquenessChecker, "**********");

    // Loops to generate 300 coupon codes
    for (int i = 0; i < 300; i++)
    {
        // Generates a new unique code text
        string code = codeGenerator.GenerateCode();

        // Creates a coupon code and adds it to the discount
        MultiBuyCouponCodeInfoProvider.CreateCoupon(discount, code, 1);
    }
}


> Back to list of examples

Deleting a Buy X Get Y discount




// Gets the first Buy X Get Y discount that contains 'MyDiscount' on the current site
MultiBuyDiscountInfo discount = MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "MyDiscount")
                                                            .FirstObject;

if (discount != null)
{
    // Deletes the Buy X Get Y discount
    MultiBuyDiscountInfoProvider.DeleteMultiBuyDiscountInfo(discount);
}


> Back to list of examples

Catalog discounts

Creating a catalog discount




// Creates a new catalog discount object and sets its properties
DiscountInfo newDiscount = new DiscountInfo()
{
    DiscountName = "MyDiscount",
    DiscountDisplayName = "My Discount",
    DiscountIsFlat = false,
    DiscountValue = 20,
    DiscountApplyTo = DiscountApplicationEnum.Products,
    DiscountProductCondition = @"{% SKU.SKUName.Contains(""new"") %}",
    DiscountEnabled = true,
    DiscountOrder = 1,
    DiscountApplyFurtherDiscounts = true,
    DiscountUsesCoupons = false,
    DiscountSiteID = SiteContext.CurrentSiteID
};

// Saves the catalog discount to the database
DiscountInfoProvider.SetDiscountInfo(newDiscount);


> Back to list of examples

Updating a catalog discount




// Gets the first catalog discount that contains 'MyDiscount' on the current site
DiscountInfo discount = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID)
                                            .WhereContains("DiscountName", "MyDiscount")
                                            .WhereContains("DiscountApplyTo", DiscountApplicationEnum.Products.ToString())
                                            .FirstObject;

if (discount != null)
{
    // Updates the catalog discount properties
    discount.DiscountEnabled = false;

    // Saves the changes to the database
    DiscountInfoProvider.SetDiscountInfo(discount);
}


> Back to list of examples

Updating multiple catalog discounts




// Gets all enabled catalog discounts on the current site
var discounts = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID, true)
                                    .WhereContains("DiscountApplyTo", DiscountApplicationEnum.Products.ToString());

// Loops through the catalog discounts
foreach (DiscountInfo discount in discounts)
{
    // Updates the catalog discount properties
    discount.DiscountEnabled = false;

    // Saves the changes to the database
    DiscountInfoProvider.SetDiscountInfo(discount);
}


> Back to list of examples

Deleting a catalog discount




// Gets the first catalog discount that contains 'MyDiscount' on the current site
DiscountInfo discount = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID)
                                            .WhereContains("DiscountName", "MyDiscount")
                                            .WhereContains("DiscountApplyTo", DiscountApplicationEnum.Products.ToString())
                                            .FirstObject;

if (discount != null)
{
    // Deletes the catalog discount
    DiscountInfoProvider.DeleteDiscountInfo(discount);
}


> Back to list of examples

Order discounts

Creating an order discount




// Creates a new order discount object and sets its properties
DiscountInfo newDiscount = new DiscountInfo()
{
    DiscountDisplayName = "New order discount",
    DiscountName = "NewOrderDiscount",
    DiscountApplyTo = DiscountApplicationEnum.Order,
    DiscountIsFlat = false,
    DiscountSiteID = SiteContext.CurrentSiteID,

    DiscountEnabled = true,
    DiscountValue = 10,
    DiscountCartCondition = @"{% Currency.CurrencyName==""Dollar"" %}",
    DiscountOrder = 1,
    DiscountApplyFurtherDiscounts = true,
    DiscountUsesCoupons = false,
};

// Saves the order discount to the database
DiscountInfoProvider.SetDiscountInfo(newDiscount);


> Back to list of examples

Updating an order discount




// Gets the first order discount on the current site whose name contains 'NewOrderDiscount'
DiscountInfo discount = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID)
                                            .WhereContains("DiscountName", "NewOrderDiscount")
                                            .WhereEquals("DiscountApplyTo", DiscountApplicationEnum.Order.ToString())
                                            .TopN(1)
                                            .FirstObject;

if (discount != null)
{
    // Updates the order discount properties
    discount.DiscountEnabled = false;

    // Saves the changes to the database
    DiscountInfoProvider.SetDiscountInfo(discount);
}


> Back to list of examples

Updating multiple order discounts




// Gets all enabled order discounts on the current site
var discounts = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID, true)
                                    .WhereEquals("DiscountApplyTo", DiscountApplicationEnum.Order.ToString())
                                    .WhereTrue("DiscountEnabled");

// Loops through the order discounts
foreach (DiscountInfo discount in discounts)
{
    // Updates the order discount properties
    discount.DiscountItemMinOrderAmount = 100;

    // Saves the changes to the database
    DiscountInfoProvider.SetDiscountInfo(discount);
}


> Back to list of examples

Deleting an order discount




// Gets the first order discount on the current site whose name contains 'NewOrderDiscount'
DiscountInfo discount = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID)
                                            .WhereContains("DiscountName", "NewOrderDiscount")
                                            .WhereEquals("DiscountApplyTo", DiscountApplicationEnum.Order.ToString())
                                            .TopN(1)
                                            .FirstObject;

if (discount != null)
{
    // Deletes the order discount
    DiscountInfoProvider.DeleteDiscountInfo(discount);
}


> Back to list of examples

Free shipping offers

Creating a free shipping offer




// Creates a new free shipping offer object and sets its properties
DiscountInfo newDiscount = new DiscountInfo()
{
    DiscountName = "MyShippingOffer",
    DiscountDisplayName = "My Shipping Offer",
    DiscountIsFlat = false,
    DiscountValue = 20,
    DiscountApplyTo = DiscountApplicationEnum.Shipping,
    DiscountOrderAmount = 100,
    DiscountEnabled = true,
    DiscountOrder = 1,
    DiscountApplyFurtherDiscounts = true,
    DiscountUsesCoupons = false,
    DiscountSiteID = SiteContext.CurrentSiteID
};

// Saves the free shipping offer to the database
DiscountInfoProvider.SetDiscountInfo(newDiscount);


> Back to list of examples

Updating a free shipping offer




// Gets the first free shipping offer that contains 'MyShippingOffer' on the current site
DiscountInfo discount = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID)
                                            .WhereContains("DiscountName", "MyShippingOffer")
                                            .WhereContains("DiscountApplyTo", DiscountApplicationEnum.Shipping.ToString())
                                            .FirstObject;

if (discount != null)
{
    // Updates the free shipping offer properties
    discount.DiscountEnabled = false;

    // Saves the changes to the database
    DiscountInfoProvider.SetDiscountInfo(discount);
}


> Back to list of examples

Updating multiple free shipping offer




// Gets all enabled free shipping offers on the current site
var discounts = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID, true)
                                    .WhereContains("DiscountApplyTo", DiscountApplicationEnum.Shipping.ToString());

// Loops through the free shipping offers
foreach (DiscountInfo discount in discounts)
{
    // Updates the free shipping offer properties
    discount.DiscountEnabled = false;

    // Saves the changes to the database
    DiscountInfoProvider.SetDiscountInfo(discount);
}


> Back to list of examples

Deleting a free shipping offer




// Gets the first free shipping offer that contains 'MyShippingOffer' on the current site
DiscountInfo discount = DiscountInfoProvider.GetDiscounts(SiteContext.CurrentSiteID)
                                            .WhereContains("DiscountName", "MyShippingOffer")
                                            .WhereContains("DiscountApplyTo", DiscountApplicationEnum.Shipping.ToString())
                                            .FirstObject;

if (discount != null)
{
    // Deletes the free shipping offer
    DiscountInfoProvider.DeleteDiscountInfo(discount);
}


> Back to list of examples

Volume discounts

Creating a volume discount




// Gets a product for the volume discount
SKUInfo product = SKUInfoProvider.GetSKUs()
                                 .WhereStartsWith("SKUName", "New")
                                 .FirstObject;

if (product != null)
{
    // Creates a new volume discount object
    VolumeDiscountInfo newDiscount = new VolumeDiscountInfo();

    // Sets the volume discount properties
    newDiscount.VolumeDiscountMinCount = 100;
    newDiscount.VolumeDiscountValue = 20;
    newDiscount.VolumeDiscountSKUID = product.SKUID;
    newDiscount.VolumeDiscountIsFlatValue = false;

    // Saves the volume discount to the database
    VolumeDiscountInfoProvider.SetVolumeDiscountInfo(newDiscount);
}


> Back to list of examples

Updating a volume discount




// Gets a product
SKUInfo product = SKUInfoProvider.GetSKUs()
                                .WhereEquals("SKUName", "NewProduct")
                                .FirstObject;

if (product != null)
{
    // Gets the first volume discount defined for the product
    VolumeDiscountInfo discount = VolumeDiscountInfoProvider.GetVolumeDiscounts(product.SKUID).FirstObject;
    if (discount != null)
    {
        // Updates the volume discount properties
        discount.VolumeDiscountMinCount = 800;

        // Saves the changes to the database
        VolumeDiscountInfoProvider.SetVolumeDiscountInfo(discount);
    }
}


> Back to list of examples

Updating multiple volume discounts




// Gets a product
SKUInfo product = SKUInfoProvider.GetSKUs()
                               .WhereStartsWith("SKUName", "New")
                               .FirstObject;

if (product != null)
{
    // Gets the product's volume discounts
    var discounts = VolumeDiscountInfoProvider.GetVolumeDiscounts(product.SKUID);

    // Loops through the volume discounts
    foreach (VolumeDiscountInfo discount in discounts)
    {
        // Updates the volume discount properties
        discount.VolumeDiscountMinCount = 500;

        // Saves the changes to the database
        VolumeDiscountInfoProvider.SetVolumeDiscountInfo(discount);
    }
}


> Back to list of examples

Deleting a volume discount




// Gets a product
SKUInfo product = SKUInfoProvider.GetSKUs()
                               .WhereStartsWith("SKUName", "New")
                               .FirstObject;

if (product != null)
{
    // Gets the first volume discount defined for the product
    VolumeDiscountInfo discount = VolumeDiscountInfoProvider.GetVolumeDiscounts(product.SKUID).FirstObject;
    if (discount != null)
    {
        // Deletes the volume discount
        VolumeDiscountInfoProvider.DeleteVolumeDiscountInfo(discount);
    }
}


> Back to list of examples

Product coupons

Creating a product coupon




// Gets a product for the product coupon
SKUInfo product = SKUInfoProvider.GetSKUs()
                               .WhereStartsWith("SKUName", "New")
                               .FirstObject;

if (product != null)
{
    // Creates a new Product coupon object and sets its properties
    MultiBuyDiscountInfo newProductCoupon = new MultiBuyDiscountInfo()
    {
        MultiBuyDiscountName = "NewProductCoupon",
        MultiBuyDiscountDisplayName = "New product coupon",
        MultiBuyDiscountEnabled = true,
        MultiBuyDiscountSiteID = SiteContext.CurrentSiteID,

        // Configures the object as a Product coupon (not a Buy X Get Y discount)
        MultiBuyDiscountIsProductCoupon = true,
        MultiBuyDiscountUsesCoupons = true,
        MultiBuyDiscountApplyFurtherDiscounts = true,
        MultiBuyDiscountMinimumBuyCount = 1,
        MultiBuyDiscountAutoAddEnabled = false,

        // Sets the coupon's discount value to a fixed amount of 10
        MultiBuyDiscountIsFlat = true,
        MultiBuyDiscountValue = 10,

        // Makes the coupon available for all store visitors
        MultiBuyDiscountCustomerRestriction = DiscountCustomerEnum.All,
    };

    // Saves the product coupon to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(newProductCoupon);

    // Configures the coupon to apply to the retrieved product
    MultiBuyDiscountSKUInfo couponSkuBinding = new MultiBuyDiscountSKUInfo();
    couponSkuBinding.MultiBuyDiscountID = newProductCoupon.MultiBuyDiscountID;
    couponSkuBinding.SKUID = product.SKUID;

    // Saves the coupon-product relationship to the database
    MultiBuyDiscountSKUInfoProvider.SetMultiBuyDiscountSKUInfo(couponSkuBinding);
}


> Back to list of examples

Adding coupon codes to a product coupon




// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

if (productCoupon != null)
{
    // Prepares a query that gets all existing coupon codes from the current site
    var existingCouponCodeQuery = ECommerceHelper.GetAllCouponCodesQuery(SiteContext.CurrentSiteID);

    // Creates a cache of coupon codes on the current site
    var existingCodes = existingCouponCodeQuery.GetListResult<string>();

    // Prepares an instance of a class that checks against existing coupon codes to avoid duplicates
    var coudeUniquenessChecker = new CodeUniquenessChecker(existingCodes);

    // Initializes a coupon code generator
    RandomCodeGenerator codeGenerator = new RandomCodeGenerator(coudeUniquenessChecker, "**********");

    // Loops to generate 100 coupon codes
    for (int i = 0; i < 100; i++)
    {
        // Generates a new unique code text
        string code = codeGenerator.GenerateCode();

        // Creates a coupon code and adds it to the product coupon
        MultiBuyCouponCodeInfoProvider.CreateCoupon(productCoupon, code, 1);
    }
}


> Back to list of examples

Updating a product coupon




// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")                                                                          
                                                            .FirstObject;

if (productCoupon != null)
{
    // Updates the product coupon properties
    productCoupon.MultiBuyDiscountValue = 20;

    // Saves the changes to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(productCoupon);
}


> Back to list of examples

Updating multiple product coupons




// Gets all enabled product coupons on the current site
var productCoupons = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                            .WhereTrue("MultiBuyDiscountEnabled");

// Loops through the product coupons
foreach (MultiBuyDiscountInfo coupon in productCoupons)
{
    // Updates the product coupon properties (disables the coupon)
    coupon.MultiBuyDiscountEnabled = false;

    // Saves the changes to the database
    MultiBuyDiscountInfoProvider.SetMultiBuyDiscountInfo(coupon);
}


> Back to list of examples

Removing products from a product coupon




// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

// Gets all coupon-product relationships for the product coupon
var couponSkuBindings = MultiBuyDiscountSKUInfoProvider.GetMultiBuyDiscountSKUs()
                                                .WhereEquals("MultiBuyDiscountID", productCoupon.MultiBuyDiscountID);

// Loops through the retrieved coupon-product relationships
foreach (MultiBuyDiscountSKUInfo couponSkuBinding in couponSkuBindings)
{
    // Removes the product from the product coupon
    MultiBuyDiscountSKUInfoProvider.DeleteMultiBuyDiscountSKUInfo(couponSkuBinding);
}


> Back to list of examples

Applying a product coupon to product sections




// NOTE: Remove any assigned products, departments, brands or collections from the product coupon before assigning sections

// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

// Gets the starting path of the current site's product section
string productStartingPath = ECommerceSettings.ProductsStartingPath(SiteContext.CurrentSiteID);

// Gets a list of all page type names that represent product sections
var productSectionTypes = CMS.DataEngine.DataClassInfoProvider.GetClasses()
                                                                    .WhereTrue("ClassIsProductSection")
                                                                    .Column("ClassName")
                                                                    .GetListResult<string>();

// Prepares an array of the product section page type names
// Requires a 'using System.Linq;' statement                
string[] sectionTypeNames = productSectionTypes.ToArray();

// Creates an instance of the Tree provider
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

// Gets all product section pages on the first level under the product section root
var productSections = tree.SelectNodes()
                            .Types(sectionTypeNames)
                            .OnCurrentSite()
                            .Path(productStartingPath, PathTypeEnum.Children)
                            .NestingLevel(1);

foreach (TreeNode section in productSections)
{
    // Creates a relationship between the product coupon and product section
    // Tip: To add excluded sections to the product coupon, set the method's 'included' parameter to false
    MultiBuyDiscountTreeInfoProvider.AddMultiBuyDiscountToTree(productCoupon.MultiBuyDiscountID, section.NodeID, included: true);
}

// Clears the product coupon's cache record
CMS.Helpers.CacheHelper.TouchKey(MultiBuyDiscountInfo.OBJECT_TYPE_PRODUCT_COUPON + "|byid|" + productCoupon.MultiBuyDiscountID);


> Back to list of examples

Applying a product coupon to departments




// NOTE: Remove any assigned products, sections, brands or collections from the product coupon before assigning departments

// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

// Gets all departments on the current site
var departments = DepartmentInfoProvider.GetDepartments(SiteContext.CurrentSiteID);

// Loops through the departments
foreach (DepartmentInfo department in departments)
{
    // Creates a relationship between the product coupon and department
    MultiBuyDiscountDepartmentInfoProvider.AddMultiBuyDiscountToDepartment(productCoupon.MultiBuyDiscountID, department.DepartmentID);
}

// Clears the product coupon's cache record
CMS.Helpers.CacheHelper.TouchKey(MultiBuyDiscountInfo.OBJECT_TYPE_PRODUCT_COUPON + "|byid|" + productCoupon.MultiBuyDiscountID);


> Back to list of examples

Applying a product coupon to brands




// NOTE: Remove any assigned products, sections, departments or collections from the product coupon before assigning brands

// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

// Gets all brands on the current site
var brands = BrandInfoProvider.GetBrands().OnSite(SiteContext.CurrentSiteID);

// Loops through the brands
foreach (BrandInfo brand in brands)
{
    // Creates a relationship between the product coupon and brand
    // Tip: To add excluded brands to the product coupon, set the method's 'included' parameter to false
    MultiBuyDiscountBrandInfoProvider.AddMultiBuyDiscountToBrand(productCoupon.MultiBuyDiscountID, brand.BrandID, included: true);
}

// Clears the product coupon's cache record
CMS.Helpers.CacheHelper.TouchKey(MultiBuyDiscountInfo.OBJECT_TYPE_PRODUCT_COUPON + "|byid|" + productCoupon.MultiBuyDiscountID);


> Back to list of examples

Applying a product coupon to collections




// NOTE: Remove any assigned products, sections, departments or brands from the product coupon before assigning collections

// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

// Gets all collections on the current site
var collections = CollectionInfoProvider.GetCollections().OnSite(SiteContext.CurrentSiteID);

// Loops through the collections
foreach (CollectionInfo collection in collections)
{
    // Creates a relationship between the product coupon and collection
    // Tip: To add excluded collections to the product coupon, set the method's 'included' parameter to false
    MultiBuyDiscountCollectionInfoProvider.AddMultiBuyDiscountToCollection(productCoupon.MultiBuyDiscountID, collection.CollectionID, included: true);
}

// Clears the product coupon's cache record
CMS.Helpers.CacheHelper.TouchKey(MultiBuyDiscountInfo.OBJECT_TYPE_PRODUCT_COUPON + "|byid|" + productCoupon.MultiBuyDiscountID);


> Back to list of examples

Deleting a product coupon




// Gets the first product coupon on the current site whose name contains 'NewProductCoupon'
MultiBuyDiscountInfo productCoupon = MultiBuyDiscountInfoProvider.GetProductCouponDiscounts(SiteContext.CurrentSiteID)
                                                            .WhereContains("MultiBuyDiscountName", "NewProductCoupon")
                                                            .FirstObject;

if (productCoupon != null)
{
    // Deletes the product coupon
    MultiBuyDiscountInfoProvider.DeleteMultiBuyDiscountInfo(productCoupon);
}


> Back to list of examples