すごくやっつけでデバッグ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