Retail Discount Design – Mix and Match with Amount Qualification

We covered mix and match with fixed quantity in the past. What about minimal amount threshold? Setup One qualifying group with amount threshold One application group with fixed quantity Example: buy shirts worth $100+, get a free tie. Preliminary analysis In general, it is not suited for the dynamic programming algorithm for discount best deal…

0

Dynamics Retail Discount Extensibility – Multiple ISVs

The core of Dynamics retail discount extensibility is to allow new discount types, and it is natural for a customer to employ new discount types from multiple ISVs. The post is also a replacement of an early post of how to register a new discount type. The issue with the original retail discount store approach…

0

Dynamics Retail Discount Extensibility – Sample Test

It is under private review. If you need it now, ping me or your Dynamics retail extensibility team contact. We build sample test (Runtime.Extensions.PricingEngineSample.Tests in sample SDK) on top on the Dynamics retail pricing engine test foundation. Mock your new discount type (Folder TestDataManager) Extends PeriodicDisocuntData and PeriodicDiscountLineData from test foundation. See ExtensionDiscountData and ExtensionDiscountLineData….

0

Dynamics Retail Discount Extensibility – Test Foundation

Creating a new discount type is a complex task as we really need to understand how discount works functionally. Assuming we have just created a new discount type, how do we test it out? We can always deploy it to Dynamics Lifecycle Services sandbox and test it out there. I have tried it myself a few…

0

Dynamics Retail Discount Extensibility – Main Picture

Prerequisite: we assume you are familiar with Dynamics Retail Commerce Runtime framework and Dynamics AX. One pricing engine serves all retail channels All retail channels: store POS, call center orders and store front orders share the same pricing engine. Call center is part of AX, while POS and store front utilize commerce runtime framework via…

0

Dynamics Retail Discount Sample – Rounding

Rounding is hard. Sometimes, we do not have a choice. Let’s get down to code. PriceContext.HoldTogetherForDisocuntRounding = false Example first: $10 distributed to quantity 7, down to penny, Smallest amount: $0.01 Unit amount not-rounded is $1.42857143 (10 / 7) Take the floor: $1.42 Remainder: $0.06 ($10 – 7 * $1.42) Remainder / smallest amount: 6…

0

Dynamics Retail Discount Tribe – Rounding

Rounding is a pain. And rounding is not cheap either, if you round too often. In Dynamics retail discount engine, the general guideline is not to round when getting the basic discount applications (or discount application multiples) and when calculating discount deal estimate. We round when we applied a discount application and when we total…

0

Retail discount: Rounding I

When I first encountered rounding in retail discount, I wanted to solve it in discount design, i.e. prevent it from happening if possible. Unfortunately, we cannot. If you have a threshold discount of $10 off with purchase $50 or more and you buy three of the same products, I cannot round it per unit and…

0

Dynamics Retail Discount Concept: Effective Discount Method for Compound Ordering

In the concurrency control model of best price and compound within priority and no compound across, we can have multiple compounded discounts of the same priority, so which one to discount first? We could have a new property on the discount that indicates the ordering, but we have never had it. Instead, we rely on…

0

Dynamics Retail Discount Tribe – Discount Totaling For Best Price Within Priority

Let’s recap the compounding behavior for concurrency control model of best price within priority and compound across before hitting discount totaling. No compound within priority for each of non-threshold discounts and threshold discounts. Compound across priority for each of non-threshold discounts and threshold discounts. Compounded threshold discounts can compound on top of compounded non-threshold discounts,…

0