質問 > フロント機能 > ポイント割引を考慮した送料無料の設定 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
by0448 |
投稿日時: 2011/10/11 18:54
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2011/9/12 居住地: 横浜市 投稿: 186 |
ポイント割引を考慮した送料無料の設定 __環境_________________________
EC-CUBE 2.11.2 MySQL 5.1.34-log PHP 5.2.17 _______________________________ 先日お聞きして、結局なにも発展できなかったので、もう一度質問させて下さい。 現在、送料を一万円以上をサービスという形にしているのですが、近々ポイント制度を加えることにより、ポイントを使った後の金額で送料の無料を判断せねばならなくなりました。 前回聞いたところ、そのポイント使用のページを /shopping/payment.phpから その前のページである /shopping/deliv.php に移動すればよいと助言を頂いたのですが、そこで止まってしまいました。 tplファイルにある、 225号目の <!-- ▼ポイント使用 ここから --> 248行目までをコピーして移動させましたが、まずは表示さえされません。 <!--{if $tpl_login == 1 && $smarty.const.USE_POINT !== false}--> 上記の文が原因なのはわかるのですが、どう処置をしたらいいかわかりません。 どなたか、これを修正する方法を教えて下さい。 |
by0448 |
投稿日時: 2011/10/13 13:35
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2011/9/12 居住地: 横浜市 投稿: 186 |
Re: ポイント割引を考慮した送料無料の設定 追記
---------------- 無知なりに調べたのですが、以下の2ファイルをいじるのだとわかりました。 LC_Page_Shopping_Payment.php LC_Page_Shopping_Deliv.php ただ、クラスの理屈もわからない自分には、どこをコピーして持ってくればいいかわかりません。 |
mamano |
投稿日時: 2011/10/23 11:22
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2011/6/28 居住地: 投稿: 83 |
Re: ポイント割引を考慮した送料無料の設定 私も同じように、ポイント利用した分を差し引いた総合計から、
代引き手数料を算出するよう変更を加える必要が発生しました。 LC_Page_Shopping_Payment.php に記載の中から、 // カートの情報を取得 $this->arrShipping =& $objPurchase->getShippingTemp(); $this->is_multiple = $objPurchase->isMultiple(); $this->tpl_uniqid = $objSiteSess->getUniqId(); $cart_key = $objCartSess->getKey(); $this->cartKey = $cart_key; $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess); // 会員情報の取得 if ($objCustomer->isLoginSuccess(true)) { $this->tpl_login = '1'; $this->tpl_user_point = $objCustomer->getValue('point'); $this->name01 = $objCustomer->getValue('name01'); $this->name02 = $objCustomer->getValue('name02'); } $arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid); /* * 購入金額の取得 * ここでは送料を加算しない */ $this->arrPrices = $objCartSess->calculate($cart_key, $objCustomer); /** * 受注一時テーブルへ登録を行う. * * @param integer $uniqid 受注一時テーブルのユニークID * @param array $arrForm フォームの入力値 * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス * @param array $arrPayment お支払い方法の配列 * @return void */ function lfRegistData($uniqid, $arrForm, &$objPurchase, $arrPayment) { $arrForm['order_temp_id'] = $uniqid; $arrForm['update_date'] = 'Now()'; if($arrForm['point_check'] != '1') { $arrForm['use_point'] = 0; } foreach ($arrPayment as $payment) { if ($arrForm['payment_id'] == $payment['payment_id']) { $arrForm['charge'] = $payment['charge']; $arrForm['payment_method'] = $payment['payment_method']; break; } } $objPurchase->saveOrderTemp($uniqid, $arrForm); } 以上を LC_Page_Shopping_Deliv.php にコピーすることで、 お届け先の指定ページに、ポイント利用の部分を表示・ 記入することができるようになりました。 しかし、次のページ payment.php→confirm.phpへ進むと ポイント利用で入力した値が反映されてきません。 (ポイント利用が0になってしまう) そもそも、ポイントを利用するにチェックを入れ、 ポイント入力欄に数字を記入せず次へ進もうとしても バリデーションが働きません。(「ポイントが入力されていません」の エラーチェックに引っかからない) 何が間違っているのか、ご教授いただけないでしょうか。 大変お恥ずかしい質問かと思いますが 何卒よろしくお願いいたします。 ------------------------------------------------------------------------------------------ [EC-CUBE]2.11.1 [レンタルサーバ]GMO VPS [OS]CentOS release 5.3 [PHP]5.1.6-23.9v1 [データベース]MySQL 5.0.77 [WEBサーバ]apache2 |
mamano |
投稿日時: 2011/10/26 18:38
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2011/6/28 居住地: 投稿: 83 |
Re: ポイント割引を考慮した送料無料の設定 コピーする内容が全然足りなかったようで
function lfInitParam(&$objFormParam, $deliv_only,&$arrShipping) { $objFormParam->addParam("ポイント", "use_point", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START")); $objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2'); } /** * 入力内容のチェックを行なう. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param integer $subtotal 購入金額の小計 * @param integer $max_point 会員の保持ポイント * @return array 入力チェック結果の配列 */ 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; } // 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; } 以上をLC_Page_Shopping_Deliv.php に追記しました。 それでも現象は変わらず・・・ どうか、どうか、どなたかご教授いただけないでしょうか。 よろしくお願いいたします。。。 |
by0448 |
投稿日時: 2011/11/15 14:04
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2011/9/12 居住地: 横浜市 投稿: 186 |
Re: ポイント割引を考慮した送料無料の設定 mamano 様
経過はいかがでしょうか? 自分も、同じようにやってみたところ、ポイントが全く無視される状況から先に進んでいません。 あと一歩なんだろうな、とは考えられるものの、どこを繋げば完成するのか見当がつきません。 どなたか、ここにもう一つお力を貸しては頂けないでしょうか? |
mamano |
投稿日時: 2011/11/16 9:14
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2011/6/28 居住地: 投稿: 83 |
Re: ポイント割引を考慮した送料無料の設定 by0448 様
違うカスタムに時間をかけておりまして、 この件は後回しになっておりました。 今日から再度チャレンジですが、どうなることやら・・・ どなたか、ヒントでもいただけると助かります。 |
by0448 |
投稿日時: 2011/11/16 13:41
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2011/9/12 居住地: 横浜市 投稿: 186 |
Re: ポイント割引を考慮した送料無料の設定 mamano 様
自分もできるなりに挑戦しております。 もし、納得できる段階になりましたら、ここにてご報告させていただきます。 |
mamano |
投稿日時: 2011/11/17 7:40
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2011/6/28 居住地: 投稿: 83 |
Re: ポイント割引を考慮した送料無料の設定 色々試してみましたが、
上記の内容をpayment.phpからdeliv.phpへすると、 デフォルトで「ポイントを使用しない」にチェックが入っているはずが チェックが入っていません。 「ポイントを使用する」にチェックを入れ、使用ポイント数を所持ポイント以上の数値を入力して「次へ」遷移してもバリデーションが働いていません。 ここで躓いて前に進めない状況です(涙) カスタム前の状況と何度も比較しては、動作の流れを理解して プログラムを読んでみてるのですが、如何せんphpの知識が薄いもので途方に暮れております。 どなたか、ヒントだけでもお知恵をお借りできないでしょうか。 |
mamano |
投稿日時: 2011/11/18 9:11
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2011/6/28 居住地: 投稿: 83 |
Re: ポイント割引を考慮した送料無料の設定 ポイントを使用するにチェックを入れても
値が引き継がれないのは 単純に $this->tpl_onload = "fnCheckInputPoint();"; ここがいきていないような気がします。。。 認識が間違っていますでしょうか。 それとも他に原因があるのでしょうか・・・ |
mamano |
投稿日時: 2011/11/18 10:07
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2011/6/28 居住地: 投稿: 83 |
Re: ポイント割引を考慮した送料無料の設定 ここまでで分かったこと(理解したはずです、、、)
cart.php カートページ セッションで商品情報を保持 deliv.php お届け先・ポイント使用指定 セッションで商品情報と顧客情報を保持 ポイント使用分を確定の上、order_tempに登録 ↑この一時データの登録ができていない ※use_point=NULLで登録されている payment.php 支払い方法選択 支払い方法をorder_tempに登録 引き継いだ値をdumpで表示すると、use_point=0になっている。 ということは、 if($arrForm['point_check'] != '1') { $arrForm['use_point'] = 0; } 上記一時データの登録の部分で、 'point_check'(チェックボックスのチェック)の値が渡っていない、ということになります。 ポイント使用フォーム内のバリデーションが効いていないこととイコールかも知れませんが、 この原因のヒントだけでもいただけないでしょうか・・・ |
(1) 2 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |