Price Setting Package 2.4.0
his document summarizes fixes introduced in the Accelerate Price Setting Package release version.
Version | 2.4.0 |
---|---|
Release Date | Jul 2024 |
In this document:
Upgrade Notes
Return value of custom strategies has a different format. Previously it was either Map or BigDecimal. Now it can be only Map and we recommend usage of "result" key instead of "price" inside this Map. (PFPCS-7298)
New Advanced Configuration entry configuring behavior of Strategy Designer needs to be added. The name of entry is “strategyDesigner”. Its value:
{ "groovyLibraryName": "CustomPricingStrategiesLib", "customBlocksGroovyLibraryName": "StrategyDesignerCustomBlocks", "excludedParameters": [], "deploymentLogicName": "StrategyDesignerDeployment", "livePreviewDependencyLevel": "Global", "dependencyConfigurationTable": "DependencyConfiguration", "priceListLogicName": "IndependentPriceListLogic", "additionalParameters": { "SECONDARY_KEY": { "label": "Secondary Key", "tooltip": "Secondary Key", "type": "string" } } }
StrategyDefinition has been split into 2 different PP tables:
PSP_EngineCalculationConfig of JSON type
Type: JSON
Columns:
name (key)
attributeExtension___calculationEnginePath (path to calculating function)
attributeExtension___engineCalculationParameters (input parameters to engine passed from PSP)
Standard configuration:
name,attributeExtension___calculationEnginePath,attributeExtension___engineCalculationParameters AnchorEngine,libs.CalculationEnginesLib.AttributeBasedEngine.calculatePrice,"CONSTANT_STRING(PP),CONSTANT_STRING(AnchorData),CONSTANT_STRING(Anchor),CONSTANT_STRING(SKU),CONSTANT_STRING(FactorToAnchor),SKU,FINAL_LIST_PRICE_ELEMENT_NAME,FINAL_PRICE_ELEMENT_NAME" AttributeBasedEngine,libs.CalculationEnginesLib.AttributeBasedEngine.calculatePrice,"CONSTANT_STRING(PP),CONSTANT_STRING(AnchorData),CONSTANT_STRING(Anchor),CONSTANT_STRING(SKU),CONSTANT_STRING(FactorToAnchor),SKU,FINAL_LIST_PRICE_ELEMENT_NAME,FINAL_PRICE_ELEMENT_NAME,DEPENDENCY_PROPERTIES,STRATEGY_NAME" AvgCompetitionEngine,libs.CalculationEnginesLib.CompetitionEngine.calculatePrice,"CONSTANT_STRING(),CONSTANT_STRING(),CONSTANT_BIG_DECIMAL(),CONSTANT_STRING(No),CONSTANT_STRING(50%),COMPETITOR_PRICES,MINIMUM_MARGIN_PRICE" CompetitionEngine,libs.CalculationEnginesLib.CompetitionEngine.calculatePrice,"CONSTANT_STRING(min),CONSTANT_STRING(),CONSTANT_BIG_DECIMAL(),CONSTANT_STRING(No),CONSTANT_STRING(),COMPETITOR_PRICES,MINIMUM_MARGIN_PRICE" CostPlusEngine,libs.CalculationEnginesLib.AdjustmentEngine.calculatePrice,"CONSTANT_STRING(Percentage),PRODUCT_COST,PLUS_FOR_PRODUCT_PERCENTAGE, PLUS_FOR_PRODUCT_ABSOLUTE" KitEngine,libs.CalculationEnginesLib.KitEngine.calculatePrice,"SKU,BOM_LIST,FINAL_LIST_PRICE_ELEMENT_NAME,FINAL_PRICE_ELEMENT_NAME" MaxCompetitionEngine,libs.CalculationEnginesLib.CompetitionEngine.calculatePrice,"CONSTANT_STRING(max),CONSTANT_STRING(),CONSTANT_BIG_DECIMAL(),CONSTANT_STRING(No),CONSTANT_STRING(),COMPETITOR_PRICES,MINIMUM_MARGIN_PRICE" MinCompetitionEngine,libs.CalculationEnginesLib.CompetitionEngine.calculatePrice,"CONSTANT_STRING(min),CONSTANT_STRING(),CONSTANT_BIG_DECIMAL(),CONSTANT_STRING(No),CONSTANT_STRING(),COMPETITOR_PRICES,MINIMUM_MARGIN_PRICE" NetEngine,libs.CalculationEnginesLib.NetEngine.calculatePrice,"CONSTANT_STRING(PX),CONSTANT_STRING(RecommendedRetailPrices),CONSTANT_STRING(rrp),CONSTANT_STRING(),CONSTANT_STRING(),CONSTANT_STRING(DependencyLevelName),SKU,TARGET_DATE,DISCOUNTS,DEPENDENCY_INFORMATION_VALUES" PriceIncreaseEngine,libs.CalculationEnginesLib.AdjustmentEngine.calculatePrice,"CONSTANT_STRING(Absolute),BASE_PRICE,PRICE_INCREASE_PERCENTAGE,PRICE_INCREASE_ABSOLUTE" PromotionLookupEngine,libs.CalculationEnginesLib.LookupEngine.calculatePrice,"CONSTANT_STRING(PX),CONSTANT_STRING(PromotionPrices),CONSTANT_STRING(promotionPrice),CONSTANT_STRING(validFrom),CONSTANT_STRING(validTo),CONSTANT_STRING(DependencyLevelName),SKU,TARGET_DATE,DEPENDENCY_INFORMATION_VALUES" RRPLookupEngine,libs.CalculationEnginesLib.LookupEngine.calculatePrice,"CONSTANT_STRING(PX),CONSTANT_STRING(RecommendedRetailPrices),CONSTANT_STRING(rrp),CONSTANT_STRING(),CONSTANT_STRING(),CONSTANT_STRING(DependencyLevelName),SKU,TARGET_DATE,DEPENDENCY_INFORMATION_VALUES"
StrategyDefinition
Type: Matrix2
Columns:
key1 (StrategyName)
key2 (Level – Independent/Dependent)
attribute1 (CalculationEngine – name of the record from PSP_EngineCalculationConfig)
attribute2 (ParentLevelOnly)
attribute3 (ParentLevelPriority)
attribute4 (Overridable)
attribute5 (MandatoryStrategy)
attribute6 and attribute7 are no longer used
Standard configuration:
key1,key2,attribute1,attribute2,attribute3,attribute4,attribute5,attribute6,attribute7,attribute8,attribute9,attribute10,attribute11,attribute12,attribute13,attribute14,attribute15,attribute16,attribute17,attribute18,attribute19,attribute20,attribute21,attribute22,attribute23,attribute24,attribute25,attribute26,attribute27,attribute28,attribute29,attribute30 Anchor,Dependent,AnchorEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Anchor,Independent,AnchorEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, AvgCompetition,Dependent,AvgCompetitionEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, AvgCompetition,Independent,AvgCompetitionEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Cost+,Dependent,CostPlusEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Cost+,Independent,CostPlusEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Kit,Dependent,KitEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Kit,Independent,KitEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MaxCompetition,Dependent,MaxCompetitionEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MaxCompetition,Independent,MaxCompetitionEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MinCompetition,Dependent,MinCompetitionEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MinCompetition,Independent,MinCompetitionEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PriceIncrease,Dependent,PriceIncreaseEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PriceIncrease,Independent,PriceIncreaseEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PromotionBased,Dependent,PromotionLookupEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PromotionBased,Independent,PromotionLookupEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RRP,Dependent,RRPLookupEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RRP,Independent,RRPLookupEngine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
As you can see above, AdditionalEngineConfiguration inputs are no longer used in PSP engines. These have been replaced by inline engineCalculationParameters. PPs like
AnchorAdditionalConfig
,AvgCompetitionAdditionalConfig
,CostPlusAdditionalConfig
,MaxCompetitionAdditionalConfig
,MinCompetitionAdditionalConfig
,PriceIncreaseAdditionalConfig
,PromotionLookupEngineConfig
,RRPLookupEngineConfig
have been removed from StandardConfiguration and are no longer used in PSP.WarningConfig changes:
Below error codes are no longer used:
UNSUPPORTED_PARENT_SOURCE_TYPE
INVALID_PARENT_SOURCE_ID
Below entry has been added to StandardConfig:
ERROR_GETTING_PARENT_ITEM_CONFIG,*,Couldn't read config of parent PL/PG.,Verify if parent PL/PG exist.,Data,Red,Yes,Yes,,,,,,,,,,,,,,,,,,,,,,,,
DependencyConfiguration changes:
PP now has only 2 keys; key3 and key4 responsible for selecting parent PG/PL have been removed.
Selection of parent PG/PL will happen independently for each PG/PL now
Each of old PL/PG needs to be configured before recalculation:
There is a new input in the configurator, for selecting parent PG/PL.
Input for DependencyLevel has been renamed, the value needs to be re-entered.
Entry “Price Calculator” has been renamed to “Engine Calculator” in PriceSettingConfig PP.
New Features and Improvements
New Feature Description | ID |
---|---|
PriceCalculator behaviour has been transferred to a more universal object "EngineCalculator". As a consequence, StrategyDefinition PP has been split into two tables: StrategyDefinition (handles strategy) and PSP_EngineCalculationConfig (handles engine, i.e. executable logic). | PFPCS-7298 |
Strategy Designer now contains a new parameter "SECONDARY_KEY". This value is always filled in Price Setting Accelerator and passed to EngineCalculator. | PFPCS-8122 |
Deprecated APIs are no longer used in the Price Setting Package. | PFPCS-8124 |
The error message "Unresolvable engine" has been improved to: "Passed parameter is invalid: customPath [$path] passed to calculator is incorrect." | PFPCS-8125 |
PriceChangeEffect is now part of the Transactions module instead of Core. | PFPCS-8126 |
Filters did not work properly on data uploaded with the data-load PfM step. To fix this, the filters handle now both empty strings and null values. | PFPCS-8127 |
Custom engine path with leading or trailing whitespaces no longer causes execution errors in PSP_EngineCalculationConfig. | PFPCS-8154 |
In bootstrapping tables, Product Id is now displayed instead of sku. | PFPCS-8156 |
Currency signs have been added to column labels where needed. | PFPCS-8157 |
There are two new columns in Prices Matrix: the first one with used strategy, the second one with information "Is Base Strategy". | PFPCS-8160 |
All fields are visible by default in bootstrapped PPs. | PFPCS-8161 |
After deploying PSP, StrategyDesigner AP (AdvancedConfiguration) is present and deploying a new strategy from strategyDesigner updates StrategyDefinition and PSP_EngineCalculationConfig tables properly. | PFPCS-8176 |
To make parent price lookup more easy and flexible, it is no longer handled by static configuration in a Dependency Configuration PP table; instead there is a new configurator which dynamically fetches parent PL/PG. | PFPCS-8177 |
Libraries in PSP have a new return format - Map (instead of BigDecimal). The Map contains these keys: "result", "message" and "additionalInfo". | PFPCS-8215 |
Only PPs with the status Active are now offered when you update their metadata based on new dimension setting. | PFPCS-8378 |
There is a new custom function "Optimized List Price" in Strategy Designer which can be easily used in a strategy. | PFPCS-8494 |
Fixed Issues
Bug Description | ID |
---|---|
When the StrategyConditions module is turned on and you calculate LPG, you get an error starting with "Unhandled error: No signature of method...". | PFPCS-8555 |
Integration between the List Price Optimization accelerator and PSP accelerator does not work for both versions of LPO, v1.0 and v1.1. While it works with v1.0 models, v1.1 logics are currently required. | PFPCS-8616 |