Discount Validation

As outlined in the Discounts & Offers article, all discounts have a setting called Check for validation reason. If this is checked, the discount is added to a loop, which can then be used in frontend to show why the discount was not applied.

This has two uses:

  • It is an excellent debug tool when setting up discounts – it makes it easy to see why a discount which you believe should apply is not applied
  • It makes it possible to show customers what they need to do in order to qualify for a discount, e.g. Buy for $987 more and get 5% OFF

A (very ugly) implementation of a debug section could look like this:

Figure 1.1 A section showing why two order discounts were not applied to an order

The section above is rendered using the following code example:

RAZOR
<!--Discount Validation--> <div class="panel panel-default col-md-12"> <h3>Discount Validation</h3> <p>The following order discounts are not applied to this order:</p> <ul> @foreach (var discount in GetLoop("DiscountValidationResults")) { <li><b>@discount.GetString("Ecom:DiscountValidationResult.Name")</b></li> <ul> <li><b>Type:</b> @discount.GetString("Ecom:DiscountValidationResult.Type")</li> <li><b>Description:</b> @discount.GetString("Ecom:DiscountValidationResult.Description")</li> <li><b>Class:</b> @discount.GetString("Ecom:DiscountValidationResult.Discount.Class")</li> <li><b>Not applied because:</b></li> <ul> @foreach (var reason in discount.GetLoop("DiscountValidationReasons")) { <li>@reason.GetString("Ecom:DiscountValidationReason.SystemReasonDescription")</li> } </ul> </ul> } </ul> </div>