バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【お願い致します】商品種別Bを送料無料条件から除外する方法について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
moge1203
投稿日時: 2018/12/3 9:43
対応状況: −−−
一人前
登録日: 2018/3/15
居住地:
投稿: 108
【お願い致します】商品種別Bを送料無料条件から除外する方法について
▼テンプレート
[EC-CUBE] 3.0.15 , 新規インストール
[レンタルサーバ] heteml
[OS] macOS High Sierra ver10.13.3
[PHP] 7,0
[ブラウザ] Google Chrome

▼質問内容
皆様いつもお世話になっております。
同じような内容の投稿でフォーラムを荒らすような形になってしまうこと、初めに謝罪させていただきます。
申し訳ありません。
商品種別Bは送料無料条件から除外する方法について


現在商品種別Aを常に販売している商品、商品種別Bを年末年始限定で販売する「福袋」としいて設定しております。

EC-CUBE3の元々の機能である送料無料条件を利用して、「10,000円以上は送料無料」になっております。
ただ、商品種別Bに含まれる商品は梱包の兼ね合いもあり、送料無料対象から除外を考えております。
しかし、送料無料条件が設定されていると、商品種別Bの商品も送料が無料になってしまいます。

ここまでを前提とさせていただきます。

そこで、商品種別Bに含まれる商品を送料無料条件から除外したいと考えております。
また、商品IDで考えると、2商品になります。
商品種別B全体で除外できるとありがたいのですが、「商品ID」での除外でも運用的には問題ありません。

現在試したことは以下になりますが、どちらも反映されませんでした。
記述の仕方、そもそもの定義など間違いがあればご教授いただけますでしょうか?

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



【パターンA】下記フォーラムを参考に組んでおります。
仮で商品種別Bを20,000以上にしておりますが、こちら金額の設定は必要ありません。
送料無料でなくなれば幸いです。

カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定

(src/Eccube/Service/ShoppingService.php)

    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定
     *
     * @param Order $Order
     */
    public function setDeliveryFreeAmount(Order $Order)
    {
        // 追記
        $productTypes = $this->cartService->getProductTypes();
        if (count($productTypes)) {
            foreach($productTypes as $ProductType){
                if($ProductType->getId()==1){
                $deliveryFreeAmount = 10000;
                break;
                }
            }
        }
        if (count($productTypes)) {
            foreach($productTypes as $ProductType){
                if($ProductType->getId()==2){
                $deliveryFreeAmount = 20000;
                break;
                }
            }
        }
        // 追記ここまで
        // 配送料無料条件(合計金額)
        $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
        if (!is_null($deliveryFreeAmount)) {
            // 合計金額が設定金額以上であれば送料無料
            if ($Order->getSubTotal() >= $deliveryFreeAmount) {
                $Order->setDeliveryFeeTotal(0);
                // お届け先情報の配送料も0にセット
                $shippings = $Order->getShippings();
                foreach ($shippings as $Shipping) {
                    $Shipping->setShippingDeliveryFee(0);
                }
            }
        }
    }




【パターンB】下記記事を参考に差し替えてみました。
商品種別BのIDは2になっております。

【3.0.15】送料無料条件(金額)を超えても特定の都道府県は送料無料にしない方法
(src/Eccube/Service/ShoppingService.php)

    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定
     *
     * @param Order $Order
     */
    public function setDeliveryFreeAmount(Order $Order)
    {
        // 追記
        $productTypes = $this->cartService->getProductTypes();
        switch ( $productTypes->getID() ) {
            case 2;
                return true;
                break;
            default;
                break;
        }
        // 追記ここまで
        // 配送料無料条件(合計金額)
        $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
        if (!is_null($deliveryFreeAmount)) {
            // 合計金額が設定金額以上であれば送料無料
            if ($Order->getSubTotal() >= $deliveryFreeAmount) {
                $Order->setDeliveryFeeTotal(0);
                // お届け先情報の配送料も0にセット
                $shippings = $Order->getShippings();
                foreach ($shippings as $Shipping) {
                    $Shipping->setShippingDeliveryFee(0);
                }
            }
        }
    }



皆様どうかよろしくお願いいたします。

moge1203
投稿日時: 2018/12/3 13:25
対応状況: 解決済
一人前
登録日: 2018/3/15
居住地:
投稿: 108
Re: 【お願い致します】商品種別Bを送料無料条件から除外する方法について
皆様

本件解決いたしましたので、本投稿にて解決済とさせていただきます。
また、商品種別Aと商品種別Bが混在しない前提の記述になりますが、
下記ソースで可動しております。
この度はお騒がせして大変申し訳ありませんでした。
今後ともよろしくお願いいたします。

商品種別Bを送料無料条件かから除外する方法


    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定
     *
     * @param Order $Order
     */
    public function setDeliveryFreeAmount(Order $Order)
    {

        $productTypes = $this->cartService->getProductTypes();
        $productType = $productTypes[0];
        if ($productType->getId() === 2) {
            return;
        }

        // 配送料無料条件(合計金額)
        $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
        if (!is_null($deliveryFreeAmount)) {

            // 合計金額が設定金額以上であれば送料無料
            if ($Order->getSubTotal() >= $deliveryFreeAmount) {
                $Order->setDeliveryFeeTotal(0);
                // お届け先情報の配送料も0にセット
                $shippings = $Order->getShippings();
                foreach ($shippings as $Shipping) {
                    $Shipping->setShippingDeliveryFee(0);
                }
            }
        }
    }



また、下記スレッドも同じ内容なため、解決済とさせていただきます。
商品種別Bは送料無料条件から除外する方法について
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は36,541名です
総投稿数は88,591件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1857
4
yuh
1528
5
468
1319
6
red
1199
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
667
13 karin 656
14 sumida 641
15
h_tanaka
638
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.