This section explains the technical background of the Price Flexibility Package cycle. It consists of the following steps:
Detect Change
Changes can be detected only for the dependency level context. You can read about dependency levels concepts in Price Setting Package documentation in /wiki/spaces/ACCDEV/pages/2595946597, /wiki/spaces/ACCDEV/pages/2610626732 and /wiki/spaces/ACCDEV/pages/2962817818. When a change is detected, it is registered in LifecycleMonitor PX and one of the following happens:
- A new product was added to the system.
- A flag "New Product" is set in the LifecycleMonitor PX in the Lifecycle Status column.
- A flag "Needs Recalculation" is set in the LifecycleMonitor PX in the Calculation Status column.
- An observable attribute of an existing product was changed.
- A flag "Needs Recalculation" is set in the LifecycleMonitor PX in the Calculation Status column.
- A new value is set to the appropriate column of the LifecycleMonitor PX. These columns are defined by the EnrichMonitorPP CF and their indexes are stored in the ObservableAttributes PP.
- A change is detected if there is a pair of old and new values for any observed attribute.
- If an observable attribute of some product does not have a value, a placeholder <<null>> value is used to differentiate between an empty value and a missing value.
Add Product
Every changed product is added as a new element to LPGs defined in the PriceGridMapping PP. Price grids do not accept duplicate elements, so if a product is already there, nothing will happen, but the price will be changed accordingly on next recalculation.
Set Schedule
Products are added to the configured LPGs automatically after the scanning interval passes. By default it is every 24 hours. It can be changed by modifying the schedule in the DetectChangesSchedule PP.
Define LPGs
The number of LPGs may vary. They are configurable in the PriceGridMapping PP in the LPG Id column.
This is what the sample configuration could look like:
It is possible to to leave the Price List Id column entry empty. It will stop the process for a given LPG Id, so products will not be moved to a PL when approved and they will not be deleted from Price Grid when denied.
Example:
Every LPG can have its own calculation logic to receive their own result prices.
Move Product to LPG/PL
After a new product was approved in a LPG (when the user clicks the approve icon or if it is auto-approved by the assigned workflow), this price record is moved to the Price List which is configured in the PriceGridMapping PP in the Price List Id column. If any extended attribute (attribute1, attribute2, etc.) in the source LPG has a custom name and there is an attribute with the same custom name defined in the target Price List, the value will be copied from the source attribute to the correct attribute of the target.
Because of some API restrictions, we cannot copy all information that is available in the "Details" popup of PL/LPG. To avoid mismatch in the data, the target PL should not be used for price calculation – only for price storage, as the source LPG is already used for price calculations.
When the product information is moved to the target PL, the information about the old observed product attribute values is cleared from the LifecycleMonitor PX.
If the new product was denied by the user, it is removed from the LPG automatically and the information about the old observed product attribute values is cleared from the Lifecycle Monitor PX.
These operations are handled by the ProcessApprovalProductInMonitor CF. By default - every 1 hour.
Assign ToDo Item
"My ToDo List" will appear on the Classic UI homepage. The status now is OPEN. The user can approve or deny this task but it will be auto-approved once all elements are approved or denied in the LPG. It will be reopened when new items are added to the LPG, so no duplicate ToDos will be created.