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 HistoryRequiredRead OnlyPicklist Values or formulaProfile accessComments
Layout Section
Needed for initial Data Load (Kunal files)?
1Owner

OwnerLookup(User,Group)
Yes
Yes
(default)




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

See Automations Section - CPC Owner retrieval

Information

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

Account Manager input

3Annual sales

Annual_sales__cNumber(
18
16,
0
2)

Yes, on layout
Metrics




4Annual volume

Annual_volume__cNumber(
18
16,
0
2)

Yes, on layout
Metrics




5Capped Reco price - Document CurrencyCapped Recommended price - Document CurrUpdatedCapped_Reco price_Document_Currency__c
Currency
Number(
18
16,
0
2)
Not relevant for initial Data load


Yes, on layout


No
6Capped Reco price - Pricing Currency

Capped Recommended price - Pricing Curre

updatedCapped_Reco price_Pricing_Currency__c
Currency
Number(
18
16,
0
2)
Not relevant for initial Data load


Yes, on layout


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

Yes, on layout
OverallNot relevant for initial Data load



No
8Committed price

Committed_price__c
Currency
Number(
18
16,
0
2)Yes



See Automation Committed Price default value

Account Manager input


9Contracting model

Contracting_model__cText Area(255)
Dimension


Yes, on layout


No
Not relevant for initial Data loadNot relevant for initial Data load
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().

Dimension
No
11CPC StatusPicklist

ECCOPricingCampaignService,

ECCOPricingCampaignService_TEST

CPC_Status__c

Formula (Text) This formula references multiple objectsImage Modified




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




12Dataiku IDDataiku__c
Dataiku_ID__cText(50) (External ID)

Yes, on layout

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

Decision_logic_path_to_microsegment__cText Area(255)

Yes, on layout

To be aligned with Cheryl
Model DataNot relevant for initial Data load
No
14Document CurrencyPicklistupdatedDocument_Currency__cText Area(255)

Yes, on layout
Dimension



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 

DimensionNot relevant for initial Data load16Forecasted annual volume

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

No
16Forecasted annual volume

Forecasted_annual_volume__
Forecasted_annual_volume__
cNumber(
18
16,
0
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.

Metrics

Not relevant for initial Data load

relevant info for 

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

No
17FX rate used

FX_rate_used__cNumber(16, 2
17FX rate usedFX_rate_used__cNumber(18, 0
)

Yes, on layout
MetricsNot relevant for initial Data load



No
18Important features
18
Important_features_array__cupdatedImportant_features__cLong Text Area(32768)
Model DataNot relevant for initial Data load






No
19Last price

Last_price__cNumber(
18
16,
0Not relevant for initial Data load
2)

Yes, on layout
Metrics



Not relevant for initial Data load
No
20Local CurrencyPicklist
Local_Currency__cText Area(255)

Yes, on layout
Dimension



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

Overall

relevant info for 

22

Jira

Market segmentMarket_Segment__cText Area(255)

Yes, on layout

Dimension

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


22Market SegmentPicklist

ECCOPricingCampaignService,

ECCOPricingCampaignService_TEST updated

Market_Segment__cText Area(255)

Yes, on layout




No
Not relevant for initial Data load
23Microsegment (node)

Microsegment_node__cNumber(
18
16,
0
2)

Yes, on layout
Model DataNot relevant for initial Data load



No
24
24Not relevant for initial Data load
Modelling approach

Modelling_approach__cText Area(255)

Yes, on layout
Dimension



No
25Modelling level

Modelling_level__cText Area(255)

Yes, on layout
DimensionNot relevant for initial Data load



No
26Node price

Node_price__cNumber(
18
16,
0
2)

Yes, on layout
MetricsNot relevant for initial Data loadNot relevant for initial Data load



No
27Price reco rationale

Price_reco_rationale__cURL(255)

Yes, on layout

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

Pricing_Campaign__cLookup(Pricing Campaign)

Yes, visible only on Compact Layout

See Section Compact Layout below.

Dimensionon

On initial

load, 3 campaigns

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
creation
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 set
OverallNot relevant for initial Data load
No
30Pricing Increment - Document Currency

Pricing_Increment_Document_Currency__c
Currency
Number(
18
16,
0
2)


Yes, on layout


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

Pricing_Increment_EUR__c
Currency
Number(
18
16,
0
2)
Not relevant for initial Data load


Yes, on layout


No
32Pricing Increment - Pricing Currency

Pricing_Increment_Pricing_Currency__c
Currency
Number(
18
16,
0
2)
Not relevant for initial Data load


Yes, on layout


No
33Pricing region

Pricing_Region__cPicklist

Yes, on
creationNot relevant for initial Data load
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)

Overall




No
34Product

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

Retrieved from Product_Code__c - see Automations Section - Product retrieval

Overall

will come from Product code automation


35Product Code
Product_code__c
Text Area(
20
255)
(External ID)Yes, on creationYes, on layout

Dataiku source: material_group_product_lvl3_code 

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

Overall36Product H4Product_H4__cPicklistYes, on layoutGlobal Value Set: Product Hierarchy 4 NamesRestrict picklist to the values defined in the value setDimension

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

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

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 

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
37Projected sales impactProjected_sales_impact__cNumber(18, 0)Yes, on layoutOverall

Formula - will be used for Dataiuk entries only

38Quantified importance of featureQuantified_importance_of_feature__cNumber(18, 0)Yes, on layoutModel DataNot relevant for initial Data load39QuoteQuote__cLookup(Opportunity)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

Not relevant for initial Data load40Reason for rejectionReason_for_rejection__cPicklist
  • Competitive threat
  • Growth customer or initiative
  • Price fixed by contract
  • Customer or product discontinued
  • Other (Please describe)
Restrict picklist to the values defined in the value setAccount Manager inputNot relevant for initial Data load41RegionRegion__c

Formula (Text) This formula references multiple objectsImage Removed

Sold_To__r.Reporting_Region_ECCO__cDimensionNot relevant for initial Data load42Rejection descriptionRejection_description__cText Area(255)Account Manager inputNot relevant for initial Data load43Sold-ToSold_To__cAccount LookupCompact LayoutFor 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

OverallNot relevant for initial Data load44Sold-To SAP NameSold_To_SAP_Name__cText Area(255)Yes, on layoutTo store the SAP Name of the Sold-To "Account" as a text version read-only.Overall45Sold-To CodeSold_To_Code
__cText Area(255)Yes
, on creationYes, on layoutOverall46Team ClusterTeam_Cluster__c

Formula (Text) This formula references multiple objectsImage Removed

TEXT(Sold_To__r.Team_Cluster__c)

Formula field to grab value from Account;s Team Cluster

DimensionNot relevant for initial Data load





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
47Uncapped Recommended price - EURUncapped_Recommended_price_EUR__cNumber(18, 0)Yes, on layoutMetricsNot relevant for initial Data load48Uncapped Recommended price (%)Uncapped_Recommended_price__cPercent(18, 0
)

Yes, on layout
MetricsNot relevant for initial Data load49Unit of MeasurementUnit_of_Measurement__cPicklist

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




47Team 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

No
48Uncapped Recommended price - EUR

Uncapped_Recommended_price_EUR
50Weighted average priceWeighted_average_price
__cNumber(
18
16,
0
2)

Yes, on layout
MetricsNot relevant for initial Data load

Compact Layout

New Compact Layout

Image Removed

Compact Layout Assignment

Image Removed




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

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

Validation Rule(s)

Validation Rule NameFormulaError MessageError LocationAccount_Manager_Rejected
Code Block
languagejava
AND(ISPICKVAL(Account_Manager_Review__c,'Rejected'),ISBLANK(TEXT(Reason_for_rejection__c)))
Please provide a Reason for Rejection.Field: Reason for RejectionAccount_Manager_Review_cannot_be_null
Code Block
languagejava
firstline1
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 Pricingpopulate 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);

  • _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 PricingIf a match is found between Pricing_Campaign_CPC__r.ProductSold_To_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__= 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 no matching Producta match is found between Pricing_Campaign_CPC__r.Material_Group__c is found - leave Pricing_Campaign_CPC__r.Product__c = null

4. Committed Price default value

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

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 ?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.


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.

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

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

  • 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

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