Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://eccubememo.blog52.fc2.com/tb.php/17-4c817026

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

ポイント計算方法の変更。(商品ごと⇒全商品の合計に対して)

商品ごとにポイントを加算するのではなく、
全商品の合計に対してポイントとしたい場合サンプル。

例えば、ポイント計算切り上げ(1%)の場合、
850円(9ポイント) × 2 ⇒ 18ポイント
ではなく、
850円 × 2 = 1700円 ⇒ 17ポイント
としたい!場合。

ちなみに、商品ごと計算ではないので、ここではキャンペーンとか無視してます。

1)準備
・そういう計算にしたらしたで商品に表記してるポイント表記も直さないといけないとか、その他諸々で色々問題が発生するかも知れないので一応いつでも元に戻せるようにしておく。
→ 'POINT_RULE_ORG'という定数(パラメータ)を追加。
・商品ごとのレートではないので全商品(合計)に対してのレートを新たに設定する。
→ 'DEFAULT_POINT_RATE'という定数(パラメータ)を追加。

定数の追加方法は、定数(パラメータ)を追加でも参考にしてください。
例)
 1-1) mtb_constants に行を追加。

insert into mtb_constants
values('POINT_RULE_ORG', '0', 530, 'ポイント加算方法 0:商品ごと 1:商品合計に対して');
insert into mtb_constants
values('DEFAULT_POINT_RATE', '1', 531, 'ポイントのレート(%)');

 1-2) 上記追加後、管理画面の「システム設定」 → 「パラメータ設定」
管理画面の「システム設定」 → 「パラメータ設定」

この画面で、
POINT_RULE_ORG:「0」(というかそう作成した)を「1」にする
(※この値を「0」にすると今まで通り、「1」にすると合計金額に対して、の計算方法となる)
「この内容で登録」する押下
DEFAULT_POINT_RATE:全商品の合計に対して何%をポイントとするか入力。
(※ここでは1%)
「この内容で登録」する押下。(※mtb_constantsに行を追加後は、その後内容を変更しようがしまいが1度は押下しておく)

2)ソースコード編集
編集するファイルは2つ。
・data/class/SC_CartSession.php
・data/class/helper/SC_Helper_DB.php

 2-1) SC_CartSession.php の、

  // 全商品の合計ポイント
  function getAllProductsPoint() {
    ・・・
    ・・・
    return $total;
  }

の下辺り(どこでも良い)に、下記のfunctionを追加。商品を合計してレートを掛けて100で割ってるだけ。
コピペで多分問題ないよ。た、多分。

SC_CartSession.php
_____________________________________________________________________________

  // 全商品合計に対するポイント
  function getAllProductsPoint_org() {

    $pt = 0;    //ポイント計
    $ans = 0;    //ポイント計 切捨など処理後
    $price_total = 0;    //商品の合計金額
    $max = $this->getMax();
    for($i = 0; $i <= $max; $i++) {
      $price = $_SESSION[$this->key][$i]['price'];
      $quantity = $_SESSION[$this->key][$i]['quantity'];
      $price_total += ($price * $quantity);
    }
    $pt = $price_total * DEFAULT_POINT_RATE / 100;
    switch(POINT_RULE) {
    case 1:
    // 四捨五入
      $ans = round($pt);
      break;
    case 2:
    // 切り捨て
      $ans = floor($pt);
      break;
    case 3:
    // 切り上げ
      $ans = ceil($pt);
      break;
    default:
    // デフォルト:切り上げ
      $ans = ceil($pt);
      break;
    }
    return $ans;
  }
_____________________________________________________________________________


 2-2) SC_Helper_DB.php の、function sfTotalCart() 内を下記の通り編集。
POINT_RULE_ORG が「0」の場合は従来通りで、「0」以外の場合は上記で作ったfunctionを使って計算しましょう、というだけ。
_____________________________________________________________________________
青字は編集というか追加箇所)
  function sfTotalCart(&$objPage, $objCartSess, $arrInfo) {

    ・・・
    ・・・
    ・・・
    // 全商品合計ポイント
    if (USE_POINT === true) {
      if (POINT_RULE_ORG == 0) {
        $objPage->tpl_total_point = $objCartSess->getAllProductsPoint();
      } else {
        $objPage->tpl_total_point = $objCartSess->getAllProductsPoint_org();
      }

    }

    return $objPage;
  }
_____________________________________________________________________________



確認画面


以上!

<俺用リンク>
ジョナサン・ケイナーの星占い ・・・ 信じなくても結構面白い。
阪神・淡路大震災5日後収録(10日後放送)のパペポTV ・・・ 上岡、鶴瓶。
義援金まとめ ・・・ 一覧。

この記事にトラックバックする(FC2ブログユーザー)
http://eccubememo.blog52.fc2.com/tb.php/17-4c817026

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

modezo

Author:modezo
モデゾー

思いたって書き始めたのが随分出来てからなので実は書くことがあんまりない。

全記事表示リンク

全ての記事を表示する

 

newsing

にほんブログ村 IT技術ブログ 自社サイト運用へ
にほんブログ村

ブランド和牛一覧
近江牛ステーキ・しゃぶしゃぶ
SEOTOOLS999|相互リンクSEO-P-Link ver3.5
匹夫の勇|相互リンクSEO-P-Link ver3.5
頓珍漢|相互リンクSEO-P-Link ver3.5

Googleページランク表示ツール PagerankExplore

あわせて読みたい

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。