バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 送料無料金額を越えたら送料から値引きをしたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tnk_kkkk
投稿日時: 2018/12/4 12:39
対応状況: −−−
新米
登録日: 2018/12/3
居住地:
投稿: 2
送料無料金額を越えたら送料から値引きをしたい
▼テンプレート
[EC-CUBE] 3.0.15
[レンタルサーバ] エックスサーバー
[OS] MacOS
[PHP] PHP Version 7.0.30
[データベース] MySQL 5.7.16
[ブラウザ] Chrome

管理画面で設定した送料無料の金額を超えた場合に、値引き(900円引き)をしたいと思っていますが、希望している機能が実装できていません。

例えば、
■ 送料無料条件が15,000円
■ 送料1件あたり900円
■ 6,000円の商品を3つ購入
■ 二箇所に配送

上記条件の場合通常であれば、

商品代18,000円+送料1,800円=合計19,800円

になるところを、

商品代18,000円+送料900円(900円値引き)=18,900円

このようにしたいと思ってます。


ただ、現状では、
商品代18,000円+送料-900円=17,100円となってしまいます。


現状、以下のコードを入れています。

/src/Eccube/Service/ShoppingService.phpの680行目あたりに


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



上記のようにしておりますが、カート画面で「送料:-900円」と表示され、実際の金額と大きく離れてしまいます。



 // 合計金額が設定金額以上であれば送料無料
            if ($Order->getSubTotal() >= $deliveryFreeAmount) {
                $Order->setDeliveryFeeTotal($Order->getDeliveryFeeTotal() - 900);


この辺りをカスタマイズすればいいのは分かるのですが、うまくいきません。

ご教示いただけないでしょうか?

下記の記事も参考にさせていただきました。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=17118&forum=12
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=20910&forum=10
468
投稿日時: 2018/12/5 15:37
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1315
Re: 送料無料金額を越えたら送料から値引きをしたい
あくまで予想ですが、
setDeliveryFreeAmountが2回呼ばれているのではないでしょうか?


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

tnk_kkkk
投稿日時: 2018/12/6 12:06
対応状況: −−−
新米
登録日: 2018/12/3
居住地:
投稿: 2
Re: 送料無料金額を越えたら送料から値引きをしたい
468さま

ご回答ありがとうございます。

引用:
あくまで予想ですが、
setDeliveryFreeAmountが2回呼ばれているのではないでしょうか?


こちらどちらに記載されているか確認できず、よろしければ記載箇所をご教示頂くことは可能でしょうか?
Ringo
投稿日時: 2018/12/7 8:42
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 31
Re: 送料無料金額を越えたら送料から値引きをしたい
=== 更新 ===
配送先別→注文詳細別
配送先別合計→合計金額
へ変更
keywordは「orderDetail.totalPrice」の様です。
==========

=== 更新 ===
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=17118&forum=12
で、合ってますね。

注文詳細別→配送先別
合計金額→配送先別合計
へ戻します。
==========

    if (総配送料無料) {
        配送料割引フラグ = true;                    // 元は、ここで「総配送料 -= 900」してる。
        for (配送先別) {
            if (配送先別合計 < 送料無料条件) {
                総配送料 += 送料;                   // 元は、ここで「配送先別配送料 = 0」してる。
            }
        }
                                                    // 故   元は、ここでは「総送料 = -900」「配送先別送料 = 0」
                                                    //      となっており、ご希望の割引になっていない。
                                                    
        if (総配送料 != 0 && 配送料割引フラグ) {
            総配送料 -= 送料;
        }
    }


#時間が取れつつ、追ってます。
#追い終えました。
468
投稿日時: 2018/12/7 17:25
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1315
Re: 送料無料金額を越えたら送料から値引きをしたい
ソースを追っている訳ではありませんので、結果からもしかしてと思っただけです。

900円値引きしている所に、
ログの出力処理を埋め込むか、
echo "a";など文字を出力させて、
複数回処理が通っているか確認されてみては如何でしょうか?


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

Ringo
投稿日時: 2018/12/11 8:35
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 31
Re: 送料無料金額を越えたら送料から値引きをしたい
こんな感じでどうでしょう。
#カート内遷移中に「複数配送割引条件」の説明があると親切かも。

    /**
     * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定
     *
     * @param Order $Order
     */
    public function setDeliveryFreeAmount(Order $Order)
    {
        // 配送料無料条件(合計金額)
        $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);
                }

                // 合計金額が設定金額以上の場合、お届け先情報ごとに配送料を判定
                $deliveryFeeTotal = 0;

                // ===== 配送先別 送料割引 判定 =====
                $deliveryDiscount = true;

                $shippings = $Order->getShippings();
                foreach ($shippings as $Shipping) {
                    $productDeliveryFeeTotal = 0;

                    // お届け先ごとの合計金額を算出
                    $totalPricebyShipping = 0;
                    foreach ($Shipping->getShipmentItems() as $ShipmentItem) {
                        $totalPricebyShipping += $ShipmentItem->getPriceIncTax() * $ShipmentItem->getQuantity();
                    }

                    // お届け先ごとに配送料無料条件(合計金額)を判定
                    if ($totalPricebyShipping >= $deliveryFreeAmount) {

                        // お届け先ごとの送料に0円セット、全体送料加算なし
                        $Shipping->setShippingDeliveryFee(0);

                    } else {

                        // 全体送料加算
                        $deliveryFeeTotal += $Shipping->getDeliveryFee()->getFee();

                    }
                }

                // ===== 配送先別 送料割引 =====
                if ($deliveryFeeTotal != 0 && $deliveryDiscount) {

                    $deliveryFeeTotal -= $Shipping->getDeliveryFee()->getFee();

                }

                // 全体送料を設定
                $Order->setDeliveryFeeTotal($deliveryFeeTotal);

            }
        }
    }

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


 



ログイン


EC-CUBEペイメント

統計情報

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

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1856
4
yuh
1524
5
468
1315
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
637
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

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