Promotion Wizards & Customization

Wizards related to promotions are implemented using Metadata Wizard and Business Object API.
When a user launches a wizard for a promotion, the MetadataWizard configuration for this user is used to display the required options in the user interface. When the user submits the wizard, the payload generated is submitted to the relevant Business Object API workflow for processing.
  • When new promotion option is selected from Trade Planning, Account Plan, or Promotion List, the NewPromotion configuration is used. When the wizard is submitted, the Create workflow is triggered through Business Object API.
  • When copy option is selected from Trade Planning or Promotion List, the CopyPromotion configuration is used. When the wizard is submitted, the Copy workflow is triggered through Business Object API.
  • When derive option is selected from Trade Planning or Promotion List, the DerivePromotion configuration is used. When the wizard is submitted, the Derive workflow is triggered through Business Object API.

Installing and Updating Base Configuration Records

To install or update base configuration records, execute the following commands in APEX console:cgcloud.TPMSetupData.setupMetadataWizard('<sales org>'); cgcloud.TPMSetupData.setupBOApi('<sales org>');

These commands create and update MetadataWizard configuration records and Business Object API configuration records to the provided values by Consumer Goods Cloud TPM for the salesorg.

Base MetadataWizard Configurations

A few records are required for the Metadata Wizard Configurations to work as designed. These records provide a customizable configuration for multiple wizards used for managing TPM use cases. Each of these configuration is required for each sales org. They’re created by running the APEX code snippet provided in Installing and Updating Base Configuration Records.

NewPromotion
1{
2  "size": "medium",
3  "title": "{! $Label.cgcloud__NPW_NEW + ' ' + $SObjectType.cgcloud__Promotion__c.label}",
4  "columns": 2,
5  "components": [
6    {
7      "id": "promoSlogan",
8      "type": "Text",
9      "outputProperty": "Slogan",
10      "required": true,
11      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Slogan__c.label }",
12      "maxLength": 80,
13      "defaultValue": "{! _input_.Slogan }"
14    },
15    {
16      "id": "promoTemplate",
17      "type": "Picklist",
18      "required": true,
19      "outputProperty": "PromotionTemplate",
20      "source": {
21        "class": "NewPromotionWizardCallable",
22        "method": "getPromotionTemplates",
23        "cache": true,
24        "params": {}
25      },
26      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Promotion_Template__c.label }",
27      "autoSelectFirstItem": true,
28      "defaultValue": "{! _input_.PromotionTemplate}"
29    },
30    {
31      "id": "promoAnchorAccount",
32      "type": "Picklist",
33      "active": "{! promoTemplate.AnchorType == 'Customer' }",
34      "visible": "{! promoTemplate.AnchorType == 'Customer' }",
35      "required": true,
36      "outputProperty": "AnchorAccount",
37      "source": {
38        "class": "NewPromotionWizardCallable",
39        "method": "getAccounts",
40        "cache": true,
41        "params": {
42          "dateFrom": "{! promoDateFrom }",
43          "dateThru": "{! promoDateThru }"
44        }
45      },
46      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Anchor_Account__c.label }",
47      "autoSelectFirstItem": true,
48      "defaultValue": "{! _input_.AnchorAccount}"
49    },
50    {
51      "id": "promoAnchorAccountSet",
52      "type": "Picklist",
53      "active": "{! promoTemplate.AnchorType == 'CustomerSet' }",
54      "visible": "{! promoTemplate.AnchorType == 'CustomerSet' }",
55      "required": true,
56      "outputProperty": "AnchorAccountSet",
57      "source": {
58        "class": "NewPromotionWizardCallable",
59        "method": "getAccountSets",
60        "cache": true,
61        "params": {
62          "dateFrom": "{! promoDateFrom }",
63          "dateThru": "{! promoDateThru }"
64        }
65      },
66      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Anchor_Account_Set__c.label }",
67      "autoSelectFirstItem": true,
68      "defaultValue": "{! _input_.AnchorAccountSet }"
69    },
70    {
71      "id": "promoNoAnchor",
72      "type": "Empty",
73      "visible": "{! promoTemplate.AnchorType == null }"
74    },
75    {
76      "type": "Picklist",
77      "id": "productPicklist",
78      "label": "{! $SObjectType.Product2.fields.cgcloud__Criterion_3_Product__c.label }",
79      "active": "{! promoTemplate.ProductDefinitionLevel == 'Promotion' }",
80      "visible": "{! promoTemplate.ProductDefinitionLevel == 'Promotion' }",
81      "source": {
82        "class": "NewPromotionWizardCallable",
83        "method": "getProducts",
84        "params": {
85          "level": "Brand",
86          "dateFrom": "{! promoDateFrom }",
87          "dateThru": "{! promoDateThru }",
88          "promotionTemplate": "{! promoTemplate.Id }",
89          "accountOrAccountSet": "{! if(promoTemplate.AnchorType, if(promoTemplate.AnchorType == 'CustomerSet', promoAnchorAccountSet.Id, promoAnchorAccount.Id), '') }"
90        },
91        "cache": true
92      },
93      "multiselect": true,
94      "defaultValue": "{! _input_.criterion_3_product__c }",
95      "outputProperty": "ProductFilter.Criteria.Brand"
96    },
97    {
98      "id": "promoNoProduct",
99      "type": "Empty",
100      "visible": "{! promoTemplate.ProductDefinitionLevel != 'Promotion' }"
101    },
102    {
103      "id": "promoDateFrom",
104      "type": "Date",
105      "label": "{!$SObjectType.cgcloud__Promotion__c.fields.cgcloud__Placement_Date_From__c.label}",
106      "outputProperty": "DateFrom",
107      "required": true,
108      "defaultValue": "{! _input_.initialDate || 'today' }"
109    },
110    {
111      "id": "promoDateThru",
112      "type": "Duration",
113      "referenceDate": "{! promoDateFrom }",
114      "required": true,
115      "label": "{! $Label.cgcloud__NPW_DURATION }",
116      "outputProperty": "DateThru",
117      "defaultValue": {
118        "metric": "week",
119        "quantity": 3
120      }
121    },
122    {
123      "id": "promoManualInputController",
124      "type": "ListController",
125      "label": "{! $Label.cgcloud__NPW_KPI }",
126      "outputProperty": "ManualInputs",
127      "maxItems": "{! promoTemplate.NumberOfPromotionKPIs }",
128      "active": "{! promoTemplate.NumberOfPromotionKPIs }",
129      "defaultItems": "{! promoTemplate.NumberOfPromotionKPIs }",
130      "visible": "{! promoTemplate.NumberOfPromotionKPIs }",
131      "itemUniqueKey": "{! promoKPI.Id }",
132      "columns": 2,
133      "components": [
134        {
135          "id": "promoKPI",
136          "label": "{! $Label.cgcloud__NPW_KPI }",
137          "type": "Picklist",
138          "required": true,
139          "source": {
140            "class": "NewPromotionWizardCallable",
141            "method": "getPromotionKPIs",
142            "params": {
143              "promoTemplate": "{! promoTemplate.Id }"
144            },
145            "cache": true
146          },
147          "outputProperty": "KPI",
148          "autoSelectFirstItem": true,
149          "defaultValueIndex": "{! _idx_ }"
150        },
151        {
152          "id": "promoKPIValue",
153          "label": "{! $Label.cgcloud__VALUE}",
154          "type": "Number",
155          "required": true,
156          "outputProperty": "Value",
157          "decimalPlaces": "{! promoKPI.ValueDecimalPlaces }"
158        }
159      ]
160    },
161    {
162      "id": "TacticController",
163      "type": "ListController",
164      "label": "{! $SObjectType.cgcloud__Tactic__c.pluralLabel }",
165      "outputProperty": "Tactics",
166      "maxItems": 10,
167      "active": "{! promoTemplate.HasTacticTemplates }",
168      "visible": "{! promoTemplate.HasTacticTemplates }",
169      "defaultItems": 1,
170      "columns": 3,
171      "components": [
172        {
173          "id": "tacticTemplate",
174          "type": "Picklist",
175          "required": true,
176          "outputProperty": "TacticTemplate",
177          "source": {
178            "class": "NewPromotionWizardCallable",
179            "method": "getTacticTemplates",
180            "params": {
181              "promoTemplate": "{! promoTemplate.Id }"
182            },
183            "cache": true
184          },
185          "label": "{! $SObjectType.cgcloud__Tactic__c.fields.cgcloud__Tactic_Template__c.label }",
186          "defaultValueIndex": "{! _idx_ }",
187          "autoSelectFirstItem": true
188        },
189        {
190          "id": "tacticKPIValue",
191          "type": "Number",
192          "label": "{! tacticKPIName.Name }",
193          "required": false,
194          "outputProperty": "ManualInputs[0].Value",
195          "visible": "{! tacticKPIName.Id }",
196          "active": "{! tacticKPIValue != null || tacticKPIValue == 0 }",
197          "decimalPlaces": "{! tacticKPIName.ValueDecimalPlaces }"
198        },
199        {
200          "id": "tacticKPIName",
201          "type": "Picklist",
202          "label": "{! $Label.cgcloud__NPW_KPI }",
203          "visible": false,
204          "active": "{! tacticKPIValue != null || tacticKPIValue == 0 }",
205          "source": {
206            "class": "NewPromotionWizardCallable",
207            "method": "getTacticKPIs",
208            "params": {
209              "promoTemplate": "{! promoTemplate.Id }",
210              "tacticTemplate": "{! tacticTemplate.Id }"
211            },
212            "cache": true
213          },
214          "outputProperty": "ManualInputs[0].KPI",
215          "autoSelectFirstItem": true
216        },
217        {
218          "id": "tacticCompensationModel",
219          "type": "Picklist",
220          "required": true,
221          "outputProperty": "CompensationModel",
222          "source": {
223            "class": "NewPromotionWizardCallable",
224            "method": "getTacticCompensationModels",
225            "params": {
226              "tacticTemplate": "{! tacticTemplate.Id }"
227            },
228            "cache": true
229          },
230          "label": "{! $SObjectType.cgcloud__Tactic__c.fields.cgcloud__Compensation_Model__c.label }",
231          "autoSelectFirstItem": true
232        }
233      ]
234    }
235  ],
236  "footerLeftButtons": [
237    "cancel"
238  ],
239  "footerRightButtons": [
240    {
241      "type": "saveAndCopy",
242      "brand": "neutral",
243      "label": "{! $Label.cgcloud__NPW_BTN_SAVE_AND_COPY }"
244    },
245    {
246      "type": "saveAndEdit",
247      "brand": "neutral",
248      "label": "{! $Label.cgcloud__NPW_BTN_SAVE_AND_EDIT }"
249    },
250    {
251      "type": "submit",
252      "brand": "brand",
253      "label": "{! $Label.cgcloud__NPW_BTN_SAVE }"
254    }
255  ]
256}
CopyPromotion
1{
2  "size": "small",
3  "title": "{! $Label.cgcloud__PC_BTN_COPY + ' ' + $SObjectType.cgcloud__Promotion__c.label}",
4  "columns": 1,
5  "context": [
6    {
7      "id": "promotionData",
8      "source": {
9        "class": "CopyPromotionWizardCallable",
10        "method": "getPromotion",
11        "cache": false,
12        "params": {
13          "promotionId": "{! _input_.promotionId }",
14          "fields": [
15            "Id",
16            "cgcloud__Slogan__c",
17            "cgcloud__Placement_Date_From__c",
18            "cgcloud__Anchor_Account__c",
19            "cgcloud__Anchor_Account_Set__c",
20            "cgcloud__Promotion_Template__r.cgcloud__Anchor_Type__c"
21          ]
22        }
23      }
24    }
25  ],
26  "components": [
27    {
28      "id": "promotionId",
29      "type": "Computed",
30      "outputProperty": "Id",
31      "value": "{! promotionData.Id }"
32    },
33    {
34      "id": "promoSlogan",
35      "type": "Text",
36      "outputProperty": "Slogan",
37      "required": true,
38      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Slogan__c.label }",
39      "maxLength": 80,
40      "defaultValue": "{! promotionData.cgcloud__Slogan__c }"
41    },
42    {
43      "id": "promoDateFrom",
44      "type": "Date",
45      "label": "{!$SObjectType.cgcloud__Promotion__c.fields.cgcloud__Placement_Date_From__c.label}",
46      "outputProperty": "InStoreDateFrom",
47      "required": true,
48      "defaultValue": "{! promotionData.cgcloud__Placement_Date_From__c || 'today' }"
49    },
50    {
51      "id": "promoAnchorAccount",
52      "type": "Picklist",
53      "active": "{! promotionData.cgcloud__Promotion_Template__r.cgcloud__Anchor_Type__c == 'Customer' }",
54      "visible": "{! promotionData.cgcloud__Promotion_Template__r.cgcloud__Anchor_Type__c == 'Customer' }",
55      "outputProperty": "AnchorAccount",
56      "source": {
57        "class": "CopyPromotionWizardCallable",
58        "method": "getAccounts",
59        "cache": true,
60        "params": {
61          "promotionId": "{! promotionId }",
62          "inStoreDateFrom": "{! promoDateFrom }"
63        }
64      },
65      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Anchor_Account__c.label }",
66      "autoSelectFirstItem": true,
67      "defaultValue": "{! promotionData.cgcloud__Anchor_Account__c }"
68    },
69    {
70      "id": "promoAnchorAccountSet",
71      "type": "Picklist",
72      "active": "{! promotionData.cgcloud__Promotion_Template__r.cgcloud__Anchor_Type__c == 'CustomerSet' }",
73      "visible": "{! promotionData.cgcloud__Promotion_Template__r.cgcloud__Anchor_Type__c == 'CustomerSet' }",
74      "required": true,
75      "outputProperty": "AnchorAccountSet",
76      "source": {
77        "class": "CopyPromotionWizardCallable",
78        "method": "getAccountSets",
79        "cache": true,
80        "params": {
81          "promotionId": "{! promotionId }",
82          "inStoreDateFrom": "{! promoDateFrom }"
83        }
84      },
85      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Anchor_Account_Set__c.label }",
86      "autoSelectFirstItem": true,
87      "defaultValue": "{! promotionData.cgcloud__Anchor_Account_Set__c }"
88    },
89    {
90      "id": "promoNoAnchor",
91      "type": "Empty",
92      "visible": "{! promotionData.cgcloud__Promotion_Template__r.cgcloud__Anchor_Type__c == null }"
93    },
94    {
95      "id": "copyAttachments",
96      "type": "Checkbox",
97      "outputProperty": "CopyAttachments",
98      "label": "{! $Label.cgcloud__PC_LBL_COPY_ATTACHMENTS }"
99    }
100  ],
101  "footerLeftButtons": [
102    "cancel"
103  ],
104  "footerRightButtons": [
105    {
106      "type": "saveAndCopy",
107      "brand": "neutral",
108      "label": "{! $Label.cgcloud__NPW_BTN_SAVE_AND_COPY }"
109    },
110    {
111      "type": "saveAndEdit",
112      "brand": "neutral",
113      "label": "{! $Label.cgcloud__NPW_BTN_SAVE_AND_EDIT }"
114    },
115    {
116      "type": "submit",
117      "brand": "brand",
118      "label": "{! $Label.cgcloud__NPW_BTN_SAVE }"
119    }
120  ]
121}
DerivePromotion
1{
2  "size": "small",
3  "title": "{! $Label.cgcloud__PC_BTN_DERIVE + ' ' + $SObjectType.cgcloud__Promotion__c.label}",
4  "columns": 1,
5  "context": [
6    {
7      "id": "promotionData",
8      "source": {
9        "class": "CopyPromotionWizardCallable",
10        "method": "getPromotion",
11        "cache": false,
12        "params": {
13          "promotionId": "{! _input_.promotionId }",
14          "fields": [
15            "Id",
16            "cgcloud__Placement_Date_From__c"
17          ]
18        }
19      }
20    }
21  ],
22  "components": [
23    {
24      "id": "promotionId",
25      "type": "Computed",
26      "outputProperty": "Id",
27      "value": "{! promotionData.Id }"
28    },
29    {
30      "id": "promoTemplate",
31      "type": "Picklist",
32      "required": true,
33      "outputProperty": "PromotionTemplate",
34      "source": {
35        "class": "DerivePromotionWizardCallable",
36        "method": "getPromotionTemplates",
37        "cache": true,
38        "params": {
39          "promotionId": "{! promotionData.Id }"
40        }
41      },
42      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Promotion_Template__c.label }",
43      "autoSelectFirstItem": true
44    },
45    {
46      "id": "promoDateFrom",
47      "type": "Date",
48      "label": "{!$SObjectType.cgcloud__Promotion__c.fields.cgcloud__Placement_Date_From__c.label}",
49      "outputProperty": "InStoreDateFrom",
50      "required": true,
51      "defaultValue": "{! promotionData.cgcloud__Placement_Date_From__c || 'today' }"
52    },
53    {
54      "id": "promoAnchorAccount",
55      "type": "Picklist",
56      "active": true,
57      "visible": true,
58      "required": true,
59      "outputProperty": "AnchorAccount",
60      "source": {
61        "class": "DerivePromotionWizardCallable",
62        "method": "getAccounts",
63        "cache": true,
64        "params": {
65          "promotionId": "{! promotionData.Id }",
66          "inStoreDateFrom": "{! promoDateFrom }"
67        }
68      },
69      "label": "{! $SObjectType.cgcloud__Promotion__c.fields.cgcloud__Anchor_Account__c.label }",
70      "autoSelectFirstItem": true
71    },
72    {
73      "id": "deriveAttachments",
74      "type": "Checkbox",
75      "outputProperty": "DeriveAttachments",
76      "label": "{! $Label.cgcloud__PC_LBL_DERIVE_ATTACHMENTS }"
77    }
78  ],
79  "footerLeftButtons": [
80    "cancel"
81  ],
82  "footerRightButtons": [
83    {
84      "type": "saveAndCopy",
85      "brand": "neutral",
86      "label": "{! $Label.cgcloud__NPW_BTN_SAVE_AND_COPY }"
87    },
88    {
89      "type": "saveAndEdit",
90      "brand": "neutral",
91      "label": "{! $Label.cgcloud__NPW_BTN_SAVE_AND_EDIT }"
92    },
93    {
94      "type": "submit",
95      "brand": "brand",
96      "label": "{! $Label.cgcloud__NPW_BTN_SAVE }"
97    }
98  ]
99}