バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > dtb_orderテーブルにポイント割引金額を登録したい。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seike
投稿日時: 2012/10/15 12:35
対応状況: −−−
常連
登録日: 2012/7/19
居住地:
投稿: 46
dtb_orderテーブルにポイント割引金額を登録したい。
いつも参考にさせていただいています。

EC-Cubeのポイント値引きは1ポイント=1円で固定ですが、
顧客のポイント保有高により1ポイントあたりの値引き額を
2円、3円と増やすような仕組みにしようとしています。

dtb_order と dtb_order_tempテーブルに point_discount というフィールドを
追加したのですが、受注情報を登録するのは
どこのプログラムを修正すればいいのか、教えていただけないでしょうか。


とりあえず、下記の2カ所を修正したら、dtb_order テーブルに登録することはできました。

? data/class/SC_CartSession.phpの calculate の引数に $results['point_discount'] を追加。

? data/class/pages/shopping/LC_Page_Shopping_Confirm.php の
$arrCalcResults = $objCartSess->calculate の引数に $arrOrderTemp['point_discount'] を追加。

しかし、dtb_order_temp テーブルには登録できていないようです。

その他に、修正しなければいけないところはあるのでしょうか。

----------------
-----------------------------------------------
[EC-CUBE]:2.12.2
[OS]:Debian Linux
[PHP] PHP 5.3.3
[データベース] MySQL 5.1.49
[サーバ] 自前
-----------------------------------------------
ゲスト
投稿日時: 2012/10/16 17:17
対応状況: −−−
Re: dtb_orderテーブルにポイント割引金額を登録したい。
引用:
? data/class/pages/shopping/LC_Page_Shopping_Confirm.php の
$arrCalcResults = $objCartSess->calculate の引数に $arrOrderTemp['point_discount'] を追加。


$this->arrFormの['point_discount']に、しかるべき値が入っていて、

function saveOderTemp(..., $params, ...){}

内の foreach で、$sqlval[$key]:$sqlval['point_discount'](?)
に、しかるべき値が入っていれば、ご希望のデータ格納になると思うのですが、

どこかで、値の引き継ぎが、途絶えているのかもしれません。。。

http://www.kudzilla.com/~hic/eccube-dev/image/saveOrderTemp.png
PWD/ID:hic/Ringo

ゲスト
投稿日時: 2012/10/17 12:32
対応状況: −−−
Re: dtb_orderテーブルにポイント割引金額を登録したい。
参考になるかどうか、、、
    function calculate($productTypeId, &$objCustomer, $use_point = 0,
        $deliv_pref = '', $charge = 0, $discount = 0, $deliv_id = 0
    ) {

        $results = array();
        $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 $arrItem) {
                $results['deliv_fee'] += $arrItem['productsClass']['deliv_fee'] * $arrItem['quantity'];
            }
        }

        // 配送業者の送料を加算
        if (OPTION_DELIV_FEE == 1
            && !SC_Utils_Ex::isBlank($deliv_pref)
            && !SC_Utils_Ex::isBlank($deliv_id)) {
            $results['deliv_fee'] += $this->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'];
                }
            }
&#160; &#160; &#160; &#160; &#160; &#160; if ($results['add_point'] < 0) {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $results['add_point'] = 0;
&#160; &#160; &#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160;&#160;
&#160; &#160; &#160; &#160; // hideki-s
&#160; &#160; &#160; &#160; $results['point_discount'] = 1234;
&#160; &#160; &#160; &#160;&#160;
&#160; &#160; &#160; &#160; return $results;
&#160; &#160; }

と、いう様に、return前に$results['point_discount'] = 1234;
と、試しに、固定値を入れてみたところ、
「dtb_order と dtb_order_tempテーブルのpoint_discount」
に、1234が格納されました。。。
seike
投稿日時: 2012/10/18 16:21
対応状況: −−−
常連
登録日: 2012/7/19
居住地:
投稿: 46
Re: dtb_orderテーブルにポイント割引金額を登録したい。
Ringo さん、教えていただいてありがとうございます。
早速、試してみます。
結果はご報告します。
seike
投稿日時: 2012/10/19 7:58
対応状況: −−−
常連
登録日: 2012/7/19
居住地:
投稿: 46
Re: dtb_orderテーブルにポイント割引金額を登録したい。
試してみました。
Ringoさんの言われる通り、

dtb_order と dtb_order_temp テーブルにpoint_discountカラムを追加た後、
data/class/SC_CartSession.php の function calculate に
results['point_discount']; を追加してやるだけで
dtb_order と dtb_order_temp テーブルに登録されるのですねぇ。

後は、「ご入力内容のご確認」画面のテンプレート(confirm.tpl)の「値引き(ポイントご使用時)」に
<!--{$arrForm.point_discount|number_format|default:0}--> を指定するだけでした。

マイページの「購入履歴詳細」画面のテンプレート(history.tpl)にも「ポイント値引き」に
<!--{$tpl_arrOrderData.point_discount|number_format}--> を指定すれば
それぞれ、期待した通り、表示されました。

テーブルにカラムを追加して、calculate に results['point_discount'] を
追加するだけでした。

SC_Helper_Purchase.php の中で存在するカラムを全て処理してくれるんですねぇ。

助かりました。
暗闇の中で手探り状態だったのが、懐中電灯が手に入って
少し先が見えるようになってきたような気持ちです。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1291
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.