Promotion release notes
  • 24 Mar 2025
  • 8 Minutes to read
  • Contributors
  • Dark
    Light
  • PDF

Promotion release notes

  • Dark
    Light
  • PDF

Article summary

Released 24.03.2025

Promotion type code, layout (RTC-42692)

Once the promotion type code is set in register, it cannot be changed anymore.
After entering offer there is a section 'Details' with the following fields from the top: 'Offer name', 'Offer id', 'Offer code' and section 'Properties' with 'Offer type', 'Member offer', 'Customer group offer', 'Coupon offer', 'Bundle offer' and 'All sales channels'. 'Description of changes' is moved to the right side, after 'Schedule' section.

Performance of offer with models (RTC-43547)

Improved performance of following actions on offer with many models: remove offer, clear selection, edit promotion details.

Adding items to offer (RTC-46143)

Items are added to offer when creating new promotion from item list view or item group list view in Item Management.

Default values in offer copy (RTC-46854)

When copying promotion or offer, default values defined on offer are also copied.

Handle price locks in offer items API (RTC-44474)

If item has a price lock and should not be added to the offer, when adding offer group items to the offer via API request, items are not added. Price lock rules are exactly the same as when adding items to offer in UI. Request response is extended with value itemsNotAddedDueToPriceLockCount. Additionally, there is error type 'NotAddedDueToPriceLock' and errorMessage "Item with identifier (SKU: SKU1, GTIN: GTIN1, ExternalItemNo: ExternalItemNo1) is pricelocked". Example of response is added to Swagger.

Migration to .NET 8 (RTC-42416)

Promotion module is migrated to .NET 8.

API for promotion prices with given item and given store (RTC-47394)

Endpoint (/api/gateway/ItemPromotionPrices) in Promotion Service returns promotion prices for the given item ('promotion price' offers in which item is added). SKU or mainGTIN item identifier must be provided as query parameter. Optionally storeNo can be used to get offers that affect specific store (including promotions on related profiles, teams and all stores). When item is deleted from offer, it is not returned.

Response contains: id (of offergroupitem, used for default sorting), promotionNo, offerNo, offerGroupItemIdentifier (GUID used in POS), storeGroupIdentifiers, storeIdentifiers, status (Draft, PendingApproval, Approved), promotionPrice (promotion price of item), reservedForMembers (Member offer), validFrom, validTo.

Import of offers with mix 10/13/39 (RTC-47756)

Offer with mixType 'BuyNOrMoreAndGetDiscountPerPiece' is marked as supported in the Swagger documentation and can be imported via 3rd party and API.

Fix: duplicate documentation for mix 10 (RTC-48440)

Removed duplicated information about mix 10/13/39 in Swagger.


Released 03.03.2025

Import of offers with mix 46 (RTC-46777)

Offer with mixType 'AdditionalPaybackOnAllItems' is marked as supported in the Swagger documentation and can be imported via 3rd party and API.

Same as in user interface, mixes 42 and 46 can be imported only when customer card is configured in Promotion database for specific tenant, has to be a value supported by POS.

In import contract, if customer card is null, offer will be created with default card (first one). Other cards values can be imported if they are configured.

Handle duplicated models (RTC-47074)

In importing Excel file with offer group items on model or variant level, when there are duplicated lines that refer to same model or variant, all rows are imported properly. Fixed bug that stopped processing of rows on batch with duplicated lines.

Access control improvement (RTC-44978)

Improved handling of access control for users with access to limited stores.

Duplicated logs of OfferGroupProcessor job (RTC-44957)

Information about how many items in offer group has price or has no price is only logged once in the logs for processing and syncing item selection.


Released 25.02.2025

Mix 46: Pay with customer card and get additional payback on all items

Conditions:

  • Customer card name - customer card that is used for the payment. Available only when configured in Promotion database for specific tenant, has to be a value supported by POS. Defined in price rule.

Reward:

  • Additional payback in percent or amount. Defined in price rule or editable on offer.

Offer with mix 46 applies to all items, so there is no item selection. Mix 42 is renamed to 'Pay with customer card and get additional payback on selected items' and customer card name is required field. Customer card name is exported on promotion offer level on mixes 42 and 46 and on offer group item level for mix 42.

Copying promotion and offer (RTC-45232)

If a user wants to copy promotion or offer and promotion contains at least one offer that has schedule defined, modal with question if offer schedules should also be copied appears. Schedule period of offer visible in copy promotion view.

When copying promotion 'valid from' and 'valid to' dates are also copied. 'Valid from' is adjusted to now if it's in the past. If both dates are in the past, 'valid from' is adjusted to now and there is validation for 'valid to'. Finished promotion dates are not copied (as before).

When copying offer and 'valid to' is in past schedule is removed. If 'valid to' is in future but promotion ends earlier than offer 'valid to' of offer is set to 'valid to' of promotion. If 'valid from' is in past and target promotion is active, this date is changed to now. If 'valid from' is in past and target promotion is planned, is changed to 'valid from' of promotion.

Fix: incomplete offers (RTC-46179)

For mixes with multiple offer groups, incomplete status of offer (due to incomplete price rule) is set properly when creating new promotion or copying incomplete offer.

Coupon export on offer group item (RTC-47637)

Export of offer group item to blob contains offerTriggerType and offerTrigger code of offer.


Released 12.02.2025

Sales channel (RTC-46180)

Sales channel can be set on offer by import and API request. It is defined as sales Channels list as documented in Swagger. It is set to 'All sales channels' if imported with null or when list contains all supported values.

Import offers with internal coupon (RTC-45370)

It is possible to set 'Internal coupon' on offer by import of JSON file and API request. That is done by 'InternalCoupon' value of 'offerTriggerType'. 'OfferTriggerCode' cannot be set for such trigger type. If offer exists with 'InternalCoupon' trigger, that value cannot be changed during update (offerTriggerType is ignored).

Model number in item search (RTC-44925)

Model number and external model number columns in item search modal grid show correct values.

Offer group processor adjustments for multiple store groups promotions (RTC-43121)

When promotion is on multiple store groups, OfferGroupProcessor job does lookup for ordinary price in each store group. For example, when promotion is on multiple stores, but item has a ordinary price only on one of them (or its store group), then the item is added to the offer properly. That applies to all ways of adding items to offer groups.


Released 03.02.2025

Offer group items redirection (RTC-45328)

When loading page on URL /promotions/id/offers/id/groups without defining offer group id, page for first offer group in offer is opened.

Offer trigger type: internal coupon (RTC-45369)

New radio button named 'Internal coupon' is added to offer details below 'Coupon offer' checkbox. It's visible when 'Coupon offer' is selected. If user select 'Internal coupon', the selection cannot be undone and other options are no longer visible. Value is properly exported to JSON file. 'General coupon' rename to 'discount code'.

Price locked offers (RTC-44956)

When removing promotion or offer with price lock, price lock is also removed and is not visible in 'Items with price lock' grid. Price locks for not approved promotions also are not visible in mentioned grid.

Sales channel (RTC-46174)

Sales channel can be selected when creating new offer or updating existing one. 'All sales channel' checkbox is selected by default and for all existing offers. When unselected, sales channels can be chosen from the dropdown list. Available options are:

  • Cashier,

  • Self-service,

  • Web shop,

  • Handle device,

  • Mobile phone.

Sales channels are exported to blob on offer level. It is null when 'All' is selected.

Import of offers with mix 42 (RTC-46104)

Offer with mixType 'AdditionalPaybackOnSelectedItems' is marked as supported in the Swagger documentation and can be imported via 3rd party and API. Items can be imported to such offer. Kickbacks are not supported.

Mix 42: Additional payback on selected items (RTC-21597)

User can get additional payback on selected items. There is input for value and selector for % or amount.

Import of offers with mix 105 (RTC-45104)

Offer with mix type 'DiscountOnWeightItemCollection' (mix 105) can be imported from 3rd party. It can also be created by API request. It is marked as supported in the Swagger documentation. It is possible to import items to such offer.

Column (RTC-44651)

'Kickback chain' and 'kickback supplier' (amount) columns are added to the offer group items view for item list and segmentation.

Price locked items in items in promotions grid (RTC-42559)

Items that are not added to the offer due to price lock are not displayed in 'Items in promotions' grid. They are ignored when checking period overlapping for items in other offers on that page ('Period overlaps' column and information in modal).

Fix: bugs related to price lock dates (RTC-45070)

'Items with price lock' grid can be filtered by 'Locked from' and 'Locked to' columns. Correct dates are exported to Excel file.

"Locked from' and 'Locked to' dates of price lock are kept in database without time.

Schedule offer period for one day (RTC-44927)

It is possible to schedule offer period for one day. When offer period valid from and valid to dates are the same, offer is active/inactive only on that day.


Released 13.01.2025

Performance (RTC-45151) 

Performance of the overlapping views is optimized.

Support multiple Voyado instances (RTC-45709)

Voyado integration setup in Promotion Management Tenant Admin is replaced with usage of VoyadoGateway2 service and usage of 'Would you like to use Voyado Integration?' option from System Parameters page. When 'No', 3rd party integration coupon on offer is hidden. If 'One Voyado instance' is selected, 3rd party integration coupons can be created/updated as before (in default Voyado instance set in VoyadoGateway2).

When 'Multiple Voyado instances' is selected, 3rd party integration coupon can be added to the offer only if profile of promotion, or profile of store of promotion is assigned to Voyado instance on System Parameters page. Depending on profile assignment to instance, coupon will be created in proper instance of Voyado system. Instance number mapping to Voyado instances is set up in VoyadoGateway2. 3rd party integration coupon cannot be added to promotion on levels: all stores, team, multiple profiles or stores that are assigned to different instances. When coupon is added, instance in which coupon was created is saved on offer level in database. Then, if profile assignment to instance has changed, in case of promotion or offer update, coupon is updated in instance where it was originally created.

Mix 105: Discount on weight items collection ((RTC-44705))

Fields to define in this mix type are:

  • Conditions: Min. kg of item to activate discount, Max. kg of item that can get discount, Subtotal requirement (Min. receipt amount, Min. amount of other items).

  • Reward: Discounted price (New price, Percent, Amount), Applies per kg flag.

This mix is similar to mix type 5, but extended with more discount types, 'Applies per kg' option for discount, and possibility to use item selection instead of single item.

Mix details for offer using mix 105 are properly exported.

Mix 105 - Price rule details



Was this article helpful?

ESC

Eddy AI, facilitating knowledge discovery through conversational intelligence