ダウンロード商品販売機能を付けるぞ(5)

>【1】以下の2ファイルはナイトビルド版を上書き
>data/class/SC_CartSession.php
>data/class/helper/SC_Helper_DB.php

この変更点を調べてみた。

上書きしたSC_Helper_DB.php(384〜393行のあたり)

foreach ($arrQuantityInfo_by_product as $QuantityInfo) {
if($QuantityInfo[‘sale_unlimited’] != ‘1’ && $QuantityInfo[‘sale_limit’] != ” && $QuantityInfo[‘sale_limit’] < $QuantityInfo['quantity']) {
// カート内商品数を制限に合わせる
$objPage->tpl_error = “※「” . $arrData[‘name’] . “」は個数「{$QuantityInfo[‘sale_limit’]}」以下に販売制限しております。一度にこれ以上の購入はできません。\n”;
foreach (array_keys($objPage->arrProductsClass) as $key) {
$ProductsClass =& $objPage->arrProductsClass[$key];
$ProductsClass[‘error’] = true;
}
}
}

追加されていた。
個数制限の時は このメッセージを入れますね。
Smarty側でif文を組めば、何とかなりそうですけどね(;^_^A

428〜429行目のあたり

// 受注_Tempテーブルの名称列を更新
$this->sfUpdateOrderNameCol($uniqid, true);

519行目辺り
sfGetCustomerPoint($order_id, $use_point, $add_point)

if (USE_POINT !== false) {
$arrRet = $objQuery->select(“point”, “dtb_customer”, “customer_id = ?”, array($customer_id));
$point = $arrRet[0][‘point’];
$total_point = $arrRet[0][‘point’] – $use_point + $add_point;
} else {
$total_point = 0;
$point = 0;
}

USE_POINT での処理を行ってる

663行目あたり 新しい関数が出現

function sfGetCat($category_id){
$objQuery = new SC_Query();

// カテゴリーを取得する
$arrVal = array($category_id);
$res = $objQuery->select(‘category_id AS id, category_name AS name’, ‘dtb_category’, ‘category_id = ?’, $arrVal);

return $res[0];
}

sfGetLevelCatList()は、結構変わっていた
階層構造のテーブルから子ID配列を取得するsfCategory_Count($objQuery)は結構変わっていた

1440行目あたりから 送料計算の関数

function sfGetDelivFee($arrData) {
$pref = $arrData[‘deliv_pref’];
$payment_id = isset($arrData[‘payment_id’]) ? $arrData[‘payment_id’] : “”;

$objQuery = new SC_Query();

$deliv_id = “”;

// 支払い方法が指定されている場合は、対応した配送業者を取得する
if($payment_id != “”) {
$where = “del_flg = 0 AND payment_id = ?”;
$arrRet = $objQuery->select(“deliv_id”, “dtb_payment”, $where, array($payment_id));
$deliv_id = $arrRet[0][‘deliv_id’];
// 支払い方法が指定されていない場合は、先頭の配送業者を取得する
} else {
$where = “del_flg = 0”;
$objQuery->setOrder(“rank DESC”);
$objQuery->setLimitOffset(1);
$arrRet = $objQuery->select(“deliv_id”, “dtb_deliv”, $where);
$deliv_id = $arrRet[0][‘deliv_id’];
}

// 配送業者から配送料を取得
if($deliv_id != “”) {

// 都道府県が指定されていない場合は、東京都の番号を指定しておく
if($pref == “”) {
$pref = 13;
}

$objQuery = new SC_Query();
$where = “deliv_id = ? AND pref = ?”;
$arrRet= $objQuery->select(“fee”, “dtb_delivfee”, $where, array($deliv_id, $pref));
}
return $arrRet[0][‘fee’];
}

1600行目より ほとんど新規で書かれたっぽい。

次にSC_CartSession.phpをしらべてみた。
全商品の合計送料するgetAllProductsDelivFee()は省かれていた。
187行目あたりから

// 全商品の合計ポイント
function getAllProductsPoint() {
// ポイント合計
$total = 0;
//——————if (USE_POINT !== false) { が追加
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
$price = $_SESSION[$this->key][$i][‘price’];
$quantity = $_SESSION[$this->key][$i][‘quantity’];

if (!isset($_SESSION[$this->key][$i][‘point_rate’])) {
$_SESSION[$this->key][$i][‘point_rate’] = “”;
}
$point_rate = $_SESSION[$this->key][$i][‘point_rate’];

if (!isset($_SESSION[$this->key][$i][‘id’][0])) {
$_SESSION[$this->key][$i][‘id’][0] = “”;
}
$id = $_SESSION[$this->key][$i][‘id’][0];
$point = SC_Utils_Ex::sfPrePoint($price, $point_rate, POINT_RULE, $id);
$total+= ($point * $quantity);
//——————} が追加
}
return $total;
}

USE_POINTの部分が追加されていた。

目が痛いのだけど 送料をカスタマイズするための良い勉強になった(;^_^A

コメント

タイトルとURLをコピーしました