---
title: "Orders Entity Views and Actions API(C#)を使って作業してください"
slug: "work-with-the-orders-entity-views-and-actions-api--c--"
abstract: "注文を保留、注文行の削除、注文行の追加、注文行の編集など、注文関連操作の実行方法。"
---
# Orders Entity Views and Actions API(C#)を使って作業してください

外部システムは、注文エンティティビューおよびアクションAPIを使って注文関連情報を交換できます。

> !注ビューズ&アクションAPIは、ビジネスユーザーインターフェースに対応するために設計された [オーサリングAPI](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/authoring-api.html "Authoring API")であり、統合シナリオには最適化されていません。
> 
> Views and Actions APIをコマース統合で使用する際には、以下の点を考慮する必要があります。
> 
> -   Views and Actions APIは一度に1つのCommerceエンティティしか処理できず、バッチ処理はサポートしていません。
>     
> -   Views and Actions APIはCommerce WebサービスのAPIよりも多くのオーバーヘッドを伴います。Views and Action APIの呼び出しは通常3ステップで、アクションのビューを取得し、ビューのプロパティを更新した値で修正し、アクションを実行します。
>     

[この例で示](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm45761463057952 "Add an order line (C#)")されているように、Orders Views and Actions APIへの呼び出しは通常以下のステップを含みます。

-   アクションの視点を取る。
-   ビューのプロパティ値(必要に応じて)を変更すること。
-   行動を実行すること。

> !注XCコマースエンジンへのAPI呼び出しには、以下の条件を満たさなければなりません:
> 
> -   [有効な認証トークン](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/obtain-an-authentication-token--c--.html "Obtain an authentication token (C#)")を提供してください。
>     
> -   [コンテナクラスをビルドまたは再利用](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/build-a-container--c--.html "Build a container (C#)")してください。
>     

## Entity Views and Actions API(C#)を使って注文を扱う

Entity Views and Actions APIを使って、以下の注文関連操作を行うことができます:

-   [注文を保留にする(C#)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm45761463440432 "Put an order on hold (C#)")
-   [順序行を削除する(C#)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm45837282344784 "Delete an order line (C#)")
-   [注文行(C#)を追加](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm45761463057952 "Add an order line (C#)")
-   [注文行(C#)を編集する](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm45417401286144 "Edit an order line (C#)")
-   [保留命令を解除する(C#)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm45837281364368 "Release an order from hold (C#)")
-   [注文の変更を元に戻す(C#)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm46408119156416 "Undo changes made to an order (C#)")
-   [注文の保留をキャンセルする(C#)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm46031842607872 "Cancel hold on an order (C#)")
-   [アイテムの返却(C#)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/work-with-the-orders-entity-views-and-actions-api--c--.html#UUID-672642b5-3cf0-a009-3066-d17a4ec0f9f8_section-idm46031843339072 "Return an item (C#)")

### 注文を保留にする(C#)

注文の保留 *状態が保留*中の場合のみ、注文を保留にすることができます。

C#を使って注文を保留にするには:

1.  例えば、アクションのエンティティビューを取得してください:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", string.Empty, "HoldOrder",
    string.Empty);
    EntityView view = Proxy.GetValue(query);
    
2.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
### 順序行を削除する(C#)

注文ステータスが *保留*中であれば、注文ラインを削除できます。

保留中の注文から行を削除するには、C#:

1.  例えば、アクションのエンティティビューを取得してください:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", string.Empty, "DeleteLineItem", lineId);
    
2.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
### 注文行(C#)を追加

注文のステータスが *保留*中である場合にのみ、注文に行を追加できます。

保留中の注文に行項目を追加するには、C#:

1.  エンティティビューを取得します(リクエストで注文IDを指定する必要があります)、例えば:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", "AddLineItem",
    "AddLineItem", string.Empty)
    EntityView view = Proxy.GetValue(query);
    
2.  例えば、項目の性質と数量を指定します。
    
    var itemProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Item"));
    itemProperty.Value = "Adventure Works Catalog|AW188-06|20";
    var quantityProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Quantity"));
    quantityProperty.Value = "1";
    
3.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
### 注文行(C#)を編集する

注文ラインの編集は、注文のステータスが *保留*中である場合にのみ可能です。

例えば、注文行を変更するには、項目数を*5*に変えます:

1.  特定の注文に対するアクションのエンティティビューを取得します(リクエストは注文IDと項目項目IDを指定する必要があります)、例えば:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", "EditLineItem",
    "EditLineItem", lineId);
    EntityView view = Proxy.GetValue(query);
    
2.  項目数を*5*に修正してください:
    
    var quantityProperty = view.Properties.FirstOrDefault(p =>; p.Name.Equals("Quantity")); quantityProperty.Value = "5";
    
3.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));

### 保留命令を解除する(C#)

注文を *保留* 状態から解放するには:

1.  例えば、アクションのエンティティビューを取得してください:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", string.Empty, "ReleaseOrder",
    string.Empty);
    EntityView view = Proxy.GetValue(query);
    
2.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
    
    > !注リリース後は、注文は保留状態に戻ります。
    

### 注文の変更を元に戻す(C#)

*注文が保留*中に変更されたことを元に戻すには:

1.  例えば、アクションのエンティティビューを取得してください:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", string.Empty, "UndoOnHoldOrder", string.Empty); EntityView view = Proxy.GetValue(query);
    
2.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
    
    > !注変更を元に戻した後も、注文は *保留*のままです。
    

### 注文の保留をキャンセルする(C#)

C#を使って注文の保留を解除するには:

1.  例えば、アクションのエンティティビューを取得してください:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", string.Empty, "CancelOnHoldOrder", string.Empty);
    EntityView view = Proxy.GetValue(query);
    
2.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
    

> !注保留を解除すると、注文は*Pending*の状態に戻ります。

### 注文をキャンセルする(C#)

保留中の注文のみキャンセル可能です。

保留中の注文をC#でキャンセルするには:

1.  例えば、アクションのエンティティビューを取得してください:
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", string.Empty, "CancelOrder",
    string.Empty);
    EntityView view = Proxy.GetValue(query);
    
2.  行動を実行する:
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
    
    > !注保留をキャンセルすると、注文のステータスが*キャンセル*に変わります。
    

### アイテムの返却(C#)

Entity Views and Actions APIを使ってプログラム的に [商品返品認証(RMA)](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/orders-service---returns.html "Orders service – Returns") リクエストを実行できます。

> !注注文状況がcompletedになったらRMAを申請できます。

注文項目に対してC#を使ってRMAリクエストを行うには:

1.  返品理由と返品すべき項目の数量を指定します。次の例では、返品理由は*間違った品目*です。返品された数量は*1*です。
    
    DataServiceQuerySingle<EntityView> query = container.GetEntityView($"Entity-Order-{orderId}", "RequestRma", "ValidateRmaRequest", lineId);
    EntityView view = Proxy.GetValue(query);
    var reasonProperty = view.Properties.FirstOrDefault(p => p.Name.Equals("Option"));
    var availableReasonsPolicy = reasonProperty.Policies.OfType<AvailableSelectionsPolicy>().FirstOrDefault();
    reasonProperty.Value = availableReasonsPolicy?.List.FirstOrDefault(o => o.Name.Equals("WrongItem")).Name;
    view.Properties.FirstOrDefault(p => p.Name.Equals("Quantity")).Value = 1;
    
2.  返品リクエストを進めるかどうか確認してください。
    
    CommerceCommand command = Proxy.DoCommand(container.DoAction(view));
    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));
    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    command = Proxy.DoCommand(container.DoAction(view));
    
3.  行動を実行する:
    
    view = command.Models.OfType<EntityView>().FirstOrDefault(v => v.Name.Equals(view.Name));
    command = Proxy.DoCommand(container.DoAction(view));command = Proxy.DoCommand(container.DoAction(view));