質問 > 管理機能 > 2.11.4 ポイントについての変更 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
akki31 |
投稿日時: 2012/3/19 12:02
対応状況: −−−
|
常連 登録日: 2011/6/7 居住地: 投稿: 59 |
2.11.4 ポイントについての変更 こんにちは。
お世話になります。 ポイントの設定を 使用者はポイント付与無に修正したく ソースをいじってみたのですが、うまく動きません。 また、下記矢印部分でエラーが出ているようなのですが どうでしょうか? おかしい個所がございましたらご指摘ください。 なるべく早急に修正したいと思っております。 皆様のお力添えを宜しくお願い致します。 SC_CartSession.php if($results['add_point'] > 0) { $results['add_point'] = 0; return $results; ここ → }else if{ // 加算ポイントの計算 if (USE_POINT !== false) { $results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point, $use_point); if($objCustomer != "") { // 誕生日月であった場合 if($objCustomer->isBirthMonth()) { $results['birth_point'] = BIRTH_MONTH_POINT; $results['add_point'] += $results['birth_point']; } } if($results['add_point'] < 0) { $results['add_point'] = 0; } } return $results; } ----------------------------------- [EC-CUBE]2.11.4 [OS]Windows 7 [PHP] 5.3.6 [データベース] MySQL 5.0.67-log [WEBサーバ] Apache ----------------------------------- |
seasoft |
投稿日時: 2012/3/19 12:19
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 2.11.4 ポイントについての変更 具体的な「エラー」が分かると、話が進めやすいのではないかと思います。
また、変更前後の状態も分かると良いと感じました。
|
akki31 |
投稿日時: 2012/3/19 13:03
対応状況: −−−
|
常連 登録日: 2011/6/7 居住地: 投稿: 59 |
Re: 2.11.4 ポイントについての変更 seasoft様
お世話になります。 お返事ありがとうございます。仰る通りです。 下記に修正個所の前後を載せました。 ご覧いただけますとありがたいです。 ↓修正前のSC_CartSession.php /** * カートの内容を計算する. * * カートの内容を計算し, 下記のキーを保持する連想配列を返す. * * - tax: 税額 * - subtotal: カート内商品の小計 * - deliv_fee: カート内商品の合計送料 * - total: 合計金額 * - payment_total: お支払い合計 * - add_point: 加算ポイント * * @param integer $productTypeId 商品種別ID * @param SC_Customer $objCustomer ログイン中の SC_Customer インスタンス * @param integer $use_point 今回使用ポイント * @param integer|array $deliv_pref 配送先都道府県ID. 複数に配送する場合は都道府県IDの配列 * @param integer $charge 手数料 * @param integer $discount 値引 * @param integer $deliv_id 配送業者ID * @return array カートの計算結果の配列 */ function calculate($productTypeId, &$objCustomer, $use_point = 0, $deliv_pref = "", $charge = 0, $discount = 0, $deliv_id = 0) { $objDb = new SC_Helper_DB_Ex(); $total_point = $this->getAllProductsPoint($productTypeId); $results['tax'] = $this->getAllProductsTax($productTypeId); $results['subtotal'] = $this->getAllProductsTotal($productTypeId); $results['deliv_fee'] = 0; // 商品ごとの送料を加算 if (OPTION_PRODUCT_DELIV_FEE == 1) { $cartItems = $this->getCartList($productTypeId); foreach ($cartItems as $item) { $results['deliv_fee'] += $item['productsClass']['deliv_fee'] * $item['quantity']; } } // 配送業者の送料を加算 if (OPTION_DELIV_FEE == 1 && !SC_Utils_Ex::isBlank($deliv_pref) && !SC_Utils_Ex::isBlank($deliv_id)) { $results['deliv_fee'] += $objDb->sfGetDelivFee($deliv_pref, $deliv_id); } // 送料無料チェック if ($this->isDelivFree($productTypeId)) { $results['deliv_fee'] = 0; } // 合計を計算 $results['total'] = $results['subtotal']; $results['total'] += $results['deliv_fee']; $results['total'] += $charge; $results['total'] -= $discount; // お支払い合計 $results['payment_total'] = $results['total'] - $use_point * POINT_VALUE; // 加算ポイントの計算 if (USE_POINT !== false) { $results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point, $use_point); if($objCustomer != "") { // 誕生日月であった場合 if($objCustomer->isBirthMonth()) { $results['birth_point'] = BIRTH_MONTH_POINT; $results['add_point'] += $results['birth_point']; } } if($results['add_point'] < 0) { $results['add_point'] = 0; } } return $results; } 修正後のphp /** * カートの内容を計算する. * * カートの内容を計算し, 下記のキーを保持する連想配列を返す. * * - tax: 税額 * - subtotal: カート内商品の小計 * - deliv_fee: カート内商品の合計送料 * - total: 合計金額 * - payment_total: お支払い合計 * - add_point: 加算ポイント * * @param integer $productTypeId 商品種別ID * @param SC_Customer $objCustomer ログイン中の SC_Customer インスタンス * @param integer $use_point 今回使用ポイント * @param integer|array $deliv_pref 配送先都道府県ID. 複数に配送する場合は都道府県IDの配列 * @param integer $charge 手数料 * @param integer $discount 値引 * @param integer $deliv_id 配送業者ID * @return array カートの計算結果の配列 */ function calculate($productTypeId, &$objCustomer, $use_point = 0, $deliv_pref = "", $charge = 0, $discount = 0, $deliv_id = 0) { $objDb = new SC_Helper_DB_Ex(); $total_point = $this->getAllProductsPoint($productTypeId); $results['tax'] = $this->getAllProductsTax($productTypeId); $results['subtotal'] = $this->getAllProductsTotal($productTypeId); $results['deliv_fee'] = 0; // 商品ごとの送料を加算 if (OPTION_PRODUCT_DELIV_FEE == 1) { $cartItems = $this->getCartList($productTypeId); foreach ($cartItems as $item) { $results['deliv_fee'] += $item['productsClass']['deliv_fee'] * $item['quantity']; } } // 配送業者の送料を加算 if (OPTION_DELIV_FEE == 1 && !SC_Utils_Ex::isBlank($deliv_pref) && !SC_Utils_Ex::isBlank($deliv_id)) { $results['deliv_fee'] += $objDb->sfGetDelivFee($deliv_pref, $deliv_id); } // 送料無料チェック if ($this->isDelivFree($productTypeId)) { $results['deliv_fee'] = 0; } // 合計を計算 $results['total'] = $results['subtotal']; $results['total'] += $results['deliv_fee']; $results['total'] += $charge; $results['total'] -= $discount; // お支払い合計 $results['payment_total'] = $results['total'] - $use_point * POINT_VALUE; if($results['add_point'] > 0) { $results['add_point'] = 0; return $results; }else if{ // 加算ポイントの計算 if (USE_POINT !== false) { $results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point, $use_point); if($objCustomer != "") { // 誕生日月であった場合 if($objCustomer->isBirthMonth()) { $results['birth_point'] = BIRTH_MONTH_POINT; $results['add_point'] += $results['birth_point']; } } if($results['add_point'] < 0) { $results['add_point'] = 0; } } return $results; } 上記修正いたしますと下記のエラーが出ます。 664は }else if{ の部分です。 Parse error: syntax error, unexpected '{', expecting '(' in /virtual/www/data/class/SC_CartSession.php on line 664 宜しくお願い致します。 |
seasoft |
投稿日時: 2012/3/19 13:07
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 2.11.4 ポイントについての変更 よく見たら、ひじょーに単純なことだったかも・・・
PHP では、 「} else if {」という構文はあり得ません。 「} else {」か 「} else if (<条件式>) {」だと思います。 若干説明が分かりにくいですが、公式マニュアルです。 http://www.php.net/manual/ja/control-structures.else.php http://www.php.net/manual/ja/control-structures.elseif.php
|
akki31 |
投稿日時: 2012/3/19 13:10
対応状況: −−−
|
常連 登録日: 2011/6/7 居住地: 投稿: 59 |
Re: 2.11.4 ポイントについての変更 seasoft様
申し訳ありません、単純な所で。 この場合、前者の } else { では問題ありますでしょうか? 内容はポイントを使用した人の場合は ポイント付与を一切無くしたいという条件なのですが・・。 |
seasoft |
投稿日時: 2012/3/19 13:16
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 2.11.4 ポイントについての変更 現状の記述だと「ポイントを使用した人」ではなく「ポイントを付与される人」になりそうな感じがします。(動作未確認です。外していたら、ゴメンなさい。)
あと、else の開いた波括弧が閉じられていないかも。
|
akki31 |
投稿日時: 2012/3/26 14:53
対応状況: −−−
|
常連 登録日: 2011/6/7 居住地: 投稿: 59 |
Re: 2.11.4 ポイントについての変更 seasoft様
いつもありがとうございます。 お返事が遅れまして申し訳ありません。 >現状の記述だと「ポイントを使用した人」ではなく「ポイントを付与される人」になりそうな感じがします。 ポイントを使用した人を対象にした場合には どのようにしたら良いでしょうか? すみませんが、宜しくお願い致します。 >あと、else の開いた波括弧が閉じられていないかも。 ありがとうございます。確認してみます。 |
akki31 |
投稿日時: 2012/3/29 14:53
対応状況: −−−
|
常連 登録日: 2011/6/7 居住地: 投稿: 59 |
Re: 2.11.4 ポイントについての変更 seasoft様
いつもありがとうございます。 度々スイマセン、こちらを正式に編集依頼をした場合ですと おいくらくらいになりそうでしょうか? 宜しくお願い致します。 |
ken-o |
投稿日時: 2012/3/30 14:36
対応状況: −−−
|
長老 登録日: 2011/9/22 居住地: 投稿: 222 |
Re: 2.11.4 ポイントについての変更 akki31 様
すみません、ご連絡があったことを見逃していました(汗 引用:
1点すみません。間違えがありました。 上記太字の部分は、正しいものです。前回のまでが間違っていました。 申し訳ないです。 else if の構文は、確かいろいろ実験していた時に条件式を書いた時の名残で消し忘れだったかもしれません。 そこと、上記の部分を直しせば通ると思います。
|
seasoft |
投稿日時: 2012/3/30 14:52
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 2.11.4 ポイントについての変更 > ポイントを使用した人を対象にした場合には
> どのようにしたら良いでしょうか? 試したことはありませんが、ken-o 様が書かれているような「使用ポイント(use_point)」を基準とした実装に変更する必要があるのだと思います。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |