特定の商品に自動ディスカウントを設定すると、商品ごとの割引価格がずれる場合がある

yuji2828
探検家
66 0 19

個別の商品に自動ディスカウントを設定すると、商品ごとの割引価格がずれる場合があります。

こちらの例は各商品に8%の自動ディスカウントを設定した例です。

テスト商品01は商品単価の割引後の価格が「921円」商品の合計金額が「1,841円」と本来の割引後の価格から1円ずれます。

auto-discount-test-8per-01-2.png

次にテスト商品03を削除すると以下のようにテスト商品01の割引後の商品単価が「920円」商品の合計金額が「1,840円」と正しい値になります。

auto-discount-test-8per-02-2.png

ずれが生じているケースで合計金額での割引を見ると合計金額56,321円に対して8%で計算すると4505.68円。

実際にカートの各商品の割引合計は4505円となっています。

内部でどういった計算になっているか不明ですがおそらく合計金額に対する割引の端数を切り捨てて、その値をもとに各商品の割引金額を計算しているのかなと思います。
個別の商品価格で見ると8%よりも低い割引率になる場合があるためユーザーに誤解を与えるおそれがあると思います。

気になったので共有させていただきました。おそらくShopifyの仕様だとは思いますが、改善する方法などがありましたら教えていただけると助かります。

2件の返信2
fullbalance
先駆者
242 54 270

チェックアウト画面に入ったあとの数字は正しいでしょうか?

カート画面までの計算はShopifyではなくテーマファイルが計算をしています。

違和感がある場合、一度別のテーマを試していただくと違う結果が表示される可能性がありますので、

試していただき、改善するようでしたらそちらから計算式を引用されると良いと思います。

Shopify Expertのフルバランスです。Shopify,Shopify Plusの制作・運営サポートをしております。

国内初のShopify書籍「商品売るならShopify」発売中です。

また6月に技術書を発売予定ですので、こちらもよろしければ手に取ってみてください

ご参考になりましたら、解決&ベストソリューション設定をいただけると嬉しいです
yuji2828
探検家
66 0 19

ご返信いただきありがとうございます。

チェックアウト画面に入ってもやはりずれていますね。合計額でみれば切り上げすると8%の割引になるので合計額はあってはいます。

ScreenShot_2021-03-17_11_42_00.pngScreenShot_2021-03-17_11_41_30-2.png

 

割引後の価格の表示は final_price ,final_line_price プロパティや Cart API の値を使うのが一般的な方法だと思っていました。自作の cart.liquid で同じプロパティを使っても、Cart API にアクセスしても同じ値なので仕様なのかと思っておりました。

Shopify公式の無料テーマや一部有料テーマのソースも確認しましたが同様の方法でしたので参考にさせていただきました。
計算するというのは Math filters などを使ってテーマ独自に計算式を作るということでしょうか。

僕が見た中ではカートでそういった処理をしているようなテーマがなかったので教えていただけますと助かります。