Original requirements in
Split from
Create a new custom object : named Pricing Campaign CPC with: the following characteristics:
| Label | Pricing Campaign CPC |
|---|---|
| Plural Label | Pricing Campaign CPCs |
| Object Name | Pricing_Campaign_CPC |
| Description | IPP-182 |
| Record Name | Pricing Campaign CPC Name |
| Data Type | Auto Number |
| Display format | CPC -{00000000} |
| Allow Reports | True |
| Allow Activitie | True |
| Track Field History | True |
| Allow in Chatter Groups | False |
| Enable Licensing | False |
| Allow Sharing | True |
| Allow Bulk API Access | True |
| Allow Streaming API Access | True |
| Deployment Status | Deployed |
| Allow Search | True |
| Record Types | None required (Master only) |
| Tab | No tab required |
Data Dictionary - Pricing Campaign CPC
| Field Name | API Name | Data Type | Track History | Required | Read Only | Picklist Values or formula | Help Text | Profile access | Comments | Layout Section | Needed for initial Data Load (Kunal files)? | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Owner | Owner | Lookup(User,Group) | Yes | Yes (default) | Pricing Campaign CPC Owner (standard Owner field of the object); See Automations Section - CPC Owner retrieval | Information | |||||
| 2 | Account Manager Review | Account_Manager_Review__c | Picklist | Yes |
| Restrict picklist to the values defined in the value set See Account_Manager_Review_cannot_be_null VR | Account Manager input | |||||
| 3 | Annual sales | Annual_sales__c | Number(18, 0) | Yes, on layout | Metrics | |||||||
| 4 | Annual volume | Annual_volume__c | Number(18, 0) | Yes, on layout | Metrics | |||||||
| 5 | Capped Reco price - Document Currency | Capped_Reco price_Document_Currency__c | Currency(18, 0) | Not relevant for initial Data load | ||||||||
| 6 | Capped Reco price - Pricing Currency | Capped_Reco price_Pricing_Currency__c | Currency(18, 0) | Not relevant for initial Data load | ||||||||
| 7 | Capped Recommended price (%) | Capped_Recommended_price__c | Percent(18, 0) | Yes, on layout | Overall | Not relevant for initial Data load | ||||||
| 8 | Committed price | Committed_price__c | Currency(18, 0) | See Automation Committed Price default value | Account Manager input | |||||||
| 9 | Contracting model | Contracting_model__c | Text Area(255) | Dimension | Not relevant for initial Data load | |||||||
| 10 | Country | Country__c | Text Area(255) | Requires Automation to grab value from Sold_To__c BillingCountry Note: the value that needs to be exposed in Pricing Campaign CPC is the full name of the Country, and not the ISO Code (ie, United States and not US; Portugal and not PT). This cannot be achieved via formula field nor automation (the label of the Country picklist values from State and Country/Territory Picklists cannot be queried). Possible solution: a custom setting to store the information about ISO Code and Country Name as per the current State and Country/Territory Picklists and fill this Country__c field via trigger - on record creation AND when Sold_To__c lookup ISCHANGED(). | Dimension | Not relevant for initial Data load | ||||||
| 11 | CPC Status | CPC_Status__c | Formula (Text) | IF( Quote__c != null, TEXT(Quote__r.StageName),TEXT(Account_Manager_Review__c)) | Bring Quote (Opp) Stage if there is a Quote in the CPC record; otherwise, bring the Account Manager Review field. | Overall | ||||||
| 12 | Dataiku ID | Dataiku__ID__c | Text(50) (External ID) | Yes, on layout | Field to be populated by Dataiku with the Pricing campaign ID | Not relevant for initial Data load | ||||||
| 13 | Decision logic (path to microsegment) | Decision_logic_path_to_microsegment__c | Text Area(255) | Yes, on layout | To be aligned with Cheryl | Model Data | Not relevant for initial Data load | |||||
| 14 | Document Currency | Document_Currency__c | Text Area(255) | Yes, on layout | Dimension | Not relevant for initial Data load | ||||||
| 15 | End Use | End_Use__c | Text Area(255) | If Value here is not present in End_Use of OLIs, system should ignore the one at CPC level | Dimension | Not relevant for initial Data load | ||||||
| 16 | Forecasted annual volume | Forecasted_annual_volume__c | Number(18, 0) | If below MOQ populate first bracket on quote; on the Create Quote button - if this value is lower than the OLIs MOQ, than bring the MOQ field to the OLIs Estimated Annual Volume, otherwise, Estimate Annual Volume = Forecasted Annual Volume. | Metrics | Not relevant for initial Data load | ||||||
| 17 | FX rate used | FX_rate_used__c | Number(18, 0) | Yes, on layout | Metrics | Not relevant for initial Data load | ||||||
| 18 | Important features | Important_features__c | Long Text Area(32768) | Model Data | Not relevant for initial Data load | |||||||
| 19 | Last price | Last_price__c | Number(18, 0) | Yes, on layout | Metrics | Not relevant for initial Data load | ||||||
| 20 | Local Currency | Local_Currency__c | Text Area(255) | Yes, on layout | Dimension | Not relevant for initial Data load | ||||||
| 21 | Market Cluster | Market_Cluster__c | Text Area(255) | Yes, on layout | If Value here does not match the one in Market Cluster of OLIs, system should ignore the one at CPC level | Overall | ||||||
| 22 | Market segment | Market_Segment__c | Text Area(255) | Yes, on layout | Dimension | Not relevant for initial Data load | ||||||
| 23 | Microsegment (node) | Microsegment_node__c | Number(18, 0) | Yes, on layout | Model Data | Not relevant for initial Data load | ||||||
| 24 | Modelling approach | Modelling_approach__c | Text Area(255) | Yes, on layout | Dimension | Not relevant for initial Data load | ||||||
| 25 | Modelling level | Modelling_level__c | Text Area(255) | Yes, on layout | Dimension | Not relevant for initial Data load | ||||||
| 26 | Node price | Node_price__c | Number(18, 0) | Yes, on layout | Metrics | Not relevant for initial Data load | ||||||
| 27 | Price reco rationale | Price_reco_rationale__c | URL(255) | Yes, on layout | Link to Dataiku chart (when available) | Account Manager input | Not relevant for initial Data load | |||||
| 28 | Pricing Campaign | Pricing_Campaign__c | Lookup(Pricing Campaign) | Yes, visible only on Compact Layout | See Section Compact Layout below | Dimension | on initial load, 3 campaigns: Long Tail, non-Long Tail and H2 | |||||
| 29 | Pricing Currency | Pricing_Currency__c | Picklist | Yes, on creation | Global Value Set: Pricing Currency
| Restrict picklist to the values defined in the value set | Overall | Not relevant for initial Data load | ||||
| 30 | Pricing Increment - Document Currency | Pricing_Increment_Document_Currency__c | Currency(18, 0) | Not relevant for initial Data load | ||||||||
| 31 | Pricing Increment - EUR | Pricing_Increment_EUR__c | Currency(18, 0) | Not relevant for initial Data load | ||||||||
| 32 | Pricing Increment - Pricing Currency | Pricing_Increment_Pricing_Currency__c | Currency(18, 0) | Not relevant for initial Data load | ||||||||
| 33 | Pricing region | Pricing_Region__c | Picklist | Yes, on creation | Use the newly created Global Value Set Pricing Region | Restrict picklist to the values defined in the value set Promote Opportunity.Region__c picklist values to Global Value Set (called Pricing Region) | Overall | Not relevant for initial Data load | ||||
| 34 | Product | Product__c | Lookup(Product) | Yes, visible only on Compact Layout | Retrieved from Product_Code__c - see Automations Section - Product retrieval | Overall | will come from Product code automation | |||||
| 35 | Product Code | Product_code__c | Text(20) (External ID) | Yes, on creation | Yes, on layout | Dataiku source: material_group_product_lvl3_code SF match: Material Group Code field (Material_Group__c) on Product object | Overall | |||||
| 36 | Product H4 | Product_H4__c | Picklist | Yes, on layout | Global Value Set: Product Hierarchy 4 Names | Restrict picklist to the values defined in the value set | Dimension | Formula field to bring the Product H4 Name (ie. Aquivino) | ||||
| 37 | Projected sales impact | Projected_sales_impact__c | Number(18, 0) | Yes, on layout | Overall | Formula - will be used for Dataiuk entries only | ||||||
| 38 | Quantified importance of feature | Quantified_importance_of_feature__c | Number(18, 0) | Yes, on layout | Model Data | Not relevant for initial Data load | ||||||
| 39 | Quote | Quote__c | Lookup(Opportunity) | Yes, visible only on Compact Layout | Will be automatically populated with the Automation that creates Opportunities from and | Not relevant for initial Data load | ||||||
| 40 | Reason for rejection | Reason_for_rejection__c | Picklist |
| Restrict picklist to the values defined in the value set | Account Manager input | Not relevant for initial Data load | |||||
| 41 | Region | Region__c | Formula (Text) | Sold_To__r.Reporting_Region_ECCO__c | Dimension | Not relevant for initial Data load | ||||||
| 42 | Rejection description | Rejection_description__c | Text Area(255) | Account Manager input | Not relevant for initial Data load | |||||||
| 43 | Sold-To | Sold_To__c | Account Lookup | Compact Layout | For full CPC - Needs to be aligned with account access rules (confidentiality, roll up to managers) | Retrieved from Sold_To_Code__c - see Automations Section - Account lookup retrieval | Overall | Not relevant for initial Data load | ||||
| 44 | Sold-To SAP Name | Sold_To_SAP_Name__c | Text Area(255) | Yes, on layout | To store the SAP Name of the Sold-To "Account" | Overall | ||||||
| 45 | Sold-To Code | Sold_To_Code__c | Text Area(255) | Yes, on creation | Yes, on layout | Overall | ||||||
| 46 | Team Cluster | Team_Cluster__c | Formula (Text) | TEXT(Sold_To__r.Team_Cluster__c) | Formula field to grab value from Account;s Team Cluster | Dimension | Not relevant for initial Data load | |||||
| 47 | Uncapped Recommended price - EUR | Uncapped_Recommended_price_EUR__c | Number(18, 0) | Yes, on layout | Metrics | Not relevant for initial Data load | ||||||
| 48 | Uncapped Recommended price (%) | Uncapped_Recommended_price__c | Percent(18, 0) | Yes, on layout | Metrics | Not relevant for initial Data load | ||||||
| 49 | Unit of Measurement | Unit_of_Measurement__c | Picklist | Same values as Unit of Measurement at Pricing setting level: Retrieve value of "Unit of Measure" from the corresponding product pricing setting (Region, currency, market segment). NOE, Julien - What is the purpose of having Unit of Measurement in CPC records? is it to: 1) just inform users about something; 2) actually use the value to generate the quote? | Not relevant for initial Data load | |||||||
| 50 | Weighted average price | Weighted_average_price__c | Number(18, 0) | Yes, on layout | Metrics | Not relevant for initial Data load |
Compact Layout
New Compact Layout
Compact Layout Assignment
Validation Rule(s)
| Validation Rule Name | Formula | Error Message | Error Location |
|---|---|---|---|
| Account_Manager_Rejected | AND(ISPICKVAL(Account_Manager_Review__c,'Rejected'),ISBLANK(TEXT(Reason_for_rejection__c))) | Please provide a Reason for Rejection. | Field: Reason for Rejection |
| Account_Manager_Review_cannot_be_null | TEXT(Account_Manager_Review__c) = null | Account Manager Review cannot be null. | Field: Account Manager Review |
Automations Required
1. Account lookup retrieval
On insertion of Pricing Campaign CPC record - the Sold_To_Code__c value should be used to do a lookup on all the Account records (specifically on its field Account___r.SAP_Sold_To_Number__c);
- If a match is found between Pricing_Campaign_CPC__r.Sold_To_Code__c AND Account___r.SAP_Sold_To_Number__c - populate Pricing_Campaign_CPC__r.Sold_To__c with the same ID as the one retrieved from the Account record with the matching Account___r.SAP_Sold_To_Number__c
- If no matching Account___r.SAP_Sold_To_Number__c is found - leave Pricing_Campaign_CPC__r.Sold_To_Code__c = null
2. CPC Owner retrieval
On insertion of Pricing Campaign CPC record - the standard Owner User lookup needs to be the same as the Account Owner from the Account lookup (Sold-To) retrieved from the automation Account lookup retrieval.
3. Product retrieval
On insertion of Pricing Campaign CPC record - the Product_Code__c value should be used to do a lookup on all the Product records (specifically on its field Product___r.Material_Group__c);
- If a match is found between Pricing_Campaign_CPC__r.Product_Code__c AND Product__r.Material_Group__c - populate Pricing_Campaign_CPC__r.Product__c with the same ID as the one retrieved from the Product record with the matching Product__r.Material_Group__c
- If no matching Product__r.Material_Group__c is found - leave Pricing_Campaign_CPC__r.Product__c = null
4. Committed Price default value
On record creation, the number field Committed_Price__c needs to be pre-populated with the same value inserted in the field Capped_Reco price_Pricing_Currency__c.
Sharing and security : Private (only Owner and user above in role hiearchy) + Edit access. Do we need to give a view all and/or modify all to some profiles or users ? Is some region managers who need to see more than their records ? What about confidential accounts ? Access only by owner or account team ? Product manager access ?
Create a “Pricing Campaign CPC” tab at Pricing campaign level



