バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
moge1203
投稿日時: 2018/12/3 9:43
対応状況: −−−
一人前
登録日: 2018/3/15
居住地:
投稿: 113
【お願い致します】商品種別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
居住地:
投稿: 113
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公式 Amazon Payプラグイン

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.