バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 金額別送料設定について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
inf61
投稿日時: 2012/2/24 19:32
対応状況: −−−
常連
登録日: 2011/12/9
居住地:
投稿: 44
金額別送料設定について
いつもお世話になっております。

合計金額別に応じて、都道府県別の送料を設定する事は可能でしょうか?

具体的には、
1.〜4,999円
2.5,000円〜9,999円
3.10,000円以上

という形で金額を分けて送料を設定したいと考えています。

もし、可能であればどなたか教えて頂けると助かります。
宜しくお願い致します。

[EC-CUBE] 2.11.4
ken-o
投稿日時: 2012/2/27 9:36
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 金額別送料設定について
2.11系であれば、基本情報管理の支払方法設定で、料金体系を区分けすることができます。

例えば、「支払方法の新規作成」で、0〜4,999円 の支払い方法と、5,000円〜9,999円 と、10,000〜空 としてあげると料金体系別にわけることができます。


本件の参考になるかわかりませんが、ググってみたらこんな記事を見つけましたので、一応記載します↓。
http://ameblo.jp/webmage/entry-11079975076.html


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

webmage
投稿日時: 2012/2/27 10:09
対応状況: −−−
半人前
登録日: 2011/7/1
居住地: 沖縄
投稿: 16
Re: 金額別送料設定について
まずは、合計金額の各価格帯の「基本送料」を算出。
次に、各都道府県別料金(基本料金を除いた分の料金を設定しておく)を加算。

でいいのではないかと思います。

例えば、
1.〜4,999円->基本送料1000円
2.5,000円〜9,999円->基本送料500円
3.10,000円以上->送料無料

で、
沖縄・北海道の追加送料250円、その他の地域100円
とした場合…。

購入金額4500円で沖縄・北海道以外
   ▼
基本送料1000円+地域送料100円=1100円

購入金額5000円で沖縄・北海道以外
   ▼
基本送料500円+地域送料100円=600円

購入金額4500円で沖縄へ配送
   ▼
基本送料1000円+地域送料250円=1250円

…みたいな感じでしょうか。


僕のブログでクール便の場合の処理…という記事がありますが、このクール便のフラグ処理みたいな感じで、
1.〜4,999円
2.5,000円〜9,999円
3.10,000円以上
の場合のフラグをたてて計算すればいいと思います。


----------------
There's more than one way to do it.

inf61
投稿日時: 2012/2/27 12:00
対応状況: −−−
常連
登録日: 2011/12/9
居住地:
投稿: 44
Re: 金額別送料設定について
ken-o様

ご連絡ありがとうございます。

教えていただいた方法ですが、支払い方法を増やす事はできますが、
それぞれの送料は設定できるのでしょうか?

送料は管理画面では発送方法からしか設定ができないと思っているのですが…

ちなみに支払い方法はどの金額でも同じで、送料が変わるだけです。
inf61
投稿日時: 2012/2/27 13:07
対応状況: −−−
常連
登録日: 2011/12/9
居住地:
投稿: 44
Re: 金額別送料設定について
webmage様

ご連絡ありがとうございます。

教えていただいている方法は、EC-CUBEの管理画面で行う
作業になるのでしょうか?
それともいずれかのファイルをカスタマイズする形に
なりますでしょうか?

また、webmage様のブログでクール便の処理の記事が…とありますが、
差し支えなければブログのURLを教えていただけますでしょうか?

よろしくお願い致します。
ken-o
投稿日時: 2012/2/27 19:57
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 金額別送料設定について
inf61 様

すみません、都道府県別の送料を読み飛ばしていました。
上記の方法は支払い段階での話しでした。

〜〜〜/data/class/pages/shopping/LC_Page_Shopping_Confirm.phpの、104行目に、

引用:

// 合計金額
$this->tpl_total_inctax[$this->cartKey] = $objCartSess->getAllProductsTotal($this->cartKey);


がありますので、ここにif文を入れてみてはどうでしょう?

引用:

// 合計金額
$hoge = $objCartSess->getAllProductsTotal($this->cartKey);

-------if文-------

$this->tpl_total_inctax[$this->cartKey] = $hoge;


としてあげると、うまくいくかもしれません。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

inf61
投稿日時: 2012/2/28 14:01
対応状況: −−−
常連
登録日: 2011/12/9
居住地:
投稿: 44
Re: 金額別送料設定について
ken-o様

ご連絡ありがとうございます。

教えていただいた内容を元に、下記のようにif分を挿入してみました。


// 合計金額
$CartProductsTotalPrice = $objCartSess->getAllProductsTotal($this->cartKey); 
switch ($arrData['deliv_pref']) {
case 1: // 北海道
	if ($CartProductsTotalPrice <= 4999) return 1470;
	if ($CartProductsTotalPrice <= 9999) return 630;
	return 420;
case 2: // 青森県
case 3: // 岩手県
case 4: // 宮城県
case 5: // 秋田県
case 6: // 山形県
case 7: // 福島県
	if ($CartProductsTotalPrice <= 4999) return 1100;
	if ($CartProductsTotalPrice <= 9999) return 420;
	return 210;
case 8: // 茨城県
case 9: // 栃木県
case 10: // 群馬県
case 11: // 埼玉県
case 12: // 千葉県
case 13: // 東京都
case 14: // 神奈川県
case 15: // 新潟県
case 19: // 山梨県
case 20: // 長野県
	if ($CartProductsTotalPrice <= 4999) return 840;
	if ($CartProductsTotalPrice <= 9999) return 420;
	return 210;
case 16: // 富山県
case 17: // 石川県
case 18: // 福井県
case 23: // 愛知県
case 22: // 静岡県
case 21: // 岐阜県
case 24: // 三重県
	if ($CartProductsTotalPrice <= 4999) return 735;
	if ($CartProductsTotalPrice <= 9999) return 420;
	return 210;
case 27: // 大阪府
case 26: // 京都府
case 28: // 兵庫県
case 25: // 滋賀県
case 29: // 奈良県
case 30: // 和歌山県
	if ($CartProductsTotalPrice <= 4999) return 525;
	if ($CartProductsTotalPrice <= 9999) return 420;
	return 210;
case 31: // 鳥取県
case 32: // 島根県
case 33: // 岡山県
case 34: // 広島県
case 35: // 山口県
case 36: // 徳島県
case 37: // 香川県
case 38: // 愛媛県
case 39: // 高知県
	if ($CartProductsTotalPrice <= 4999) return 525;
	if ($CartProductsTotalPrice <= 9999) return 420;
	return 210;
case 40: // 福岡県
case 41: // 佐賀県
case 42: // 長崎県
case 43: // 熊本県
case 44: // 大分県
case 45: // 宮崎県
case 46: // 鹿児島県
	if ($CartProductsTotalPrice <= 4999) return 420;
	if ($CartProductsTotalPrice <= 9999) return 420;
	return 210;
default: // 沖縄県
	if ($CartProductsTotalPrice <= 4999) return 1050;
	if ($CartProductsTotalPrice <= 9999) return 630;
	return 420; 
	}


しかし、こちらの方法では購入の手続きまで進むと送料が0円と表示されてしまいます。
どこかコードに問題がありますでしょうか?

ご指摘がありましたら教えて頂ければと思います。
よろしくお願い致します。
ken-o
投稿日時: 2012/2/28 16:12
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 金額別送料設定について
inf61 様

即席で申し訳ないのですが、たぶんこれで問題ないと思います。

引用:

// 合計金額
//$this->tpl_total_inctax[$this->cartKey] = $objCartSess->getAllProductsTotal($this->cartKey);

// 合計金額
$CartProductsTotalPrice = $objCartSess->getAllProductsTotal($this->cartKey);

// 一時受注テーブルの読込
$arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid); //111行目から移動


//配送先送料判定
switch ($arrOrderTemp['order_pref']) {
case 1: // 北海道
if ($CartProductsTotalPrice <= 4999) {
$hoge = 1470;
break;
} else if ($CartProductsTotalPrice <= 9999) {
$hoge = 630;
break;
} else {
$hoge = 420;
break;
}
case 2: // 青森県
case 3: // 岩手県
case 4: // 宮城県
case 5: // 秋田県
case 6: // 山形県
case 7: // 福島県
if ($CartProductsTotalPrice <= 4999) {
$hoge = 1100;
break;
} else if ($CartProductsTotalPrice <= 9999) {
$hoge = 420;
break;
} else {
$hoge = 210;
break;
}
case 8: // 茨城県
case 9: // 栃木県
case 10: // 群馬県
case 11: // 埼玉県
case 12: // 千葉県
case 13: // 東京都
case 14: // 神奈川県
case 15; // 新潟県
case 19; // 山梨県
case 20: // 長野県
if ($CartProductsTotalPrice <= 4999) {
$hoge = 840;
break;
} else if ($CartProductsTotalPrice <= 9999) {
$hoge = 420;
break;
} else {
$hoge = 210;
break;
}

/**
一時的に削除します。
**/

default: // 沖縄県
if ($CartProductsTotalPrice <= 4999){
$hoge = 1050;
break;
} else if ($CartProductsTotalPrice <= 9999){
$hoge = 630;
break;
} else {
$hoge = 420;
break;
}
}

$this->tpl_total_inctax[$this->cartKey] = $CartProductsTotalPrice + $hoge;


上記の太文字をご覧下さい。
まずはじめの太文字は、僕の環境で111行目に存在したものです。前の画面までの一時保存されているデータを呼び出すもので、swichよりも上にないと、$arrOrderTemp['order_pref']で配送先設定した情報を引っ張ってこれないので移動します。

次の太文字は、$arrOrderTemp['order_pref']です。
引用:

$arrData['deliv_pref'];

では、NULLがvar_dumpで返されてしまうので、上記の通りに変更します。そうすると、都道府県番号を引っ張ってこれます。

最後の太文字は、return の代わりです。

47都道府県分は時間がなくてできませんでしたが、参考のように作っていただければ、問題ないと思います。
僕の環境(2.11.2)では、配送先「東京」=13番 で、料金29000円で、$hogeには210円入り、小計と合算されました。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

inf61
投稿日時: 2012/2/28 18:47
対応状況: −−−
常連
登録日: 2011/12/9
居住地:
投稿: 44
Re: 金額別送料設定について
ken-o様

ご連絡ありがとうございます。

送料が反映できるようになりました。
ありがとうございます。

ただ、「ご入力内容のご確認」ページにて、小計欄にすでに送料が
入った形で表示されており、送料欄は管理画面で設定した送料のまま
表示されます。
また、合計欄は今回設定した送料ではなく、元々の送料が加えられた形で計算されています。

小計には商品代金の合計、送料欄には今回設定した送料が表示され、
合計欄にもきちんと送料を反映した上で計算させたいと考えています。

色々なファイルを探して変更してみましたが、送料が管理画面の送料か、0円にしかならず、合計などへの反映もできておりません。

どのようにカスタマイズを行えば、上記の通りに表示させる事が
できますでしょうか?

大変申し訳ありませんが、ご教授頂ければと思います。
どうぞよろしくお願い致します。
ken-o
投稿日時: 2012/2/28 19:56
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 金額別送料設定について
inf61 様

すみません、確認する程の時間が取れないので、とりあえず流れだけをお話します。

LC_Page_Shopping_Confirm.php の
引用:

// カート集計を元に最終計算
$arrCalcResults = $objCartSess->calculate($this->cartKey, $objCustomer,
$arrOrderTemp['use_point'],
$objPurchase->getShippingPref($this->is_multiple),
$arrOrderTemp['charge'],
$arrOrderTemp['discount'],
$arrOrderTemp['deliv_id']);
$this->arrForm = array_merge($arrOrderTemp, $arrCalcResults);


で合計値を返しています。
上記の太文字の部分をご覧下さい。

$objCartSess->calculate
が計算させるために、別のphpに明け渡している部分です。
では、肝心などのphpを呼んでいるかですが、
73行目に$objCartSess = new SC_CartSession_Ex();があります。
つまり、SC_CartSession.php の calculate ファンクションを呼び出しています。

SC_CartSession.php の 584行目に #calculate があります。

#calculateを見てみると、$objCartSess->calculateと同じ個数の変数が渡されています。そして、注釈(コメントアウト)に書かれているように、deliv_fee が送料であることがわかります。

なので、$objCartSess->calculateの中で、#calculateに渡す必要がなさそうなものと、計算させた変数を入れ替えます。
#calculate では、ただ、普通に$results['deliv_fee'] = $hoge;としてあげれば、反映されると思います。

※一つだけ確認。
上記というか今回の案件の場合、おそらく複数の配送先を設定した時に正しく金額に反映されないような気がするのですが、それは問題ないですか?
また、仮に完成した場合は、できる限りテストデータでチェックしてください。

-------------------------------
先ほど記載しました、プログラムの↓
$this->tpl_total_inctax[$this->cartKey] = $CartProductsTotalPrice + $hoge;

を、

$this->tpl_total_inctax[$this->cartKey] = $CartProductsTotalPrice

にしてあげれば、送料が入っていない純粋な小計のみが出せます。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,029名です
総投稿数は110,282件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1677
8
red
1570
9
mcontact
1343
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.