注文処理(C#)との連携
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Orders Entity Views and Actions APIは 、注文の履行を設定する操作をサポートします。出荷情報は、注文を構成するアイテムが顧客に転送される方法を定義します。フルフィルメントを注文全体に適用するか、注文内の個別の項目に適用するかを設定できます。
保留中の注文に対してのみフルフィルメントを設定できます。
以下の例は以下の方法を示しています:
注文履行を設定し(C#)
発注レベルでフルフィルメントを設定すれば、その注文内のすべてのライン注文にフルフィルメント情報が適用されるようにできます。
例えば有形品目に対して注文の履行を設定するには、C#を用いてください:
-
エンティティビューを取得し、例えばShipToMeの履行オプションを指定します。
DataServiceQuerySingle
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 ().FirstOrDefault(); optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("ShipToMe")).Name; CommerceCommand command = Proxy.DoCommand(container.DoAction(view)); -
配送先住所は国を指定します:
view = command.Models.OfType
().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 ().FirstOrDefault(); countryProperty.Value = availableCountryPolicy?.List.FirstOrDefault(o => o.Name.Equals("CA")).Name; command = Proxy.DoCommand(container.DoAction(view)); -
残りのアドレスプロパティを例として提供します:
view = command.Models.OfType
().FirstOrDefault(v => v.Name.Equals(view.Name)); var stateProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State")); var availableStatesPolicy = stateProperty.Policies.OfType ().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)); -
履行方法を選択してください。以下の例は地上輸送を使用しています:
view = command.Models.OfType
().FirstOrDefault(v => v.Name.Equals(view.Name)); var methodProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State"));var availableMethodsPolicy = methodProperty.Policies.OfType ().FirstOrDefault(); methodProperty.Value = availableMethodsPolicy?.List.FirstOrDefault(o => o.DisplayName.Equals("Ground")).Name; command = Proxy.DoCommand(container.DoAction(view));
分割配送(C#)で注文ラインの履行を設定しましょう
一部のビジネスシナリオでは、ラインアイテムレベルでフルフィルメントが適用される必要があります。以下の例は、同じ注文内の2つのラインアイテムが異なるフルフィルメントオプションを使用する分割配送シナリオを示しています。 ラインアイテム#1は地上配送を利用し、配送に住所情報が必要な有形製品を表します。 ラインアイテム#2は、配送にメールアドレスが必要なデジタル製品を表します。
配送分割のラインレベルで注文完了オプションを設定するには:
-
注文フルフィルメントオプションを 配送分割に設定し、各項目ごとに異なる出荷情報を指定できるようにしてください:
DataServiceQuerySingle
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 ().FirstOrDefault(); optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("SplitShipping")).Name; CommerceCommand command = Proxy.DoCommand(container.DoAction(view)); -
項目項目#1(この例では有形製品)のフルフィルメント情報を設定するには、項目項目#1のフルフィルメントオプションを選択してください:
EntityView view = Proxy.GetValue(query); var optionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option")); var availableOptionsPolicy = optionProperty.Policies.OfType
().FirstOrDefault(); optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("ShipToMe")).Name; CommerceCommand command = Proxy.DoCommand(container.DoAction(view)); -
例えば、項目#1の国を指定します:
view = command.Models.OfType
().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 ().FirstOrDefault(); countryProperty.Value = availableCountryPolicy?.List.FirstOrDefault(o => o.Name.Equals("CA")).Name; command = Proxy.DoCommand(container.DoAction(view)); -
例えば、項目#1の他のアドレスプロパティを提供します。
view = command.Models.OfType
().FirstOrDefault(v => v.Name.Equals(view.Name)); var stateProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State")); var availableStatesPolicy = stateProperty.Policies.OfType ().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)); -
項目 #1のフルフィルメント方法(この場合は地上輸送用)を設定します:
view = command.Models.OfType
().FirstOrDefault(v => v.Name.Equals(view.Name)); var methodProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("State")); var availableMethodsPolicy = methodProperty.Policies.OfType ().FirstOrDefault(); methodProperty.Value = availableMethodsPolicy?.List.FirstOrDefault(o => o.DisplayName.Equals("Ground")).Name; command = Proxy.DoCommand(container.DoAction(view)); -
ラインアイテム#2(この例では無形製品)のフルフィルメント情報を設定するには、ラインフルフィルメントオプションを選択してくださいDigital:
EntityView view = Proxy.GetValue(query); var optionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option")); var availableOptionsPolicy = optionProperty.Policies.OfType
().FirstOrDefault(); optionProperty.Value = availableOptionsPolicy?.List.FirstOrDefault(o => o.Name.Equals("Digital")).Name; CommerceCommand command = Proxy.DoCommand(container.DoAction(view)); -
メールアドレス(例:[email protected] )とメールの内容(例:*Happy birthday!)*を入力してください。
view = command.Models.OfType
().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));