---
title: "カスタムフルフィルメントオプションを作成する"
slug: "create-a-custom-fulfillment-option"
abstract: ""
---
# カスタムフルフィルメントオプションを作成する

Sitecore XCフルフィルメントプラグインは、Commerce Control Panelに表示されるデフォルトのフルフィルメントオプションをサポートしています。これらのフルフィルメントオプションは、Commerce Connectで定義されたデフォルトのShippingOptionType値にマッピングされており、以下の表にまとめられています。

フルフィルメントオプション

ShippingOptionType(配送オプションタイプ)

住所に配達

ShipToAddress

個別配送 - 発送を分割する

ラインシッピングオプション

デジタル配信

エレクトロニックデリバリー

> !注「店舗から受け取り」というフルフィルメントオプションタイプは現在サポートされていません。

Sitecore XC実装の中にはカスタムフルフィルメントオプションの要件がある場合があります。このトピックでは、特定のフルフィルメントビジネス要件を満たすためにコマースエンジンを拡張するカスタムフルフィルメントプラグインの作成方法についての指針を提供します。

カスタムフルフィルメントオプションを含めるためにCommerce Engineを拡張し、[Commerce Control Panel](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/commerce-control-panel.html "Commerce Control Panel")に追加してストアフロントで利用可能にする必要があります。

## Commerce Engineを拡張してカスタムフルフィルメントオプションを使おう

カスタムフルフィルメントオプションをコマースコントロールパネルに追加し、データをCommerce Engineデータベースと同期したら、Commerce Engine Fulfillmentプラグインを拡張して新しいカスタムフルフィルメントオプションを処理できるようにする必要があります。

Commerce Engine Fulfillmentプラグインを拡張するには:

1.  カスタムフルフィルメントオプション用に新しいクラス(例: MyCustomFulfillmentComponent.cs)を作成し、適切なプロパティ(例:StoreID、StoreAddress)を備えていることを確認してください。
    
    また、JsonConverter属性を含め、次のステップで作成するJsonConverterを指定する必要があります。
    
    JsonConverter(typeof(MyCustomFulfillmentComponentConverter))
     public class MyCustomFulfillmentComponent : FulfillmentComponent
     {
     …
    }
    
2.  新しいカスタムフルフィルメントコンポーネント用のJSONコンバーターを作成します(Sitecore XC FulfillmentCOmponentConverter.csファイルをガイドとして使えます)。
    
    public class MyCustomFulfillmentComponentConverter : JsonConverter
    {
     …
     public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
     {
     if (reader.TokenType == JsonToken.Null)
     {
     return null;
     }
    
     var jObject = JObject.Load(reader);
     var type = (string)jObject.Property("@odata.type");
     type = Regex.Replace(type, "#", string.Empty);
     FulfillmentComponent target = null;
     if (type.Equals("MyNamespace.MyCustomFulfillmentComponent", StringComparison.OrdinalIgnoreCase))
     {
     target = new PhysicalFulfillmentComponent();
     }
    
     var jObjectReader = jObject.CreateReader();
     jObjectReader.Culture = reader.Culture;
     jObjectReader.DateParseHandling = reader.DateParseHandling;
     jObjectReader.DateTimeZoneHandling = reader.DateTimeZoneHandling;
     jObjectReader.FloatParseHandling = reader.FloatParseHandling;
     serializer.Populate(jObjectReader, target);
    
     return target;
     }
     …
    }
    
3.  フルフィルメントを扱うパイプライン(例えば、カートやカートラインへのフルフィルメント追加)にパイプラインブロックを追加し、パイプラインが新しいカスタムフルフィルメントオプションを処理できるようにしましょう。
    

## カスタム配送オプションのためにCE Connectを拡張しましょう

また、新しいカスタム履行オプションに対応するためにCommerce Engine Connectを拡張する必要があります。

CE Connectを新しいカスタムフルフィルメントオプションに対応するために拡張するには:

1.  AddShippingInfoToCartパイプラインプロセッサを拡張し、新しいカスタムフルフィルメントオプションを取り入れましょう。
2.  TranslateCartToEntityパイプラインプロセッサを拡張し、新しいカスタムフルフィルメントオプションを取り入れましょう。
3.  GetShippingOptionsパイプラインプロセッサを拡張し、新しいカスタムフルフィルメントオプションを取り入れましょう。
4.  拡張 GetShippingMethods pipeline processor to include the new custom fulfillment option.

> !注新しいフルフィルメントオプションを反映するように、ストアフロントサイトのユーザーインターフェースコードを変更する必要があります。

## カスタムフルフィルメントオプションをCommerceコントロールパネルに追加してください

Commerce Control Panelは、Commerce Engine、ビジネスツール、ストアフロントのCommerce設定を設定するための、Sitecore XPツールスイートの中心的な場所です。

カスタムフルフィルメントオプションをコマースコントロールパネルに追加するには、以下の手順に従ってください:

1.  Sitecore Launchpadから **コンテンツエディター**を開きます。
    
2.  左側の *パネルにあるsitecore/Commerce/Commerceコントロールパネル/共有設定/フルフィルメントオプションタイプ* フォルダにアクセスし、メインペインの「 **Fulfillment Option Type** 」をクリックしてください。
    
    ![Fulfillment option types in the Commerce Control Panel.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/sitecore-experience-commerce/images/Fulfillment-Option-Type.jpg)
    
3.  ダイアログウィンドウで新しいフルフィルメントオプションタイプの名前(例:My Custom Fulfillment)を入力し、「 **OK」**をクリックします。
    
4.  **フルフィルメントオプションタイプ**パネルで、フルフィルメントオプションタイプの名前とID(例:5)を指定し、変更を保存します。
    
5.  *sitecore/Commerce/Commerce Control Panel/Shared Settings/Fulfillment Options*フォルダに行き、メインペインの「**Fulfillment Option**」をクリックします。
    
    ![Fulfillment option in the Commerce Control Panel.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/sitecore-experience-commerce/images/Fulfillment-Option.jpg)
    
6.  **フルフィルメントオプション**のパネルで、先に作成したフルフィルメントオプションタイプを選択し、説明を追加してから変更を保存してください。
    
7.  *sitecore/Commerce/Commerce Control Panel/Storefront設定/Commerce Engine Default Storefront/Fulfillment Configuration*フォルダに移動します。
    
8.  カスタムフルフィルメントオプションを選択し、**\>** アイコンをクリックして「 **選択済み** 」ペインに移動し、変更を保存します。
    
9.  変更をCommerce Engineにプッシュするには、「 [コンテンツ項目の同期](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/synchronize-content-items.html "Synchronize content items") 」トピックで説明されているように、SitecoreデータベースとCommerce Engineのデータベース間でコンテンツ項目を同期させます。 *Sync content path* APIサンプルを使って、コンテンツツリー全体を同期してください。