1/ Pricing Campaign processes
Data extracted from other tools can be found in GooglSheet:
Template to fill in to upload data in Salesforce :
Only Data Steward and Pricing Manager profile will upload Pricing Campaing and CPC into Salesforce:
2/ User Access to Pricing Campaign feature
User, with the correct profile and permissions, can access to the Pricing Campaign feature through the top menu:
Otherwise, they can also access to the Pricing Campaigns through the App Launcher:
3/ Lightning Web Component - Pricing campaign
A. Table 'Pricing Campaign CPC'
Pricing campaign CPC records are displayed in the LWC below.
- First part of this WBL: filters
The main goal of these filters on this LWC for users were to be as useful and helpful as possible.
User must easily find CPCs with key information. Due to this requirement, we implemented logic explained below:
- Once a first filter is applied, the remaining filters only display the values of the remaining records still being displayed in the LWC instead of all the CPC records initially loaded in the table.
- Users can select multiple items per dropdown filter (e.g. multiple Sold-To Account Names), and consequently the table present the records matching the 2 (or more) items selected.
- Button 'Clear Filter' clears all values selected for all filters
- Second part of this WBL: CPCs
1/ Frozen Column
Two columns have been frozen for helping the user during the navigation of this table from left to right:
- Account (Sold-to)
- Product
2/ Quote History Link
Quote history link redirect the user to a Salesforce report 'Account and Product Price History'
3/ Rationale link
Rationale link redirects the user to a google sheet:
- Third part: Pricing Campaign information
At the bottom of this LWC, Pricing campaign layout is available with Pricing Campaign key information:
B. Table 'Related'
- Pricing Campaign CPC
- Pricing Campaign History
4/ Quote creation from Pricing campaign CPCs
A. Rejected CPCs
If Account Manager Review ISCHANGED to Rejected - is not auto-saved, but instead:
Message pop's up: “To Reject this CPC, please provide a Reason for Rejection.”
If the User then changes Reason for Rejection from null to not null:
auto-save and commit both values to database (Account Manager Review = Rejected and Reason for Rejection with whatever value the User chose).
if the User does not change Reason for Rejection from null to not null and instead refreshes the page:
do not save any changes made by the User - returning Account Manager Review to the value it had before it was changed to Rejected.
Alternatively, if the User just changes the Reason for Rejection from null to not null and the Account Manager Review != Rejected, present User with a validation Error:
“Please choose Rejected on Account Manager Review field before providing a Reason for Rejection”.
Do not auto-save Reason for Rejection until User chooses Account Manager Review = Rejected.
Note: If User changes Account Manager Review value from Rejected to Not Yet Reviewed or Committed - the system needs to automatically make Reason for Rejection and Rejection Description = null
B/ Committed CPCs
User is able to create a quote only if at the CPC level:
- Account Manager review = Committed
- CPC Status = Committed
- Checkbox = TRUE
- No pricing setting matching
one
Pricing_Setting__r.Product_Pricing__r.Product__r.Product_Availability__c != Inactive
AND
Pricing_Setting__r.Product_Pricing__r.Valid_Active__c EQUALS TRUE
AND
Pricing_Setting__r.Region__c EQUALS Pricing_Campaign_CPC__r.Pricing_Region__c
AND
Pricing_Setting__r.CurrencyIsoCode EQUALS Pricing_Campaign_CPC__r.Pricing_Currency__c (only need to compare the first 3 characters of the Pricing Currency field of Pricing Campaign CPC)
Screen below is displayed to the user to explain the reason why a quote cannot be created:
- One pricing setting is matching
After clicking the button 'Create Quote' and only if there is a Pricing setting matching, a screen dedicated to create a quote appears:
Logic has been implemented for the fields below in order to make the quote creation the easiest possible for the user:
- Contact: user can paste the name of the Account name = contacts related to this account will be display in the dropdown
- Stage = Draft by default
- Quotation date = Today
- Quote valid From (internal only) = Quote valid From (internal only) FROM the Pricing Campaign record
- Quote valid to (internal only) = Quote valid to (internal only) FROM the Pricing Campaign record
- Offer expiration date = Offer expiration date FROM the Pricing Campaign record
- Region = Pricing region FROM the CPC record
- Currency = Pricing currency FROM the CPC record
- Close date = 30 days after the creation date so 'Today + 30 days'
5/ Permissions & Sharing
A. Pricing Campaign object
Profile Object Permissions - only the Profiles meeting the following criteria should be able to Read Pricing Campaigns:
Profile.User License = Salesforce
Profile.Custom = TRUE
System Administrator, System Admin (Lite) and GBU Data Steward must have full permissions for this object (Read, Create, Edit, Delete, View All and Modify All).
All other Profiles meeting criteria 1 and 2 above should not have anything other than Read permission for this object (no Create, no Edit, no Delete, no View All, no Modify All).
B. Pricing campaign CPC Permissions & Sharing
Only Owner can see Pricing Campaign CPC records (Private object).
Grant Access Using Hierarchies = TRUE
no other Sharing Rules will be implemented
Profile Object Permissions - only the Profiles meeting the following criteria should be able to Read and Edit Pricing Campaigns:
Profile.User License = Salesforce
Profile.Custom = TRUE
System Administrator and GBU Data Steward must have full permissions for this object (Read, Create, Edit, Delete, View All and Modify All).
System Admin (Lite) Profile will have access to this object via the z__Object_Permissions_for_AdminLite Permission Set
adjust this permission set to grant Access to Pricing Campaign CPC (Read, Create, Edit, Delete, View All and Modify All).
All other Profiles meeting criteria 1 and 2 above should only have Read and Edit permission for this object (no Create, no Delete, no View All, no Modify All)













