バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
allure
投稿日時: 2015/7/30 19:27
対応状況: −−−
半人前
登録日: 2014/1/21
居住地:
投稿: 18
条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・
下記の条件を満たす場合に記念品をプレゼントする企画があり、
購入手続きの最終確認画面にて、条件を満たしていれば自動的に購入商品リストに
プレゼント商品を追加するようにしたいと思います。

・購入金額が◯◯円以上
・先着◯◯名の方
・一人一回限り

準備として・・・

●プレゼント商品は通常の商品として登録することで、
 在庫数、販売制限数を設定して自動的に管理できるようにする
●「プレゼント」カテゴリーに入れ、カテゴリー表示をしないように設定する

ここまではいいのですが、
LC_Page_Shopping_Confirm_Ex.php ファイルに関数(下に添付)を作成し、
いろいろテストしている内に問題が出てきました。

条件を満たし、プレゼント商品が追加された後、最終確認画面からカートの中身に戻った場合、
プレゼント商品がリストされているのは問題ないのですが、
ここでプレゼント以外の商品を削除し、プレゼントの条件を満たさなくなった場合に
プレゼントがそのまま残ってしまうのが問題です。
そこで、最終確認画面で、条件に満たないのにカートにプレゼントが入っている場合に
プレゼントを削除するようにしようと思いました。

これがなかなか思うように動かず困っています。
カートに戻って以下の様な操作をした(かつプレゼント条件を満たしていない)場合の
最終確認画面での動作は次のようになりました。

●何か商品を削除した場合 --> プレゼントは削除されません。
●商品の数量を変更した場合 --> プレゼントは削除されません。
●何か商品を削除し、別の商品を追加した場合 --> プレゼントが削除されます。(希望通り)

新たに商品が追加された場合だけ、思い通りプレゼントが削除されるということは、
キャッシュとかが関係するのでしょうか?
何かを更新する操作を入れればいいのでしょうか?
ここから進めずギブアップ状態です。
どなたかヒントでも頂ければと思い投稿させていただきました。
何卒よろしくお願いいたします。m(_ _)m


LC_Page_Shopping_Confirm_Ex.php

▼action の「カートの商品を取得」の前に関数を呼び出し

        // カートにプレゼントを追加
        $this->addCartPresent();

        // カートの商品を取得
        $this->arrShipping = $objPurchase->getShippingTemp($this->is_multiple);
        $this->arrCartItems = $objCartSess->getCartList($this->cartKey);


▼関数の内容は以下のとおりです。

    public function addCartPresent()
    {
        // キャンペーン内容を設定
        $cam_start_date = '2015-07-28 00:00:00'; // 開始日 0000-00-00 00:00:00
        $cam_present_product = '528'; // プレゼント商品の product_class_id を指定
        $cam_present_quantity = '1'; // プレゼント商品の個数を指定
		$cam_present_price = '10000'; // 購入価格がこの金額以上であればプレゼント
        $send_present = ''; // 変数を空にする

        // プレゼントの条件
        $objCustomer = new SC_Customer_Ex();
        $customer_id = $objCustomer->getValue('customer_id');
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $arrOrderHistory = $objQuery->select('order_id, create_date, status, total', 'dtb_order', 'customer_id = ? AND del_flg = 0', array($customer_id));
        $objCartSess = new SC_CartSession_Ex();
        $check_total = $objCartSess->getAllProductsTotal($this->cartKey);
        
        // 今回、購入金額が条件を満たしていない場合はプレゼントしない
		if ($check_total < $cam_present_price) {
            $send_present = 'false';
        } else {
		// 購入金額クリア
            // キャンペーン開始日以降の購入履歴あり(既にプレゼントしているかどうか)
			if (isset($arrOrderHistory[0]['order_id'])) {
				foreach($arrOrderHistory as $key => $val){
                	if (strtotime($val['create_date']) >= strtotime($cam_start_date)) {
						if ($val['status'] != 3 && $val['total'] >= $cam_present_price) {
							$send_present = 'false';
                        	break ;
						} else {
							$send_present = 'true';
						}
                	} else {
                    	$send_present = 'true';
                	}
				}

			// 購入履歴なし(プレゼントする)
			} else {
				$send_present = 'true';
			}
		}

        // 条件に合えば、カートにプレゼントを追加する
        if ($send_present == 'true') {
            $objCartSess->addProduct($cam_present_product, $cam_present_quantity);
        } else {
			// 条件を満たしてないのにプレゼントがカートに入っていれば削除する
			$product_class_id_incart = $objCartSess->getAllProductClassID($this->cartKey);
			$present_incart = array_search($cam_present_product, $product_class_id_incart);
			if ($present_incart !== 'false') {
				$objCartSess->delProductKey('id', $cam_present_product, $this->cartKey);
			}
		}

	}


---------------------------------------------------------------
[EC-CUBE] 2.13.3
[レンタルサーバ] ローカルにてテスト中
[OS] Mac + MAMP
[PHP] PHP 5.2.17
[データベース] MySQL 5.5.29
---------------------------------------------------------------
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・ allure 2015/7/30 19:27
     Re: 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・ yuh 2015/7/30 22:57
       Re: 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・ allure 2015/7/31 17:43
       Re: 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・ allure 2015/8/4 15:15
         Re: 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・ yuh 2015/8/5 1:11
           Re: 条件を満たせば自動的にプレゼントを追加することは、出来たのですが・・・ allure 2015/8/5 15:40

 



ログイン


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

統計情報

総メンバー数は88,886名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
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.