バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 支払方法を使用した判別について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Shinnosuke
投稿日時: 2014/4/24 18:23
対応状況: −−−
半人前
登録日: 2012/1/6
居住地:
投稿: 15
支払方法を使用した判別について
ECCUBE 2.11.5


複数届け先を使用した際に、送料がわかれるように以下のURLを元に対応いたしました。


http://www.terastella.com/ec-cube2-11-1%E5%95%86%E5%93%81%E5%88%A5%E9%80%81%E6%96%99%E3%81%AE%E8%A8%88%E7%AE%97%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%80%82.html

ただ、そうすると手数料が1倍でしか計算されないため、
困っております。

/data/class/SC_Cartsession.phpの$Chargreを届先分加算し、
コンビニや、NP後払いの際は、SC_Cartsession.phpの$Chargreを1件のみの計算にしたいです。

現状は、 以下のように対応しております。

$charge = $charge * count($_SESSION['shipping']);
$results['charge'] = $charge;

ただ、こうすると手数料が件数分の追加になってしまうため、
コンビニや、NP後払いも件数分追加されてしまいます・・・

おそらくpayment_idを使用して、判別して対応するのかと思っているのですが、
うまく、Payment_idを取得できていません・・・
いいアイディアがございましたら、
ご教示いただけませんでしょうか?

よろしくお願いいたします。
yuh
投稿日時: 2014/4/24 20:54
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 支払方法を使用した判別について
すごくやっつけでデバッグ0で作ったもので申し訳ないですが、
SC_Helper_Payment.phpのgetByPriceで特定のpayment_idであれば手数料を届け先分加算でするやつ作ってみました。
一応確認画面ではそれっぽくなってますが、受注管理とかは知りません。

    public function getByPrice($total)
    {
        // 削除されていない支払方法を取得
        $payments = $this->getList();
		
        $arrPayment = array();
        foreach ($payments as $data) {
			if(count($_SESSION['shipping']) > 0 AND $data['payment_id'] ==4 ){
				$data['charge'] =  count($_SESSION['shipping']) * $data['charge'];
			}
            // 下限と上限が設定されている
            if (strlen($data['rule_max']) != 0 && strlen($data['upper_rule']) != 0) {
                if ($data['rule_max'] <= $total && $data['upper_rule'] >= $total) {
                    $arrPayment[] = $data;
                }
            }
            // 下限のみ設定されている
            elseif (strlen($data['rule_max']) != 0) {
                if ($data['rule_max'] <= $total) {
                    $arrPayment[] = $data;
                }
            }
            // 上限のみ設定されている
            elseif (strlen($data['upper_rule']) != 0) {
                if ($data['upper_rule'] >= $total) {
                    $arrPayment[] = $data;
                }
            }
            // いずれも設定なし
            else {
                $arrPayment[] = $data;
            }
        }

        return $arrPayment;
    }

っと書いて2.11系だと今気がついて役に立たないことに気がつきました。
2.11.5の場合だと
SC_Helper_Purchase.phpのgetPaymentsByPriceに

    function getPaymentsByPrice($total, $deliv_id) {

        $arrPaymentIds = $this->getPayments($deliv_id);
        if (SC_Utils_Ex::isBlank($arrPaymentIds)) {
            return array();
        }

        $objQuery =& SC_Query_Ex::getSingletonInstance();

        // 削除されていない支払方法を取得
        $where = 'del_flg = 0 AND payment_id IN (' . implode(', ', array_pad(array(), count($arrPaymentIds), '?')) . ')';
        $objQuery->setOrder("rank DESC");
        $payments = $objQuery->select("payment_id, payment_method, rule, upper_rule, note, payment_image, charge", "dtb_payment", $where, $arrPaymentIds);
        foreach ($payments as $data) {
			if(count($_SESSION['shipping']) > 0 AND $data['payment_id'] ==4 ){
				$data['charge'] =  count($_SESSION['shipping']) * $data['charge'];
			}
            // 下限と上限が設定されている
            if (strlen($data['rule']) != 0 && strlen($data['upper_rule']) != 0) {
                if ($data['rule'] <= $total && $data['upper_rule'] >= $total) {
                    $arrPayment[] = $data;
                }
            }
            // 下限のみ設定されている
            elseif (strlen($data['rule']) != 0) {
                if($data['rule'] <= $total) {
                    $arrPayment[] = $data;
                }
            }
            // 上限のみ設定されている
            elseif (strlen($data['upper_rule']) != 0) {
                if($data['upper_rule'] >= $total) {
                    $arrPayment[] = $data;
                }
            }
            // いずれも設定なし
            else {
                $arrPayment[] = $data;
            }
          }
        return $arrPayment;
    }


このように追記すれば実装できるかもです。
実行すらしてませんがorz
Shinnosuke
投稿日時: 2014/4/24 22:18
対応状況: −−−
半人前
登録日: 2012/1/6
居住地:
投稿: 15
Re: 支払方法を使用した判別について
yuhさん

ありがとうございます。
こちらでも正しく動作しているように見えます。

検証作業をしてみて、再度ご報告差し上げます。
Shinnosuke
投稿日時: 2014/4/26 11:11
対応状況: −−−
半人前
登録日: 2012/1/6
居住地:
投稿: 15
Re: 支払方法を使用した判別について
yuh様

ありがとうございます!
こちら動作の確認がとれました!!!

本当にたすかりました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.