---
schema_version: "1"
id: 7ef0ab95cc4812b968c6da99bddbeefc4a710b7154d960c7bb0c8e3e733bbd8a
title: Promotion Refinement Code Changes
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/cc/264-0-0/b2c_promotion_refinement_code_changes.md
canonical_url: https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_refinement_code_changes.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 2b661568ff32b026cbb12ba7dec3cafa80c8406cf1aba09d95fe87893c3c5e73
description: The following two files require necessary changes to display promotion refinements in B2C Commerce.
products:
  - Commerce
  - B2C Commerce
release: "264"
---
# Promotion Refinement Code Changes

The following two files require necessary changes to display promotion refinements in B2C Commerce.

- cartridge/scripts/models/SearchModel.js
    
    ```
    SearchModel.initializeProductSearchModel = function (httpParameterMap) {
        var productSearchModel = this.initializeSearchModel(new ProductSearchModel(), httpParameterMap);
     
        productSearchModel.setRecursiveCategorySearch(true);
     
        if (httpParameterMap.pid.submitted) {
            productSearchModel.setProductID(httpParameterMap.pid.value);
        }
     
        if (httpParameterMap.pmin.submitted) {
            productSearchModel.setPriceMin(httpParameterMap.pmin.doubleValue);
        }
     
        if (httpParameterMap.pmax.submitted) {
            productSearchModel.setPriceMax(httpParameterMap.pmax.doubleValue);
        }
         
        // NEW CODE FOR PROMOTION REFINEMENT - START!!!!
        if (httpParameterMap.pmid.submitted) {
            productSearchModel.setPromotionID(httpParameterMap.pmid);
        }
        // NEW CODE FOR PROMOTION REFINEMENT - END!!!!
     
        var sortingRule = httpParameterMap.srule.submitted ? CatalogMgr.getSortingRule(httpParameterMap.srule.value) : null;
        if (sortingRule) {
            productSearchModel.setSortingRule(sortingRule);
        }
     
        // only add category to search model if the category is online
        if (httpParameterMap.cgid.submitted) {
            var category = CatalogMgr.getCategory(httpParameterMap.cgid.value);
            if (category && category.isOnline() && productSearchModel) {
                productSearchModel.setCategoryID(category.getID());
            }
     
        }
     
        return productSearchModel;
    ```
- cartridge/templates/default/search/components/productsearchrefinebar.isml
    
    ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)
    
    Note
    
    The change must be added along side an existing refinement.
    
    ```
    <div class="refinement-promotion">
            <iscomment>PROMOTION REFINEMENTS (NEW)</iscomment>
            <isif condition="${RefinementDefinition.isPromotionRefinement()}">
    
                <h3 class="toggle">
                    <i class="fa fa-chevron-circle-down"></i>
                    <isprint value="${RefinementDefinition.getDisplayName()}"/>
                </h3>
    
    
                <isif condition="${pdict.ProductSearchResult.isRefinedByPromotion()}">
                    <div class="clear-refinement">
                        <a title="${Resource.msg('search.productsearchrefinebar.showallopt','search',null)}" href="${pdict.ProductSearchResult.urlRelaxPromotion('Search-Show')}">${Resource.msg('searchrefinebar.clearselection','search',null)}</a>
                    </div>
                </isif>
    
                <ul <isif condition="${Refinements.getAllRefinementValues(RefinementDefinition).size() > RefinementDefinition.cutoffThreshold}">class="scrollable"</isif>>
                <isloop items="${Refinements.getAllRefinementValues(RefinementDefinition)}" var="RefinementValue">
                    <isif condition="${pdict.ProductSearchResult.isRefinedByPromotion(RefinementValue.value)}">
                        <li class="selected">
                            <a class="refinement-link" href="${StringHelpers.unsanitizeOR(pdict.ProductSearchResult.urlRelaxPromotion('Search-Show'))}" title="${Resource.msg('search.productsearchrefinebar.clickrefine','search',null)}${RefinementValue.getDisplayValue()}">
                                <i class="fa fa-check-square-o fa-lg"></i>
                                <isprint value="${RefinementValue.getDisplayValue()}" encoding="off"/> (<isprint value="${RefinementValue.getHitCount()}" encoding="off"/>)
                            </a>
                        </li>
                    <iselse/>
                        <li>
                            <a class="refinement-link" href="${StringHelpers.unsanitizeOR(pdict.ProductSearchResult.urlRefinePromotion('Search-Show',RefinementValue.getValue()))}" title="${Resource.msg('search.productsearchrefinebar.clickrefine','search',null)}${RefinementValue.getDisplayValue()}">
                                <i class="fa fa-square-o fa-lg"></i>
                                <isprint value="${RefinementValue.getDisplayValue()}" encoding="off"/> (<isprint value="${RefinementValue.getHitCount()}" encoding="off"/>)
                            </a>
                        </li>
                    </isif>
                </isloop>
                </ul>
            </isif>
            </div>
    ```