Versions Compared

Key

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

Table of Contents
outlinetrue

Version Control

Version

Date

Description

Author

V0V1.0

2722/1203/20162023

DraftOriginal version

<name>Anton Solomin





Reference Documents

Description

Document Link



Definitions

Abbreviation

Definition 

CRM

Customer Relationship Management



Introduction

  • Overview

<include a summary of context / scope that it has been implemented, when existing, create link to functional Documentation>This is the documentation for the CORE's Pricing campaign module

  • Purpose of this document

<include a summary of the purpose of this document>

<Process Name> Technical Documentation

The purpose of this document is to explain the purpose of system components, behavior and it's structure for the Pricing Campaign module.

Pricing Campaign Technical Documentation

  • <Process Name>

    Technical Solution Overview

<Include all actions performed by Users Or System that will trigger System Actions to run (Workflows, triggers, flows, assignment rules, approval processes, email notification, Account Locks, components), if the process is too complex to describe in one diagram only, you can split it by Feature, or Phase, ...

...

<include rationale of the technical decision, for example, we are using 2 RT, why we need a first one, and a Second One>


  • Apex

    trigger Logic (including handlers)

<Include description of before Insert/Update, After Insert/Update, validations done at code level

Everytime the process trigger calls another trigger, just refer to the documentation of the 2nd trigger

Every time code need to refer to Custom Metadata or Custom Settings, include thsi information as Annex

  • Trigger

It is agreed with the platform that Pricing Campaign CPC trigger is a 'heavy' object therefore we are not mixing flow triggers, process builders, workflows etc. with apex triggers. All related logic needs to be executed in the Apex trigger.


Context

Method


Description

Before insert

Method a

Method b

After insert

Method c

Method d

Before update 

Method e

Method f

After Update

Method g

Method h

Before Delete

Method i

Method j

After Delete

Method k

Method l

Undelete

Method m

Method n

  • Lightning Components

<for each of the components describe according to the following points> 

  • Component Diagram

<when a component is using several components, include the architecture used>

  • Component Description

What is the purpose, rationale for customization instead of Standard,  explain advanced features implementation, 

  • Security (Apex only)

    • Apex Sharing
    • Methods without Sharing

...

Method Name

...

Reason why?

<List the methods that are running without sharing and describe reason why>

    • Bypasses and Custom Permissions

<by development guidelines, all validation rule needs to have the bypass, so we just say generically that all validation have it, and if for some reason we need to avoid bypass, then we need to list the validation rules without bypass, and explain reason why>

...

PP_Pricing_Campaign_CPC_Helper.doSetDuplicationRuleUniqueField


Set a duplication rule helper to prevent duplicate CPCs.

PP_Pricing_Campaign_CPC_Helper.doSetCommittedPrice


Set committed price & committed price in local currency.
PP_Pricing_Campaign_CPC_Helper.doSetAccountManagerReview
Set account manager review field.
PP_Pricing_Campaign_CPC_Helper.doSetShipToRegion
Find and set ship-to region.
PP_Pricing_Campaign_CPC_Helper.doCheckUtilities
Is the current user doesn't have bypass validation rules flag - validate utility lookups.
PP_Pricing_Campaign_CPC_Helper.doCheckRegionMarketPricing
Is the current user doesn't have bypass validation rules flag - validate RMPs lookups.
PP_Pricing_Campaign_CPC_Helper.doCheckIfProductIsAllowedOnQuote
Is the current user doesn't have bypass validation rules flag - validate whether the product is allowed on the quote.
PP_Pricing_Campaign_CPC_Helper.doPriceUpdate

After insert

PP_Pricing_Campaign_CPC_Helper.doProcessQueue


Start a queueable method to update CPCs in an asynchronous manner to save the platform resources. This can only be used when updating the fields that  we don't need to see immediately after update.
doSetContractProductSet the contract product on the CPC.
doSetSoldToRegionSet the sold to region on the CPC.
doSetFieldsSet the owner, corporate sold-to, region-country-city and product level 2 fields on the CPC.
doSaveLogsSave the results of the queueable transaction on error in SLV5_1_App_Log__c so that they can be inspected later.

Before update 

PP_Pricing_Campaign_CPC_Helper.doSetDuplicationRuleUniqueField


Set a duplication rule helper to prevent duplicate CPCs.

PP_Pricing_Campaign_CPC_Helper.doSetPriceSettingsUpdated


Set a flag that notifies the user that prices have changed.
PP_Pricing_Campaign_CPC_Helper.doSetCommittedPrice
Set committed price & committed price in local currency.
PP_Pricing_Campaign_CPC_Helper.doSetAccountManagerReview
Set account manager review field.
PP_Pricing_Campaign_CPC_Helper.doSetShipToRegion
Find and set ship-to region.
PP_Pricing_Campaign_CPC_Helper.doCheckUtilities
Is the current user doesn't have bypass validation rules flag - validate utility lookups.
PP_Pricing_Campaign_CPC_Helper.doCheckRegionMarketPricing
Is the current user doesn't have bypass validation rules flag - validate RMPs lookups.
PP_Pricing_Campaign_CPC_Helper.doCheckIfProductIsAllowedOnQuote
Is the current user doesn't have bypass validation rules flag - validate whether the product is allowed on the quote.
PP_Pricing_Campaign_CPC_Helper.doSetFields
Set the owner, corporate sold-to, region-country-city and product level 2 fields on the CPC.


  • Lightning Components

There's a number of LWC components that were created sometimes to extend the standard functionality and sometimes to accommodate completely custom logic not possible in standard. Here's an overview of LWC that are used in the Campaigns module:

LWC NameNested NestedDescriptionWhy not standard (description for not standard at the time of implementation)
customLookup

A custom lookup component that is used to let the user select a lookup field based on a given logic. Used in several places in the application. There's a standard lookup component, but there's no way to filter and sort the results.
customSelect

A custom select component that is used to display to the user a given set of options.There's not a standard picklist with a search functionality.
gen_dictionary

A resource to hold final front-end variables.A collection of static strings. Not possible in standard.
pp_newOneQuoteBase

This is the base component for the CPC to Quote flow. This flow requires functionality that is not possible in standard.

pp_newOneQuoteLineItemTable
A table that lets you select the CPCs that you want for a new Quote.This is a standard data-table.

pp_newQuoteRecordForm
This is the Quote form for the CPC to Quote flow that lets you set the fields.This is a standard form with some custom functionality. Not possible in a completely standard form.

pp_newExistingOneQuoteLineItemTable
A table that lets you select the One Quote Line Items from an Existing quote for a new Quote.This is a standard data-table.
pp_pricingCampaignBase

This is the base component to present campaign's CPCs to the user. This is used on the flexipage for the pricing campaign.This flow requires functionality that is not possible in standard.

pp_pricingCampaignReportRedirection
A component to display a link to redirect the user to the appropriate report.A custom redirect hypertext.

pp_pricingCampaignFilters
This is a component that allows the user to filter through the CPCs to find the ones they need. Some values come preselected. When one value changes, all the other available values are updated. The CPCs with the applied filters are displayed below in the table. No standard component available.

pp_pricingCampaignCurrencyBox
This is component to display to the user the currency conversion between different records. It uses some currency that are listed in the metadata that this LWC reads.No standard component available.

searchPickList
Generic Custom Dropdown with Search LWC.There's not a standard picklist with a search functionality.

pp_pricingCampaignRow
This is a base component that displays all the CPC related fields on a single table 'line'.This flow requires functionality that is not possible in standard.


pp_pricingCampaignOutputFieldThis is a component that displays a field. This is a standard field output with extended functionality.


pp_pricingCampaignConversionOutputA way to display to the user converted currency.There's not a standard picklist with a search functionality.

pp_pricingCampaignPagination
Custom pagination to improve usability of the pageNo standard component available.
pp_pollQueueableResult

Poll results of the queueable job to process up to 200 OQLIs.No standard component available.
pp_cpcRecommendedPriceUpdaterBase

Update multiple CPCs with recommended priceNo standard component available.

Image Added

Image Added

Image Added

Image Added

Image Added

Image Added

Image Added

Image Added


  • Custom Permissions

Custom PermissionDescription
PP_canRefreshCPCCustomSettingsEnables the user to refresh CPC price settings.
PP_canEditCampaignEndDateEnables the user to edit campaign end date.
PP_abilityToMassCreateRMPsEnables the user to see the button to mass create RMPs & volume brackets


  • Static Resources

Custom PermissionDescription
PP_WideModalCssCSS to display OQLIs table
  • Screen Flows

API NameLabelWhere is it usedDescription
PP_WideModalCss

CSS to display OQLIs table

Annex