次の方法で共有


eコマースの引当可能在庫数 API

この記事では、Microsoft Dynamics 365 Commerce での電子商取引の在庫利用可能な API について説明します 。

電子商取引のシナリオにおいて製品の引当可能在庫数量のクエリを実行するために、Commerce は次の API を提供します。

  • GetEstimatedAvailability – この API を使用して、オンライン チャネルのデフォルトの倉庫またはオンライン チャネルのフルフィルメント グループにリンクされている倉庫の製品または製品バリアントの在庫のクエリを実行します。
  • GetEstimatedProductWarehouseAvailability – 特定の倉庫からの製品または製品バリアントのクエリを実行するには、この API を使用してください。
  • GetDimensionValuesWithEstimatedAvailabilities – この API を使用して、オンライン チャネルのデフォルト倉庫またはオンライン チャネルのフルフィルメント グループにリンクされている倉庫の製品のディメンション上での集計である在庫のクエリを実行します。
  • UpdateProductWarehouseAvailabilities – 特定の倉庫で製品または製品バリアントの在庫を更新するには、この API を使用してください。

ノート

GetEstimatedAvailability API と GetEstimatedProductWarehouseAvailability API は、Commerce バージョン 10.0.7 以前で使用されていた GetProductAvailabilities API と GetAvailableInventoryNearby を置き換えます。

Retail Server API を外部アプリケーションで利用する方法の詳細については、外部アプリケーションで Retail Server API を利用する を参照してください。

GetEstimatedAvailability

入力パラメーター

名前 必須/オプション Description
searchCriteria InventoryAvailabilitySearchCriteria 必須

InventoryAvailabilitySearchCriteria

名前 必須/オプション Description
ProductIds IEnumberable<long> 必須
DefaultWarehouseOnly ブール オプション この値が true の場合は、オンライン チャンネルの既定の倉庫だけがクエリされます。 この値が false の場合、オンライン チャネルのフルフィルメント グループにリンクされている倉庫と、オンライン チャネルと同じ法人を共有する倉庫がクエリされます。
SearchArea SearchArea オプション フルフィルメント グループでの集荷のために店舗を検索するエリア。
FilterByChannelFulfillmentGroup ブール オプション このパラメータは、DefaultWarehouseOnlyfalse に設定されているときのフルフィルメント グループを定義します。
DeliveryModeTypeFilterValue (int) DeliveryModeTypeFilter オプション

倉庫を、サポートされている出荷モードでフィルタリングします。

  • (0) All – すべての倉庫を検索します。 この値が既定値です。
  • (1) Shipping – 出荷可能な倉庫を検索します。
  • (2) Pickup – ピックアップ可能な倉庫を検索します。
QuantityUnitTypeValue (int) QuantityUnitType オプション

測定単位の返品する品目の数量:

  • (0) Inventory – 測定の在庫単位。 この値が既定値です。
  • (1) Purchase – 測定の購買単位。
  • (2) Sales – 測定の販売単位。

SearchArea

名前 必須/オプション Description
緯度 decimal オプション
経度 decimal オプション
Radius double オプション
DistanceUnit (int) DistanceUnit オプション
  • (0) Miles
  • (1) Kilometers
IsUnbounded ブール オプション

サンプル要求本文

{
    "searchCriteria": {
        "ProductIds": [
            123456
        ],
        "QuantityUnitTypeValue": 2,
        "DefaultWarehouseOnly": true
    }
}

応答本文の例

{
    "ProductWarehouseInventoryAvailabilities": [
        {
            "ProductId": 123456,
            "InventLocationId": "{OnlineChannelWarehouse}",
            "DataAreaId": "{DataAreaId}",
            "PhysicalInventory": 0,
            "PhysicalReserved": 0,
            "TotalAvailable": 1,
            "TotalAvailableInventoryLevelLabel": "Available",
            "TotalAvailableInventoryLevelCode": "AVAIL",
            "OrderedInTotal": 0,
            "PhysicalAvailable": 0,
            "PhysicalAvailableInventoryLevelLabel": "Out of stock",
            "PhysicalAvailableInventoryLevelCode": "OOS",
            "LastInventoryTransactionId": 987654,
            "UnpostedOnlineOrderedQuantity": 0,
            "UnpostedFulfilledQuantity": 0,
            "IsInventoryAvailabilityQuantityReturned": true,
            "UnprocessedQuantity": 0,
            "QuantityUnitTypeValue": 2,
            "UnitOfMeasure": "ea",
            "MaximumPurchasablePhysicalAvailableQuantity": 0,
            "MaximumPurchasableTotalAvailableQuantity": 1,
            "SumUncountedTransactions": 0,
            "ExtensionProperties": []
        }
    ],
    "AggregatedProductInventoryAvailabilities": [
        {
            "ProductId": 123456,
            "DataAreaId": "{DataAreaId}",
            "TotalAvailableQuantity": 1,
            "TotalAvailableInventoryLevelLabel": "Available",
            "TotalAvailableInventoryLevelCode": "AVAIL",
            "PhysicalAvailableQuantity": 0,
            "PhysicalAvailableInventoryLevelLabel": "Out of stock",
            "PhysicalAvailableInventoryLevelCode": "OOS",
            "QuantityUnitTypeValue": 2,
            "UnitOfMeasure": "ea",
            "MaximumPurchasablePhysicalAvailableQuantity": 0,
            "MaximumPurchasableTotalAvailableQuantity": 1,
            "ExtensionProperties": []
        }
    ],
    "ExtensionProperties": []
}

GetEstimatedProductWarehouseAvailability

入力パラメーター

名前 必須/オプション Description
productWarehouses IEnumerable<ProductWarehouse> 必須

ProductWarehouse

名前 必須/オプション Description
製品 ID long 必須
InventLocationId 文字列 必須 倉庫の ID。
DataAreaId 文字列 必須

サンプル要求本文

{
    "productWarehouses": [
        {
            "ProductId": 123456,
            "InventLocationId": "{WarehouseId}",
            "DataAreaId": "{DataAreaId}"
        }
    ]
}

応答本文の例

{
    "ProductWarehouseInventoryAvailabilities": [
        {
            "ProductId": 123456,
            "InventLocationId": "{OnlineChannelWarehouse}",
            "DataAreaId": "{DataAreaId}",
            "PhysicalInventory": 0,
            "PhysicalReserved": 0,
            "TotalAvailable": 1,
            "TotalAvailableInventoryLevelLabel": "Available",
            "TotalAvailableInventoryLevelCode": "AVAIL",
            "OrderedInTotal": 0,
            "PhysicalAvailable": 0,
            "PhysicalAvailableInventoryLevelLabel": "Out of stock",
            "PhysicalAvailableInventoryLevelCode": "OOS",
            "LastInventoryTransactionId": 987654,
            "UnpostedOnlineOrderedQuantity": 0,
            "UnpostedFulfilledQuantity": 0,
            "IsInventoryAvailabilityQuantityReturned": true,
            "UnprocessedQuantity": 0,
            "QuantityUnitTypeValue": 2,
            "UnitOfMeasure": "ea",
            "MaximumPurchasablePhysicalAvailableQuantity": 0,
            "MaximumPurchasableTotalAvailableQuantity": 1,
            "SumUncountedTransactions": 0,
            "ExtensionProperties": []
        }
    ],
    "AggregatedProductInventoryAvailabilities": [
        {
            "ProductId": 123456,
            "DataAreaId": "{DataAreaId}",
            "TotalAvailableQuantity": 1,
            "TotalAvailableInventoryLevelLabel": "Available",
            "TotalAvailableInventoryLevelCode": "AVAIL",
            "PhysicalAvailableQuantity": 0,
            "PhysicalAvailableInventoryLevelLabel": "Out of stock",
            "PhysicalAvailableInventoryLevelCode": "OOS",
            "QuantityUnitTypeValue": 2,
            "UnitOfMeasure": "ea",
            "MaximumPurchasablePhysicalAvailableQuantity": 0,
            "MaximumPurchasableTotalAvailableQuantity": 1,
            "ExtensionProperties": []
        }
    ],
    "ExtensionProperties": []
}

GetDimensionValuesWithEstimatedAvailabilities

入力パラメーター

名前 必須/オプション Description
searchCriteria ProductDimensionAvailabilitySearchCriteria 必須

ProductDimensionAvailabilitySearchCriteria

名前 必須/オプション Description
RequestedDimensionTypeValue (int) ProductDimensionType 必須

在庫数量の要求と集計に使用する製品分析コード のタイプ。

  • (1) Color – 色分析コード。
  • (2) Configuration – 構成分析コード。
  • (3) Size – サイズ分析コード。
  • (4) Style – 0スタイル分析コード。
MatchingDimensionValues ICollection<ProductDimension> オプション 分析コード値が一致する製品のみを集計します。
DefaultWarehouseOnly ブール オプション この値が true の場合は、オンライン チャンネルの既定の倉庫だけがクエリされます。 この値が false の場合、オンライン チャネルのフルフィルメント グループにリンクされている倉庫と、オンライン チャネルと同じ法人を共有する倉庫がクエリされます。
FilterByChannelFulfillmentGroup ブール オプション このパラメータは、DefaultWarehouseOnlyfalse に設定されているときのフルフィルメント グループを定義します。
DeliveryModeTypeFilterValue (int) DeliveryModeTypeFilter オプション

倉庫を、サポートされている出荷モードでフィルタリングします。

  • (0) All – すべての倉庫を検索します。 この値が既定値です。
  • (1) Shipping – 出荷可能な倉庫を検索します。
  • (2) Pickup – ピックアップ可能な倉庫を検索します。
CatalogId long オプション 製品が属するカタログの ID。

ProductDimension

名前 必須/オプション Description
DimensionTypeValue (int) ProductDimensionType 必須

在庫数量の要求と集計に使用する製品分析コード のタイプ。

  • (1) Color – 色分析コード。
  • (2) Configuration – 構成分析コード。
  • (3) Size – サイズ分析コード。
  • (4) Style – 0スタイル分析コード。
DimensionValue ProductDimensionValue 必須

ProductDimensionValue

名前 必須/オプション Description
RecordId long 必須
金額 文字列 必須

サンプル要求本文

{
    "searchCriteria": {
        "RequestedDimensionTypeValue": 3,
        "MatchingDimensionValues": [
            {
                "DimensionTypeValue": 3,
                "DimensionValue": {
                    "RecordId": 0,
                    "Value": "{Size}"
                }
            }
        ],
        "DefaultWarehouseOnly": true,
        "FilterByChannelFulfillmentGroup": true,
        "DeliveryModeTypeFilterValue": 1,
        "CatalogId": 0
    }
}

応答本文の例

{
    "value": [
        {
            "DimensionTypeValue": 3,
            "DimensionValue": {
                "RecordId": 456789,
                "Value": "{Size}",
                "DimensionId": "{DimensionId}",
                "ColorHexCode": "",
                "ImageUrl": "",
                "RefinerGroup": "",
                "ExtensionProperties": []
            },
            "ProductIds": [
                123456
            ],
            "TotalAvailableInventoryLevelLabel": "Available",
            "TotalAvailableInventoryLevelCode": "AVAIL",
            "PhysicalAvailableInventoryLevelLabel": "Available",
            "PhysicalAvailableInventoryLevelCode": "AVAIL"
        }
    ]
}

UpdateProductWarehouseAvailabilities

UpdateProductWarehouseAvailabilities API は、在庫可視性サービス (IVS) を使用して、リアルタイムでオムニチャネル在庫データを更新します。 この API を使用する前提条件として、まず Commerce 環境の在庫データ プロバイダーとして IVS を有効にする必要があります。 UpdateProductWarehouseAvailabilities API は BusinessPartnerEmployee ロールのもとで機能します。このロールは、ビジネスからビジネスへのビジネス (B2B2B) のシナリオで販売者チャネルで働く契約社員を表す要求に使用されます。

入力パラメーター

名前 必須/オプション Description
数量 IEnumerable<ProductWarehouseQuantity> 必須

ProductWarehouseQuantity

名前 必須/オプション Description
製品 ID long 必須
InventoryLocationId 文字列 必須 倉庫の ID。
PhysicalInventory decimal 必須 目標数量。

サンプル要求本文

{
    "quantities": [
        {
            "ProductId": 123456,
            "InventoryLocationId": "{WarehouseId}",
            "PhysicalInventory": 100
        }
    ]
}

応答本文の例

{
    "SuccessfulUpdates": [
        {
            "ProductId": 123456,
            "ItemId": "0001",
            "DataAreaId": "{DataAreaId}",
            "ColorId": "",
            "SizeId": "",
            "StyleId": "",
            "ConfigurationId": "",
            "InventoryLocationId": "{WarehouseId}",
            "InventorySiteId": "{SiteId}",
            "TotalAvailable": 100.0,
            "PhysicalAvailable": 100.0,
            "PhysicalInventory": 100.0,
            "PhysicalReserved": 0,
            "OrderedInTotal": 0
        }
    ],
    "FailedUpdates": [],
    "ExtensionProperties": []
}

API の数量の出力

GetEstimatedAvailability and GetEstimatedProductWarehouseAvailability API は、次の 2 つのデータ・ソースから在庫データをフェッチできます:

  • 在庫データ プロバイダーとして在庫可視化を使用する 設定を headquarters の Commerce 共有パラメータ でオンにすると、在庫状況データは、Commerce Headquarters 環境用に構成した IVS から取得されます。
  • 在庫データ プロバイダーとして在庫可視化を使用する設定をバックオフィスの Commerce 共有パラメーターでオフにすると、在庫状況データは Commerce Scale Unit (CSU) チャンネル データベースから取得され、推定される利用可能な現物数量と利用可能な合計数量が計算されます。

戻り値は、E コマース サイトに表示するか、または E コマース サイトで他のビジネス ロジックのトリガーとして使用することができます。 たとえば、在庫レベルが「在庫切れ」である製品の購入を防止することができます。

Commerce で使用できる他の API は、Commerce Headquarters に直接アクセスして製品の持ち物数量をフェッチすることもできます。 ただし、パフォーマンス上の問題や、このような頻繁な要求が Commerce Headquarters サーバーに与える可能性がある影響などから、これらのデータをeコマース環境で使用することをお勧めしません。 チャンネル側の計算では、GetEstimatedAvailability API と GetEstimatedProductAvailability API は、チャンネルで作成されたトランザクションを考慮することで、製品の入手可能性のより正確な見積を提供できます。ただし、これらトランザクションは Commerce Headquarters には明らかにされていません。

API の出力で製品数量を返す方法を定義するには、次の手順に従います。

  1. Retail と Commerce > 本社の設定 > パラメーター > Commerce パラメーター の順にクリックします。

  2. 在庫 タブを選択し、電子商取引の在庫可用性 API クイックタブで、API 出力の数量 フィールドで次のオプションから一つを選択します。

  3. 1070 (チャネル構成) ジョブを実行し、チャネルに最新の設定を同期します。