APIでlocation_overridesのtrack_inventoryをtrueにしたい

Square APIでSquareの商品を登録するプログラムをPHPで作っています。

そのプログラムから商品を登録して、

ダッシュボードで確認すると在庫の追跡がオンになっていません。

ダッシュボードで商品を登録して在庫の追跡をオンにしてその商品をAPIで確認したところ、

 

[item_variation_data] => stdClass Object
 (
  [item_id] => XXXXXXXXXXXXXXXXXXXXXXXX
  [name] => 商品A
  [ordinal] => 1
  [pricing_type] => FIXED_PRICING
  [price_money] => stdClass Object
   (
    [amount] => 1000
    [currency] => JPY
   )

  [location_overrides] => Array
   (
    [0] => stdClass Object
     (
      [location_id] => XXXXXXXXXXXXX
      [track_inventory] => 1
     )
   )

  [track_inventory] => 1
 )

こちらのようになっていて、

item_variation_dataのtrack_inventoryをtrueにして、さらに

location_overridesのtrack_inventoryもtrueに設定すればいいとわかりました。

そこで以下のようなプログラムにしました。

 

$price_money = new \Square\Models\Money();
$price_money->setAmount(1000);
$price_money->setCurrency('JPY');
 
$item_variation_data = new \Square\Models\CatalogItemVariation();
$item_variation_data->setItemId('#hoge');
$item_variation_data->setName('商品A');
$item_variation_data->setPricingType('FIXED_PRICING');
$item_variation_data->setPriceMoney($price_money);
$item_variation_data->setTrackInventory(true);
 
$location_overrides=[];
$item_variation_location_overrides = new \Square\Models\ItemVariationLocationOverrides();
$item_variation_location_overrides->setTrackInventory(true);
$item_variation_data->setLocationOverrides($location_overrides);
 
これで登録すると、

[item_variation_data] => stdClass Object
 (
  [item_id] => XXXXXXXXXXXXXXXXXXXXXXXX
  [name] => 商品A
  [ordinal] => 1
  [pricing_type] => FIXED_PRICING
  [price_money] => stdClass Object
   (
    [amount] => 1000
    [currency] => JPY
   )

  [location_overrides] => Array
   (
    [0] => stdClass Object
     (
      [location_id] => XXXXXXXXXXXXX
     )
   )

  [track_inventory] => 1
 )

 

のようになって、

item_variation_dataにはtrack_inventory属性が追加されてその値もtrueになりますが、

location_overridesのほうはlocation_idは自動で登録されるようですが

track_inventoryは属性名も値も何もありません。

ダッシュボードで商品を登録して在庫の追跡をオンにしたときと全く同じになるようにしたいので、

このlocation_overridesオブジェクトにtrack_inventoryが設定されるようにして

[location_overrides] => Array
 (
  [0] => stdClass Object
   (
    [location_id] => XXXXXXXXXXXXX
    [track_inventory] => 1
   )
 )

となるようにしたいのです。

APIではこのlocation_overridesのtrack_inventoryの登録はできないのでしょうか。

APIで登録した商品がダッシュボードで在庫の追跡がオンになっていればいいのですが、

それにはitem_variation_dataのtrack_inventoryだけあればいいのでしょうか。

ショップは1つだけですのでlocation_overridesのほうは不要なのでしょうか。

どうぞよろしくお願いします。

 

 

 

644 Views
Message 1 of 3
Report
1 Solution

Solution

本番環境では

location_overridesのtrack_inventoryはtrueになりました。

サンドボックスではlocation_overridesのsetTrackInventoryは有効ではないようです。

解決したようです。

何かお気付きになられたことなどありましたらご意見いただけると幸いです。

View Solution >

631 Views
Message 3 of 3
Report
2 REPLIES 2

補足ですがAPIを動かしているのはサンドボックスです。

本番環境ではlocation_overridesのtrack_inventoryは登録されるかもしれないので試してみようと思いますが。

ItemVariationLocationOverrides.phpを見ると

public function setTrackInventory(?bool $trackInventory): void
{
$this->trackInventory = $trackInventory;
}

のようにtrackInventory設定のメソッドがあるようです。

641 Views
Message 2 of 3
Report

Solution

本番環境では

location_overridesのtrack_inventoryはtrueになりました。

サンドボックスではlocation_overridesのsetTrackInventoryは有効ではないようです。

解決したようです。

何かお気付きになられたことなどありましたらご意見いただけると幸いです。

632 Views
Message 3 of 3
Report