バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ポイント割引を考慮した送料無料の設定

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,434名です
総投稿数は110,399件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1694
8
red
1571
9
mcontact
1371
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.