Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Original requirements in 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-182

Split from 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-42



Pricing Campaign CPC object

Image Added


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 History
Mandatory field
RequiredRead OnlyPicklist Values or formula
Help Text
Profile accessComments
Validation Rule
Layout Section
Needed for initial Data Load (Kunal files)?
1Owner

OwnerLookup(User,Group)Yes
Yes (default)NA
NA




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

- retrieve value from account lookup of Sold_To__c.Owner field
Update only at insertionDimensionAccount Manager ReviewPicklistValues : Rejected, CommittedAccount Manager inputAnnual salesNumericXMetricsAnnual volumeNumericXMetricsCapped Recommended priceNumericXOverallNot relevant for initial Data loadCapped Reco price - Document CurrencyCurrency fieldNot relevant for initial Data loadCapped Reco price - Pricing CurrencyCurrency fieldNot relevant for initial Data loadCapped Recommended price (%)NumericXOverallNot relevant for initial Data loadCommitted priceNumericPrepopulate with Capped Recommended PriceAccount Manager inputContracting modelFree textDimensionNot relevant for initial Data loadCountryPicklistFormula field to bring country from Sold-to AccountDimensionNot relevant for initial Data loadCPC StatusPicklistRead onlyValues : WIP, Rejected, Committed, Quote drafted, Quote in approval, Quote under CSR review, Quote closed - Sales started (Updated in SAP)
Workfow to create :
If Commit/Reject is Blank: WIP
if Commit/Reject is Rejected : Rejected
if Commit/Reject is Committed : Committed
If quote created (New lookup at CPC or Quote lvl TBD) : Retrieve Quote stage
Overall

;

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 objectsImage Added




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
Dataiku ID ?External IDX


Field to be populated by Dataiku with the Pricing campaign ID
No
13
Not relevant for initial Data load
Decision logic (path to microsegment)
Freetext - to


Decision_logic_path_to_microsegment__cText Area(255)

Yes, on layout

To be aligned with Cheryl
No
14Document CurrencyPicklistupdatedDocument_Currency__cText Area(255)

Yes, on layout


No
15
XModel DataNot relevant for initial Data loadDocument CurrencyCurrency fieldDimensionNot relevant for initial Data load
End UsePicklist
X
updated
Use Global picklist valuesDimensionNot relevant for initial Data loadForecasted annual volume
End_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 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-180

No
16Forecasted annual volume

Forecasted_annual_volume__cNumber(16, 2)

Yes, on layout
Numeric


If below MOQ populate first bracket on quote

MetricsNot relevant for initial Data loadFX rate usedNumericXMetricsNot relevant for initial Data loadImportant features (array)Long text areaXModel DataNot relevant for initial Data loadLast priceNumericXMetricsNot relevant for initial Data loadLocal CurrencyCurrency fieldXDimensionNot relevant for initial Data loadMarket ClusterPicklistXUse Global picklist valuesOverallMarket segmentPicklistXUse Global picklist valuesDimensionNot relevant for initial Data loadMicrosegment (node)NumericXModel DataNot relevant for initial Data loadModelling approachFree textXDimensionNot relevant for initial Data loadModelling levelFree textXDimensionNot relevant for initial Data loadNode priceNumericXMetricsNot relevant for initial Data loadPrice reco rationaleURLXLink to Dataiku chartAccount Manager inputNot relevant for initial Data loadPricing CampaignLookupCompact LayoutRead onlyDimensionon initial load, 3 campaigns

; 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 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-180

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 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-180


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
Currency fieldYesOverall


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
30
Not relevant for initial Data load
Pricing Increment - Document Currency
Currency field


Pricing_Increment_Document_Currency__cNumber(16, 2)

Yes, on layout


No
31
Not relevant for initial Data load
Pricing Increment - EUR
Currency field


Pricing_Increment_EUR__cNumber(16, 2)

Yes, on layout


No
32
Not relevant for initial Data load
Pricing Increment - Pricing Currency
Currency fieldNot relevant for initial Data load


Pricing_Increment_Pricing_Currency__cNumber(16, 2)

Yes, on layout


No
33Pricing region

Pricing_Region__c
Pricing region
Picklist

Yes, on layoutUse the newly created Global Value Set Pricing Region

Restrict picklist

value - same as quote ones

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
OverallNot relevant for initial Data loadProductProduct lookupYes
Compact Layout

Retrieved from Product_Code__c - see Automations Section - Product retrieval


35Product Code
(Material Group Code);
If failing to match during upload, needs to notify campaign ownerOverall

will come from Product code automation

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__cText(20) (External ID)Yes
Yes, on layout

Dataiku source:

Product codeFree textYesX

material_group_product_lvl3_

code on dataiku export
Material Group Code field at product level

code 

SF match: Material Group Code field (Material_Group__c) on Product object


36
Overall
Product H4Picklist
XUse Global picklist valuesDimension

Formula field to bring the Product H4 Name (ie. Aquivino)

updatedProduct_H4__c

Formula (Text) This formula references multiple objectsImage Added




TEXT(Product__r.Product_H4_Bracket__r.Product_H4_Name__c)

No

37Product Manager

Product_Manager__c

Formula (Text) This formula references multiple objectsImage Added




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


38Projected sales impact

Projected_sales_impact__cNumber(16, 2)

Yes, on layout
Projected sales impactNumericXOverall


Formula - will be used for Dataiuk entries only

No

39Quantified importance of feature
NumericXModel DataNot relevant for initial Data loadQuoteLookjup to Opportunity automatically filled if Quote was created via that specific CPC recordXRead onlyNot relevant for initial Data loadReason for rejectionPicklist- Competitive threat
- Growth customer or initiative
- Price fixed by contract
- Customer or product discontinued
- Other (Please describe)Mandatory if Account Manager Review is 'Rejected'Account Manager inputNot relevant for initial Data loadRegionFormula field to capture the Sold-to Account ECCO Reporting RegionFormula fieldUse Global picklist valuesDimensionNot relevant for initial Data loadRejection descriptionFree textAccount Manager inputNot relevant for initial Data loadSold-ToAccount LookupCompact LayoutFor full CPC - Needs to be aligned with account access rules (confidentiality, roll up to managers)Retrieved from Sold To "SAP Code"; If failing to match during upload, needs to notify campaign owner
Check SAP Code at account level
. OverallNot relevant for initial Data load
Quantified_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 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-179
 and 
Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-180

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 objectsImage Added




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
Sold-To SAP NameFree textX


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

Sold_To_Code
Free text
__cText Area(255)

Yes
X
, on layout



47
Overall
Team ClusterPicklist
Team_Cluster__c

Formula (Text) This formula references multiple objectsImage Added




TEXT(Sold_To__r.Team_Cluster__c)

Formula field to grab value from Account;s Team Cluster

Dimension
No
48
Not relevant for initial Data load
Uncapped Recommended price - EUR

Uncapped_Recommended_price_EUR
NumericXMetrics
__cNumber(16, 2)

Yes, on layout


No
49
Not relevant for initial Data load
Uncapped Recommended price (%)
NumericXMetrics


Uncapped_Recommended_price__cPercent(16, 2)

Yes, on layout


No
50
Not relevant for initial Data load
Unit of MeasurementPicklist
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)Not relevant for initial Data loadWeighted average priceNumericXMetricsNot relevant for initial Data load
ApexClass 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

Image Added

Compact Layout Assignment

Image Added

Compact Layout Selected Fields


Image Added







Page Layout

See 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-230
 for new layout definition




Lightning Record Page (activated as Org Default)

Image Added

Image Added

Image Added







Validation Rules

See 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-228
 for updated solution


Validation Rule NameFormulaError MessageError Location
Account_Manager_Rejected


Code Block
languagejava
linenumberstrue
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


Code Block
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 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-220

Permissions

Detailed analysis being done in 

Jira
serverJira
serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
keyIPP-227


The object Pricing Campaign CPC needs to be aligned with Account access permissions (confidentiality, roll up to managers

  • Create fields, VR help texts on file below:https://docs.google.com/spreadsheets/d/1MMopKjSdW2La5TOA24Z250A0OVDv-lK_eDZpIWBymi4/edit#gid=1544071925

  • Note: new changes made to Google Sheet Data Dictionary on

    Added new field Sold-To SAP Name (free text

    )

    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 ?

  • Don’t create tab for this object

  • Create a “Pricing Campaign CPC” tab at Pricing campaign level


  • 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 - 

    Jira
    serverJira
    serverIdbbf5f9ee-7f3e-3274-bb6e-be12673f2166
    keyIPP-155

    Automations Required

    1. On record insertion - the field Sold-To (Account lookup) needs to be automatically populated with the Account found via the value available in the Pricing Campaign CPC field Sold-To Code - the Account field where the code can be queried is:

    SAP Code

    SAP_Sold_To_Number__c

    Text(10) (External ID) (Unique Case Insensitive)

    2. 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 labeled as Sold-To