Override VolumeBased Discounts
Learning Objectives
After completing this unit, you’ll be able to:
 Configure discount schedules to use amountbased discounts.
 Control when sales reps can change discount schedule details.
 Describe the difference between range and slab types of discount schedules.
 Describe how compound discounts can discount based on quantity as an alternative to discount schedules.
Percent vs Amount Discount Schedules
Discount schedules are most often configured to reduce a price by a percentage, making them reusable on many products regardless of the product’s price. In other words, a 10% discount works just as well on a $1.00 key card as it does on a $2,000.00 copy machine. However, some businesses need to discount by a defined amount instead of a percentage. For example, AW Computing can discount copy paper by $5.00 per unit for quantities greater than 50. In this scenario, the discount is always $5.00 even if the price of paper changes from $85.00 to $87.00.
To use a fixed amount instead of a percentage for a discount schedule, set the Discount Unit field to Amount.
When the discount unit is set to amount, the discount tier editor shows a Discount ($) field instead of a Discount (%) field.
Discount Schedule Override Behavior
Earlier in this module, you created a discount schedule named Bulk Keys that gives 20% off when over 200 key cards are purchased. Automatically applying the 20% discount is convenient for sales reps, but they don’t have any control over the discount schedule values. Thankfully, it’s easy to give sales reps control over the discount tiers while in the Quote Line Editor.
In the screenshot above we can see how a sales rep can create a completely new, third tier for the Bulk Keys discount schedule.
The field named Override Behavior, found on the Discount Schedule record, controls if sales reps can modify discount tiers. It has has three choices.
 None: This makes all values fixed and noneditable by the sales rep.
 All: This lets the sales rep change the upper and lower bounds, as well as the percent or amount for each discount tier. Sales reps have complete control over the discount schedule.
 Current Tier Only: This lets the sales rep change the percent or amount for the Discount Tier based on the current quantity. Although the lower and upper bounds are editable in the user interface, they don’t affect the calculation.
Since editing discount schedules gives sales reps a lot of control over pricing without touching the Additional Discount field, it’s a good idea to create a validation rule or approval process triggered whenever a discount schedule is overridden. Sales reps should also be trained how to add discount tiers properly. If the lower bound of a tier is not equal to the upper bound of the previous tier, an error message appears.
Range vs Slab Discount Schedules
When you created the Bulk Keys discount schedule (as shown in the table below) you found that adding 250 key cards to the quote resulted in a price of $0.80 per card, for $200.00 total. In other words, the top tier 20% discount applied to all 250 cards. That’s because the Discount Schedule Type field is set to Range, the default and most common choice.
Tier Name  Lower Bound  Upper Bound  Percent 

First Level 
100 
200 
10% 
Second Level 
200 

20% 
Setting the Discount Schedule Type to “Slab” results in a very different calculation for the price of the 250 key cards. Instead of applying a single discount percent to all units, the 250 cards are divided into three portions, or slabs: cards 199, cards 100199, and cards 200250. The first slab has no tier defined, so gets no discount. The second slab is for the 100199 cards that fall in the First Level tier, so they get 10% off. The 200250 cards are in the Second Level tier, so they get 20% off.
The overall price of the key cards when using Slab is calculated like so:
(99 * $1.00) + (100 * $0.90) + (51 * $0.80)
Doing the math gives us $229.80, instead of the $200.00 we got by using the Range type.
Slab discount schedules are perfect for when you need different priceper units for each tier. For example, imagine a “first two free, all others full price” scenario. To set up this discount schedule, you create one tier that’s discounted at 100%, as seen below.
When using Slab with this discount tier, if the customer buys five units, the first two are free and the last three aren’t discounted. If we used the Range type, then no units are discounted because there is no tier for five units. This is just one example of many clever ways to leverage Slab discount schedules.
Compound Discount As an Alternative to Discount Schedules
Discount schedules are helpful because you can precisely define quantities that deserve specific discount amounts. However, there’s another way to give volumebased discounts without having to define a discount schedule—a compound discount. This is a way of having a different discount percent for every possible quantity.
Compound discounts are calculated using a mathematical function where we define one parameter. When the function is graphed we see something like this:
Let’s try to make sense out of the graph: The xaxis is quantity and the yaxis is the price multiplier. If we look at 1 unit, the multiplier is exactly 1. In other words, the unit is full price. If the quantity is 2, the multiplier is about 0.87, or roughly a 13% discount per unit. Move over to a quantity of 6 and the multiplier is about 0.7, making for a 30% discount per unit. Every quantity has its own multiplier (which never reaches zero, even at huge quantities).
If you’re curious, the exact function is 1/(Quantity^(Compound Discount/100))
. Salesforce CPQ plugs in the value from the Compound Discount field on the product, does the math, then automatically adjusts the regular price. Different values for compound discount result in different pricing curves; the one in the graph above is for 20%.
Good job making it through the mathheavy portion of this module! Now you know just how powerful volumebased discounts can be. In the next unit, things get easier as we see how sales reps can apply discounts manually.