Liquid、JavaScriptなどに関する質問
Order printerで明細書を作成しております。
商品価格・送料・割引・返金などを加味した最終的な合計金額を表示させたいです。
total_paidでこれらをひっくるめた支払金額が表示をされるのですが、それだと銀行振り込み等未払いの場合、表示額が0円になってしまいます。
返金があった場合に、total_priceから返金額を差し引ければ解決しそうなのですが、上手くいきません。
下記のような書き方をすると、返金があった場合はきちんと表示されますが、返金が無かった場合は表示がされません。
{% for transaction in refund_transactions %} <tr> <td><strong>合計:</strong></td> <td><strong>{{total_price |minus: for transaction in refund_transactions.amount | money }}</strong></td> </tr> {% endfor %}
プログラミングの知識がないので手探り状態です。
お知恵を拝借できれば幸いです。
よろしくお願いいたします。
解決済! ベストソリューションを見る。
成功
@withD 様
おっしゃる通り、
https://shopify.dev/docs/api/liquid/objects/order#order-total_price
The total price is calculated before refunds are applied.
orderのtotal_priceは、
liquidの仕様としては返金が適用される前の金額が出力されます。
しかし、
Order Printerのliquidは、
Shopify上でのliquidとは少し仕様が異なるようでして、
返金額を差し引いた金額が表示されるようです。
下記のコードを開発環境で試したのですが、
{% assign = total_refund_amount = 0 %}
{% for transaction in refund_transactions %}
{% assign total_refund_amount = total_refund_amount | plus: transaction.amount %}
{% endfor %}
{{ total_price | money }}
<tr>
<td><strong>合計:</strong></td>
<td><strong>{{ total_price | minus: total_refund_amount | money }}</strong></td>
</tr>
2,200円の商品と、
22,000円の商品を購入した注文を、
発送した後、
22,000円の商品を返金した場合、
下図のように出力されました。
1つ目の¥2,200がtotal_priceで、
2つ目の¥-19,800がtotal_priceから返金総額を差し引いた(¥2,200 - ¥22,000 = -¥19,800)ものです。
さて、
私が開発環境で試しているため、
本番運用しているストアと挙動が異なる可能性もありますので、
total_priceの仕様については一旦横に置かせていただきまして、
返金額の総額は、上記のコードのうち、下記の部分で計算できるはずです。
{% assign = total_refund_amount = 0 %}
{% for transaction in refund_transactions %}
{% assign total_refund_amount = total_refund_amount | plus: transaction.amount %}
{% endfor %}
上記のコードより下で、
{{ total_refund_amount | money }}
と記載することで返金額の総額が表示されるはずです。
上記コードを利用して下記のようなコードを組むと、
返金があった場合にのみ表示されるセクションを作れます。
{% assign = total_refund_amount = 0 %}
{% for transaction in refund_transactions %}
{% assign total_refund_amount = total_refund_amount | plus: transaction.amount %}
{% endfor %}
{% if total_refund_amount != 0 %}
返金があった際に下記を表示。
返金額: {{ total_refund_amount | money }}
{% endif %}
もし、
質問者様の環境では、
total_priceが総合計を出力するようでしたら、
{{ total_price | minus: total_refund_amount | money }}
で、返金額を差し引いた金額が表示されるはずです。
ご参考まで。
(キュー田辺)
total_priceは返金額を考慮した金額が表示されると思いますので、
シンプルに、
<tr>
<td><strong>合計:</strong></td>
<td><strong>{{ total_price | money }}</strong></td>
</tr>
としてはいかがでしょうか?
十分に検証していないため、
質問者様の状況ですとうまくいかないのかもしれませんね。
その場合は、もう少し状況をお教えいただけますと、
他のやり方も考えられるかもしれません。
(解決のお約束はできませんが。。。)
ご参考まで。
(キュー田辺)
ご回答頂いていたにもかかわらずご返信が遅れ申し訳ありません。
認識が誤っていたら申し訳ないのですが、返金額が反映されるのはtotal_paid ではないでしょうか?
total_priceだと返金額は反映されませんでした。
(多分初期設定のinvoiceのテンプレートもtotal_paidになっているかと思います)。
order printerで印刷したものを注文書として管理、発送完了をしたらそのまま紙を経理に回して売り上げを計上してもらっています。
ただ、銀行振り込みなど未払いのものはtotal_paidだと合計金額が0円と表記されてしまうので、total_priceで合計金額を表示させ、その額を計上してもらっていました。
ただ、返金などがあった場合にその額が反映されないので、これをどうにか出来ないかと思っております。
成功
@withD 様
おっしゃる通り、
https://shopify.dev/docs/api/liquid/objects/order#order-total_price
The total price is calculated before refunds are applied.
orderのtotal_priceは、
liquidの仕様としては返金が適用される前の金額が出力されます。
しかし、
Order Printerのliquidは、
Shopify上でのliquidとは少し仕様が異なるようでして、
返金額を差し引いた金額が表示されるようです。
下記のコードを開発環境で試したのですが、
{% assign = total_refund_amount = 0 %}
{% for transaction in refund_transactions %}
{% assign total_refund_amount = total_refund_amount | plus: transaction.amount %}
{% endfor %}
{{ total_price | money }}
<tr>
<td><strong>合計:</strong></td>
<td><strong>{{ total_price | minus: total_refund_amount | money }}</strong></td>
</tr>
2,200円の商品と、
22,000円の商品を購入した注文を、
発送した後、
22,000円の商品を返金した場合、
下図のように出力されました。
1つ目の¥2,200がtotal_priceで、
2つ目の¥-19,800がtotal_priceから返金総額を差し引いた(¥2,200 - ¥22,000 = -¥19,800)ものです。
さて、
私が開発環境で試しているため、
本番運用しているストアと挙動が異なる可能性もありますので、
total_priceの仕様については一旦横に置かせていただきまして、
返金額の総額は、上記のコードのうち、下記の部分で計算できるはずです。
{% assign = total_refund_amount = 0 %}
{% for transaction in refund_transactions %}
{% assign total_refund_amount = total_refund_amount | plus: transaction.amount %}
{% endfor %}
上記のコードより下で、
{{ total_refund_amount | money }}
と記載することで返金額の総額が表示されるはずです。
上記コードを利用して下記のようなコードを組むと、
返金があった場合にのみ表示されるセクションを作れます。
{% assign = total_refund_amount = 0 %}
{% for transaction in refund_transactions %}
{% assign total_refund_amount = total_refund_amount | plus: transaction.amount %}
{% endfor %}
{% if total_refund_amount != 0 %}
返金があった際に下記を表示。
返金額: {{ total_refund_amount | money }}
{% endif %}
もし、
質問者様の環境では、
total_priceが総合計を出力するようでしたら、
{{ total_price | minus: total_refund_amount | money }}
で、返金額を差し引いた金額が表示されるはずです。
ご参考まで。
(キュー田辺)
Shopifyの請求書の支払いが失敗したという通知を受け取って驚いたことはありますか。初めての支払いでエラーが発生したり、これまで何の問題もなく支払いできていたのに突然失敗し...
By Minami_ Sep 8, 20242023年2月、Shopifyはcheckout.liquidを廃止し、Checkout Extensibilityに移行することを発表いたしました。この新しいチェックアウト...
By JasonH Aug 15, 2024「味噌の可能性を、とき放つ」をコンセプトに、豊かな自然に恵まれた信州で味噌の製造販売を行う新田醸造。江戸末期に創業した老舗のみそ屋さんですが、2024年春、顧客層や販売範囲の...
By Minami_ Jul 30, 2024