Dynamics Retail Discount Extensibility – Register a New Discount Type

Update: this is out of date. The replacement: Dynamics Retail Discount Extensibility – Multiple ISVs

We have some code snippets of how to register your new discount type.

Customized retail discount store

     public class CustomizedRetailDiscountStore : RetailDiscountStore<br>    {<br>        protected override DiscountBase CreateDiscount(PeriodicDiscount discountAndLine)<br>        {<br>            if ((int)discountAndLine.PeriodicDiscountType == TeaserDiscount.PeriodicDiscountOfferTypeTeaser)<br>            {<br>                return new TeaserDiscount(discountAndLine.ValidationPeriod);<br>            }<br>            else if (discountAndLine.PeriodicDiscountType == PeriodicDiscountOfferType.Offer)<br>            {<br>                object quantityLimitObject = discountAndLine.GetProperty(ExtensionDiscountOfferQuantityLimitString);<br>                if (quantityLimitObject != null)<br>                {<br>                    int quantityLimit = (int)quantityLimitObject;<br>                    if (quantityLimit > 0)<br>                    {<br>                        return new OfferDiscountWithQuantityControl(discountAndLine.ValidationPeriod, quantityLimit);<br>                    }<br>                }<br>                return new OfferDiscountWithLineFilter(discountAndLine.ValidationPeriod);<br>            }<br>            else<br>            {<br>                return base.CreateDiscount(discountAndLine);<br>            }<br>        }<br>        protected override RetailDiscountLine CreateRetailDiscountLine(<br>            PeriodicDiscount discountAndLine,<br>            DiscountBase discount)<br>        {<br>            RetailDiscountLine retailDiscountLine = base.CreateRetailDiscountLine(discountAndLine, discount);<br>            ValidationPeriod lineValidationPeriod = discountAndLine.GetProperty(ExtensionLinePeriodString) as ValidationPeriod;<br>            if (lineValidationPeriod != null)<br>            {<br>                retailDiscountLine.SetProperty(ExtensionLinePeriodString, lineValidationPeriod);<br>            }<br>            return retailDiscountLine;<br>        }<br>    } 



Register customized retail discount store

At the top of the customized pricing service call, register the customized retail discount store.

     public class PricingServiceSampleCustomization : IRequestHandler<br>    {<br>        public Response Execute(Request request)<br>        {<br>            // Register customized components here.<br>            if (!PricingEngineExtensionRepository.IsInitialized)<br>            {<br>                PricingEngineExtensionRepository.RegisterRetailDiscountStore(new CustomizedRetailDiscountStore());<br>                PricingEngineExtensionRepository.IsInitialized = true;<br>            }<br>            …<br>        }<br>    } 

Related: Dynamics Retail Discount Extensibility Overall Approach

Related: Dynamics Retail Discount Extensibility – Three Discount Categories