In order to control price deviations at One Quote level, a custom approval process has been built. We built it in order to manage potentially different approvers per product lines.
Depending on the deviation one of the 3 roles below may need to approve:
To calculate the RMD and GMD approver role we use the corresponding approval thresholds % stored on the related volume bracket(2) and we calculate at OQLI level the "GMD approval" and "RMD approval" threshold unit values.
If the "enable scaling price" checkbox is enabled at OQLI level we compare the minimum price between Quoted price/ Price (Bracket 2) / Price (Bracket 3) to know if there is an approval needed or not.
We also implemented an absolute threshold logic to request an approval if the annual impact of the deviation will raise a certain amount.
Absolute thresholds are maintained at Custom metadata level (One Quote Approval)(3) and at the moment only Novecare use it.
For Novecare values are the below:
To give a concrete example how it works the system calculates the price impact versus the estimated annual volume.
Egs:
If an OQLI has a estimated annual volume at 150 000 kg, a price guidance at 2€/kg and a quoted price at 1,5€/kg. The annual impact is (2€-1,5€)*150 000 = 75 000€. On this example we meet the RMD aboslute thresold and an approval will be require even if we are above the RMD approval threshold.
For the system to find the right approver after an approver role is defined at OQLI level we maintain a matrix at utility level on the "One Quotes price deviation"(4) record type.
We look at the record with the same combination of GBU/BU/Region/Role and we retrieve the approver.
Edit access to this matrix is managed via sharing rule:
| Field Name | Comment |
|---|---|
| Estimated Annual volume | Use to calculate the annual impact to be compared with absolute thresholds. |
| Quoted Price | To be compared with thresholds to know if there is an approval needed. Use for GBU different than Novecare. |
Price (Bracket 2) | Use if scaling price is true. We compare the minum value between quoted price, price (bracket 2) and price (bracket 3) with thresholds to know if there is an approval needed. |
Price (Bracket 3) | Use if scaling price is true. We compare the minum value between quoted price, price (bracket 2) and price (bracket 3) with thresholds to know if there is an approval needed. |
| Quoted Margin | To be compared with thresholds to know if there is an approval needed. |
| Price Guidance | Use to calculate GMD and RMD Approval fields for GBU different than Novecare. |
| Margin Guidance | Use to calculate GMD and RMD |
| Price Floor | To be compared with the quoted price to know if there is a PAM approval needed when below. |
| Margin Floor | To be compared with the quoted margin to know if there is a PAM approval needed when below. |
| GMD Approval | To be compared with the quoted margin and the quoted price to know if there is a GMD approval needed when below. |
| RMD Approval | To be compared with the quoted margin and the quoted price to know if there is an RMD approval needed when below. |
| Approver Role | To track who will be the approver role to retrieve from the matrix. |
| Approval Status | To track the status of the OQLI on the approval process. |
| Approver | To track the approver Name. |
For more information on fields formulas please check
To send a quote for approval the One Quote owner has to click on the "Send for approval"(5) button at the top right of the LWC on the "Configuration and Product" tab.
Condition for the button to be displayed:
All the product lines have to be configured. An OQLI is considered configured as soon the "Product & Plant" and "Customer & demand" columns are fully populated.
As soon the button is pushed with no errors, the One Quote status is updated to "Sent for approval", the OQLI status of the lines requiring approval are updated to "Approval pending". All the lines with no approval needed are updated to approve.
The table and the quote are now in read only for the One Quote owner.
Note : Send for Approval & OQLI Price Settings
If at least one OQLI has has its price settings to False, then we display a Red Banner at the top of the line (10) + we greyed out the "Send foir Approval" (11) Buttons in order for the user not to be able to select it.
:
Whenever all OQLI have active price settings, then the Red banner disappear and the Send For Approval button is clickable.
This will happen when an account manager set new values of active Manuf/shipping plant on the inactive lines.
If you want to know more about OQLI Price setting please go here => FD - [CORE] Quote Price Settings
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-1-3_10-16-54.png](/download/attachments/798328229/image2023-1-3_10-16-54.png?version=1&modificationDate=1672741014560&api=v2)
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-1-3_10-15-50.png](/download/attachments/798328229/image2023-1-3_10-15-50.png?version=1&modificationDate=1672740950781&api=v2)
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-1-3_10-18-25.png](/download/attachments/798328229/image2023-1-3_10-18-25.png?version=1&modificationDate=1672741105490&api=v2)
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-1-3_10-19-42.png](/download/attachments/798328229/image2023-1-3_10-19-42.png?version=1&modificationDate=1672741182827&api=v2)
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-1-3_10-21-12.png](/download/attachments/798328229/image2023-1-3_10-21-12.png?version=1&modificationDate=1672741272324&api=v2)
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-2-7_16-44-12.png](/download/attachments/798328229/image2023-2-7_16-44-12.png?version=1&modificationDate=1675788251318&api=v2)
When the approver goes to the quote, all the lines where he's the approver are highlited in orange(6). A new "Approved" column is now displayed(7) for him to let him the possibility to approve or reject all his lines individually.
The approver has also the possibility to write a comment on the approval comment field on the LWC(8).
As soon all his decision are made, a "Send decision"(9) button is displayed at the top right of the LWC.
When the button is pushed, all approved lines are updated to approve and all rejected lines are updated to rejected.
Rejection process:
If a line is rejected, the One Quote owner has the possibility to edit again the line and review the approver comment to edit the price or delete the line. Then he will need to send for approval again to move forward.
As soon all the lines status are "Approved", the One Quote status is automatically updated to "Approved" and the owner can move forwards on the process.
![]()
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-1-3_10-25-57.png](/download/attachments/798328229/image2023-1-3_10-25-57.png?version=1&modificationDate=1672741557850&api=v2)
Notifications are send by email and on the salesforce bell when the events below happens:
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image-2024-3-28_14-54-34.png](/download/attachments/798328229/image-2024-3-28_14-54-34.png?version=1&modificationDate=1711637673432&api=v2)
When a quote is moved to Approved some automation are done by flow :
As an AM I can keep the approval of my Quote Line Items after I have move the quote back to draft or renew if certain conditions are met:
More details here:
1) When an Approver sets a decision in a Quote Line Item (Approved or Rejected) the system generates now an approval snapshot. This is a new object related to the Quote Line Item:
2) If the quote line item is moved to draft or renewed the system can use the Approval Snapshot to "remember" the approval if the conditions below are met:
3) If all the conditions above are met, then the quote line item status is set to Approved. There is a new field at Quote Line Item level named "Smart Approved?" to differentiate approvals given by an approver vs smart approvals. Pricing teams can used this to run reports.
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-4-18_8-11-26.png](/download/attachments/798328229/image2023-4-18_8-11-26.png?version=1&modificationDate=1681805487195&api=v2)
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-4-18_8-14-45.png](/download/attachments/798328229/image2023-4-18_8-14-45.png?version=1&modificationDate=1681805685576&api=v2)
Smart Approvals Process Flow
![Pricing Front End - 11240 > FD - [CORE] 5 - Approval > image2023-4-18_8-17-56.png](/download/attachments/798328229/image2023-4-18_8-17-56.png?version=1&modificationDate=1681805876498&api=v2)