バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > ec-cube3で購入合計金額によって送料無料にしたい(都道府県区別)

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
novarod2
投稿日時: 2020/6/26 17:19
対応状況: 開発中
新米
登録日: 2019/11/5
居住地:
投稿: 6
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
居住地:
投稿: 2446
Re: ec-cube3で購入合計金額によって送料無料にしたい(都道府県区別)
if ($Order->getSubTotal() >= $deliveryFreeAmount) {の手前で
dump($deliveryFreeAmount)やdump($prefId)で変数の内容を確認されてみては如何でしょうか?


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

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


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は63,734名です
総投稿数は96,861件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2446
4
nanasess
2078
5
yuh
1612
6
umebius
1601
7
red
1407
8
h_tanaka
1022
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.