この記事では、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 | ブール | オプション | このパラメータは、DefaultWarehouseOnly が false に設定されているときのフルフィルメント グループを定義します。 |
DeliveryModeTypeFilterValue | (int) DeliveryModeTypeFilter | オプション | 倉庫を、サポートされている出荷モードでフィルタリングします。
|
QuantityUnitTypeValue | (int) QuantityUnitType | オプション | 測定単位の返品する品目の数量:
|
SearchArea
名前 | 型 | 必須/オプション | Description |
---|---|---|---|
緯度 | decimal | オプション | |
経度 | decimal | オプション | |
Radius | double | オプション | |
DistanceUnit | (int) DistanceUnit | オプション |
|
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 | 必須 | 在庫数量の要求と集計に使用する製品分析コード のタイプ。
|
MatchingDimensionValues | ICollection<ProductDimension> | オプション | 分析コード値が一致する製品のみを集計します。 |
DefaultWarehouseOnly | ブール | オプション | この値が true の場合は、オンライン チャンネルの既定の倉庫だけがクエリされます。 この値が false の場合、オンライン チャネルのフルフィルメント グループにリンクされている倉庫と、オンライン チャネルと同じ法人を共有する倉庫がクエリされます。 |
FilterByChannelFulfillmentGroup | ブール | オプション | このパラメータは、DefaultWarehouseOnly が false に設定されているときのフルフィルメント グループを定義します。 |
DeliveryModeTypeFilterValue | (int) DeliveryModeTypeFilter | オプション | 倉庫を、サポートされている出荷モードでフィルタリングします。
|
CatalogId | long | オプション | 製品が属するカタログの ID。 |
ProductDimension
名前 | 型 | 必須/オプション | Description |
---|---|---|---|
DimensionTypeValue | (int) ProductDimensionType | 必須 | 在庫数量の要求と集計に使用する製品分析コード のタイプ。
|
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 の出力で製品数量を返す方法を定義するには、次の手順に従います。
Retail と Commerce > 本社の設定 > パラメーター > Commerce パラメーター の順にクリックします。
在庫 タブを選択し、電子商取引の在庫可用性 API クイックタブで、API 出力の数量 フィールドで次のオプションから一つを選択します。
- 在庫数量を返す – API の出力で、要求された製品の引当可能現物数と利用可能な合計数量を返します。
- 在庫バッファーを差し引いた在庫数量を返す – API 出力で返される数量は在庫バッファー値を差し引いて調整されます。 在庫バッファーの詳細については、在庫バッファーと在庫レベルのコンフィギュレーションを参照してください。
- 在庫数量は返さない – 在庫レベルだけが API 出力で返されます。 在庫レベルの詳細については、在庫バッファーと在庫レベルのコンフィギュレーションを参照してください。
1070 (チャネル構成) ジョブを実行し、チャネルに最新の設定を同期します。