バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
s100858
投稿日時: 2014/9/2 18:18
対応状況: −−−
常連
登録日: 2014/7/4
居住地:
投稿: 31
商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
いつもお世話になっております。

今回、新たにご質問ございまして投稿させて頂きました。

例えになりますが、A
タバコを500円で販売し、規格にて、ライターを
つけるかつけないかでクロスセルして販売しているとします。

規格1:ライターをつける場合+200円 
    ライターをつけない場合+0円

ですので、支払金額は下記の通りになります。
タバコを購入し、ライターをつける場合→合計700円
タバコを購入し、ライターをつけない場合→合計500円

規格ではタバコを購入し、ライターもつけるを選択した場合、
タバコの金額に+200円され、タバコの金額が700円になると思います。
つまりライターをつけ、タバコの数量を3にした場合、ライター金額を含んだ
700×3=2,100円になるかと思います。
ですが、商品の性質上、タバコを複数購入してもライターは1つで充分だと思うので
希望は
500円×3+200円=合計1,600円になったほうが良いと思います。

私が、現在扱っている商品もタバコとは全く違いますが
商品の性質上から、上記のような問題に悩まされています。

規格のプラダウン形式で選ぶ方法がお客様も選び易く
このスタイルが良いのですが、何か良い解決策ございませんか。

通常ですと
数量が2,3、4....と増えた場合に
×2、×3、×4.....となっていくと思いますが
これを
+(Aの値段×1)円、+(Aの値段×2)円、+(Aの値段×3)円......
という風に、Aの値段を変更した場合にでも問題ないように上記のような足し算での計算式はどうかな、と思ったのですがどうでしょうか。

他の解決策や、足し算形式の場合の考えられる実装方法等ございましたら
ご教授頂ければ幸いです。

どうぞよろしくお願い致します。

==================
EC-CUBEバージョン 2.13.1
PHPバージョン PHP 5.3.28
==================
yuh
投稿日時: 2014/9/2 23:57
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1610
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
ライターという商品を作ってしまって、規格(名前だけ+ライター200円)を設定して、後はその規格の商品をカートに入れた時に一緒にカートに入るようにしてあげて、カートからライター以外を削除した際(+ライター200円という規格の商品が無い場合)には同時にライターもカートから削除するという感じですか?

後はライターの商品は一覧・詳細等で表示されないようにすれば
一応望む仕様はクリアできると思います。

似たような仕様は作った事はありますが、若干変更のコードが多いので作る際は順に追って作っていった方がいいと思います。
s100858
投稿日時: 2014/9/3 18:06
対応状況: −−−
常連
登録日: 2014/7/4
居住地:
投稿: 31
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
yuh様 

いつもお返事頂き、誠にありがとうございます。

なるほど、私は、合計金額の算出方法を修正しようと思っていましたが
yuh様が仰られた通りに設定できれば、理想だと思います。

ですが、方法を検索してみても思うような情報が見つからず困りました。
そこで大変申し訳ございませんが
簡単な実装の流れ、(差し支えなければ詳細な流れ)
もしくはそのような情報が記載されたサイトを
お教え頂けないでしょうか。

いつもお応え頂いている中、何度も申し訳ございませんが
お時間許しましたらよろしくお願い致します。
yuh
投稿日時: 2014/9/3 18:11
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1610
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
まずはライターをつける規格を作って、商品に対して設定します。
ライターの商品を登録します。

SC_CartSession.phpのaddProductに対して
渡されたproduct_class_idから該当の規格をチェックして、ライターをつける規格で現在カートの中にライターがなければaddProductの中でaddProductをおこなう感じですね。

間違えてライターの商品に対してライターをつける規格を設定してしまうと無限ループに入るので注意してください。


s100858
投稿日時: 2014/9/3 19:16
対応状況: −−−
常連
登録日: 2014/7/4
居住地:
投稿: 31
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
お返事頂き誠にありがとうございます。

      

    // カートへの商品追加
    public function addProduct($product_class_id, $quantity)
    {
        $objProduct = new SC_Product_Ex();
        $arrProduct = $objProduct->getProductsClass($product_class_id);
        $productTypeId = $arrProduct['product_type_id'];
        $find = false;
        $max = $this->getMax($productTypeId);
        for ($i = 0; $i <= $max; $i++) {
            if ($this->cartSession[$productTypeId][$i]['id'] == $product_class_id) {
                $val = $this->cartSession[$productTypeId][$i]['quantity'] + $quantity;
                if (strlen($val) <= INT_LEN) {
                    $this->cartSession[$productTypeId][$i]['quantity'] += $quantity;
                }
                $find = true;
            }
        }
        if (!$find) {
            $this->cartSession[$productTypeId][$max+1]['id'] = $product_class_id;
            $this->cartSession[$productTypeId][$max+1]['quantity'] = $quantity;
            $this->cartSession[$productTypeId][$max+1]['cart_no'] = $this->getNextCartID($productTypeId);
        }
    }


SC_CartSession.phpの上記の部分でしょうか。
助言頂いた内容は理解できましたが、PHPは入門書を読んだぐらいで
恥ずかしながら、どうコードを打つかわかりませんでした。

参考URL(こういったものを参考にするのでしょうか)
http://sound-acid.gonna.jp/class_s_c___cart_session.html

簡単な説明でも構わないと行っておきながら大変恐縮ですが
お時間ございましたら、踏み込んだご説明頂ければ非常に助かります。

どうぞよろしくお願い致します。


yuh
投稿日時: 2014/9/3 23:21
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1610
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい

$arrProduct = $objProduct->getProductsClass($product_class_id);

に商品規格のデータが入ってます。
そのデータのclasscategory_id1、classcategory_id2から該当の規格に一致するかチェックして、ライターをつける規格であれば、

        for ($i = 0; $i <= $max; $i++) {
            if ($this->cartSession[$productTypeId][$i]['id'] == $product_class_id) {
                $val = $this->cartSession[$productTypeId][$i]['quantity'] + $quantity;
                if (strlen($val) <= INT_LEN) {
                    $this->cartSession[$productTypeId][$i]['quantity'] += $quantity;
                }
                $find = true;
            }
        }

の部分でライターに一致する商品が入っているかどうかをチェックして、一致する商品がなければaddProduct($product_class_id, $quantity)
でライター商品を追加です。
s100858
投稿日時: 2014/9/4 19:05
対応状況: −−−
常連
登録日: 2014/7/4
居住地:
投稿: 31
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
yuh様

いつもアドバイス頂き、誠にありがとうございます。
非常に助かっております。

一度頂いた助言を基に、
なんとか自分の力で頑張ってみたいと思います。
s100858
投稿日時: 2014/9/12 19:05
対応状況: −−−
常連
登録日: 2014/7/4
居住地:
投稿: 31
Re: 商品を複数購入+規格にて金額を加算した場合に、規格の加算金額を1つ分にしたい
お世話になっております。

なんとか自力でやろうとしたのですが
途中で頭が混乱して、上手くできませんでした。

下記が一応、自作したもので、多く間違っているとは思いますが
方向性的には合っているでしょうか。

もしよろしければご確認頂ければ幸いです。

どうぞよろしくお願い致します。
==========================
規格1:ライター

下記パターンの場合、
product_class_id=29 classcategory_id1=7
product_class_id=30 classcategory_id1=7

にライターをカートに入れるようにしたいです。

ライター:product_Id=16 , product_class_id=65
==========================

  public function addProduct($product_class_id, $quantity){
        $objProduct = new SC_Product_Ex();
        $arrProduct = $objProduct->getProductsClass($product_class_id);{
		if($arrProduct.product_class_id == '29' or '30'){
			  functionisTargetProduct($productTypeId=='1',$productId=='16') {
       $max= $this->getMax($productTypeId);
       for($i= 0; $i<= $max; $i++) {
           if($this->cartSession[$productTypeId][$i]['cart_no'] != "") {
               if( $this->cartSession[$productTypeId][$i]["productsClass"]["product_id"]==$productId){
                   return true;
               }
		   }
           
       }
       return false;
   }
   if($this->isHoge = $objCartSess->isTargetProduct($cart_key,$target_productId);)else{
addProduct($product_class_id=='16', $quantity=='1')
}
        $productTypeId = $arrProduct['product_type_id'];
        $find = false;
        $max = $this->getMax($productTypeId);
        for ($i = 0; $i <= $max; $i++) {
            if ($this->cartSession[$productTypeId][$i]['id'] == $product_class_id) {
                $val = $this->cartSession[$productTypeId][$i]['quantity'] + $quantity;
                if (strlen($val) <= INT_LEN) {
                    $this->cartSession[$productTypeId][$i]['quantity'] += $quantity;
                }
                $find = true;
            }
        }
	}
	
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

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

統計情報

総メンバー数は54,332名です
総投稿数は94,196件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2015
4
468
1918
5
yuh
1610
6
umebius
1410
7
red
1376
8
h_tanaka
940
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
781
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 437


ネットショップの壺

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

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