バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > フロント機能 > 手数料の計算をポイント割引後にしたい

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
sumida
投稿日時: 2014/1/24 18:37
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 手数料の計算をポイント割引後にしたい
案2について強引にやってみました。参考までに。

data/class/pages/shopping/LC_Page_Shopping_payment.php

                $this->arrErr = $this->lfCheckError($objFormParam, $this->arrPrices['subtotal'], $this->tpl_user_point);
// added
                if (empty($this->arrErr)) {
                    if (USE_POINT === false) {
                        $use_point = 0;
                    } else {
                        if ($objFormParam->getValue('point_check') == '1') {
                            $use_point = $objFormParam->getValue('use_point');
                        } else {
                            $use_point = 0;
                        }
                    }
                    // カート集計を元に計算(代引手数料なし)
                    $arrCalcResults = $objCartSess->calculate($this->cartKey, $objCustomer,
                                                  $use_point,
                                                  $objPurchase->getShippingPref($this->is_multiple),
                                                  0,
                                                  $arrOrderTemp['discount'],
                                                  $objFormParam->getValue('deliv_id'),
                                                  $arrOrderTemp['order_pref'],  // 税金計算の為に追加 注文者基準
                                                  $arrOrderTemp['order_country_id'] // 税金計算の為に追加 注文者基準
                                                  );
                    $payment_id = $objFormParam->getValue('payment_id');
                    // 現在の支払方法の名称
                    foreach ($this->arrPayment as $payment) {
                        if ($payment['payment_id'] == $payment_id) {
                            $payment_method = $payment['payment_method'];
                            break;
                        }
                    }
                    // 支払金額で支払方法を再設定
                    $objPayment = new SC_Helper_Payment_Ex();
                    $arrSelectedDeliv = $this->getSelectedDeliv($objCartSess, $deliv_id, $arrCalcResults['payment_total']);
                    $payments_total = $arrSelectedDeliv['arrPayment'];
                    $payment_method_found = false;
                    foreach ($payments_total as $payment) {
                        // 同じ支払い方法
                        if ($payment['payment_method'] == $payment_method) {
                            $payment_method_found = true;
                            $objFormParam->setValue('payment_id', $payment['payment_id']);
                            $this->arrPayment = $payments_total;
                            break;
                        }
                    }
                    if ($payment_method_found == false) {
                        $this->arrErr['payment_id'] = '※ 選択した支払い方法は、ご利用限度額内にないため、ご利用できません。<br>';
                    }
                }
// added


            default:
                // FIXME 前のページから戻ってきた場合は別パラメーター(mode)で処理分岐する必要があるのかもしれない
                $this->setFormParams($objFormParam, $arrOrderTemp, false, $this->arrShipping);

                if (!$this->is_single_deliv) {
                    $deliv_id = $objFormParam->getValue('deliv_id');
                } else {
                    $deliv_id = $this->arrDeliv[0]['deliv_id'];
                }

                if (!SC_Utils_Ex::isBlank($deliv_id)) {
                    $objFormParam->setValue('deliv_id', $deliv_id);
                    $arrSelectedDeliv = $this->getSelectedDeliv($objCartSess, $deliv_id);
                    $this->arrPayment = $arrSelectedDeliv['arrPayment'];
                    $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime'];
                    $this->img_show = $arrSelectedDeliv['img_show'];
// added
                    $payment_id = $objFormParam->getValue('payment_id');
                    if ($payment_id != '') {
                        // 確認画面から戻った場合、payment_idを戻すため
                        $objPayment = new SC_Helper_Payment_Ex();
                        $payments_all = $objPayment->getList();
                        foreach ($payments_all as $payment) {
                            if ($payment['payment_id'] == $payment_id) {
                                $payment_method = $payment['payment_method'];
                                break;
                            }
                        }
                        foreach ($this->arrPayment as $payment) {
                            if ($payment['payment_method'] == $payment_method) {
                                $objFormParam->setValue('payment_id', $payment['payment_id']);
                                break;
                            }
                        }
                    }
// added
                }
                break;


/* changed
    public function getSelectedDeliv(&$objCartSess, $deliv_id)
changed */
    public function getSelectedDeliv(&$objCartSess, $deliv_id, $total=0)
// changed
    {
        $arrResults = array();
        $arrResults['arrDelivTime'] = SC_Helper_Delivery_Ex::getDelivTime($deliv_id);
/* deleted
        $total = $objCartSess->getAllProductsTotal($objCartSess->getKey());
deleted */
        $payments_deliv = SC_Helper_Delivery_Ex::getPayments($deliv_id);
        $objPayment = new SC_Helper_Payment_Ex();
// added
    if ($total == 0) {
        $payments_total = $objPayment->getList();
        $arrPayment = array();
        // ここで、同じ名称は、一つにする
        foreach ($payments_total as $payment) {
            if (in_array($payment['payment_id'], $payments_deliv)) {
                $payment_found = false;
                foreach ($arrPayment as $payment_exist) {
                    if ($payment_exist['payment_method'] == $payment['payment_method']) {
                        $payment_found = true;
                        break;
                    }
                }
                if ($payment_found == false) {
                    $arrPayment[] = $payment;
                }
            }
        }
        $arrResults['arrPayment'] = $arrPayment;
    } else {
// added
        $payments_total = $objPayment->getByPrice($total);
        $arrPayment = array();
        foreach ($payments_total as $payment) {
            if (in_array($payment['payment_id'], $payments_deliv)) {
                $arrPayment[] = $payment;
            }
        }
        $arrResults['arrPayment'] = $arrPayment;
// added
    }
// added
        $arrResults['img_show'] = $this->hasPaymentImage($arrResults['arrPayment']);

        return $arrResults;
    }
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   手数料の計算をポイント割引後にしたい HORNET 2010/1/6 9:57
     Re: 手数料の計算をポイント割引後にしたい AMUAMU 2010/1/6 10:38
     Re: 手数料の計算をポイント割引後にしたい seasoft 2010/1/6 11:38
       Re: 手数料の計算をポイント割引後にしたい HORNET 2010/1/6 12:16
         Re: 手数料の計算をポイント割引後にしたい sumida 2014/1/20 23:05
           Re: 手数料の計算をポイント割引後にしたい sumida 2014/1/21 17:09
             Re: 手数料の計算をポイント割引後にしたい sumida 2014/1/22 8:03
               Re: 手数料の計算をポイント割引後にしたい sumida 2014/1/22 22:47
                 Re: 手数料の計算をポイント割引後にしたい sumida 2014/1/23 22:26
                 » Re: 手数料の計算をポイント割引後にしたい sumida 2014/1/24 18:37

 



ログイン


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

統計情報

総メンバー数は88,954名です
総投稿数は110,019件です

投稿数ランキング

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