バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【2.11.2】複数配送先が存在する際、各配送先ごとに送料無料設定金額を参照して送料を算出したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yuuki0212
投稿日時: 2011/11/18 16:44
対応状況: −−−
新米
登録日: 2011/11/18
居住地:
投稿: 5
【2.11.2】複数配送先が存在する際、各配送先ごとに送料無料設定金額を参照して送料を算出したい
EC-CUBEバージョン:2.11.2
PHP情報:5.2.12
DBバージョン:MySQL 5.0.51a-log

初めて質問させて頂きます。概出でしたら申し訳ないです。

送料無料の設定金額を5250円と設定しています。
現状は複数の送り先を指定した際、送り先のすべての商品の合計金額が5250円を超えていると送料は無料となっています。

この部分を送り先ごとに5250円を超えていたら、送料無料。超えていなかったらそれぞれの送料を加算するようにしたいと考えています。

SC_CartSession.phpのcalculate()内で送料を計算、isDelivFree()で送料無料設定金額から送料無料のフラグを立てていると思うのですが。

この機能を作る場合、calculate()内でお届け先ごとの小計を取得してisDelivFree()で判定して算出するプログラムを実装する事になると思うのですが、この部分の構築のみで実現可能でしょうか?

何かスマートな方法がありましたらアドバイス頂けたら助かります。

宜しくお願いいたします。



seasoft
投稿日時: 2011/11/19 13:42
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 【2.11.2】複数配送先が存在する際、各配送先ごとに送料無料設定金額を参照して送料を算出したい
可能ですよ。というか、(2.11.1 ですが) 可能でした。

2.11 系の送料計算ロジックは意味不明なくらい複雑すぎて、どこをかまったかは失念してしまいましたが・・・


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

yuuki0212
投稿日時: 2011/11/29 17:15
対応状況: −−−
新米
登録日: 2011/11/18
居住地:
投稿: 5
Re: 【2.11.2】複数配送先が存在する際、各配送先ごとに送料無料設定金額を参照して送料を算出したい
seasoftさん

ご返答ありがとうございます。
自分なりにコードを触って見ましたが、同一の商品を複数配送先に送る時に正常に計算されない時があるのでいろいろ調べてみています。

とりあえず現状作った部分です。
コードの汚さをご容赦ください。
****************************************
SC_CartSession.phpの616行目あたりの
****************************************
// 送料無料チェック
if ($this->isDelivFree($productTypeId)) {
$results['deliv_fee'] = 0;
}
****************************************
上記の部分の下に追加
****************************************
if ( count($_SESSION['shipping']) > 1 ){

for($i = 0; $i < count($_SESSION['shipping']); $i++)
{
$keys = array_keys($_SESSION['shipping'][$i]['shipment_item']);
foreach($keys as $key){
$deliv_price += $_SESSION['shipping'][$i]['shipment_item'][$key]['total_inctax'];
}

// 配送業者の送料を加算
if (OPTION_DELIV_FEE == 1
&& !SC_Utils_Ex::isBlank($deliv_pref)
&& !SC_Utils_Ex::isBlank($deliv_id)) {

$arrInfo = $objDb->sfGetBasisData();
$objQuery =& SC_Query_Ex::getSingletonInstance();
$sql = <<< __EOS__
SELECT T1.fee AS fee
FROM dtb_delivfee T1
JOIN dtb_deliv T2
ON T1.deliv_id = T2.deliv_id
WHERE T1.pref = ?
AND T1.deliv_id = ?
AND T2.del_flg = 0
__EOS__;
if($deliv_price < $arrInfo['free_rule'])
{
$result += $objQuery->getOne($sql, array($_SESSION['shipping'][$i]['shipping_pref'], $deliv_id));
}
}
$deliv_price = 0;
}
$results['deliv_fee'] = $result;
}
****************************************

配列からproduct_idの取り方がまずいのかなって感じです。

$keys = array_keys($_SESSION['shipping'][$i]['shipment_item']);

おっしゃるとおり、送料計算の部分は複雑ですね・・
yuuki0212
投稿日時: 2011/12/6 15:01
対応状況: −−−
新米
登録日: 2011/11/18
居住地:
投稿: 5
Re: 【2.11.2】複数配送先が存在する際、各配送先ごとに送料無料設定金額を参照して送料を算出したい
複数配送先ごとに送料の無料金額に応じて送料を設定する事が自己解決できました。

ECCUBEの標準でこの機能ができるのであれば、パラメータで商品すべての合計金額で送料無料になるのか、配送先ごとの小計で送料無料になるのか切り替えるのが、標準であると便利かと思います。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1693
8
red
1571
9
mcontact
1357
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.