バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 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 ポイントについての変更
具体的な「エラー」が分かると、話が進めやすいのではないかと思います。

また、変更前後の状態も分かると良いと感じました。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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 の開いた波括弧が閉じられていないかも。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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 様

すみません、ご連絡があったことを見逃していました(汗

引用:

if($use_point > 0){
$results['add_point'] = 0;
return $results;
}else{
// 加算ポイントの計算
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;
}


1点すみません。間違えがありました。
上記太字の部分は、正しいものです。前回のまでが間違っていました。
申し訳ないです。

else if の構文は、確かいろいろ実験していた時に条件式を書いた時の名残で消し忘れだったかもしれません。
そこと、上記の部分を直しせば通ると思います。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

seasoft
投稿日時: 2012/3/30 14:52
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 2.11.4 ポイントについての変更
> ポイントを使用した人を対象にした場合には
> どのようにしたら良いでしょうか?

試したことはありませんが、ken-o 様が書かれているような「使用ポイント(use_point)」を基準とした実装に変更する必要があるのだと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,860名です
総投稿数は109,996件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
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.