目次

都道府県・重量別送料

想定ケース

地域 2kg以内 5kg以内 5kgを超える
東京都内 ¥500 ¥600 ¥700
北海道・沖縄県 ¥1,000 ¥1,200 ¥1,400
上記以外 ¥700 ¥800 ¥900

構成情報

パラメータ

ファイル

data/class_extends/helper_extends/SC_Helper_DB_Ex.php

class SC_Helper_DB_Ex extends SC_Helper_DB {
 
    function lfCalcAllProductsDelivFee(&$arrData, &$objCartSess) {
        // 商品送料に入力された金額を重量(g)とみなして取得
        $weight = parent::lfCalcAllProductsDelivFee($arrData, $objCartSess);
 
        // 都道府県と重量に応じた送料を返す
        switch ($arrData['deliv_pref']) {
            case 13: // 東京都
                if ($weight <= 2000) return 500;
                if ($weight <= 5000) return 600;
                return 700;
            case 1:  // 北海道
            case 47: // 沖縄県
                if ($weight <= 2000) return 1000;
                if ($weight <= 5000) return 1200;
                return 1400;
            default: // 他
                if ($weight <= 2000) return 700;
                if ($weight <= 5000) return 800;
                return 900;
        }
    }
}

商品規格で管理する案

data/class_extends/helper_extends/SC_Helper_DB_Ex.php

class SC_Helper_DB_Ex extends SC_Helper_DB {
 
    function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $arrInfo, $objCustomer = "") {
 
        $arrData['crg_pt'] = 0; // 送料点数合計
        foreach ($objCartSess->getCartList() as $arrCart) {
 
            // 送料点数取得
            $objQuery = new SC_Query();
            $col = "crg_pt";
            $table = "dtb_products_class";
            $where = "product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?";
            list($product_id, $classcategory_id1, $classcategory_id2) = $arrCart['id'];
            if ($classcategory_id1 == "") $classcategory_id1 = '0';
            if ($classcategory_id2 == "") $classcategory_id2 = '0';
            $crg_pt = $objQuery->get($table, $col, $where, array($product_id, $classcategory_id1, $classcategory_id2));
 
            $arrData['crg_pt'] += $crg_pt * $arrCart['quantity'];
        }
 
        return SC_Helper_DB::sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo, $objCustomer);
    }
 
    function sfGetDelivFee($arrData) {
        switch ($arrData['deliv_pref']) {
            case 13: // 東京都
                if ($arrData['crg_pt'] <= 100) return 500;
                if ($arrData['crg_pt'] <= 200) return 600;
                return 700;
            case 1:  // 北海道
            case 47: // 沖縄県
                if ($arrData['crg_pt'] <= 100) return 1000;
                if ($arrData['crg_pt'] <= 200) return 1200;
                return 1400;
            default: // 他
                if ($arrData['crg_pt'] <= 100) return 700;
                if ($arrData['crg_pt'] <= 200) return 800;
                return 900;
        }
    }
}

ここまで HTML コメントアウト -->