Pricing APIの操作

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

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

このトピックでは、Sitecore XC Pricing APIを使用して、C# プログラミングを使用して価格設定関連の操作を他のビジネス システムと統合する方法に関する情報を例を含めて提供します。

この に示すように、Commerce Engineの操作とコマンドをコンテナ呼び出しに含める必要があります (C# を使用)。

Sitecore Experience Commerce (XC) システムで操作を実行するには、呼び出し元のシステムはまずSitecore Identity Serverから 有効なベアラー認証トークンを取得する 必要があります。

Pricing APIは、Price Bookの関連カタログを追加、取得、編集、管理するためのメソッドを提供します。

Pricing APIを使用した価格表の操作 (C#)

価格表は、一連の価格設定情報のコンテナです。

Pricing APIには、価格表の関連カタログを追加、取得、編集、管理するための次のメソッドが用意されています。

価格表の追加 (C#)

価格表を追加するには、クエリで一意の価格表名を指定する必要があります。オプションで、表示名と説明を含めることもできます。

価格表を追加するには、たとえば、内部名 (MyPriceBook)、表示名 (Book Display Name)、および帳簿の説明 (Book Descriptionを指定します。

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AddPriceBook("MyPriceBook", "Book Display Name", "Book Description", "{0F65742E-317F-44B0-A4DE-EBF06209E8EE}");
CommerceCommand command = Proxy.DoCommand(actionQuery);

クエリ応答は、PriceCardAddedモデルを使用して価格表に適したIDを返します。たとえば、次のようにします。

PriceBookAdded priceBookAddedModel = command.Models.OfType<PriceBookAdded>().FirstOrDefault();
string bookFriendlyId = priceBookAddedModel?.PriceBookFriendlyId;

価格表の取得 (C#)

既存の価格表をプログラムで取得するには、そのわかりやすいIDをクエリに含めます。必要に応じて、OData展開オプションを使用してOdataクエリを展開し、価格表のコンポーネントを含めます。

たとえば、価格表とそのコンポーネントを取得するには、次のようにします。

DataServiceQuerySingle<PriceBook> query = container.PriceBooks.ByKey(bookFriendlyId).Expand("Components");
PriceBook book = Proxy.GetValue(query);

価格表の編集 (C#)

Pricing APIを使用して、プログラムで価格表を編集できます。価格表を編集する場合、その内部名は変更できません。価格表の表示名、説明、通貨セットのプロパティを変更できます。

メモ

通貨を変更するには、Sitecoreコンテンツ エディターにあるCommerceコントロール パネルを使用できます。

価格表を編集するには:

  • 価格表の説明と表示名を変更するには

    DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.EditPriceBook(bookFriendlyId, "edited book description", "edited book display name", "{0F65742E-317F-44B0-A4DE-EBF06209E8EE}");
    CommerceCommand command = Proxy.DoCommand(actionQuery);
  • たとえば、表示名を変更せずに価格表の説明を変更するには:

    actionQuery = container.EditPriceBook(bookFriendlyId, string.Empty, "edited book display name only", "{0F65742E-317F-44B0-A4DE-EBF06209E8EE}");
    command = Proxy.DoCommand(actionQuery);
    CommerceCommand command = Proxy.DoCommand(actionQuery);

関連カタログの取得 (C#)

Pricing APIを使用して、価格表に関連付けられているカタログのリストを取得します。

関連付けられたカタログ (たとえば、AventureWorksPriceBookに関連付けられているカタログの一覧) を取得するには、次のようにします。

DataServiceQuery<AssociatedCatalogModel> query = container.GetPriceBookAssociatedCatalogs("AdventureWorksPriceBook");
List<AssociatedCatalogModel> catalogs = Proxy.Execute(query).ToList();

カタログを価格表に関連付ける (C#)

1つまたは複数のカタログをプログラムで価格表に関連付けることができます。カタログは1つの価格表にのみ関連付けることができます。

手記

カタログは、一度に1つの価格表にのみ関連付けることができます。カタログがすでに価格表に関連付けられている場合、そのカタログを別の価格表に関連付けることができますが、最初のカタログとの関連付けは失われます。最新の関連付けのみが残ります。

カタログを価格表に関連付けるには (たとえば、MyPriceBookMyCatalogに関連付けるには)

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AssociateCatalogToPriceBook("MyPriceBook", "MyCatalog");
CommerceCommand command = Proxy.DoCommand(actionQuery);

価格表からのカタログの関連付けの解除 (C#)

関連付けられた価格表からカタログをプログラムで作成できます。

カタログと価格表の関連付けを解除するには (たとえば、MyCatalog"と価格表の関連付けを解除するにはMyPriceBook

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.DisassociateCatalogFromPriceBook("MyPriceBook", "MyCatalog");
CommerceCommand command = Proxy.DoCommand(actionQuery);

Pricing APIを使用したプライス カードの操作 (C#)

Pricing APIには、プライス カードの追加、取得、編集、複製、削除の各アクションを実行するための次のメソッドが用意されています。

プライス カードを追加する (C#)

価格カードを価格表に追加するには、クエリで価格カードの内部名と、カードを追加する価格表名を指定する必要があります。

プライスカードの名前は、プライスブック内で一意である必要があります。プライスカードの内部名は、作成後に変更することはできません。必要に応じて、プライスカードの表示名と説明を含めることもできます。

価格表に価格カードを追加するには (たとえば、MyPriceBookMyPriceCardを追加するには):

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AddPriceCard("MyPriceBook", "MyPriceCard", "Card Display Name", "Card Description");
CommerceCommand command = Proxy.DoCommand(actionQuery);

// the price card friendly id is returned in the PriceCardAdded model
PriceCardAdded priceCardAddedModel = command.Models.OfType<PriceCardAdded>().FirstOrDefault();
string cardFriendlyId = priceCardAddedModel?.PriceCardFriendlyId;

このクエリは、次の例に示すように、PriceCardAddedモデルを使用してプライス カードのフレンドリIDを返します。

PriceCardAdded priceCardAddedModel = command.Models.OfType<PriceCardAdded>().FirstOrDefault();
string cardFriendlyId = priceCardAddedModel?.PriceCardFriendlyId;

プライスカードの編集 (C#)

プライスカードの詳細は、プログラムで変更できます。プライスカードの内部名は変更できません。変更できるのは、プライスカードの表示名と説明のみです。クエリでプロパティの新しい値が指定されていない場合、既存の値は変更されません。

料金表を編集するには、次のように、新しい名前または新しい説明、あるいはその両方をクエリに含めます。

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.EditPriceCard(cardFriendlyId, "edited card display name", "edited card description");
CommerceCommand command = Proxy.DoCommand(actionQuery);

プライス カードを複製する (C#)

同じ価格表内に新しい価格カードを作成し、そのすべての価格スナップショットをdraftステータスに設定する場合は、価格カードを複製します。

プライスカードを複製するには:

DataServiceActionQuerySingle<CommerceCommand> actionQuery  = container.DuplicatePriceCard(CardFriendlyId, "MyDuplicatePriceCard");
CommerceCommand command = Proxy.DoCommand(actionQuery);

このクエリは、PriceCardAdded モデル内の新しい価格カードのフレンドリIDを返します。たとえば、次のようになります。

string duplicatedCardFriendlyId = command.Models.OfType<PriceCardAdded>().FirstOrDefault()?.PriceCardFriendlyId;

価格カードを削除する

プライスカードを削除できるのは、approved スナップショットが含まれていない場合のみです。

プライスカードを削除するには:

DataServiceActionQuerySingle<CommerceCommand> actionQuery  = container.DeletePriceCard(cardFriendlyId);
CommerceCommand command = Proxy.DoCommand(actionQuery);

Pricing APIを使用した価格スナップショットの操作 (C#)

スナップショットには、指定した日時にプライス カードに適用されるように定義された価格が含まれます。Pricing APIには、追加、編集、削除、タグの追加、タグの削除を実行し、価格スナップショットの承認ステータスを設定するための次のメソッドが用意されています。

手記

プライスカードのステータスによって、実行できる操作が決まります。

編集、削除、タグの追加、およびタグの削除操作は、draft ステータスのスナップショットでのみ実行できます。

価格スナップショットを追加する (C#)

Pricing APIを使用して、プログラムでプライス カードにスナップショットを追加できます。

クエリでは、プライス カード フレンドリー ID (cardFriendlyIdsnapshotDate) を指定します。

スナップショットをプライス カードに追加するには、たとえば、snapshotBeginDate = DateTimeOffset.UtcNowを使用して価格情報をimmediately適用可能にします (または、将来の日付を指定することもできます)。

var snapshotBeginDate = DateTimeOffset.UtcNow;
DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AddPriceSnapshot(cardFriendlyId, snapshotDate);
CommerceCommand command = Proxy.DoCommand();

応答は、PriceCardAddedモデルを使用して価格スナップショットIDを返します。

string snapshotId = command.Models.OfType<PriceSnapshotAdded>;().FirstOrDefault()?.PriceSnapshotId;

スナップショットの編集 (C#)

Pricing Service APIを使用すると、スナップショットをプログラムで編集できます (たとえば、プライス カードが適用される日付を変更できます)。

価格スナップショットを変更できるのは、draft ステータスのもののみです。

ドラフトスナップショットを変更するには、たとえばDateTimeOffset.UtcNow.AddDays(5) メソッドを使用して行います。

var snapshotNewBeginDate = DateTimeOffset.UtcNow.AddDays(5);
DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AddPriceSnapshot(cardFriendlyId, snapshotNewBeginDate);
CommerceCommand command = Proxy.DoCommand(actionQuery);

スナップショットの価格を削除する (C#)

Pricing APIを使用して、価格カードからスナップショット価格を削除できます。

スナップショットの価格を削除するには:

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.RemovePriceSnapshot(cardFriendlyId, snapshotId);
CommerceCommand command = Proxy.DoCommand(actionQuery);

価格スナップショットにタグを追加する (C#)

タグは、販売可能な商品をグループ化する方法です。Pricing APIを使用して、価格スナップショットにタグを追加できます。その後、そのタグを使用して、同じタグに割り当てられたすべてのSellable商品にスナップショットを適用できます。

価格スナップショットにタグを追加するには、次のようにしますMyTag

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AddPriceSnapshotTag(cardFriendlyId, snapshotId, "MyTag");
CommerceCommand command = Proxy.DoCommand(actionQuery);

スナップショットからのタグの削除 (C#)

スナップショットからタグを削除するのは、同じタグが割り当てられたSellable商品のグループにスナップショットの価格を適用する必要がなくなった場合です。

スナップショットからタグを削除するには (たとえば、指定したスナップショットIDからタグMyTagを削除するには):

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.RemovePriceSnapshotTag(cardFriendlyId, snapshotId, "MyTag");
CommerceCommand command = Proxy.DoCommand(actionQuery);

Pricing APIを使用した段階的な価格の操作 (C#)

Pricing APIを使用して、Sellable商品の数量ごとに段階的な価格レベルを定義できます (例: 1つのSellable商品に対して $5ですが、顧客が同じSellable商品を5つ以上購入すると価格が $4に引き下げられます)。

Pricing APIには、価格スナップショットに価格帯を追加、編集、削除するためのメソッドが用意されています。

手記

これらの操作は、ステータスがdraftの価格スナップショットでのみ実行できます。

価格帯を追加する (C#)

Pricing APIを使用して、価格カードに段階的な価格を追加できます。

価格カードに階層化された価格を追加するには、たとえば、USD通貨、数量1、価格20を指定する階層を追加します。

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.AddPriceTier(cardFriendlyId, snapshotId, "USD", 1, 20);
CommerceCommand command = Proxy.DoCommand(actionQuery);

価格帯IDは、次のようにPriceTierAddedモデルで返されます。

string priceTierId = command.Models.OfType<PriceTierAdded>().FirstOrDefault()?.PriceTierId;

価格帯の編集 (C#)

階層価格の価格プロパティは変更できます。数量や通貨は変更できません。

階層化された価格の値を変更するには、リクエストでカード フレンドリー ID、スナップショットID、価格帯ID、および価格帯の新しい金額値を指定します。

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.EditPriceTier(cardFriendlyId, snapshotId, priceTierId,30);
CommerceCommand command = Proxy.DoCommand(actionQuery);

価格帯を削除する (C#)

価格カードから階層化された価格を削除するために使用できます。

価格帯を削除するには、リクエストでカードフレンドリーID、スナップショットID、および価格帯IDを指定します。

DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.RemovePriceTier(cardFriendlyId, snapshotId, priceTierId);
CommerceCommand command = Proxy.DoCommand(actionQuery);

Pricing APIを使用した価格スナップショットの状態の変更 (C#)

Pricing APIを使用して、価格スナップショットのステータスを変更できます。価格スナップショットは、価格承認プロセスの対象となります。承認フローでは、次のことができます。

スナップショットの状態をdraft からReadyForApprovalに変更する (C#)

スナップショットのステータスをdraftからReadyForApprovalに変更して、承認を要求します。必要に応じて、リクエストにコメントを含めることができます。

ドラフトスナップショットの承認をリクエストするには (たとえば、コメント文字列 (This snapshot is ready to be approvedを含む) には、次のようにします。

// requesting approval
DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.SetPriceSnapshotsApprovalStatus(cardFriendlyId, new List<string> { snapshotId }, "ReadyForApproval", "This snapshot is ready to be approved");
CommerceCommand command = Proxy.DoCommand(actionQuery);

スナップショットの状態をReadyForApprovalからdraftに変更する (C#)

スナップショットのステータスをReadyForApprovalからdraftに変更して、スナップショットを拒否します。必要に応じて、クエリにコメント文字列を挿入できます。

たとえば、スナップショットのステータスをReadyForApprovalからDraftに変更するには、オプションのコメント文字列This snapshot has been rejectedを含めます。

// rejecting approval of a snapshot
DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.SetPriceSnapshotsApprovalStatus(cardFriendlyId, new List<string> { snapshotId }, "Draft", "This snapshot has been rejected");
CommerceCommand command = Proxy.DoCommand(actionQuery);

スナップショットの状態をApprovedに変更する (C#)

スナップショットのステータスをReadyForApproval からApprovedに変更して、スナップショットを承認します。必要に応じて、クエリにコメント文字列を含めることができます。

スナップショットを承認するには:

// approving a snapshot
DataServiceActionQuerySingle<CommerceCommand> actionQuery = container.SetPriceSnapshotsApprovalStatus(cardFriendlyId, new List<string> { snapshotId }, "Approved", "This snapshot is now approved");
CommerceCommand command = Proxy.DoCommand(actionQuery);
この記事を改善するための提案がある場合は、 お知らせください!