Dynamics 365 Commerce POS: アイテムをカートに追加する前に検証を追加する


問題:
顧客は、アイテムが POS のカートに追加される前に検証を追加する必要があります.たとえば、アイテムが POS から購入される特定のリストに属している必要があります.または任意の基準.

発達:
アイテムがカートに追加されると、トリガーされるリクエストの 1 つが SaveCartVersionedDataRequest です.コマース ランタイム (CRT) 拡張機能として、この要求にプレトリガーを追加できます. IRequestTriggerAsync インターフェイスを実装し、必須メソッドを実装する必要があります.

public class AddItemToCartValidationTrigger : IRequestTriggerAsync
{
    public IEnumerable SupportedRequestTypes => new[]
    {
        typeof(SaveCartVersionedDataRequest)
    };

    public async Task OnExecuted(Request request, Response response)
    {
        await Task.CompletedTask;
    }

    public async Task OnExecuting(Request request)
    {
        boolean criteria = true;

        if (criteria) // if some criteria is met, add an item to the cart
        {
            // do something
        }
        else // reject item to be added to cart
        {
            // throw commerce exception
        }
    }
}


展開:
CRT 拡張機能をビルドし、Retail サーバーの拡張機能フォルダーに配置します. 'RetailServer\WebRoot\bin\Ext' フォルダーに拡張機能 .dll をドロップし、構成ファイルの構成セクションに拡張アセンブリ参照を追加して、CommerceRuntime.Ext 構成ファイルを変更します.拡張機能を追加した後、Retail サーバーを再起動します.

ローカルでデバッグするには、この拡張機能 .dll を 'C:\Program Files (x86)\Microsoft Dynamics 365\70\Retail Modern POS\ClientBroker\ext' フォルダーに追加し、拡張機能アセンブリの参照を 'CommerceRuntime.MPOSOffline.ext' に追加することもできます. ' 構成ファイル.これを Retail Server の IIS プロセスに接続します.

Retail SDK ビルドの場合、この CRT 拡張機能を 'RetailSDK>Assets' の 'CommerceRuntime.ext' 構成と 'RetailSDK>BuildTools' の 'customization.settings' に追加する必要があります.