Rozšíření cen

Tento článek popisuje, jak rozšířit funkce tvorby cen a slev v Microsoft Dynamics 365 Commerce.

Rozšíření cenového modulu Commerce

Cenový modul Commerce je centrem tvorby cen a slev v Dynamics 365 Commerce. Pokud chcete rozšířit cenový modul Commerce, nejprve se seznamte s terminologií v následující tabulce.

Name Description
Slevový balíček Slevový balíček je třída, která implementuje rozhraní IDiscountPackage, jež slouží jako jiný typ slevy. Můžete definovat různé chování v souvislosti se slevami vytvořením různých slevových balíčků.
Filtr slev Pokud chcete přizpůsobit použitelnost slev, vyfiltrujte některé slevy implementací rozhraní IDiscountFilter na základě vašich obchodních požadavků.

Cenový modul Commerce je sestavení, které je sdíleno napříč Commerce headquarters a jednotkami Commerce Scale Unit (CSU). Proto potřebujete napsat jenom jednu část rozšíření cenového modulu (například nový balíček slev). Toto rozšíření můžete použít jak v ústředí, tak v prodejním místě (POS).

Registrace vlastních rozšíření

Po vytvoření rozšíření cenového modulu ho zaregistrujte prostřednictvím PricingEngineExtensionRepository. Proces registrace se liší v závislosti na produktu, se kterým jej integrujete.

JOK a Store Commerce

Pro žádosti o služby, na které chcete použít balíčky rozšíření, můžete přidat předběžné triggery. Následující tabulka obsahuje popis žádostí o služby.

Požadavek na službu Description
CalculatePricesServiceRequest Tato žádost o službu vypočítá ceny za prodejní transakci. Tyto ceny zahrnují základní cenu, cena obchodní smlouvy a úpravy cen.
CalculateDiscountsServiceRequest Tato žádost o službu vypočítá slevy pro prodejní transakci. Tyto slevy zahrnují obchodní smlouvy o slevách, jednoduché slevy, kombinované slevy, množstevní slevy a prahové slevy.
GetIndependentPriceDiscountServiceRequest Tato žádost o službu počítá pouze ceny a slevy na jednom řádku. Můžete ho použít pro stránky s výpisem produktů a podrobnostmi o produktech, kde se ceny produktů počítají nezávisle.
CalculateShippingDiscountsServiceRequest Tato žádost o službu vypočítá slevy na dodávku pro prodejní transakci.

Když například vytvoříte nový slevový balíček, můžete přidat předběžný trigger k CalculateDiscountsServiceRequest žádosti o službu a zavolat PricingEngineExtensionRepository.RegisterDiscountPackage(new DiscountPackage()); uvnitř předběžného triggeru.

Poznámka:

Když nahradíte předpřipravené obslužné rutiny za CalculateDiscountsServiceRequest, při výpočtu slev nezapomeňte označit žádost request.Transaction.IsDiscountFullyCalculated jako true. Pokud tuto hodnotu nenastavíte, může proces pokladny blokovat transakci s chybou podobnou Součty transakcí musí být vypočítány před dokončením nákupu.

Finanční a provozní aplikace

U aplikací pro finance a provoz zaregistrujte slevy prostřednictvím rozšíření X++ na základě vašich uživatelských scénářů. Chcete-li například použít přizpůsobený slevový balíček pro prodejní objednávky call centra, můžete přidat předběžné triggery pro RetailSalesOrderCalculator::setPricesDiscountsOnOrder a zavolat Microsoft.Dynamics.Commerce.Runtime.Services.PricingEngine::RegisterDiscountPackage(new DiscountPackage()); uvnitř předběžného triggeru.

Počítání cen a slev k jinému než dnešnímu datu

Ve výchozím nastavení cenový modul Commerce uplatňuje ceny a slevy na základě data, kdy dojde k prodejní transakci. Obvykle je toto datum „dnes“.

Chcete-li přepsat výchozí chování, postupujte takto:

  1. Přidejte do souboru pretrigger CalculatePricesServiceRequesta aktualizujte jeho DateWhenActive hodnotu na datum, kdy má dojít k výpočtu.

  2. Přidejte do souboru pretrigger CalculateDiscountsServiceRequesta aktualizujte jeho DateWhenActive hodnotu na datum, kdy má dojít k výpočtu.

    Poznámka:

    Hodnotu DateWhenActive u CalculateDiscountsServiceRequest můžete změnit pouze ve verzi Commerce 10.0.37 a novější.

  3. V centrále přejděte na Retail a Commerce>Nastavení centrály>Parametry>Parametry Commerce a přidejte následující konfigurační klíč a hodnotu:

    • Klíč: Pricing.ResetSalesDateKillSwitch
    • Hodnota: true
  4. Spusťte úlohu 1070 (konfigurace kanálu) v Commerce Data Exchange (CDX).

Poznámka:

Musíte zajistit, aby hodnota SalesDate pro všechny řádky prodeje odpovídala datu, které je nastaveno pro DateWhenActive.