
お店側がポイントを発行するメリットは、お客様の抱え込み以外にも、会計的に損金扱いにできるなどの理由もあるよう(詳しいことは専門家に聞いて下さい)ですが、ここではタイトルにある通り、1%未満のポイント付与を可能にする豆知識をご紹介します。
例えばCDショップなんかで「1000円で1スタンププレゼント!」というスタンプカードがあった場合、EC-CUBEでは最低で100円で1ポイントまでしか付与できないので、1000円の場合は10ポイント付与することになります。ポイントを実店舗のスタンプと考えれば、一気に10倍ものポイントを付与してしまうことになります。
(厳密に言うと違いますが、ポイントをスタンプシステムのように使うことはたぶん可能です)
そこで、簡単な修正をするだけで0.1%など、1%未満のポイント設定が可能になる方法を説明します。
数字チェックを外せばOK!
ポイント入力のフォームは、PHP側で数字かどうかのチェックが走っています。
つまり、「0.1」などは本当は数字なのですが、「.」を含むために数字として認識されません。
この場合、コンマが入っても数値とするようなチェック関数を増やして、チェックをそれに変更すればいちばんよいのですが、今回は一番簡単にできる数字かどうかのチェックをしない方向で説明します。
修正するファイルとその箇所
(1) /data/class_extends/page_extends/admin/basis/の中のLC_Page_Admin_Basis_Point_Ex.php
/data/class/pages/admin/basis/の中にあるLC_Page_Admin_Basis_Point.phpに記述されている関数「lfInitParam()」を丸ごと上記のファイルにコピーしてきて、ファイルの最後あたりに追加します。そして、ポイント付与率の"NUM_CHECK"を消して保存し、アップロードします。
/* パラメータ情報の初期化 */
function lfInitParam() {
$this->objFormParam->addParam("ポイント付与率", "point_rate", PERCENTAGE_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
$this->objFormParam->addParam("会員登録時付与ポイント", "welcome_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
}
↓ 赤文字部分を削除する。
function lfInitParam() {
$this->objFormParam->addParam("ポイント付与率", "point_rate", PERCENTAGE_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("会員登録時付与ポイント", "welcome_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
}
// 入力エラーチェック
function lfErrorCheck($array) {
$objErr = new SC_CheckError($array);
$objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("一覧コメント", "main_list_comment", MTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("詳細コメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("詳細コメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK"));
$objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
~ 省略 ~
}
↓ 赤文字部分を削除
// 入力エラーチェック
function lfErrorCheck($array) {
$objErr = new SC_CheckError($array);
$objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("一覧コメント", "main_list_comment", MTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("詳細コメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("詳細コメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK"));
$objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
~ 省略 ~
}
★ 質問 2009/03/09
レビュアー:小山 浩二
記入してある通りに記入を行ったのですが、記入する場所がどこなのか不明。classフォルダのfunctionの{}内に入れるのか、function{}外に入れるのか?
1.
/data/class/pages/admin/basis/の中にあるLC_Page_Admin_Basis_Point.phpに記述されている関数「lfInitParam()」を丸ごと上記のファイルにコピーしてきて、ファイルの最後あたりに追加します。
2.
/data/class_extends/page_extends/admin/products/の中のLC_Page_Admin_Products_Product_Ex.phpの一番最後あたりに張り付けます。
3.
ポイント付与率を1%→0.1%に変更を基本情報管理→ポイント設定→ポイント付与率で変更はできたのですが、各商品のポイント設定値が0になってしまいます。
phpadminでUPDATE dtb_products SET point_rate = ポイント付与率; ポイント付与率の箇所を0.1に変更。
phpadmin内のdtb_productsのpoint_rateも0になってしまい。0.1に変更不能。
ご質問ありがとうございます。 2009/03/09
レビュアー:homan
商品情報の方の修正も必要ですね。
時間がある時になりますが、チェックして記事を追加させて頂きます。
取り急ぎご報告のお礼までとなりますが、
ご容赦下さいませ。
