バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 注文個数×使用ポイント数上限での設定方法

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
toratora
投稿日時: 2017/1/2 1:50
対応状況: −−−
半人前
登録日: 2014/8/29
居住地:
投稿: 19
注文個数×使用ポイント数上限での設定方法

以下を参考に、注文毎の使用ポイント数上限の設定は出来たのですが、
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=4519&forum=2


注文個数×ポイント上限にというふうに
するにはどうしたら良いでしょうか?

商品注文1点の上限が500ポイントとすれば、
注文商品合計点数が2点あれば1000ポイントまで、使用できる。
というふうにしたいです。

以下を参考に
http://memo.koubousya.jp/contents/224


カート内点数の数値を取得して

if (($arrForm['use_point'] * POINT_VALUE) > 500 * $arrItem['quantity'];) {
$objErr->arrErr['use_point'] = '※ ポイントは1点につき500ポイントまでです。<br>';
}

としてみましたが、
上手く機能しませんでした。


具体的な記述は、
どの部分をどのようにすればよいでしょうか。


宜しくお願いいたします。
468
投稿日時: 2017/1/4 14:06
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 注文個数×使用ポイント数上限での設定方法
ECCUBE2.13系でしょうか?

2.13系の場合、/data/class/pages/shopping/LC_Page_Shopping_Payment.php 316行目付近に
if文を追記されたのではないかと思いますが、
$arrItem['quantity']にカート内の数量が入っていますか?

提示されているソース内の
$arrItem['quantity']を直接「2」等の数値に書き換えた場合、
想定通りの判定が行われましたので、
$arrItem['quantity']が怪しいかと思いました。

LC_Page_Shopping_Payment.phpでカート内の通常商品の数量を取得する場合、以下の記述で取得できると思います。
$objCartSess = new SC_CartSession_Ex();
$quantity = $objCartSess->getTotalQuantity(1);


ダウンロード商品の場合は、$quantity = $objCartSess->getTotalQuantity(2);で取得できます。
通常商品とダウンロード商品どちらも取扱いされる場合は、
お客様が購入しようとしている商品が通常商品か?ダウンロード商品か?判定が必要となります。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

toratora
投稿日時: 2017/1/5 0:19
対応状況: −−−
半人前
登録日: 2014/8/29
居住地:
投稿: 19
Re: 注文個数×使用ポイント数上限での設定方法
468様

すみません、ec-cube2.13.2でした。

309行付近の
if (($arrForm['use_point'] * POINT_VALUE) > $subtotal) {
$objErr->arrErr['use_point'] = '※ ご利用ポイントがご購入金額を超えています。<br>';
}

の下に、

if (($arrForm['use_point'] * POINT_VALUE) > 500 * $arrItem['quantity']) {
$objErr->arrErr['use_point'] = '※ ポイントは1点につき500ポイントまでです。<br>';
}

と入れました。


ご指摘の通り
恐らく$arrItem['quantity']に数値が入っていないようです。


掛けると1ポイントでも使用不可になります。

$objCartSess = new SC_CartSession_Ex();
$quantity = $objCartSess->getTotalQuantity(1);

上記で取得できるとのこと、
教えて頂きありがとうございます。



$objCartSess = new SC_CartSession_Ex();は、
73行目付近に最初から入っていたようです。

その下辺りの、
// カートの情報を取得
のところに

$quantity = $objCartSess->getTotalQuantity(1);

を挿入してみましたが、状況変わらずでした。

入れる場所が間違っているのでしょうか。
468
投稿日時: 2017/1/5 2:42
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 注文個数×使用ポイント数上限での設定方法
返信ありがとうございます。

73行目の$objCartSessはfunction action() {}内で利用するスコープの変数の為、
エラーチェックを追加したfunction lfCheckError() {}内には何も引き継がれていないと思います。

多少メモリの無駄があるかもしれませんが、
if (($arrForm['use_point'] * POINT_VALUE) > 500 * $arrItem['quantity']) {
の記述の上の行で、再度、変数にインスタンスを格納して判定の記述を変更するのが手っ取り早いと思います。

$objCartSess = new SC_CartSession_Ex();
$quantity = $objCartSess->getTotalQuantity(1);
if (($arrForm['use_point'] * POINT_VALUE) > 500 * $quantity) {
$objErr->arrErr['use_point'] = '※ ポイントは1点につき500ポイントまでです。<br>';
}

↑$arrItem['quantity']を$quantityに変更していますので、気を付けてください。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

toratora
投稿日時: 2017/1/5 10:25
対応状況: −−−
半人前
登録日: 2014/8/29
居住地:
投稿: 19
Re: 注文個数×使用ポイント数上限での設定方法
468様

示していただいたとおりの記述にしましたところ、
思い通りの動きになりました!

助かりました、
ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,691名です
総投稿数は109,941件です

投稿数ランキング

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