Implementing Minimum Order Value for Category-Based Promotions in SAP Commerce Cloud
SAP Commerce Cloud provides various promotional features such as category-based promotions, product-specific promotions, and minimum cart/order total-based promotions. However, one limitation is the inability to define a minimum order value for a specific category in the cart/order before qualifying for a promotion.
The Business Need
In many e-commerce scenarios, businesses may want to offer category-specific discounts, such as a 10-20% discount on a particular category, provided the customer has purchased a minimum amount from that category. Since SAP Commerce Cloud does not support this functionality out-of-the-box, we need a custom implementation.
Solution Approach
To address this limitation, we can follow these steps:
1. Calculate Category Subtotal
- Extend the
RAO(Rule Action Object) to add a calculation for the subtotal based on the category. - This ensures that promotions can be applied when a certain purchase threshold for a category is met.
2. Extend Promotion Condition for Category-Based Discount
- Create or extend a condition for category-based promotions.
- Modify classes such as
RuleQualifyingCategoriesConditionTranslator.javaandCategoriesTotalPriceRAOExtractorto support this logic. - If creating a new
RuleQualifyingCategoriesConditionTranslator, configure the following:
Implementation Code
Here’s an example of how to insert the necessary rule condition definitions in SAP Commerce Cloud:
Impex code example
INSERT_UPDATE RuleConditionDefinition ; id[unique=true] ; priority ; allowsChildren ; translatorId ; translatorParameters ; categories(id)
; y_qualifying_categories ; 1000 ; false ; qualifyingCategoriesConditionTranslator ; ; cart ;
INSERT_UPDATE RuleConditionDefinitionRuleTypeMapping ; definition(id)[unique=true] ; ruleType(code)[default=SourceRule][unique=true]
; y_qualifying_categories ;
INSERT_UPDATE RuleConditionDefinitionParameter ; definition(id)[unique=true] ; id[unique=true] ; priority ; type ; value ; required[default=true] ; validators ; filters ; defaultEditor
; y_qualifying_categories ; operator ; 1500 ; Enum(de.hybris.platform.ruledefinitions.AmountOperator) ; """GREATER_THAN_OR_EQUAL""" ; ; ;
; y_qualifying_categories ; quantity ; 1400 ; java.lang.Integer ; 1 ; ; rulePositiveNumberParameterValidator ;
; y_qualifying_categories ; categories_operator ; 1300 ; Enum(de.hybris.platform.ruledefinitions.CollectionOperator) ; """CONTAINS_ANY""" ; ; ;
; y_qualifying_categories ; catalog ; 1250 ; ItemType(Catalog) ; ; false ; ;
; y_qualifying_categories ; categories ; 1200 ; List(ItemType(Category)) ; ; false ; ; catalogVersion->catalog#catalogVersions.^[#this.version == '$catalogVersionName']
; y_qualifying_categories ; excluded_categories ; 1100 ; List(ItemType(Category)) ; ; false ; ; catalogVersion->catalog#catalogVersions.^[#this.version == '$catalogVersionName']
; y_qualifying_categories ; excluded_products ; 1000 ; List(ItemType(Product)) ; ; false ; ; catalogVersion->catalog#catalogVersions.^[#this.version == '$catalogVersionName']
; y_qualifying_categories ; purchase_value_operator ; 900 ; Enum(de.hybris.platform.ruledefinitions.AmountOperator) ; """GREATER_THAN_OR_EQUAL""" ; ; ;
; y_qualifying_categories ; purchase_value ; 800 ; java.math.BigDecimal ; ; false ; ;
Promotion Rule Configuration
Below is a screenshot showing how to configure the promotion rule conditions in SAP Commerce Cloud:

Conclusion :
By extending the existing SAP Commerce Cloud promotion framework, we can introduce a minimum order value requirement for category-based promotions. This ensures businesses can implement more targeted and effective promotional strategies.
Would you like to explore more ways to customize promotions in SAP Commerce Cloud? Let us know in the comments!