Original requirements in
Split from
Pricing Campaign CPC object
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 | Current Implementation | Apex Class references | API Name | Data Type | Track History | Required | Read Only | Picklist Values or formula | Profile access | Comments | Layout Section | Needed for initial Data Load (Kunal files)? | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Owner | Owner | Lookup(User,Group) | Yes | Pricing Campaign CPC Owner (standard Owner field of the object); See Automations Section - CPC Owner retrieval | Highlights Panel (Compact Layout) | |||||||
| 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 Recommended price - Document Curr | Updated | Capped_Reco price_Document_Currency__c | Currency(18, 0) | Yes, on layout | No | ||||||
| 6 | Capped Reco price - Pricing Currency | updated | Capped_Reco price_Pricing_Currency__c | Currency(18, 0) | Yes, on layout | No | |||||||
| 7 | Capped Recommended price (%) | Capped Recommended price(Number) | ECCOPricingCampaignService | Capped_Recommended_price__c | Percent(18, 0) | Yes, on layout | Overall | No | |||||
| 8 | Committed price | Committed_price__c | Currency(18, 0) | Yes | See Automation Committed Price default value | Account Manager input | |||||||
| 9 | Contracting model | Contracting_model__c | Text Area(255) | Yes, on layout | Dimension | No | |||||||
| 10 | Country | Picklist | 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(). | No | |||||||
| 11 | CPC Status | Picklist | 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. | Highlights Panel (Compact Layout) | ||||||
| 12 | Dataiku ID | Dataiku__c | Dataiku_ID__c | Text(50) (External ID) | Yes, on layout | Field to be populated by Dataiku with the Pricing campaign ID | No | ||||||
| 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 | No | ||||||
| 14 | Document Currency | Picklist | updated | Document_Currency__c | Text Area(255) | Yes, on layout | Dimension | No | |||||
| 15 | End Use | Picklist | updated | End_Use__c | Text Area(255) | Yes, on layout | If Value here is not present in End_Use of OLIs, system should ignore the one at CPC level - relevant info for | Dimension | No | ||||
| 16 | Forecasted annual volume | Forecasted_annual_volume__c | Number(18, 0) | Yes, on layout | 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. relevant info for | Metrics | No | ||||||
| 17 | FX rate used | FX_rate_used__c | Number(18, 0) | Yes, on layout | Metrics | No | |||||||
| 18 | Important features | Important_features_array__c | updated | Important_features__c | Long Text Area(32768) | Model Data | No | ||||||
| 19 | Last price | Last_price__c | Number(18, 0) | Yes, on layout | Metrics | No | |||||||
| 20 | Local Currency | Picklist | Local_Currency__c | Text Area(255) | Yes, on layout | Dimension | No | ||||||
| 21 | Market Cluster | Picklist | 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 relevant info for | Overall | ||||||
| 22 | Market Segment | Picklist | ECCOPricingCampaignService, ECCOPricingCampaignService_TEST updated | Market_Segment__c | Text Area(255) | Yes, on layout | Dimension | No | |||||
| 23 | Microsegment (node) | Microsegment_node__c | Number(18, 0) | Yes, on layout | Model Data | No | |||||||
| 24 | Modelling approach | Modelling_approach__c | Text Area(255) | Yes, on layout | Dimension | No | |||||||
| 25 | Modelling level | Modelling_level__c | Text Area(255) | Yes, on layout | Dimension | No | |||||||
| 26 | Node price | Node_price__c | Number(18, 0) | Yes, on layout | Metrics | No | |||||||
| 27 | Price reco rationale | Price_reco_rationale__c | URL(255) | Yes, on layout | Link to Dataiku chart (when available) | Account Manager input | No | ||||||
| 28 | Pricing Campaign | Pricing_Campaign__c | Lookup(Pricing Campaign) | Yes, visible only on Compact Layout | See Section Compact Layout below. On initial stage, there will only be 3 Pricing Campaign records where data will be loaded into: Long Tail, non-Long Tail and H2 | Highlights Panel (Compact Layout) | |||||||
| 29 | Pricing Currency | Pricing_Currency__c | Picklist | Yes | Yes, on layout | Global Value Set: Pricing Currency
| Restrict picklist to the values defined in the value set | Overall | No | ||||
| 30 | Pricing Increment - Document Currency | Pricing_Increment_Document_Currency__c | Currency(18, 0) | Yes, on layout | No | ||||||||
| 31 | Pricing Increment - EUR | Pricing_Increment_EUR__c | Currency(18, 0) | Yes, on layout | No | ||||||||
| 32 | Pricing Increment - Pricing Currency | Pricing_Increment_Pricing_Currency__c | Currency(18, 0) | Yes, on layout | No | ||||||||
| 33 | Pricing region | Pricing_Region__c | Picklist | Yes, on layout | 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 | No | |||||
| 34 | Product | Product__c | Lookup(Product) | Yes | Yes, visible only on Compact Layout | Retrieved from Product_Code__c - see Automations Section - Product retrieval | Highlights Panel (Compact Layout) | ||||||
| 35 | Product Code | Text Area(255) | ApexClass SmartFactory ApexClass ECCOPricingCampaignService ApexClass PricingCampaignCPC_UpdateFields_Test ApexClass ECCOPricingCampaignService_TEST ApexClass PricingCampaignCtrl_Test Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications Flow Pricing Campaign CPC sold to Notifications | Product_code__c | Text(20) (External ID) | Yes | 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 | Picklist | updated | Product_H4__c | Formula (Text) | TEXT(Product__r.Product_H4_Bracket__r.Product_H4_Name__c) | Dimension | No | |||||
| 37 | Projected sales impact | Projected_sales_impact__c | Number(18, 0) | Yes, on layout | Formula - will be used for Dataiuk entries only | Overall | No | ||||||
| 38 | Quantified importance of feature | Quantified_importance_of_feature_array__c | Quantified_importance_of_feature__c | Number(18, 0) | Yes, on layout | Model Data | No | ||||||
| 39 | Quote | Quote__c | Lookup(Opportunity) | Yes | Yes, visible only on Compact Layout | Will be automatically populated with the Automation that creates Opportunities from and | No | ||||||
| 40 | Reason for rejection | Reason_for_rejection__c | Picklist | Yes |
| Restrict picklist to the values defined in the value set | Account Manager input | No | |||||
| 41 | Region | Picklist | ApexClass SmartFactory ApexClass ECCOPricingCampaignService ApexClass AccountController ApexClass PricingCampaignCPC_UpdateFields_Test ApexClass ECCOPricingCampaignService_TEST ApexClass PricingCampaignCtrl_Test | Region__c | Formula (Text) | Sold_To__r.Reporting_Region_ECCO__c | No | ||||||
| 42 | Rejection description | Rejection_description__c | Text Area(255) | Yes | Account Manager input | No | |||||||
| 43 | Sold-To | Sold_To__c | Account Lookup | Yes | Compact Layout | Retrieved from Sold_To_Code__c - see Automations Section - Account lookup retrieval | Highlights Panel (Compact Layout) | No | |||||
| 44 | Sold-To SAP Name | Not present | created | Sold_To_SAP_Name__c | Text Area(255) | Yes, on layout | To store the SAP Name of the Sold-To "Account" as a text version read-only. | Overall | |||||
| 45 | Sold-To Code | Sold_To_Code__c | Text Area(255) | Yes, on layout | Overall | ||||||||
| 46 | Team Cluster | Picklist | Team_Cluster__c | Formula (Text) | TEXT(Sold_To__r.Team_Cluster__c) | Formula field to grab value from Account;s Team Cluster | No | ||||||
| 47 | Uncapped Recommended price - EUR | Uncapped_Recommended_price_EUR__c | Number(18, 0) | Yes, on layout | Metrics | No | |||||||
| 48 | Uncapped Recommended price (%) | Uncapped_Recommended_price__c | Percent(18, 0) | Yes, on layout | Metrics | No | |||||||
| 49 | Unit of Measurement | Picklist | ApexClass ECCOPricingCampaignService ApexClass ECCOPricingCampaignService_TEST | Unit_of_Measurement__c | Text Area(255) | Yes, on layout | Purpose of having Unit of Measurement in CPC records - merely inform users about data coming from Dataiku | No | |||||
| 50 | Weighted average price | Weighted_average_price__c | Number(18, 0) | Yes, on layout | Metrics | No |
Compact Layout
New Compact Layout
Compact Layout Assignment
Compact Layout Selected Fields
Page Layout
Lightning Record Page (activated as Org Default)
Validation Rules
| 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 && ! isNew() | 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.
Permissions
The object Pricing Campaign CPC needs to be aligned with Account access permissions (confidentiality, roll up to managers)
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 ?
Reports Required for Data control purposes
Report on any Pricing Campaign CPC record where Sold_To__c = null OR Product__c = null
Purpose: be able to see which CPC records where inserted where no match was found for the Account SAP Code or Product SAP Code or that were inserted without a value in
NOE, Julien - who will manage this data? What is the goal of "controlling" these failed insertions of CPC records? Will it be: analyzing the discrepancies and correct the data in Dataiku/SF/SAP so that the Codes match across the systems and no more CPC insertions fail in the future due to mismatched Product or Account Codes?
Story specific for reports - Placeholder Story not filled in yet -










