バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
earth012
投稿日時: 2017/7/3 12:40
対応状況: −−−
半人前
登録日: 2016/10/4
居住地:
投稿: 28
ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
表題の件ですが、会員様は送料無料にしたいのですが、どのファイルに条件分岐いれればよいか、ご教授お願いします。

たとえばログインしている場合は商品種別を切り替えするとかで対応できないでしょうか?

バージョン:ECCUBE3 
468
投稿日時: 2017/7/5 20:45
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
/src/Eccube/Controller/ShoppingController.php 96行目付近で
ログイン済みかどうか判定しているif文がありますので、
この処理を利用すれば、会員かどうか判定できるのではないでしょうか?
if (!$app->isGranted('IS_AUTHENTICATED_FULLY')) {
 //非ログイン
} else {
 //ログイン
}


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

earth012
投稿日時: 2017/7/6 6:34
対応状況: −−−
半人前
登録日: 2016/10/4
居住地:
投稿: 28
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
返信ありがとうございます。

ご指示のように会員かどうかの判定を使用すればよいのはわかるのですが、

送料無料にするロジックがどこで処理しているかわからないので、

この部分が知りたいです。。。

よろしくお願いいたします。

468
投稿日時: 2017/7/6 9:47
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
/src/Eccube/Service/ShoppingService.phpの中で、
// 配送料無料条件(合計金額)
$this->setDeliveryFreeAmount($Order);
// 配送料無料条件(合計数量)
$this->setDeliveryFreeQuantity($Order);


のように配送料が無料かどうか判定しているところが3箇所ありますので、
そこに判定を加えたら良いかと思います。


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

earth012
投稿日時: 2017/7/6 18:20
対応状況: −−−
半人前
登録日: 2016/10/4
居住地:
投稿: 28
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
/src/Eccube/Service/ShoppingService.php の中に

下記判定入れてみたらエラーがでてしまうのですが、
ご教示いただけますでしょうか。

if (!$app->isGranted('IS_AUTHENTICATED_FULLY')) {
//非ログイン
} else {
//ログイン
}

宜しくお願いします。
468
投稿日時: 2017/7/7 10:34
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
$appはグローバル変数では無いので、
何も入っていないのではないでしょうか?

ShoppingServiceクラスのソースを確認すると、

public $app;

が宣言され、コンストラクタで$appが格納されていますので、

$this->app->isGranted()

と記述する必要があると思います。


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

earth012
投稿日時: 2017/7/7 17:19
対応状況: −−−
半人前
登録日: 2016/10/4
居住地:
投稿: 28
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
アドバイスありがとうございます。

やはり HTTP ERROR 500 がでるので、根本的なところが間違ってるような感じです。。
なんとか解決したいと思っています。申し訳ございませんがよろしくお願いいたします。



468
投稿日時: 2017/7/9 10:48
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
どのあたりにif文を記述されましたか?

以下のように、function setDeliveryFreeAmount()の中に記述でデフォルトのECCUBEでは問題無く、動きました。
もし、別のエラーが出ているのであれば、エラーログの中身を確認する必要があるかと思います。

public function setDeliveryFreeAmount(Order $Order)
    {
if (!$this->app->isGranted('IS_AUTHENTICATED_FULLY')) {
//非ログイン

} else {
//ログイン
	$Order->setDeliveryFeeTotal(0);
    // お届け先情報の配送料も0にセット
    $shippings = $Order->getShippings();
    foreach ($shippings as $Shipping) {
        $Shipping->setShippingDeliveryFee(0);
    }
}


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

earth012
投稿日時: 2017/7/9 22:29
対応状況: −−−
半人前
登録日: 2016/10/4
居住地:
投稿: 28
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
ありがとうございます。
私の方の記述が間違っていました。
ご教授いただいた通り問題なく解決しました。

関連で追加になりますが、

例えば北海道、沖縄のみ一部の地域のみ送料無料ではなく、指定した金額を設定したいのですが、教えていただけますでしょうか?

宜しくお願いいたします。

468
投稿日時: 2017/7/10 10:54
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ECCUBE3にて会員登録済(会員様)の場合、送料無料にしたい
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
のループ内であれば、
$Shipping->getPref()で配送先の都道府県を取得できると思います。
Prefに対して、IDか名称で判定できると思います。
$Shipping->getPref()->getId()
$Shipping->getPref()->getName()

ただ、ループさせているように複数配送先がある場合など、どのようにするのかは、
earth012さんのほうで考えていただく必要があると思いますので、
そのあたり、ご希望の金額となるようにif文等を組み合わせて実装していただけたらと思います。


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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1635
8
red
1569
9
mcontact
1265
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.