質問 > 管理機能 > ec-cube3で購入合計金額によって送料無料にしたい(都道府県区別) |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
novarod2 |
投稿日時: 2020/6/26 17:19
対応状況: 開発中
|
新米 登録日: 2019/11/5 居住地: 投稿: 9 |
ec-cube3で購入合計金額によって送料無料にしたい(都道府県区別) ▼テンプレート
[EC-CUBE] EC-CUBE3.0.16 [レンタルサーバ] [OS] Linux ik1-301-10745 [PHP] 7.1.22 [データベース] MySQL 5.5.60-MariaDB [WEBサーバ] sakura [ブラウザ] chrome [導入プラグインの有無] [カスタマイズの有無] src/Eccube/Service/ShoppingService.phpから送料無料条件の金額を2つに分けました。 都道府県区別 [現象] ※基本情報設定→送料無料条件(金額)0円にしてあります。 src/Eccube/Service/ShoppingService.phpに /** * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を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); } } } } /*-------ここまで▲---------*/ /* 変更したコード20191127▼------*/ public function setDeliveryFreeAmount(Order $Order) { // 配送料無料条件(合計金額) $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { // ▼ここから // 都道府県IDを取得 //$Shippings = $Order->getShippings(); //$Shipping = $Shippings[0]; //$prefId = $Shipping->getPref()->getId(); $prefId = $Order->getPref()->getId(); // 本州・四国の場合は5000円 if (in_array($prefId, array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39))) { // 対象の都道府県IDを記述 $deliveryFreeAmount = 5000; // 北海道・福岡・佐賀・長崎・熊本・大分・宮崎・鹿児島・沖縄の場合は15000円 } elseif (in_array($prefId, array(1, 40, 41, 42, 43, 44, 45, 46, 47))) { // 対象の都道府県IDを記述 $deliveryFreeAmount = 15000; } // ▲ここまで // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() >= $deliveryFreeAmount) { $Order->setDeliveryFeeTotal(0); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } } /*-------ここまで▲---------*/ /** * 配送料無料条件(合計数量)の条件を満たしていれば配送料金を0に設定 * * @param Order $Order */ public function setDeliveryFreeQuantity(Order $Order) { // 配送料無料条件(合計数量) $deliveryFreeQuantity = $this->BaseInfo->getDeliveryFreeQuantity(); if (!is_null($deliveryFreeQuantity)) { // 合計数量が設定数量以上であれば送料無料 if ($this->orderService->getTotalQuantity($Order) >= $deliveryFreeQuantity) { $Order->setDeliveryFeeTotal(0); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } } 都道府県によって送料無料金額が5000円と15000円ですが、例えば北海道はカートで15000円以上にしても送料は0円ならないです。 なぜなのか理由がよくわからないですね。。。もしかして、アドバイスをお願いします。 ちなみに、北海道や福岡は5000円以下は送料は800円、15000以上の場合は1300円など同じ地域ですが、金額によて送料を分けるコードを教えてもらうことができるでしょうか? |
468 |
投稿日時: 2020/6/27 9:18
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: ec-cube3で購入合計金額によって送料無料にしたい(都道府県区別) if ($Order->getSubTotal() >= $deliveryFreeAmount) {の手前で
dump($deliveryFreeAmount)やdump($prefId)で変数の内容を確認されてみては如何でしょうか?
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |