注文のフルフィルメントを操作する (C#)

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Orders Entity Views and Actions APIは、注文のフルフィルメントを設定する操作をサポートしています。フルフィルメント情報とは、注文を構成する品目を購入者に譲渡する手段を定義します。フルフィルメントは、オーダー全体に適用するか、オーダー内の個々の商品項目に適用するように設定できます。

フルフィルメントを設定できるのは、on hold 注文のみです。

次の例では、次の方法について説明します。

注文のフルフィルメントの設定 (C#)

フルフィルメントを注文レベルで設定して、フルフィルメント情報が注文内のすべての品目注文に適用されるようにすることができます。

注文のフルフィルメントを設定するには (たとえば、有形のアイテムの場合) C# を使用して、次のようにします。

  1. エンティティ ビューを取得し、フルフィルメント オプション (例: ShipToMe) を指定します。

    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", "OrderFulfillmentDetails", "SelectFulfillmentOption", string.Empty);
    EntityView view = Proxy.GetValue(query);
    var optionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option"));
    var availableOptionsPolicy = optionProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("ShipToMe")).Name;
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
  2. 配送先住所の国を指定します。

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    var countryProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Country"));
    countProperty.Value = "3";
    var availableCountryPolicy = optionProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    countryProperty.Value = availableCountryPolicy?.List.FirstOrDefault(o => o.Name.Equals("CA")).Name;
    command = Proxy.DoCommand(container.DoAction(view));
  3. 残りのアドレス プロパティを指定します。

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    var stateProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State"));
    var availableStatesPolicy = stateProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    stateProperty.Value = availableStatesPolicy?.List.FirstOrDefault(o => o.Name.Equals("ON")).Name;
    view.Properties.FirstOrDefault(p => p.Name.Equals("AddressName")).Value = "home";
    view.Properties.FirstOrDefault(p => p.Name.Equals("FirstName")).Value = "john";
    view.Properties.FirstOrDefault(p => p.Name.Equals("LastName")).Value = "doe";
    view.Properties.FirstOrDefault(p => p.Name.Equals("Address1")).Value = "123 street A";
    view.Properties.FirstOrDefault(p => p.Name.Equals("City")).Value = "city";
    view.Properties.FirstOrDefault(p => p.Name.Equals("ZipPostalCode")).Value = "a1b2c3d";
    view.Properties.FirstOrDefault(p => p.Name.Equals("PhoneNumber")).Value = "123 123 1234";
    command = Proxy.DoCommand(container.DoAction(view));
  4. フルフィルメント方法を選択します。次の例では、地上輸送を使用します。

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    var methodProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State"));var availableMethodsPolicy = methodProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    methodProperty.Value = availableMethodsPolicy?.List.FirstOrDefault(o => o.DisplayName.Equals("Ground")).Name;
    command = Proxy.DoCommand(container.DoAction(view));

分割配送の注文品目フルフィルメントの設定 (C#)

一部のビジネスシナリオでは、明細項目レベルで適用するためにフルフィルメントが必要です。次の例は、同じ注文内の2つの品目が異なる出荷オプションを使用する分割配送シナリオを示しています。 Line item #1は、陸上配送を使用し、配送に住所の詳細が必要な有形の製品を表しています。 Line item #2は、配信にメールアドレスが必要なデジタル製品を表しています。

分割配送の明細レベルで注文のフルフィルメントオプションを設定するには:

  1. 注文のフルフィルメントオプションをsplit shippingに設定すると、各明細項目に個別のフルフィルメントの詳細を指定できます。

    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", "OrderFulfillmentDetails", "SelectFulfillmentOption", string.Empty);
    EntityView view = Proxy.GetValue(query);
    var optionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option"));
    var availableOptionsPolicy = optionProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("SplitShipping")).Name;
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
  2. Line item #1 (この例では有形製品) のフルフィルメント情報を設定するには、次のフルフィルメントオプションを選択しますLine item #1

    EntityView view = Proxy.GetValue(query);
    var optionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option"));
    var availableOptionsPolicy = optionProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("ShipToMe")).Name;
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
  3. Line item #1の国を指定します。たとえば、次のように入力します。

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    var countryProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Country"));
    countProperty.Value = "3";
    var availableCountryPolicy = optionProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    countryProperty.Value = availableCountryPolicy?.List.FirstOrDefault(o => o.Name.Equals("CA")).Name;
    command = Proxy.DoCommand(container.DoAction(view));
  4. Line item #1の残りのアドレスプロパティを指定します。たとえば、次のように入力します。

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    var stateProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State"));
    var availableStatesPolicy = stateProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    stateProperty.Value = availableStatesPolicy?.List.FirstOrDefault(o => o.Name.Equals("ON")).Name;
    view.Properties.FirstOrDefault(p => p.Name.Equals("AddressName")).Value = "home";
    view.Properties.FirstOrDefault(p => p.Name.Equals("FirstName")).Value = "john";
    view.Properties.FirstOrDefault(p => p.Name.Equals("LastName")).Value = "doe";
    view.Properties.FirstOrDefault(p => p.Name.Equals("Address1")).Value = "123 street A";
    view.Properties.FirstOrDefault(p => p.Name.Equals("City")).Value = "city";
    view.Properties.FirstOrDefault(p => p.Name.Equals("ZipPostalCode")).Value = "a1b2c3d";
    view.Properties.FirstOrDefault(p => p.Name.Equals("PhoneNumber")).Value = "123 123 1234";
    command = Proxy.DoCommand(container.DoAction(view));
  5. フルフィルメント方法(この場合は陸送用)を次のように設定しますLine item #1

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    var methodProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State"));
    var availableMethodsPolicy = methodProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    methodProperty.Value = availableMethodsPolicy?.List.FirstOrDefault(o => o.DisplayName.Equals("Ground")).Name;
    command = Proxy.DoCommand(container.DoAction(view));
  6. Line item #2 (この例では無形製品) のフルフィルメント情報を設定するには、明細行フルフィルメント オプションを選択しますDigital:

    EntityView view = Proxy.GetValue(query);
    var optionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option"));
    var availableOptionsPolicy = optionProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("Digital")).Name;
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
  7. 電子メールアドレス([email protected]など)と電子メールメッセージの内容(Happy birthday!など)を入力します。

    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    view.Properties.FirstOrDefault(p => p.Name.Equals("EmailAddress")).Value = "[email protected]";
    view.Properties.FirstOrDefault(p => p.Name.Equals("EmailContent")).Value = "Happy birthday!";
    command = Proxy.DoCommand(container.DoAction(view));
この記事を改善するための提案がある場合は、 お知らせください!