バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【追記】商品種別Bは送料無料条件から除外する方法について

フロント機能

新規スレッドを追加する

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

▼質問内容

皆様お世話になっております。

現在商品種別Aと商品種別Bの商品が設定されております。
また、送料無料の条件として10,000円以上の購入で送料を無料にしております。
ただ、商品種別Bに分類される商品について送料無料条件から除外したいです。
商品種別Bの商品を購入するときは、購入額がいくらであろうが送料を設定したいです。
また、北海道と沖縄のみ他の地域より送料は高めに設定しております。


ShoppingService.phpを修正する場合、どこにどのような処理を加えれば良いのでしょうか?

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


================================
追記
================================

2つの記述を試してみたのですが、うまくいっておりません。
コードの誤りや記述の仕方等ご教授いただけませんでしょうか?
よろしくお願いいたします。

また、商品種別Bに関しましては、仮で20,000以上といれてありますが、こちらは送料無料にはしない想定です。
いくらで購入されても送料はかかる商品です。
商品種別AとBで分かれていますので、同時にAとBを購入することもないです。

【パターンA】下記フォーラムを参考に組んでおります。
カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定

    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を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】下記記事を参考に差し替えてみました。
【3.0.15】送料無料条件(金額)を超えても特定の都道府県は送料無料にしない方法

    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を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);
                }
            }
        }
    }



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


h_tanaka
投稿日時: 2018/12/3 11:19
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 【追記】商品種別Bは送料無料条件から除外する方法について
さらっとしか見ていませんが、パターンAは break ではなく return だと思います。


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

moge1203
投稿日時: 2018/12/3 12:11
対応状況: −−−
一人前
登録日: 2018/3/15
居住地:
投稿: 113
Re: 【追記】商品種別Bは送料無料条件から除外する方法について
h_tanaka様

ご丁寧にありがとうございます。

returnに変えたところ、送料無料の条件から切り分けはできました。
ただ、値は反映されていないようです。

今回は送料が発生すればいいのでこれで問題はないです。

ありがとうございました。

    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定
     *
     * @param Order $Order
     */
    public function setDeliveryFreeAmount(Order $Order)
    {
        // 追記
        $productTypes = $this->cartService->getProductTypes();
        if (count($productTypes)) {
            foreach($productTypes as $ProductType){
                if($ProductType->getId()==2){
                $deliveryFreeAmount = 500000;
                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);
                }
            }
        }
    }
moge1203
投稿日時: 2018/12/3 13:24
対応状況: 解決済
一人前
登録日: 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,291名です
総投稿数は109,691件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.