Liquid、JavaScriptなどに関する質問
・設定>チェックアウト>顧客アカウント>アカウントを任意にする または アカウントを必要とする
と設定した場合に、ユーザー画面で確認できる下記2つのテンプレートについて、
不明点があり、質問を挙げさせていただきました。
/account/ マイページ
/account/orders/ 注文履歴(詳細)
■質問内容
上記2つのテンプレートに、注文の合計金額が表示されますが、
・Shopify管理画面>注文管理>該当注文の詳細画面>編集>アイテムを削除
または
・Shopify管理画面>注文管理>該当注文の詳細画面>編集>数量を調整
の操作した場合でも、ユーザー画面の上記2テンプレートに変更が反映されず、
従来の内容のままとなっております。
※管理画面側は、正しく変更されております。
※テンプレートはDebutをカスタマイズせずに利用しております。
こちらテンプレートを調整し、改善できるなど
方法がありましたらご教授いただければ幸いです。
以下の修正は参考になりますでしょうか?
customer/order.liquidの最初に以下のコードを挿入
{% assign cancelled_subtotal = 0 %}
{% for refund in order.refunds %}
{% for item in refund.refund_line_items %}
{% assign cancelled_subtotal = cancelled_subtotal | plus:item.line_item.price %}
{% endfor %}
{% endfor %}
{% assign final_cancelled_with_tax = cancelled_subtotal| times:1.1 %}
{% assign order_subtotal_with_tax = order.subtotal_price| times:1.1%}
{% assign shipping_with_tax = order.shipping_price| times:1.1%}
{% if final_cancelled_with_tax == order_subtotal_with_tax %}
{% assign final_cancelled_with_tax = final_cancelled_with_tax | plus:shipping_with_tax %}
{% endif %}
{{ order.total_price | money }} を {{ order.total_price | minus:cancelled_subtotal | money }} に置き換え。
こちら私も同様の事で困っておりまして、頂きましたタグを挿入した際には、
/account/orders/ 注文履歴(詳細)
の合計金額は変更が出来ました。
ただ、小計金額には、「アイテムを削除」「数量を調整」を考慮した金額が反映されておらず、
アイテムを削除した場合は、ユーザー側の注文履歴(詳細)からも削除したいのですが、
こちらは修正は可能なものでしょうか?
また、/account/
ページで表示される合計金額も「アイテムを削除」「数量を調整」を考慮した金額を表示したいのですが、可能でしょうか?
お手数をお掛けしますが、ご確認の程よろしくお願いします。
Liquidの知識が必要になりますが、
https://shopify.dev/docs/themes/liquid/reference/objects/order
> ただ、小計金額には、「アイテムを削除」「数量を調整」を考慮した金額が反映されておらず、
{% for refund in order.refunds %}
{% for item in refund.refund_line_items %}
これを応用して、承継金額の表示部分も同じように修正する必要があると思います。
> ページで表示される合計金額も「アイテムを削除」「数量を調整」を考慮した金額を表示したいのですが、可能でしょうか?
Liquidのcustomerから同様のorderが参照できるので、同じ修正が可能かと思います。
https://shopify.dev/docs/themes/liquid/reference/objects/customer#customer-orders
同じ現象で悩んだので、そういった明細に触るためのLIQUID例はこれ。
ご参考になれば。
{% for order in customer.orders %}
のループ内で、以下を入れれば返品や削除された商品を特定できます。
こちらの方法は現時点 (2022/03) で実施することはできないのでしょうか。
上記コードを入力してブラウザを開くと、Internal Liquid Error と表示されます。
また、公式ドキュメントから order.refunds が消えております。
Cheat Sheet に refund で検索してもでてこないです。
元々refundsの情報は公式のLiquidドキュメントになかったかもですが、以下の、
https://shopify.dev/api/liquid/objects/order#order-total_refunded_amount
order.total_refunded_amountと、
order.transactionsの、
https://shopify.dev/api/liquid/objects/transaction
transaction.kindやtransaction.statusから、返金額とその取引明細は出せると思います。
ひょっとすると、2021年後半のOS 2.0 への移行によって、いくつかの非公式のLiquidが廃止になっている可能性もあります。
あとは、liquidのみでの解決ではなくなりますが、カスタムアプリ(パートナーダッシュボードから作成するタイプ)とapp proxiesの仕組みを使ってサーバーでAPIでデータを引いてそれをLiquidに反映する、といったアプローチも可能です。
https://shopify.dev/apps/online-store/app-proxies
ログインしているcustomerのidをapp proxies経由でサーバーに渡して、customer -> order -> refunds -> refund line items と辿れば、元々のLiquidで参照できていたデータを取得できます。
https://shopify.dev/api/admin-graphql/2022-01/objects/RefundLineItem#fields
以下のようなマイページへのオーダー管理機能追加アプリは、同じようなことを内部でやっています。
https://apps.shopify.com/orderify?locale=ja
app proxiesについては、以下でも解説しています。
https://www.youtube.com/watch?v=w31mCsEWGhQ&list=PLkR3LRtxAZfqujVTfvuHGpNgVTdbrwJRK&index=12
回答ありがとうございました。
アイテム追加して、削除するとorder.total_refunded_amount にはデータが反映されないようです。
(¥ 0 のまま)
一方で
- transaction.kind
- transaction.status
- transaction.amount
を利用すれば、最終金額は取れるのでそちらで対応したいと思います。
同じ問題でこのページに辿り着きました。
素朴な疑問ですが、お客様から見たら単純な計算間違いであるこの問題にSopify側で対処されないのはなぜなのでしょうか。
マーチャントがリスクを負ってコード編集するのはおかしいと思います。
マイページは、新しいログイン方法に従って、テーマのLiquidによる記述方式から、Shopifyの提供するUIに変わりました。可能であれば、そちらもお試しいただければと思います。
https://help.shopify.com/ja/manual/customers/customer-accounts/new-customer-accounts
Liquidによるマイページは、実際はShopify本体ではなくて、テーマの開発者の実装に依存する方法でしたが、新しいマイページは、基本的な機能はShopify側で提供されています。
また、アプリによるカスタマイズも、Liquidとは違う方法で提供予定です。
https://shopify.dev/docs/apps/customer-accounts
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 7, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 30, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024