プライシングエンティティビューズ&アクションAPIを活用してください
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
外部システムは、Commerce Viewsサービスを基盤としたEntity Views and Actions API(オーサリングAPI)を使って価格関連情報を交換できます。
コンテナコール内にはCommerce Engineの操作やコマンド(C#を使用)を含める必要があります(この 例参照)。
Sitecore Experience Commerce(XC)システムでいかなる操作を実行するにも、呼び出し先はSitecore Identity Serverから 有効なベアラー認証トークンを取得し なければなりません。
!注ビューズ&アクションAPIは、ビジネスユーザーインターフェースに対応するために設計された オーサリングAPIであり、統合シナリオには最適化されていません。
Views and Actions APIをコマース統合で使用する際には、以下の点を考慮する必要があります。
Views and Actions APIは一度に1つのCommerceエンティティしか処理できず、バッチ処理はサポートしていません。
Views and Actions APIはCommerce WebサービスのAPIよりも多くのオーバーヘッドを伴います。Views and Action APIの呼び出しは通常3ステップで、アクションのビューを取得し、ビューのプロパティを更新した値で修正し、アクションを実行します。
プライシングエンティティビューズ&アクションAPI(C#)を使って価格帳を扱う
XCプライシングビューアクションAPIは、価格帳の関連カタログ**を追加、取得、編集、管理するアクションを提供します。
価格帳(C#)を追加
Views and Actions APIを使ってプライスブックを使うことができます。プライスブックを追加する際には以下の点を考慮してください:
- プライズブックの名前は唯一無二です。
- 一度価格簿を作成すれば、その名称は変更できません。
- 価格帳は削除できません。
価格表を追加すると:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView(string.Empty, "Details", "AddPriceBook", string.Empty); EntityView view = Proxy.GetValue(query); -
ビューのプロパティを変更します。最低でも、Nameプロパティの値を提供する必要があります。その他のビュープロパティは任意です。以下の例では、クエリにはすべてのプロパティの値が含まれています:
var nameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Name")); nameProperty.Value = "MyPriceBook"; var displayNameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("DisplayName")); displayNameProperty.Value = "Book Display Name"; var descriptionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Description")); descriptionProperty.Value = "Book Description"; var currencySetProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("CurrencySetId")); currencySetProperty.Value = "{0F65742E-317F-44B0-A4DE-EBF06209E8EE}";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
回答はPriceBookAddedモデルの価格表に優しい価格表の価格IDを返します。例えば:
PriceBookAdded priceBookAddedModel = command.Models.OfType
().FirstOrDefault(); string bookFriendlyId = priceBookAddedModel?.PriceBookFriendlyId;
価格帳の閲覧数(C#)
Pricing Entity View and Actions APIを使えば、異なるプライスブックビューを得ることができます。プライスブックは 複合エンティティビューを使用します。プライスブックのMasterビューをクエリすると、レスポンスは子ビュー(例: Details、PriceBookCatalogs、PriceCards子ビュー)も返します。子ビューは個別にクエリできます。子ビューは他の子ビューの親にもなり得ます。
-
価格帳のマスタービューを取得するには:
DataServiceActionQuerySingle
query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "Master", string.Empty, string.Empty); EntityView view = Proxy.GetValue(query); -
価格簿の子ビューを取得するには、例えば詳細ビュー、関連カタログビュー、プライスカードビューなどがあります。
// getting the book's details view query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "Details", string.Empty, string.Empty); view = Proxy.GetValue(query);
// getting the book's associated catalogs view query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "PriceBookCatalogs", string.Empty, string.Empty); view = Proxy.GetValue(query);
// getting the book's cards view query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "PriceCards", string.Empty, string.Empty); view = Proxy.GetValue(query);
価格帳を(C#)で編集する
プライシングエンティティビューズ&アクションAPIを使って、価格帳の表示名、説明、通貨セットプロパティに変更できます。これらのプロパティに新しい値を提供しなければ、現在の値は変わりません。
価格表の性質を変更するには:
-
例えば、アクションのエンティティビューを取得してください:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "Details", "EditPriceBook", string.Empty) EntityView view = Proxy.GetValue(query); -
必要に応じてビューのプロパティを変更してください。例えば、
var displayNameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("DisplayName")); displayNameProperty.Value = "Edited Book Display Name"; var descriptionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Description")); descriptionProperty.Value = "Edited Book Description"; var currencySetProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("CurrencySetId")); currencySetProperty.Value = "{0F65742E-317F-44B0-A4DE-EBF06209E8EE}";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
カタログを価格帳(C#)に関連付ける
Pricing Views and Actions APIを使ってカタログをプライスブックに関連付け、プライスカードをカタログ商品に適用できます。同じプライスブックを複数のカタログに関連付けることはできますが、カタログを1つのプライスブックに紐付けるのは1つだけです。
カタログを価格簿に関連付ける方法:
-
例えば、アクションのエンティティビューを取得してください:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "PriceBookCatalogs", "AssociateCatalog", string.Empty); EntityView view = Proxy.GetValue(query); -
ビューのプロパティを修正します。例えば:
var catalogProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("CatalogName")); catalogProperty.Value = "MyCatalog";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
カタログを価格帳(C#)から切り離す
カタログを価格帳から切り離すと、カタログ内の販売可能な商品に価格表を適用したくない場合は、その価格表を切り離すことができます。
価格表を切り離すために:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", string.Empty, "DisassociateCatalog", string.Empty); EntityView view = Proxy.GetValue(query); -
ビューのプロパティを修正します。例えば: view.ItemId = "MyCatalog";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
プライシングビューズ&アクションAPI(C#)を使ってプライスカードを操作してください
プライシングビューおよびアクションAPIを使って、プライスカードのadd、get、edit、duplicate 、deleteアクションを実行できます。
価格を追加して作成(C#)
指定されたプライスブック内でプライスカードを作成できます。プライスカードの名前はプライスブック内で一意でなければなりません。プライスカードを作成した後は名前を変更することはできません。
プライスカードを作成するには:
-
例えば、アクションのエンティティビューを取得してください:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "Details", "AddPriceCard", string.Empty); EntityView view = Proxy.GetValue(query); -
ビューのプロパティを修正してください。最低限、"Name" プロパティの値を指定する必要があります。オプションとして、例えば次のような他のプロパティの値を指定することもできます。
var nameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Name")); nameProperty.Value = "MyPriceCard"; var displayNameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("DisplayName")); displayNameProperty.Value = "Card Display Name"; var descriptionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Description")); descriptionProperty.Value = "Card Description";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
回答はPriceCardAdded モデルを用いて価格カードに友好的なIDを返します。例えば:
PriceCardAdded priceCardAddedModel = command.Models.OfType
().FirstOrDefault(); string cardFriendlyId = priceCardAddedModel?.PriceCardFriendlyId;
価格カードを見る (#)
プライシングビューおよびアクションAPIを使って異なるプライスカードビューを取得することができます。プライスカードビューは 複合エンティティビューとして実装されています。プライスカードのMasterビューをクエリすると、レスポンスは子ビュー(例えばプライスカードのDetailsとPriceSnapshots、子ビューを返します。
また、子ビューを個別にクエリすることも可能です。子ビューはそれぞれの子ビューを定義できます。
-
プライスカードのマスタービューを取得するには:
DataServiceActionQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "Master", string.Empty, string.Empty); EntityView view = Proxy.GetValue(query); -
プライスカードの子ビューを個別に取得するには、例えば "Details" ビューと "PriceSnapShots" ビューをそれぞれ:
// getting the card's details view query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "Details", string.Empty, string.Empty); view = Proxy.GetValue(query);
// getting the card's snapshots view query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "PriceCardSnapshots", string.Empty, string.Empty); view = Proxy.GetValue(query);
価格表(C#)を編集する
既存のプライスカードのDisplayNameプロパティやDescriptionプロパティは、Pricing Views and Actions APIを使って変更できます。 nameプロパティ(プライスカードの内部名)の価値は変更できません。プロパティの新しい値を提供しなければ、その現在の価値は変わりません。
プライスカードを編集するには:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceBook-{bookFriendlyId}", "Details", "EditPriceBook", string.Empty) EntityView view = Proxy.GetValue(query); -
ビューのプロパティを設定します。例えば:
var displayNameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("DisplayName")); displayNameProperty.Value = "Edited Book Display Name"; var descriptionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Description")); descriptionProperty.Value = "Edited Book Description"; var currencySetProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("CurrencySetId")); currencySetProperty.Value = "{0F65742E-317F-44B0-A4DE-EBF06209E8EE}";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
プライスカードの複製(C#)
Views and Actions APIを使って、既存のプライスカードを複製し、同じプライスブック内で新しいプライスカードを作成できます。複製されたプライスカードの価格スナップショットは ドラフト ステータスに設定されています。
プライスカードを複製するには:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "Details", "DuplicatePriceCard", string.Empty); EntityView view = Proxy.GetValue(query); -
例えば、新しい価格カードに名前を付けてビュープロパティを修正します。
!注プライスカードの名前はプライスブック内で一意でなければなりません。
var nameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("DuplicateCardName")); nameProperty.Value = "MyDuplicatePriceCard";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
プライスカードを削除してください
Views and Actions APIを使って、価格帳から価格表を削除することができます。
!注承認された価格スナップショットを含むプライスカードは削除できません。
プライスカードを削除するには:
-
例えば、アクションのエンティティビューを取得してください:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", string.Empty, "DeletePriceCard", string.Empty); EntityView view = Proxy.GetValue(query); -
表示のプロパティを変更し、削除する価格カードのフレンドリーIDを指定する:
view.ItemId = $"Entity-PriceCard-{cardFriendlyId}";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
Pricing Views and Actions API(C#)を使ってスナップショットを扱う
スナップショットは、指定された日時で価格カードに適用可能な価格を定義します。プライシングビューおよびアクションAPIは、スナップショットに対してadd、edit、remove、add tag、remove tagアクションを提供します。
スナップショット(C#)を追加する
既存のプライスカードにスナップショットを追加できるのは、Pricing Views and Actions APIです。
プライスカードにスナップショットを追加するには:
-
例えば、アクションのエンティティビューを取得してください:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "Details", "EditPriceCard", string.Empty); EntityView view = Proxy.GetValue(query); -
必要に応じてビューのプロパティを修正します。例えば:
var displayNameProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("DisplayName")); displayNameProperty.Value = "Edited Card Display Name"; var descriptionProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Description")); descriptionProperty.Value = "Edited Card Description";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
スナップショットを編集する(C#)
価格カードのスナップショットが ドラフト 状態にあるときにプロパティを変更できます。
スナップショットを編集するには:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "PriceSnapshotDetails", "EditPriceSnapshot", snapshotId); EntityView view = Proxy.GetValue(query); -
必要に応じてプロパティビューを修正してください:
var dateProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("BeginDate")); dateProperty.Value = DateTimeOffset.UtcNow.AddDays(5).ToString(CultureInfo.InvariantCulture); var tagsProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("IncludedTags")); tagsProperty.Value = "'Tag1', 'Tag2'";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
価格スナップショット(C#)を削除してください
プライシングアクションとビューAPIを使って、プライスカードから価格スナップショットをプログラム的に削除できます。
スナップショットを削除するには:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", string.Empty, "DeletePriceCard", snapshotId); EntityView view = Proxy.GetValue(query); -
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
Pricing Actions and Views API(C#)を使って階層価格設定に取り組む
Pricing Views and Actions APIを使って階層価格設定を適用できます。これは、販売可能な商品の購入量に基づいて割引を適用する方法です。例えば、階層価格を使えば、販売可能な商品の価格を5.00ドルに設定し、同じ販売可能な商品を5つ以上購入した場合は価格を4.00ドルに下げることができます。
Pricing Views and Actions APIは、価格スナップショットから価格ティアを追加、編集、削除する手法を提供します。これらの操作はドラフト状態の価格スナップショットに対してのみ実行可能です。
スナップショットに価格帯(C#)を追加する
複数の価格帯を同時にスナップショットに追加できます。価格帯を追加するときは、まず通貨を選択し、その階層の数量と価格を指定します。
以下の例は、USD通貨で2つの階層を追加する方法を示しています。1と2の数量と20と10の価格で。子表示は1つの階層のみを返しますが、複数の階層を追加したい場合は子表示を追加できます。
-
アクションのビューを取得し、例えば通貨を指定してUSD:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "PriceRow", "SelectCurrency", snapshotId); EntityView view = Proxy.GetValue(query); var currencyProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Currency")); var availableCurrenciesPolicy = currencyProperty.Policies.OfType ().FirstOrDefault(); currencyProperty.Value = availableCurrenciesPolicy?.List.FirstOrDefault().Name; // == "USD" CommerceCommand command = Proxy.DoCommand(container.DoAction(view)); !注レスポンスは1つの価格帯の子表示のみを返します。
-
例えば、ビュープロパティを設定して数量と価格を指定します:
!注以下の例に示すように、追加の "PriceCell" エンティティを追加し、必要なプロパティ値を設定することで複数の価格帯を追加できます。
view = command.Models.OfType
().FirstOrDefault(v => v.Name.Equals(view.Name)); EntityView firstPriceCellView = view.ChildViews.OfType ().FirstOrDefault(cv => cv.Name.Equals("PriceCell")); firstPriceCellView.Properties.FirstOrDefault(p => p.Name.Equals("Quantity")).Value = "1"; firstPriceCellView.Properties.FirstOrDefault(p => p.Name.Equals("Price")).Value = "20"; // only one PriceCell child view is returned, if you wish to add more than one tier you can add more PriceCell child views EntityView secondPriceCellView = new EntityView { Name = "PriceCell", EntityId = $"Entity-PriceCard-{cardFriendlyId}", ItemId = snapshotId }; secondPriceCellView.Properties.Add(new ViewProperty { Name = "Quantity", Value = "2" }); secondPriceCellView.Properties.Add(new ViewProperty { Name = "Price", Value = "10" }); view.ChildViews.Add(cellView); -
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
価格帯を編集してください
スナップショットで価格帯の金額を変更することができます。スナップショット内の複数の価格帯の価格を同時に編集できます。価格帯の通貨は変更できません。
価格帯の金額を変更するには:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "PriceRow", "EditCurrency", $"{snapshotId}|USD"); EntityView view = Proxy.GetValue(query); !注スナップショットに複数の価格ティアが含まれている場合、レスポンスはそれぞれのティアを子ビューとして返します。
-
PriceCellViewプロパティの値を修正して、例えば望む金額を指定します。
EntityView firstPriceCellView = view.ChildViews.OfType
().FirstOrDefault(cv => cv.Name.Equals("PriceCell")); firstPriceCellView.Properties.FirstOrDefault(p => p.Name.Equals("Price")).Value = "50"; EntityView secondPriceCellView = view.ChildViews.OfType ().LastOrDefault(cv => cv.Name.Equals("PriceCell")); secondPriceCellView.Properties.FirstOrDefault(p => p.Name.Equals("Price")).Value = "100"; -
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
価格帯を外す
スナップショットから価格帯を削除したり、同じ通貨の複数の価格帯を1回のクエリで削除したりできます。
価格帯を外すには:
-
例えば、USD通貨を使った価格帯のアクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "PriceRow", string.Empty, $"{snapshotId}|USD"); EntityView view = Proxy.GetValue(query); -
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
スナップショットの状態を変更する(C#)
価格スナップショットは承認プロセスの対象となります。価格スナップショットは承認状態である必要があります。スナップショット承認プロセス中、価格スナップショットの移行は以下の通りです。
- Draftから ReadyForApproval ステータスへ
- ReadyForApprovaからDraft
- ReadyForApprovalからApproved
!注承認されたスナップショットのステータスを変更することはできません。
スナップショットステータスをドラフトからReadyforApprovalに変更する(C#)
ドラフトスナップショットの承認を求めるには、ステータスをReadyForApprovalに変更します。
スナップショットの承認を依頼するには:
-
例えば、アクションのエンティティビューを取得してください:
{cardFriendlyId}", "SetSnapshotApprovalStatus", "RequestSnapshotApproval", snapshotId); EntityView view = Proxy.GetValue(query);
-
ビューのプロパティを設定します:
var commentProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Comment")); commentProperty.Value = "Requesting approval";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
スナップショットの状態をReadyforApprovalからdraft(C#)に変更する
スナップショットのステータスをReadyforApprovalからdraftに変更すると、承認のために提出されたスナップショットを拒否できます。その後、ドラフトスナップショットを修正できます。
スナップショットを拒否するには:
-
アクションのエンティティビューを取得できます:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "SetSnapshotApprovalStatus", "RejectSnapshot", snapshotId); EntityView view = Proxy.GetValue(query); -
ビューのプロパティを設定します。例えば:
var commentProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Comment")); commentProperty.Value = "Rejecting approval"
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
スナップショットの状態をReadyforApprovalからApratedに変更する(C#)
価格スナップショットを承認するには、ステータスをReadyforApprovalからApprovedに変更します。承認されたスナップショットは変更できません。
価格スナップショットを承認するには:
-
例えば、アクションのエンティティビューを取得してください:
DataServiceQuerySingle
query = container.GetEntityView($"Entity-PriceCard-{cardFriendlyId}", "SetSnapshotApprovalStatus", "ApproveSnapshot", snapshotId); EntityView view = Proxy.GetValue(query); -
ビューのプロパティを設定します。例えば:
var commentProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Comment")); commentProperty.Value = "Approving";
-
行動を実行する:
CommerceCommand command = Proxy.DoCommand(container.DoAction(view));