FROM CACHE - jp_header
解決済

Order printerで返金額を差し引いた合計金額を表示させたい

withD
遊覧客
28 1 6

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 %}

プログラミングの知識がないので手探り状態です。

お知恵を拝借できれば幸いです。

よろしくお願いいたします。

1 件の受理された解決策
Qcoltd
Shopify Partner
1012 412 388

成功

@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円の商品を返金した場合、

下図のように出力されました。

screenshot_20230412_03.png

 

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 }}

で、返金額を差し引いた金額が表示されるはずです。

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/

元の投稿で解決策を見る

3件の返信3

Qcoltd
Shopify Partner
1012 412 388

total_priceは返金額を考慮した金額が表示されると思いますので、

シンプルに、

  <tr>
    <td><strong>合計:</strong></td>
    <td><strong>{{ total_price | money }}</strong></td>
  </tr>

としてはいかがでしょうか?

 

十分に検証していないため、

質問者様の状況ですとうまくいかないのかもしれませんね。

 

その場合は、もう少し状況をお教えいただけますと、

他のやり方も考えられるかもしれません。

(解決のお約束はできませんが。。。)

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/
withD
遊覧客
28 1 6

ご回答頂いていたにもかかわらずご返信が遅れ申し訳ありません。

認識が誤っていたら申し訳ないのですが、返金額が反映されるのはtotal_paid ではないでしょうか?

total_priceだと返金額は反映されませんでした。

(多分初期設定のinvoiceのテンプレートもtotal_paidになっているかと思います)。

 

order printerで印刷したものを注文書として管理、発送完了をしたらそのまま紙を経理に回して売り上げを計上してもらっています。

ただ、銀行振り込みなど未払いのものはtotal_paidだと合計金額が0円と表記されてしまうので、total_priceで合計金額を表示させ、その額を計上してもらっていました。

ただ、返金などがあった場合にその額が反映されないので、これをどうにか出来ないかと思っております。

Qcoltd
Shopify Partner
1012 412 388

成功

@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円の商品を返金した場合、

下図のように出力されました。

screenshot_20230412_03.png

 

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 }}

で、返金額を差し引いた金額が表示されるはずです。

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/