3.13.26

Release Date: 2025-01-16

Software Version

The document refers to the following applications and corresponding software versions:

Application Version
Promotion Calculation Engine 3.13.26

What's New

Issue Key Release Notes Note
PPCE-8043

Transaction-related non-monetary benefit proration improved

The virtual discount and loyalty points share proration of transaction-related promotions have been improved.

  • Non-monetary discount: previously, if the adjustment amount to be assigned to the last item was found to be invalid by the validation logic, then the proration failed all together. After the adjustments, the remaining amount is assigned to the rest of the proration items.
  • Loyalty points:
    • If the total benefit is not exactly distributed among the proration items, the applied correction is also rounded by the points share rounding rule. If the applied correction is invalidated on the last item by the validation logic, it is assigned to the rest of the proration items.
    • If, for some reason (e.g. due to rounding), an item in the proration list does not receive a bonus points share, it will receive zero bonus points share if this is allowed in the configuration.

If all virtual discount or loyalty points shares are considered invalid, the corresponding promotion is not applied.

As a result, expectations for the following JBehave stories had to be corrected:

  • cha_incentive_points_19.story
PPCE-8005

Compatibility with Spring 6.1.x and SpringBoot 3.3.x

From now on, PCE is compatible with Spring 6.1.x and SpringBoot 3.3.x. Minor compatibility issues have been fixed.

PPCE-7934

Improved transaction-related promotion rounding calculation

The calculation of the discount share rounding amounts for transaction-related promotion price derivation rules has been corrected. The rounding amount is the difference between the calculated, unrounded discount share and the finally assigned, rounded discount share value. In case the total discount amount cannot be assigned to the line items (due to rounding or invalid discount shares), the remaining unassigned amount is added to the rounding amount of the last item(s).

PPCE-7888

Accept the TriggerSequenceAddend for externally applied manual promotions

The TriggerSequenceAddend is now considered for externally applied manual promotions. This means that the next promotion that could be applied internally must have a sequence that is greater than the sum of the sequences from an externally applied promotion and the TriggerSequenceAddend.

PPCE-7881

Refactor the LineItemSummaryValues

Refactoring has been performed to not mix the usage of fields appliedQuantity and calculationBaseQuantity. The logic that handles the BuyNGetM topic has been moved from AbstractRebateDistributionService to the implementation of AbstractNormalizedItemModifierCreator.

PPCE-7862

Transaction-related discount proration improved

The discount share proration of transaction-related monetary discounts has been improved. Previously, if the adjustment amount to be assigned to the last item was found to be invalid by the validation logic, then the proration failed all together. After the adjustments, the remaining amount is assigned to the rest of the proration items or if it not possible for a remaining amount to be assigned to any item, it will be accounted for in the shared rounding amount.

Resolved Issues

Issue Key Release Notes Note
PPCE-7964

Triggering line items without benefit do not get modifier references when the total price modification method is used

As long as the promotion is successfully applied, all triggering items get a modifier reference, even if they do not get any benefit due to price increase, zero discounts or for any other reason.

PPCE-7951

M&M does not grant zero virtual discount when allowZeroRebate is set to false

Zero virtual discount (virtual discount types are: GIFT_CERTIFICATE("01"), TENDER("02"), COUPON("04"), MANUFACTURER_COUPON_TENDER("99")) must always be applied regardless of the rule type and allowZeroRebate flag state. This bug has been fixed.

PPCE-7947

Exception when deserializing an unknown eligibility during recommendation

The GK-specific object mapper has been configured so that it does not fail when an unknown eligibility type is loaded during a recommendation process.

PPCE-7922

NPE during validation of an unknown eligibility type for recommendation when TRACE log level is active

During validation of an eligibility with an unknown eligibility type for recommendation, the PCE could throw a null pointer exception when a TRACE log level was active. This bug has been fixed.

PPCE-7886

GiftCertificateExpirationDate in PCE response contains time zone information

Description of the GiftCertificateExpirationDate in the swagger file describing the recalculate-transaction API v1 has been updated to match the current format of a value returned by the PCE. The time zone or even the time information itself is not needed there, but changes to the data format could cause compatibility issues on the client side. This is why the time zone information is still provided in the recalculate-transaction v1 response as before.

PPCE-7854

ExclusiveConditionDiscountablePositionHandler performance issue

A bug that caused significant performance degradation when a transaction-related promotion was applied on top of a line item-related promotion has been fixed. In addition, the ExclusiveConditionDiscountablePositionHandler also considers FrequentShopperPointsModifiers and externally applied modifiers from now on.