バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
wp_sd
投稿日時: 2021/10/27 10:43
対応状況: −−−
新米
登録日: 2021/4/13
居住地:
投稿: 5
特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
[EC-CUBE] 4.0.6-p1
[レンタルサーバ] さくらサーバー
[OS] FreeBSD www1978.sakura.ne.jp 11.2-RELEASE-p14 FreeBSD 11.2-RELEASE-p14
[PHP] 7.3.30
[データベース] MySQL 5.7.32-log
[WEBサーバ] Apache
[ブラウザ] Mozilla/5.0 (Windows NT 10.0; Win64; x64)

[導入プラグインの有無] 有
        ・Breadcram4
        ・会員項目追加プラグイン
        ・EC-CUBEペイメントLite
        ・商品詳細「表」追加プラグイン
        ・商品オプションプラグイン
        ・商品表示項目追加プラグイン
        ・商品検索拡張プラグイン
        ・Securitychecker4
        ・最近チェックの商品
        ・オススメ商品管理プラグイン
        ・ピックアップ商品管理プラグイン
        ・関連商品プラグイン

[カスタマイズの有無] 無


[現象]

管理画面の「設定>基本設定>送料設定」は何も設定していません。
「設定>店舗設定>配送方法設定」で現在有効なのは、「日本郵便」と「店舗受取」のみです。
「日本郵便」の「都道府県別送料設定」では、各都道府県別に送料を設定しています。
全国一律の設定はしていません。

この状態で「特定の都道府県だけ、購入合計金額が3,000円以上の場合は送料無料」としたいのですが、まずどのphpを修正すればよいのでしょうか?

DeliveryFeeFreeByShippingPreprocessor.php 、DeliveryFeeFreePreprocessor.php あたりでしょうか?

また上記phpである場合、process()の中で条件分岐をし、当てはまれば「$isDeliveryFree = true;」もしくは「$item->setQuantity(0);」とすればよいのでしょうか?

おわかりの方、どうかご教示いただけませんでしょうか。
よろしくお願いいたします。
h_tanaka
投稿日時: 2021/10/27 14:16
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
DeliveryFeeFreeByShippingPreprocessor です。
送料明細かどうかは $Item->getProcessorName() == DeliveryFeePreprocessor::class で判定できますので、この明細の数量を 0 にすれば対象の配送先における送料が0円になります。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

wp_sd
投稿日時: 2021/10/27 17:29
対応状況: −−−
新米
登録日: 2021/4/13
居住地:
投稿: 5
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
ご回答いただきましてありがとうございました。

早速app配下のDeliveryFeeFreeByShippingPreprocessorで、process()内の「foreach ($Order->getShippings() as $Shipping) {」に下記を追加してみたのですが送料無料にならず、管理画面の都道府県で設定した送料金額がそのまま出てしまいます。

おかしなところはございますでしょうか?

条件文がどう判断されているのか、任意のログ出力をしてみたいのですが、debug_log('メッセージ');を埋め込み、デバッグモードにすればよいでしょうか?
初歩的な質問でもうしわけありませんが、色々検索してもわからず、ご教示いただけますと幸いです。

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


// 送料無料の都道府県と金額
$FreePrefId = 1;
$ForFreeTotal = 3000;

foreach ($Shipping->getOrderItems() as $Item) {
  //送料明細かどうかを判断
  if ($Item->getProcessorName() == DeliveryFeePreprocessor::class) {
    // 合計金額以上
    if ($total >= $ForFreeTotal) {
      // お届け先判断
      if ($Shipping->getPref() == $this->prefRepository->findOneBy(['id' => $FreePrefId])) {
        $Item->setQuantity(0);
      }
    }
  }
}
h_tanaka
投稿日時: 2021/10/27 17:36
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい

$Shipping->getPref() == $this->prefRepository->findOneBy(['id' => $FreePrefId])

この部分がEntityの比較になっているのでIDの比較にすべきかと。

debug_log() は var/log にログ出力されます。
dump() で埋め込んでデバッグモードにすれば画面上に表示されます。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

wp_sd
投稿日時: 2021/10/27 20:13
対応状況: −−−
新米
登録日: 2021/4/13
居住地:
投稿: 5
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
ご指摘ありがとうございました。

ID比較箇所を変更してみましたが、どうもうまくいきません。

またdump()は下記プログラム中に書いても、出力されないものでしょうか?(.envでデバッグモードにしてみましたが、表示されずです)


// 送料無料の都道府県と金額
$FreePrefId = 1;
$ForFreeTotal = 3000;

foreach ($Shipping->getOrderItems() as $Item) {
  //送料明細かどうかを判断
  if ($Item->getProcessorName() == DeliveryFeePreprocessor::class) {
    // 合計金額以上
    if ($total >= $ForFreeTotal) {
      // お届け先判断
      $PrefId = $Shipping->getPref()->getId();
      if ($PrefId == $FreePrefId) {
        $Item->setQuantity(0);
      }
    }
  }
}
h_tanaka
投稿日時: 2021/10/28 8:53
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
デバッグモードについてはこちらをご参考ください。
dump 内容は Symfony Toolbar に表示されます。
https://umebius.com/eccube/eccube4-enter-into-debug-mode/


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

wp_sd
投稿日時: 2021/10/28 9:20
対応状況: −−−
新米
登録日: 2021/4/13
居住地:
投稿: 5
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
ご教示ありがとうございます。

実は.envをサイトに書かれているよう設定しているのですが、Symfony Toolbarと思われるものが何も表示されず画面上が今までと変わりません。

色々検索して、.htaccessに設定すると表示されるかもしれない、という記事がありましたので、そちらも試してみようと思います。

h_tanaka
投稿日時: 2021/10/28 9:25
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
Symfony Toolbar は画面右下に Sf というアイコンが表示されます。
処理が重いときなどは表示までに時間がかかるときもあるので、処理の軽い管理画面TOPなどで表示されるかどうかを確認してみてください。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

wp_sd
投稿日時: 2021/10/28 9:45
対応状況: −−−
新米
登録日: 2021/4/13
居住地:
投稿: 5
Re: 特定の都道府県のみ、合計金額〇〇円以上は送料無料としたい
おはようございます。
ありがとうございます!Sfアイコン表示されました!

ブラウザの管理ツールを下に表示していたので、気づかず申し訳ございませんでした。
お手数をおかけいたしました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
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.