static void testGetAvailableDiscountsByItem2(Args _args) { ItemId itemId = '0006'; InventTable inventTable = InventTable::find(itemId); RetailPricingDataManager retailPricingDataManager = RetailPricingDataManager::construct(5637145360); Container promotions, priceGroups; MCRChannelUser channelUser = MCRChannelUser::find(); RetailChannelPriceGroup retailChannelPriceGroup; while select RecId, PriceGroup from retailChannelPriceGroup where retailChannelPriceGroup.RetailChannel == channelUser.Channel { priceGroups += retailChannelPriceGroup.PriceGroup; } promotions = retailPricingDataManager.getPeriodicDiscounts( inventTable.Product, 0, priceGroups, 'USD', DateTimeUtil::getSystemDateTime() ); } static void testGetAvailableDiscountsByItem(Args _args) { ItemId itemId = '0006'; InventTable inventTable = InventTable::find(itemId); RetailAllProductCategories retailAllProductCategories; RetailGroupMemberLine retailGroupMemberLine; RetailPeriodicDiscountLine retailPeriodicDiscountLine; RetailPeriodicDiscount retailPeriodicDiscount; // Discounts assigned to product directly while select retailGroupMemberLine where retailGroupMemberLine.Product == inventTable.Product join retailPeriodicDiscountLine where retailPeriodicDiscountLine.RetailGroupMemberLine == retailGroupMemberLine.RecId join retailPeriodicDiscount where retailPeriodicDiscount.OfferId == retailPeriodicDiscountLine.OfferId { abs(1); } // Discounts assigned to category while select retailGroupMemberLine where retailGroupMemberLine.Product == 0 join retailAllProductCategories where retailAllProductCategories.Category == retailGroupMemberLine.Category &&retailAllProductCategories.Product == inventTable.Product join retailPeriodicDiscountLine where retailPeriodicDiscountLine.RetailGroupMemberLine == retailGroupMemberLine.RecId join retailPeriodicDiscount where retailPeriodicDiscount.OfferId == retailPeriodicDiscountLine.OfferId { abs(1); } }But method \Classes\RetailPricingDataManager\getPeriodicDiscounts should be slightly changed.
while select OfferId, ValidFrom, ValidTo, ConcurrencyMode, DateValidationType, ValidationPeriodId, PriceDiscGroup, Name, PeriodicDiscountType, IsDiscountCodeRequired, DiscountPercentValueTo:
while select OfferId, ValidFrom, ValidTo, ConcurrencyMode, DateValidationType, ValidationPeriodId, PriceDiscGroup, Name, PeriodicDiscountType, IsDiscountCodeRequired, DiscountPercentValue, CurrencyCodeIn other words just add CurrencyCode to selected fields. Otherwise it will fail in method \Classes\RetailPricingDataManager\buildRetailDiscountContainer as CurrencyCode has never been selected.
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics AX.
Authors are allowed to set their own AdSense units and "buy me a coffee" link.
Join us.