バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 合計金額によって利用可能な配送方法を制限したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tacky14
投稿日時: 2022/9/14 18:45
対応状況: −−−
半人前
登録日: 2021/4/23
居住地:
投稿: 16
合計金額によって利用可能な配送方法を制限したい
[EC-CUBE] 4.0.6-p1
[サーバ] AWS
[OS] Linux
[PHP] 7.4.21
[データベース] MySQL 5.5.68-MariaDB
[WEBサーバ] Apache/2.4.48
[カスタマイズの有無] 有


注文時、商品の合計金額(Order.subtotal)が10000円以上の場合のみ利用可能な配送方法を追加したいです。


配送方法マスタで「宅配便A」「宅配便B」の2種類を設定、どちらも支払い方法と都道府県別送料は同じです。

-------------------------------------------------------
「宅配便A」は条件なしで利用可能。デフォルトの配送方法。
「宅配便B」は商品合計(送料、値引きを含まない)10,000円以上の場合のみ利用可能。
10,000円未満では
・「宅配便B」が選択不可か選択肢に表示されない
・「宅配便B」を選んでもバリデーションで弾かれる
一度「宅配便B」を選択してから商品を減らし条件適用外となった場合は、自動で適用可能な配送方法をセットし直す(今回の場合は「宅配便A」)
-------------------------------------------------------
としたいです。


[試したこと]
金額条件で「宅配便B」を弾くことは、FormTypeに追記して行うことができました。
ただ、それだけでは条件適用外で自動でセットし直す要件を満たせませんでした。

FormTypeの実装は以下のように行いました。

Form\Type\Shopping\ShippingTypeで「宅配便B」&&10,000円未満 を条件にaddErrorを付与。
// POSTされないデータをエンティティにセットする.
        // TODO PurchaseFlow で行うのが適切.
        $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
            /** @var Shipping $Shipping */
            $Shipping = $event->getData();
            $form = $event->getForm();
            /** @var Delivery $Delivery */
            $Delivery = $form['Delivery']->getData();
            if($Delivery->getId() == {宅配便BのID} && $Shipping->getOrder()->getSubtotal() < 10000) {
                $form['Delivery']->addError(new FormError('この配送方法は使用できません'));
            }



[実現したいこと]
配送方法が条件適用外となった場合は、自動で適用可能な配送方法をセットし直したい。

イメージとしては、
配送方法を変更した際に、変更先の配送方法が使用できない支払方法を選択していた場合、自動的に変更先で使用できる支払方法が選択される仕様になっていると思います。
これを、配送方法自体でも行いたいと考えています。


purchaseflowの仕組みの中で制限が行えればスマートかな、と思うのですが。。
理解が足りておらず、拙いご説明で恐縮ですが、何卒よろしくお願いいたします。
sfujiya
投稿日時: 2022/10/18 7:23
対応状況: −−−
常連
登録日: 2018/12/20
居住地:
投稿: 54
Re: 合計金額によって利用可能な配送方法を制限したい
app/Customize/Service/PurchaseFlow/Processor
配下に配送方法確認のvalidatorを作成し、条件に一致しない場合は、配送方法のIDをhandleでsetすればいいかと思います。
balisys
投稿日時: 2022/12/27 18:41
対応状況: −−−
仙人
登録日: 2020/7/5
居住地:
投稿: 397
Re: 合計金額によって利用可能な配送方法を制限したい
jsにて、合計金額を取得し、その金額に応じて支払方法のチェックを非表示にするなどの対応が分かりやすいかと思います。

https://web-camp.io/magazine/archives/102889#:~:text=if%E6%96%87%E3%81%A7%E3%81%AF%E3%80%81test%E5%A4%89%E6%95%B0,%E9%9D%9E%E8%A1%A8%E7%A4%BA%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,684名です
総投稿数は109,930件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1569
9
mcontact
1279
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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