バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品コードで送料計算を行いたい。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
GN125
投稿日時: 2014/4/7 11:31
対応状況: −−−
新米
登録日: 2013/12/3
居住地: 福岡市
投稿: 8
商品コードで送料計算を行いたい。
-----------------
EC-Cube 2.13.0
MySQL 5.0.95
PHP 5.3.3
Xserver
-----------------

お世話になります。

産地直送品を取り扱うため、
カートに入っている商品の商品コードを取得し、
異なる店舗の商品が入っていた場合は
送料を加算する計算を行いたいと思っています。


商品コードは店舗ごとに aaa_1、aaa_2、bbb_1、bbb_2 のように設定しています。

カート内に aaa_1、bbb_1 のように、
先頭3文字が異なる商品コードが入っていた時のみ、送料を加算する形になります。


http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=4459&forum=10
上記の質問とほぼ同じ処理になりますので
参考にさせていただいているのですが、
EC-CUBEのバージョンが違うため、
カート内の商品コードの取得方法がわからず立ち往生しております。。

SC_CartSession.php の calculate()内で
商品コードを取得するにはどのように記述すればよろしいのでしょうか。

どうかご教示いただけますと幸いです。。
宜しくお願いいたします。
yuh
投稿日時: 2014/4/7 12:02
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 商品IDで送料計算を行いたい。
$this->cartSessionにカートに入っている商品情報があります。
DBからその商品IDがどの店舗の商品かどうかをチェックして、処理を行えばいいと思います。

EC-CUBEのバージョンが違う為ということであればまずは使用するECCUBEのバージョンを記載する必要があると思います
GN125
投稿日時: 2014/4/7 14:09
対応状況: −−−
新米
登録日: 2013/12/3
居住地: 福岡市
投稿: 8
Re: 商品IDで送料計算を行いたい。
yuh さん

ご返信いただきありがとうございます!
肝心のEC-CUBEのバージョン記載が抜けておりました…ご指摘ありがとうございます。

いただいた情報を基に考えてみます!

厚かましいお願いなのですが、もしよろしければ商品IDを取得する
具体的なソースもご教示いただくことは可能でしょうか?><;
yuh
投稿日時: 2014/4/7 14:36
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 商品IDで送料計算を行いたい。
SC_CartSessionのgetCartListで商品情報を取得しているので、その部分を使って配列中の商品iDを取得して、そのIDを元に保存していると思われる店舗の情報を取得してユニークを取ればいいと思います。
具体的なコードに関しては商品IDを取る部分は

		$product_id_ary = array();
		foreach($this->cartSession[$productTypeId] as $key => $value){
			if($value['productsClass']['product_id'] AND preg_match('/^[0-9]+$/',$value['productsClass']['product_id'])){
				$product_id_ary[$value['productsClass']['product_id']] = $value['productsClass']['product_id'];
			}
		}
		sort($product_id_ary);

こんな感じになると思います。
GN125
投稿日時: 2014/4/7 17:30
対応状況: −−−
新米
登録日: 2013/12/3
居住地: 福岡市
投稿: 8
Re: 商品IDで送料計算を行いたい。
yuh さん

具体的なコードまで書いていただき、本当にありがとうございます><

一点もの凄い間違いをしておりまして・・・;;
取得したいものは商品IDではなく、商品コードでした・・・申し訳ありません。。

最初の投稿で商品IDと記載していた箇所を
商品コードへ変更しております。


肝心の送料の計算につきましては、
教えていただいたコードを基に、下記のように記述いたしました。

-----------------------------------------------------------
data/class/SC_CartSession.php
calculate()内の
「// 配送業者の送料を加算」と「//送料無料チェック」の間へ
-----------------------------------------------------------
//各店舗さんの変数を設定
		$a_shop = 0;
		$b_shop = 0;
		$c_shop = 0;
		$d_shop = 0;
		$e_shop = 0;
		
		$product_id_ary = array();
		foreach($this->cartSession[$productTypeId] as $key => $value){
			if($value['productsClass']['product_code']){
				$product_code_full = $product_id_ary[$value['productsClass']['product_code']] = $value['productsClass']['product_code'];
				
				//商品コードの前3文字を取得
				$shop_code = substr($product_code_full, 0, 3);
				
				switch($shop_code) {
					case 'aaa':
						$a_shop = 1;
						break;
					
					case 'bbb':
						$b_shop = 1;
						break;
					
					case 'ccc':
						$c_shop = 1;
						break;
					
					case 'ddd':
						$d_shop = 1;
						break;
					
					case 'eee':
						$e_shop = 1;
						break;
				}
			}
		}
		sort($product_id_ary);
		
		
		//カートに含まれる店舗さんの総数
		$shop_total = $a_shop + $b_shop + $c_shop + $d_shop + $e_shop;
		
		
		//カート内に2商品以上入っている場合
		if ($this->getTotalQuantity($productTypeId) > 1) {
			
			//店舗さんの総数分、送料を加算(全店舗で送料は一律)
			$results['deliv_fee'] = $results['deliv_fee'] * $shop_total;

		}


スマートに書く事はとてもできないのですが
なんとか目的の処理へ辿り着くことができました!

自分一人では到底無理でした^^;
yuhさんお忙しい中お付き合い頂きありがとうございました!
本当に助かりました><
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,031名です
総投稿数は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.