質問 > 管理機能 > 100ポイントで1000円分のお買い物券 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nao716 |
投稿日時: 2012/3/7 20:37
対応状況: −−−
|
半人前 登録日: 2012/2/14 居住地: 投稿: 30 |
100ポイントで1000円分のお買い物券 EC-CUBEバージョン 2.11.4
PHPバージョン PHP 5.2.17 DBバージョン MySQL 5.5.13 ポイントの使いかたですが、 ポイント100ポイントで1,000円として使用できるようにしたいのですが、どうすればできますでしょうか? 90ポイン溜まっていても使用できないし、130ポイント溜まっていても100ポイントしか利用できず、30ポイントは持ち越しという方式にしたいとおもいます。 ご指導よろしくお願い致します。 |
pingpong |
投稿日時: 2012/3/7 20:50
対応状況: −−−
|
長老 登録日: 2011/12/15 居住地: 投稿: 156 |
Re: 100ポイントで1000円分のお買い物券 細かい仕様を決めないと難しいかと思います。
ポイントを入力して実行後、使用ポイントを自動的に修正して処理するのか、一旦ページを戻して入力させなおすのか。 ところで、100ポイント「しか」使えないのですか? ※200ポイントでも2000円のように、100の倍数での仕様というわけではなく SC_CartSession.phpのcalculateメソッドでポイントを含めた金額計算をしていますので、そのあたりからカスタマイズをしてみてはいかがでしょうか。 |
nao716 |
投稿日時: 2012/3/8 1:53
対応状況: −−−
|
半人前 登録日: 2012/2/14 居住地: 投稿: 30 |
Re: 100ポイントで1000円分のお買い物券 pingpong様、ご回答ありがとうございます。
> ところで、100ポイント「しか」使えないのですか? > ※200ポイントでも2000円のように、100の倍数での仕様というわけではなく いえ、ご指摘の通り、100ポイント毎で1,000円の値引きで、200ポイントであれば2000円の値引きと考えております。 > SC_CartSession.phpのcalculateメソッドでポイントを含めた金額計算をしていますので、そのあたりからカスタマイズをしてみてはいかがでしょうか。 SC_CartSession.php を初心者の私なりに見てみたのですが、この SC_CartSession.php ではすでに、 $use_point(使用ポイント) に値が入っている状態で計算が始まっていると思うのですが? この前の段階の「使用するポイント数を入力してもらう」段階で、チェックをしないといけないと思うのですが、いかがなものなんでしょうか? よろしくご指導のほどお願い致します。 |
pingpong |
投稿日時: 2012/3/8 11:00
対応状況: −−−
|
長老 登録日: 2011/12/15 居住地: 投稿: 156 |
Re: 100ポイントで1000円分のお買い物券 それであれば、簡単な実装としては、下記のようにしてはいかがでしょうか?
1 ポイント入力画面に100ポイントずつの使用の注意を書く 2 入力されたポイントの下2桁から切り捨てにする 3 POINT_RATEを変更する(1ポイント1円の設定になっているので) 1については、○○00のように、下二桁を00文字列などで固定しておき、3桁目から入力できるようにしておくほうがスマートかと ただ、それでも、裏側でポイントを100倍するなりして調整が必要になりますね(2の作業に該当)。 編集ページはおっしゃるとおり、そこではなかったですね--;; |
aska824 |
投稿日時: 2012/3/8 12:46
対応状況: −−−
|
長老 登録日: 2010/2/20 居住地: 静岡県 投稿: 185 |
Re: 100ポイントで1000円分のお買い物券 以前自分は「○○ポイント以上でないと利用できない」という制約(?)をつけてカスタマイズしたことがあります。
今は制限を付けずに行なってますので、全部覚えて無いのであしからず・・・。 LC_Page_Shopping_Payment.phpの300行目辺りにポイントを利用した際、所持ポイントよりも利用ポイントの方が高い、もしくは購入金額以上のポイントを利用している場合のエラーの返しが表記されてます。 そこにIF文で○○ポイント未満であれば利用できないエラーを返すやり方をしていました。 なので、そこにIF文で100の倍数でなければポイントが使えない記述し、POINT_RATEで1ポイント=100円にしてみると、100の倍数のポイントでなければエラーを返してくれます。 ただ、これはあくまで表向きですので、もしかすると抜け道(?)で100の倍数のポイント以外でも購入できてしまう可能性もあります 自分はPHPにそこまで詳しくないのでわかりません・・・>< というか、100の倍数じゃなかったら・・っていうIF文なんてあるんですかね^^; もしあればこの方法でできるはずですが><; (出来なければすいません・・汗)
|
Masashige |
投稿日時: 2012/3/8 13:42
対応状況: −−−
|
長老 登録日: 2009/4/1 居住地: 投稿: 200 |
Re: 100ポイントで1000円分のお買い物券 横からすいません。100の倍数は
if( ( $value % 100 ) === 0 ) とかで。あと、フロント側はプルダウンにするといいかもです。 |
nao716 |
投稿日時: 2012/3/9 2:08
対応状況: −−−
|
半人前 登録日: 2012/2/14 居住地: 投稿: 30 |
Re: 100ポイントで1000円分のお買い物券 pingpong様
aska824様 Masashige様 ご回答ありがとうございます。 最終的に LC_Page_Shopping_Payment.php の300行あたりに if($max_point < 101){ $objErr->arrErr['use_point'] = "※ 現在の所持ポイントが100ポイント未満なので、ポイントを使えません。<br>"; } else { というエラー処理を入れました。 また、payment.tpl の290行目あたりの <input type="text" のテキスト入力を <select size="1" のリスト入力方式にして、 <option>100</option><option>200</option>...として100の倍数での入力しかできないようにしました。 ポイントの変換レートを 1ポイント10円にしました。 皆様誠にありがとうございます。 まだまだ、わからないことだらけです。 また、質問させていただきます。 今後ともよろしくご指導のほどお願い致します。 |
aska824 |
投稿日時: 2012/3/10 1:01
対応状況: −−−
|
長老 登録日: 2010/2/20 居住地: 静岡県 投稿: 185 |
Re: 100ポイントで1000円分のお買い物券 引用:
ですが、最後の else { は必要ありません。 記述自体は問題ないと思いますので、「else {」を入れた場合、閉じタグ(})がないためエラーが出ます。 if($max_point < 101){ $objErr->arrErr['use_point'] = "※ 現在の所持ポイントが100ポイント未満なので、ポイントを使えません。<br>"; } でやってみたらどうですか?
|
nao716 |
投稿日時: 2012/3/15 15:45
対応状況: −−−
|
半人前 登録日: 2012/2/14 居住地: 投稿: 30 |
Re: 100ポイントで1000円分のお買い物券 aska824 様、ご回答ありがとうございます。
説明が不十分でした。 追加したのは、 ・・・else { までですが、その後ろにもありますので、このポイントチェック部分を全部表示すると ------------------- function lfCheckError(&$objFormParam, $subtotal, $max_point) { // 入力データを渡す。 $arrForm = $objFormParam->getHashArray(); $objErr = new SC_CheckError_Ex($arrForm); $objErr->arrErr = $objFormParam->checkError(); if (USE_POINT === false) { return $objErr->arrErr; } if($arrForm['point_check'] == '1') { $objErr->doFunc(array("ポイントを使用する", "point_check"), array("EXIST_CHECK")); $objErr->doFunc(array("ポイント", "use_point"), array("EXIST_CHECK")); if($max_point == "") { $max_point = 0; } if($max_point < 101){ $objErr->arrErr['use_point'] = "<br>※ 現在の所持ポイントが100ポイント未満なので、ポイントをご使用いただけ使えません。<br>"; } else { // FIXME mobile 互換のため br は閉じない... if($arrForm['use_point'] > $max_point) { $objErr->arrErr['use_point'] = "※ ご利用ポイントが所持ポイントを超えています。<br>"; } if(($arrForm['use_point'] * POINT_VALUE) > $subtotal) { $objErr->arrErr['use_point'] = "※ ご利用ポイントがご購入金額を超えています。<br>"; } } } return $objErr->arrErr; } ------------------- このようになっています。 ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |