Shopify アイテム追加/削除時 の customers/order.liquid 修正
やりたいこと
Shopify 管理画面 > 注文管理 > 編集 にてアイテム追加/削除を行う。その後、消費者の注文履歴を見るとこのアイテム追加/削除の情報がうまく反映されていない。どうすれば良いか調べていると、フォーラムで以下の質問を発見。
しかし、order.refunds がサポート終了している?? のでこの手法は取れなさそうなので、備忘録がてら何をしたのかを残しておく。
Memo
order.line_items.size
アイテム追加/削除すると array size が増える。アイテム削除してもこの array は減らない。
size == 1 or not で条件分岐
order_nochange
の true/false で条件分岐作り、対象の金額部分で出しわけをすれば今回の自分のケースは対応可能。今回はカートには1つしか入れらないという制約条件があったので、array size で条件分岐ができたが、制約条件がない場合はどのように実装するのが良いのだろう。
{% if order.line_items.size == 1 %}
{% assign line_item = order.line_items[0] %}
{% assign final_price = order.total_price %}
{% assign order_nochange = true %}
{% else %}
{% assign line_item = order.line_items[1] %}
{% assign line_item_before = order.line_items[0] %}
{% assign final_price = order.line_items_subtotal_price |minus: line_item_before.final_line_price %}
{% assign tax_rate = order.tax_lines[0].rate | plus: 1.0 %}
{% assign final_tax = final_price |times: 1.0 |divided_by: tax_rate |divided_by: 100 |times: order.tax_lines[0].rate |times: 100 %}
{% assign order_nochange = false %}
{% endif %}
true / false
小文字で書く
アイテム追加して、削除
order.total_refunded_amount にはデータは反映されない
tax_lines
-
tax_line.price
合計値なので気を付ける。 -
tax_line.rate
小数点で入っている 8% なら 0.08
参考
Liquid って何?
みたいな状態(というか、普段コーディングしない)だったので、この書籍の第5章で概要を掴んだおかげで理解が進むのが早かった。特に Filters が分かりやすい。2-3ページでしたが。あとは Liquid 公式サイト、Shopify Cheat Sheet を読みながらで何とか進めることができた。
Liquid 公式サイト
assign
Shopify Cheat Sheet
order.transactions
line_item ごとではないが、この方法で最終金額を取得することができる。
-
transaction.kind
- authorization
- capture
- sale
あたりで条件分岐をすればよさそう
-
transaction.amount
返金等するとこの値がゼロになることがある -
transaction.created_at
{%- -%} に関しての記事
空白の行が出力されなくなるとのこと
人工知能を活用したアプリケーションやサービスを活用し、内発的動機付けで行動するエンジニア、起業家、社会起業家をサポートするコミュニティーです。 singularitysociety.org
Discussion