返信先: 【解決済】WCEX Multi Priceの請求書で商品オプションの価格を表示する方法について
フォーラム › 拡張プラグイン › 【解決済】WCEX Multi Priceの請求書で商品オプションの価格を表示する方法について › 返信先: 【解決済】WCEX Multi Priceの請求書で商品オプションの価格を表示する方法について
satou 様
こんにちは。横から失礼します。
これ悩ましいですよね。私も数年前に挑んで、断念した経験があります。記憶があやふやな部分もありますので参考になるかどうか。
このプラグインは、ご存じの通り SKU の単価をオプションの有無で変動させるものです。単価を変動させた後、数量を掛けてカートの中の1行の合計金額を求める仕様です。お調べになったように、受注データには変動後の単価しか保存されなかったと思います。よって、マルチプライスによってオプション料による価格変動があった受注データは、不可逆となり、個々のオプション料は後から拾うことができません。つまり、受注データには、受注時の個々のオプション料は、持っていないということですね。
$post_id や $sku などから、現在のオプション料は取得できますが、仰るとおり将来に向けて金額変更があったり、オプション構成が変わらない保証がないのでそこから取るのは危険ですし、受注データからオプション料が抜き出せない以上、どうしようもないと判断しました。
ですので、残念ながら今お考えのものは難しいのではないかと思います。(できるといった回答が他の方から得られればいいのですが。)
当時、私が採った方法ですが、オプション1、オプション2からなる2軸の単価変動は、「やらない」と決めました。これをすると、セレクト値に、(+〇〇〇円)を追加するという方法が使えなくなるからです。
2軸にせず、1軸に統合して、セレクト値にオプション料を併記する方法に統一しました。結局これが単純明快なのかと。
各オプションのセレクト値の文字列の長さや数によっては、確かに見にくくなりますが、カートやPDF、購入履歴など様々な場所でオプション料が表示できなくなるよりはマシというトレードオフの結果と諦めました。
その代わり、見にくくなるデメリットを減らすために、オプションのキーとセレクト値は極力簡潔にするよう努めました。
私の場合、SKUごとに適用できるオプションが少しずつ差異が生じたために、共通オプションが多量になってしまいかなり見にくくなってしまいました。
また、オプションによって配送方法を制御しなければならなかったり、管理が大変になってしまったための対策として、共通オプションのキーの先頭8文字をコード化して、制御しやすくしてみました。フロントサイドでは、そのコードがやかましくなったので、フロンドに出るものは、フィルターフックで先頭8文字を消去して表示しました。
このようにオプションの文字列に必要なデータを含ませることで、受注データとしても保存し、バックで活用しつつフロントで要らないところでは隠す処理をすることにしました。
(例)
2軸構成 (これでは、セレクト値にオプション料を併記しづらい。)
オプション1 サイズ ⇒ S M L
オプション2 数量 ⇒ 10 20 30
(別途、商品詳細ページにオプション価格表を提示することはできるが、各種PDF、受注リスト、取引履歴などは、オプション料を併記するのは困難。)
↓
1軸構成に変更 (セレクト値にオプション料を含ませれば、少ないカスタマイズでもデータを持たすことができます。隠したい場所では、文字列操作で消します。セレクト値も、後ろから何文字か消すとか、特定の文字をセパレータにしてそこから消去とかでも実現できますよね。)
[option_code]+オプション名 サイズ/数量
(セレクト値)
S/10 +100円
S/20 +120円
S/30 +130円
M/10 +200円
M/20 +220円
M/30 +230円
L/10 +310円
L/20 +330円
L/30 +350円
(セレクト値が表記できるところには、もれなく全てオプション料が併記できます。しかし、2軸に比べるとやはり見にくいのと、セレクト値の組み合わせが多くなると、どこかで限界があるでしょうね。)
この方法ならオプション料が変更になっても、過去の受注データは変わりませんので心配ないと思います。
その代わり、文字列操作のために、多くのフィルターフックを用いました。フックがなかった部分は、中の方に無理を言って作っていただきました。
同じ、ユーザビリティを低下させないという目的ですが、私はこの方法を採用しました。
請求明細で金額の内訳がないのは、内容にもよりますがあまり好ましくないでしょうね。後で苦情になったり、問い合わせに対応するのも億劫ですし。
ご参考になりましたら幸いです。
皆さんはどうされてますでしょうか。私はコードを書くのは素人なので難しいことは分かりません。
jsを使うとか、たぶんもっと良い方法があると思います。
私の当時の記憶ですので、今は状況が変わっているかもしれません。
ご質問の内容は、中の方からのご回答を待たれた方が確実かと思います。ご注意ください。
-
この返信は9ヶ月前に
Aliciaが編集しました。
PAGE TOP