バージョン選択

フォーラム

メニュー

オンライン状況

24 人のユーザが現在オンラインです。 (17 人のユーザが フォーラム を参照しています。)
登録ユーザ: 2
ゲスト: 22
xuhiduni joolenkoya もっと...

サイト内検索

質問 > フロント機能 > 配送方法変更時の挙動について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
HISKW
投稿日時: 2020/11/13 16:34
対応状況: −−−
半人前
登録日: 2020/6/3
居住地:
投稿: 17
配送方法変更時の挙動について
EC-CUBE:3.0.18
DBサーバー:MySQL 5.5.45
WEBサーバー:Apache


いつもお世話になっております。

この度、ある商品を配送と現地受取で販売することになりました。

サイト上で注文を受け付け、配送希望の方には代引きで発送。
現地受取の方は後日現地で現金、またはクレジットカード決済で支払い。

EC-CUBEの配送方法で対応しようと思い、以下のような設定を行いましたが、正しく動作しません。
原因がお分かりになりましたら教えていただけますと幸いです。

■設定
1)支払い方法に「代引き」の他、「現地受取(クレカ)」「現地受取現金」を追加

代引き:手数料に合わせて4パターン設定(330~1100)
現地受取(クレカ):手数料0円
現地受取(現金):手数料0円

2)配送方法に「宅配」「現地受取」を設定

「宅配」は支払い方法に代引き4パターンを選択し、送料を設定
「現地受取」は支払い方法に現地受取(クレカ)、現地受取(現金)を選択し、送料は0円を設定

■挙動
「ご注文内容の確認」画面で配送方法を変更するとリロードされますが、お支払い方法の選択肢が切り替わる場合と切り替わらない場合がある。

切り替わる場合は選択肢の下に「入力されていません」と表示される。
※これは同じ支払い方法がないかかも知れませんが…

「注文する」ボタンの枠に表示される手数料、送料の金額が支払い方法の内容と一致しない。

■やりたいこと
1)配送方法を変えたらリロードのタイミングで対応するお支払い方法が正しく表示されるようにしたい。

2)リロードのタイミングで手数料、送料をクリアし、お支払い方法が選択されたら正しい手数料、送料を設定し、注文するボタンを押せるようにしたい。


-----

現状リロード時の挙動が正しくなく、配送方法を変更すると代引きなのに送料が0円になってしまったり、現地受取なのに送料が加算されてしまったりする状態です。

私の設定方法が悪いのでしょうか?
ソース修正が必要でしょうか?

ソース修正が必要な場合は修正箇所や修正方法を教えていただけますと幸いです。

よろしくお願いいたします。
468
投稿日時: 2020/11/14 1:53
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2696
Re: 配送方法変更時の挙動について
発生している現象はsymfonyの入力値チェックの仕様に関わる部分であり、
今の配送方法・支払方法の組み合わせでは解決するのは難しいのではないかと思います。

原因は

>切り替わる場合は選択肢の下に「入力されていません」と表示される。
>※これは同じ支払い方法がないかかも知れませんが…

に記述されている通り、異なる配送方法同士で共通する支払方法がない事が原因です。

配送方法変更時にリロードされる事はご存知かと思いますが
そのリロード時の処理の中にサーバに送信された入力値をチェックする処理が入っています。
その入力値のチェック時に選択済みの支払方法が支払方法プルダウンの選択肢に存在している値かどうかを判断するのですが
(全く関係のない値を受け付けないようにする為のチェック)
支払方法プルダウンの選択肢が送信された配送方法(リロード直前にユーザーが選択した配送方法)によって組み立てられる為、
支払方法プルダウンの選択肢と送信された支払方法(リロード直前に選択されていた支払方法)が一致せず、
「入力されていません」(入力値エラー)と判断されていると思われます。

入力値エラーと判断されている為、手数料や送料は再計算されず、
リロード前の金額で表示されていると思います。

ShoppingController.phpのfunction delivery()が配送方法変更時の処理となりますので
送信されてきたリロード直前に選択されていた支払方法を
ユーザーが選択した配送方法から抽出した支払方法の1番最初の支払方法に置き換えれば
エラーは解消するのではないかと思いますが
symfony2で$requestに対してset()メソッドで値の上書きが出来るかどうかは試した事がないので分かりません。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

HISKW
投稿日時: 2020/11/14 5:47
対応状況: −−−
半人前
登録日: 2020/6/3
居住地:
投稿: 17
Re: 配送方法変更時の挙動について
ありがとうございます!

別の方法を考えるしかないですね…

延長でもう1点教えていただいてもよろしいでしょうか。

何とか解決しようと色々といじっていたのですが、「カートに入れる」ボタンを押すと「システムエラーが発生しました。
大変お手数ですが、サイト管理者までご連絡ください。」画面が表示されるようになってしまいました。

ログを確認したところ、以下のようなエラーが出ていました。

-----
[2020-11-14 05:32:16,302565] front.ERROR [f2c45b31] [f700a7fb] [NULL] [LogListener:onKernelException:115] - InvalidArgumentException: Passed variable is not an array or object (uncaught exception) at /var/www/vhosts/httpdocs/test/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php line 279 {"exception":"[object] (InvalidArgumentException(code: 0): Passed variable is not an array or object at /var/www/vhosts/httpdocs/test/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php:279)"} [POST, /test/products/detail/7?, …
-----

var_dumpで配列の中身を見ようとしたところ、やり方が悪かったらしく、画面に大量に中身が表示されてしまい、その後からエラーが発生するようになってしまいました。。。

もし原因がお分かりになりましたら教えていただけますと幸いです。

よろしくお願いいたします。
HISKW
投稿日時: 2020/11/14 7:07
対応状況: −−−
半人前
登録日: 2020/6/3
居住地:
投稿: 17
Re: 配送方法変更時の挙動について
すみません! 良くわからないのですがバックアップから復旧できました!

元の質問の延長ですが、以下のような対応は可能でしょうか?

-----
1)宅配、現地受取の支払方法は同じにしておく。
  →宅配  :代引き、現地受取(現金)、現地受取(クレカ)
  →現地受取:代引き、現地受取(現金)、現地受取(クレカ)

2)「注文する」押下時に配送方法と送料、手数料をチェックし条件が一致しなかったら注文できないようにする。
 ※ポップアップを出す、またはお支払方法辺りに条件が合わない旨を表示する等
-----

お支払い方法を合わせておけば「入力されていません」の問題は解消されると思います。
ただこのままですと、配送方法を宅配にして支払方法で現地受取が選択できてしまうため、代引き手数料が加算されずに購入できてしまいます。

そこで注文するボタン押下時に宅配かつ現地受取の場合は購入できないようにすれば良いかと思いました。

これを実現するとしたらどの関数でどの変数を見ればよろしいでしょうか?

処理を追加する場所と配送方法、送料、手数料の閲覧方法がわからず…

教えていただけますと幸いです。

よろしくお願いいたします。
468
投稿日時: 2020/11/14 11:15
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2696
Re: 配送方法変更時の挙動について
いくつか手段はあるかと思いますが
配送方法選択後のリロード時に

function delivery()
※支払方法の選択肢の準備や受注データの再計算

function index()
※注文内容のご確認ページの表示

の順番に処理が流れていきますので
function index()の中で
受注データ($Order)の配送方法と支払方法の判定を行い、
OK or NG をtwigに渡すようにすれば良いのではないでしょうか?

その後、twig側で渡された判定結果を元に
注文ボタンを無効化してもいいですし、メッセージを表示させても良いかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

HISKW
投稿日時: 2020/11/14 12:48
対応状況: −−−
半人前
登録日: 2020/6/3
居住地:
投稿: 17
Re: 配送方法変更時の挙動について
ありがとうございます!

もしよろしければ配送方法、送料、手数料を$Orderから
取得するにはどうすればよいかも教えていただいても
よろしいでしょうか?

配列の要素?が多く今一つ理解できておらず申し訳ありませんが
よろしくお願いいたします。
HISKW
投稿日時: 2020/11/15 11:34
対応状況: −−−
半人前
登録日: 2020/6/3
居住地:
投稿: 17
Re: 配送方法変更時の挙動について
先日はありがとうございました。

教えていただいたとおりindex()で判定しようと思いましたがよくわからず…、いろいろ試した結果、confirm()で判定し、「注文する」ボタンを押されたときにエラーにすることで対応できました!

エラー画面で配送方法と支払方法のつじつまが合っていない旨の説明を出し、再度選びなおしていただく形にしました。

とても助かりました!! どうもありがとうございました!!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は67,471名です
総投稿数は98,836件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2696
4
nanasess
2116
5
umebius
1792
6
yuh
1612
7
red
1427
8
h_tanaka
1051
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.