質問 > フロント機能 > 【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 系の送料計算ロジックは意味不明なくらい複雑すぎて、どこをかまったかは失念してしまいましたが・・・
|
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の標準でこの機能ができるのであれば、パラメータで商品すべての合計金額で送料無料になるのか、配送先ごとの小計で送料無料になるのか切り替えるのが、標準であると便利かと思います。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |