Original requirements in 

Split from 



Pricing Campaign CPC object


Create a new custom object : named Pricing Campaign CPC with: the following characteristics:


LabelPricing Campaign CPC
Plural LabelPricing Campaign CPCs
Object NamePricing_Campaign_CPC
DescriptionIPP-182
Record NamePricing Campaign CPC Name
Data TypeAuto Number
Display formatCPC -{00000000}
Allow Reports   

True

Allow Activitie

True

Track Field HistoryTrue
Allow in Chatter GroupsFalse
Enable LicensingFalse
Allow Sharing  True
Allow Bulk API AccessTrue
Allow Streaming API AccessTrue
Deployment StatusDeployed
Allow SearchTrue
Record TypesNone required (Master only)
TabNo tab required





Data Dictionary - Pricing Campaign CPC



Field NameCurrent ImplementationApex Class referencesAPI NameData TypeTrack HistoryRequiredRead OnlyPicklist Values or formulaProfile accessCommentsNeeded for initial Data Load (Kunal files)?
1Owner

OwnerLookup(User,Group)Yes



Pricing Campaign CPC Owner (standard Owner field of the object);

See Automations Section - CPC Owner retrieval


2Account Manager Review

Account_Manager_Review__cPicklistYes

  • Not yet Reviewed (default value)
  • Rejected
  • Committed

Restrict picklist to the values defined in the value set

See Account_Manager_Review_cannot_be_null VR


3Annual sales

Annual_sales__cNumber(16, 2)

Yes, on layout



4Annual volume

Annual_volume__cNumber(16, 2)

Yes, on layout



5Capped Reco price - Document CurrencyCapped Recommended price - Document CurrUpdatedCapped_Reco price_Document_Currency__cNumber(16, 2)

Yes, on layout


No
6Capped Reco price - Pricing Currency

Capped Recommended price - Pricing Curre

updatedCapped_Reco price_Pricing_Currency__cNumber(16, 2)

Yes, on layout


No
7Capped Recommended price (%)Capped Recommended price(Number)ECCOPricingCampaignServiceCapped_Recommended_price__cPercent(16, 2)

Yes, on layout


No
8Committed price

Committed_price__cNumber(16, 2)Yes



See Automation Committed Price default value


9Contracting model

Contracting_model__cText Area(255)

Yes, on layout


No
10CountryPicklist
Country__c

Text Area(255)



Yes, on layout

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
11CPC StatusPicklist

ECCOPricingCampaignService,

ECCOPricingCampaignService_TEST

CPC_Status__c

Formula (Text) This formula references multiple objects




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.




12Dataiku IDDataiku__c
Dataiku_ID__cText(50) (External ID)

Yes, on layout

Field to be populated by Dataiku with the Pricing campaign IDNo
13Decision logic (path to microsegment)

Decision_logic_path_to_microsegment__cText Area(255)

Yes, on layout

To be aligned with CherylNo
14Document CurrencyPicklistupdatedDocument_Currency__cText Area(255)

Yes, on layout


No
15End UsePicklistupdatedEnd_Use__cText 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 

No
16Forecasted annual volume

Forecasted_annual_volume__cNumber(16, 2)

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 

No
17FX rate used

FX_rate_used__cNumber(16, 2)

Yes, on layout


No
18Important featuresImportant_features_array__cupdatedImportant_features__cLong Text Area(32768)





No
19Last price

Last_price__cNumber(16, 2)

Yes, on layout


No
20Local CurrencyPicklist
Local_Currency__cText Area(255)

Yes, on layout


No
21Market ClusterPicklist
Market_Cluster__cText 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 


22Market SegmentPicklist

ECCOPricingCampaignService,

ECCOPricingCampaignService_TEST updated

Market_Segment__cText Area(255)

Yes, on layout




No
23Microsegment (node)

Microsegment_node__cNumber(16, 2)

Yes, on layout


No
24Modelling approach

Modelling_approach__cText Area(255)

Yes, on layout


No
25Modelling level

Modelling_level__cText Area(255)

Yes, on layout


No
26Node price

Node_price__cNumber(16, 2)

Yes, on layout


No
27Price reco rationale

Price_reco_rationale__cURL(255)

Yes, on layout

Link to Dataiku chart (when available)No
28Pricing Campaign

Pricing_Campaign__cLookup(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


29Pricing Currency

Pricing_Currency__cPicklistYes


Yes, on layout

Global Value Set: Pricing Currency

  • EUR - Euro
  • BGN - Bulgarian Lev
  • BRL - Brazilian Real
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • INR - Indian Rupee
  • JPY - Japanese Yen
  • KRW - Korean Won
  • KZT - Kazakhstan Tenge
  • RUB - Russian Rouble
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • USD - U.S. Dollar

Restrict picklist to the values defined in the value setNo
30Pricing Increment - Document Currency

Pricing_Increment_Document_Currency__cNumber(16, 2)

Yes, on layout


No
31Pricing Increment - EUR

Pricing_Increment_EUR__cNumber(16, 2)

Yes, on layout


No
32Pricing Increment - Pricing Currency

Pricing_Increment_Pricing_Currency__cNumber(16, 2)

Yes, on layout


No
33Pricing region

Pricing_Region__cPicklist

Yes, on layoutUse 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)




No
34Product

Product__cLookup(Product)Yes
Yes, visible only on Compact Layout

Retrieved from Product_Code__c - see Automations Section - Product retrieval


35Product CodeText 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__cText(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


36Product H4PicklistupdatedProduct_H4__c

Formula (Text) This formula references multiple objects




TEXT(Product__r.Product_H4_Bracket__r.Product_H4_Name__c)

No

37Product Manager

Product_Manager__c

Formula (Text) This formula references multiple objects




Product__r.Product_Manager__r.LastName & ", " & Product__r.Product_Manager__r.FirstName


38Projected sales impact

Projected_sales_impact__cNumber(16, 2)

Yes, on layout

Formula - will be used for Dataiuk entries only

No

39Quantified importance of featureQuantified_importance_of_feature_array__c
Quantified_importance_of_feature__cNumber(16, 2)

Yes, on layout


No
40Quote

Quote__cLookup(Opportunity)Yes
Yes, visible only on Compact Layout

Will be automatically populated with the Automation that creates Opportunities from  and 

No
41Reason for rejection

Reason_for_rejection__cPicklistYes

  • Competitive threat
  • Growth customer or initiative
  • Price fixed by contract
  • Customer or product discontinued
  • Other (Please describe)
    • extra quotation mark on Other (Please describe)" - needs to be removed 

Restrict picklist to the values defined in the value setNo
42RegionPicklistApexClass SmartFactory
ApexClass ECCOPricingCampaignService
ApexClass AccountController
ApexClass PricingCampaignCPC_UpdateFields_Test
ApexClass ECCOPricingCampaignService_TEST
ApexClass PricingCampaignCtrl_Test
Region__c

Formula (Text) This formula references multiple objects




Sold_To__r.Reporting_Region_ECCO__c

No
43Rejection description

Rejection_description__cText Area(255)Yes




No
44Sold-To

Sold_To__cAccount LookupYes
Compact Layout

Retrieved from Sold_To_Code__c - see Automations Section - Account lookup retrieval



No
45Sold-To SAP NameNot presentcreatedSold_To_SAP_Name__cText Area(255)

Yes, on layout

To store the SAP Name of the Sold-To "Account" as a text version read-only.
46Sold-To Code

Sold_To_Code__cText Area(255)

Yes, on layout



47Team ClusterPicklist
Team_Cluster__c

Formula (Text) This formula references multiple objects




TEXT(Sold_To__r.Team_Cluster__c)

Formula field to grab value from Account;s Team Cluster

No
48Uncapped Recommended price - EUR

Uncapped_Recommended_price_EUR__cNumber(16, 2)

Yes, on layout


No
49Uncapped Recommended price (%)

Uncapped_Recommended_price__cPercent(16, 2)

Yes, on layout


No
50Unit of MeasurementPicklistApexClass ECCOPricingCampaignService
ApexClass ECCOPricingCampaignService_TEST
Unit_of_Measurement__cText Area(255)

Yes, on layout

Purpose of having Unit of Measurement in CPC records - merely inform users about data coming from Dataiku

No
51Weighted average price

Weighted_average_price__cNumber(16, 2)

Yes, on layout


No








Compact Layout

New Compact Layout

Compact Layout Assignment

Compact Layout Selected Fields








Page Layout

See  for new layout definition




Lightning Record Page (activated as Org Default)







Validation Rules

See  for updated solution


Validation Rule NameFormulaError MessageError 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.


Notifications

Full requirements captured in the context of 

Permissions

Detailed analysis being done in 


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 -