取引取得時のセールIDについて
下記のエンドポイントを利用して取引・取引明細を取得しています。
https://api.smaregi.dev/(契約ID)/pos/transactions/(取引ID)?with_details=all
【取引取得レスポンス】
{"transactionHeadId":"12",(省略),"details":[{"transactionHeadId":"12",(省略),"bargainId":"3","bargainName":"\u30bb\u30fc\u30eb","bargainDivision":"2","bargainValue":"20","applyBargainValue":"20","applyBargainDiscountPrice":"20","taxRate":"10.000","standardTaxRate":"10.000","modifiedTaxRate":null,"reduceTaxId":null,"reduceTaxName":null,"reduceTaxRate":null,"reduceTaxPrice":null,"reduceTaxMemberPrice":null}]}
取引取得レスポンスの値についてどの値を参照しているのかご教示ください。
・セールID
→ 管理画面の[高度な商品管理]>[セール]>[ID]の認識ですが、取引取得APIで同名のパラメータを確認したところ、3が入っておりました。
管理画面上ではセールは2つしか登録しておらず、どのセールを参照しているのかがわかりません。
また取引取得レスポンスからどのセールが適用されているかを確認することはできないのでしょうか。
【セール一覧レスポンス】
エンドポイント: https://api.smaregi.dev/(契約ID)/pos/bargain
[{"bargainId":"1","bargainName":"\u30bb\u30fc\u30eb","termStart":"2021-02-16","termEnd":"2021-02-28","insDateTime":"2021-02-16T13:26:13+09:00","updDateTime":"2021-02-16T13:26:13+09:00"},{"bargainId":"2","bargainName":"\u30bb\u30fc\u30eb","termStart":"2021-02-16","termEnd":"2022-04-01","insDateTime":"2021-03-24T13:57:22+09:00","updDateTime":"2021-03-24T13:57:22+09:00"}]
・セール値、適用セール値
→ 違いについてご教示ください。
答え
@ary
確認させていただきましたところ "bargainId" には「セールID」ではなく「セール商品ID」が入るようになっておりました。
誠に申し訳ございません。
ご認識の通り「セールID」の値が入るのが正しいので、4月上旬中の修正を予定しております。
各項目の定義は以下になります。
・セール値:セールマスタの値
・適用セール値:販売時に適用されたセール値
※アプリ上でセール値を変更されると値に違いが生じます。
ですが、現状どちらの項目も「適用セール値」が入る不具合が発生しています。
現時点では修正時期が未定となっておりますが、こちらの不具合によりアプリ開発に不都合がございましたら、ご教示いただけますでしょうか。
@ary
まことに申し訳ございませんが、こちら調査結果を訂正させていただきます。
実際に取引明細に保持されているデータや、取引登録APIのレスポンスデータの説明等、既存の他の機能との比較を行いました結果、取引取得において明細のbargainId には、「セール商品ID」が入るのが正しく、従いまして今回の件は仕様書の誤記となります。
セール商品IDはセールの対象となった商品・部門・グループコードに対して割り振られるIDであり、
セール商品一覧取得API
にて、セールIDとの紐つけをご確認いただくことができます。従いまして、セール情報を取得いただく場合、下記のようにしていただけますでしょうか?
なお、上記は手順として少々長くなりますため、セール商品IDから直接セールIDを一意に取得できるような検索条件を追加する改善を5月にリリースさせていただく予定です。
また、取引取得APIの仕様書につきましては、bargainIdでは実際にはセール商品IDが取得されます旨、急ぎ4月リリースで追記させていただきます。
混乱の元となってしまい申し訳ございません。
ご不便をおかけしますが、どうぞよろしくお願いいたします。
@スマレジ 大橋
ご確認ありがとうございます。
取引取得APIの明細より、bargainIdがnullではない明細を抽出。
当該明細の商品ID、部門ID、グループコードをセール商品一覧取得IDの検索条件`target_id`に設定、`target_division`(1:部門、2:商品、3:グループコード)もそれに合わせて設定して、検索結果からセールID(bargainId)を取得
検索結果が複数あった場合は、結果レコードのうちセール商品ID(bargainProductId)が取引明細から取得されたbargainIdの値と一致するレコードからセールID(bargainId)を取得
上記手順について確認させてください。
「セール商品一覧取得API」は必須項目として、「セールID」が存在します。
ご提案いただいた方法を行う場合、一度「セール一覧取得API」からセールを取得する必要がある認識です。
そのうえで、「セール商品一覧取得API」を取得したすべてのセールに対して実行することになるかと思われます。
セール商品IDはそのセール内で一意となるのみで他のセールでは重複する可能性のある項目という認識ですが、
セールの特定は上記で行えるということでよろしいでしょうか。
見当違いの質問でしたら申し訳ございません。
@ary
ご案内の手順が漏れており重ね重ね申し訳ございません。
おっしゃる通り、セールIDの取得にまずセール一覧取得APIをご利用いただく必要がございます。
なお、セール商品IDはセール横断で一意の連番値となっております。
従いまして、先にセール一覧取得APIにてセールIDを取得していただき、その後、それらIDに対してセール商品一覧取得APIを実行され、そのレスポンスの中から取引取得APIから取得されたセール商品IDを持つレコードを探していただく、という流れになります。(この場合、target_id に必ずしも検索条件を入れていただく必要はございませんが、入れていただければ取得するレコードを絞り込めますので後のセール商品IDを持つレコードを探す処理が軽くなるかと存じます。)
どうぞよろしくお願い致します。
@ary
下記2件につきまして、修正が完了しましたのでご報告です。
そのため、取引取得にてbargainIdを確認>セール一覧取得にてセールIDを確認することが可能となりました。
ご確認の程よろしくお願いいたします。