スマレジAPI の仕様変更に伴うドライバーの対応のお知らせ



2021年2月15日に株式会社スマレジより、API の利用につき以下の案内がございました。これを受け、CData Driver および CData Sync (スマレジ連携製品)でのクエリ方法に注意が必要になります。この記事では新しいAPI 仕様でのドライバーの使用方法を説明します。


スマレジ社からの案内の抜粋

【スマレジ】スマレジAPI(V2)仕様変更のお知らせ(管理画面)
一部のテーブル参照時、検索条件が必須になります。現在公開中のスマレジAPIに於いて、特定の方法でご利用いただいた際にデータベースサーバーへ大きな負荷がかかる問題がございます。 データベースサーバーへの負荷を軽減するため、一部のテーブル参照に際して検索条件の必須化を実施いたします。 大変お手数をお掛けして申し訳ございませんが、必須条件が設定されていない場合、正常にAPI連携が行われなくなりますので、下記の必須検索条件をご確認いただき、スマレジ管理画面 ver.4.10.0 リリースまでに修正・改修などご対応くださいますようお願いいたします。

取引情報参照 > 取引(TransactionHead):OR条件

下記の絞り込み条件のうち、1つ以上の条件がリクエストに設定されていないとエラーになります。

  • 取引ID [transactionHeadId] ID指定,From-To(From-To指定可能範囲は10万以内)
  • 取引日時[transactionDateTime] From-To(期間は31日間(1ヶ月ではありません))
  • 端末取引日時[terminalTranDateTime] From-To(期間は31日間(1ヶ月ではありません))
  • 締め日時[sumDateTime] 日付直接指定 または From-To(期間は31日間(1ヶ月ではありません))
  • 更新日時[updDateTime] From-To(期間は31日間(1ヶ月ではありません))

取引情報参照 > 取引明細(TransactionDetail):OR条件

下記の絞り込み条件のうち、1つ以上の条件がリクエストに設定されていないとエラーになります。

  • 取引ID [transactionHeadId] ID 指定,From-To(From-To 指定可能範囲は10万以内)
  • 取引日時 [transactionDateTime] From-To(期間は31日間(1ヶ月ではありません))
  • 更新日時 [updDateTime] From-To(期間は31日間(1ヶ月ではありません))

在庫情報参照 > 在庫履歴(StockHistory):OR条件

下記の絞り込み条件のうち、1つ以上の条件がリクエストに設定されていないとエラーになります。

  • ID [id] ID指定, From-To (From-To 指定可能範囲は10万以内)
  • 商品ID [productId] ID直接指定のみ
  • 対象日時 [targetDateTime] From-To(期間は31日間(1ヶ月ではありません))
※ 在庫情報の『更新日時 [targetDateTime]』のみ2021年9月まで期間限定で指定可能。 ※ それより後は必須条件からは外れるため、上記の他の検索条件をご指定いただく必要がございます。


CData 製品での対処方法

スマレジ連携製品では、デフォルトでは対象データの全件取得が可能になっていますが、各種フィルター条件の付与をサポートしています。以下のトランザクション系のテーブル・ビューを取得する場合は、フィルター条件を付与してください。

  • TransactionHeads
  • TransactionDetails
  • StockHistories
実行可能なクエリのサンプルは以下の通りです。日付項目の範囲指定に関しては期間が31日間、Idの範囲指定は10万件以内の取得となるよう調整してください。CData Sync で上記データを同期する場合、差分更新では自動的に以下のようなフィルター処理が内部的に実行されます。全件取得する場合は、分割してリクエストを実行する必要があります。

TransactionHeads

ID による範囲指定を行う場合の例

SELECT * FROM TransactionHeads WHERE TransactionHeadId >= 1 and TransactionHeadId <= 100000;

日付による範囲指定を行う場合の例

SELECT * FROM TransactionHeads WHERE TransactionDateTime >= '2021/03/01 00:00' and TransactionDateTime <= '2021/03/31 00:00';
SELECT * FROM TransactionHeads WHERE TerminalTranDateTime >= '2021/03/01 00:00' and TerminalTranDateTime <= '2021/03/31 00:00';
SELECT * FROM TransactionHeads WHERE AdjustmentDateTime >= '2021/03/01 00:00' and AdjustmentDateTime <= '2021/03/31 00:00';
SELECT * FROM TransactionHeads WHERE SumDateTime >= '2021/03/01 00:00' and SumDateTime <= '2021/03/31 00:00';
SELECT * FROM TransactionHeads WHERE CancelDateTime >= '2021/03/01 00:00' and CancelDateTime <= '2021/03/31 00:00';
SELECT * FROM TransactionHeads WHERE UpdDateTime >= '2021/03/01 00:00' and UpdDateTime <= '2021/03/31 00:00';

TransactionDetails

ID による範囲指定を行う場合の例

SELECT * FROM TransactionDetails WHERE TransactionHeadId >= 1 and TransactionHeadId <= 100000;

日付による範囲指定を行う場合の例

SELECT * FROM TransactionDetails WHERE TransactionDateTime => '2021/03/01 00:00' and TransactionDateTime <= '2021/03/31 00:00';
SELECT * FROM TransactionDetails WHERE UpdDateTime => '2021/03/01 00:00' and UpdDateTime <= '2021/03/31 00:00';

StockHistory

ID による範囲指定を行う場合の例

SELECT * FROM StockHistories WHERE Id >= 1 and ProductId <= 100000;
SELECT * FROM StockHistories WHERE ProductId = 1;

日付による範囲指定を行う場合の例

SELECT * FROM StockHistories WHERE TargetDateTime => '2021/03/01' and TargetDateTime <= '2021/03/31';

もしお困りのことがございましたら、弊社のサポートデスクまでご相談ください。