テンプレート内での表示通貨の変更は可能でしょうか?

Topic summary

Order Printerアプリで納品書を出力する際、海外注文(例:USD)の商品価格を日本円(JPY)表示に変更できるかという質問。

現状の問題点:

  • {{ line_item.price | money }} → 注文時の通貨(USD)で表示される
  • {{ line_item.product.price }} → 商品登録時の日本円価格が表示されるが、小数点以下に「.00」が付く(例:6600円 → $66.00 USD)

提案された解決策:

  • money_without_trailing_zeros フィルターの使用を提案
  • JPY判定が必要な場合、money_with_currency フィルターで通貨記号や「JPY」文字列の有無を判定する方法も提示
  • ただし、orderオブジェクトから直接通貨情報を取得できるかは不明

結果:
Order Printerアプリでは受注時のcurrency codeを変更できないため、提案されたフィルターでも意図した動作にならず、質問者は別の方法を検討中。未解決

Summarized with AI on November 10. AI used: claude-sonnet-4-5-20250929.

現在納品書の出力にOrder Printerアプリを使用しております。

海外からきた注文について、例えばアメリカからユーザがUSD(米国ドル)で注文された場合、

納品書の出力でline_itemsに対するforループ内で個々の商品(ここでは格納する変数名をline_itemとする)の価格を

{{ line_item.price | money }}を出力するとUSDの価格が表示されます。

{{ line_item.product.price }}を出力すると、商品登録時のJPY(日本円)に「.00」を接尾された値が表示時されます。

この後者の商品価格を「line_item.product.price | money」のように「money」filterを適用すると下2桁の次に区切り文字「.(ドット)」が挿入され、例えば6600円だったものが $66.00 USDと表示されてしまいます。

このような場合、日本円(JPY)で設定されている数値を日本円表記で表示させることは可能になりますでしょうか?

ご教授いただけますとご幸甚でございます。

要望を把握しかねていますが恐らく以下のフィルターが該当する思います。

上記では実現できないことを実現するためにJPYであることを判定したいという場合、orderオブジェクトに通貨に関する情報はないように見えるので以下のような無理矢理な方法を取る必要があるかもしれません。

  • money_with_currencyフィルターを通した値などを取得し、通貨記号や"JPY"が含まれているか否かなどを判定する

以上ですが、私が把握していないだけで通貨情報を取得できるかも知れませんので、そういった情報が必要な場合は他の方の回答を待たれると良いかと思います。

1 Like

ご回答誠にありがとうございました。

使用しているOrder Printerアプリでは帳票を出力する際に受注しているオーダーのcurrency codeを変更して出力することができない様でした。

filterも意図した挙動をしてくれず、他の方法を考えてみようと思います。

ありがとうございました。