Ignore:
Timestamp:
2013/02/15 21:45:14 (11 years ago)
Author:
pineray
Message:

#2136 dtb_deliv の処理を SC_Helper_Delivery クラスに集める.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/helper/SC_Helper_Delivery.php

    r22553 r22554  
    5555 
    5656        // お届け時間の取得 
    57         $col = 'deliv_time'; 
    58         $where = 'deliv_id = ? ORDER BY time_id'; 
    59         $table = 'dtb_delivtime'; 
    60         $arrDeliv['deliv_time'] = $objQuery->select($col, $table, $where, array($deliv_id)); 
     57        $arrDeliv['deliv_time'] = $this->getDelivTime($deliv_id); 
    6158 
    6259        // 配送料金の取得 
    63         $col = 'fee'; 
    64         $where = 'deliv_id = ? ORDER BY pref'; 
    65         $table = 'dtb_delivfee'; 
    66         $arrDeliv['fee'] = $objQuery->select($col, $table, $where, array($deliv_id)); 
     60        $arrDeliv['fee'] = $this->getDelivFeeList($deliv_id); 
    6761 
    6862        // 支払方法 
    69         $col = 'payment_id'; 
    70         $where = 'deliv_id = ? ORDER BY rank'; 
    71         $table = 'dtb_payment_options'; 
    72         $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 
    73         $arrPaymentIds = array(); 
    74         foreach ($arrRet as $val) { 
    75             $arrPaymentIds[] = $val['payment_id']; 
    76         } 
    77         $arrDeliv['payment_ids'] = $arrPaymentIds; 
     63        $arrDeliv['payment_ids'] = $this->getPayments($deliv_id); 
    7864 
    7965        return $arrDeliv; 
     
    271257        return SC_Helper_DB_Ex::sfGetIDValueList('dtb_deliv', 'deliv_id', $type); 
    272258    } 
     259 
     260    /** 
     261     * 配送業者IDからお届け時間の配列を取得する. 
     262     * 
     263     * @param integer $deliv_id 配送業者ID 
     264     * @return array お届け時間の配列 
     265     */ 
     266    public static function getDelivTime($deliv_id) { 
     267        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     268        $objQuery->setOrder('time_id'); 
     269        $results = $objQuery->select('time_id, deliv_time', 
     270                                     'dtb_delivtime', 
     271                                     'deliv_id = ?', array($deliv_id)); 
     272        $arrDelivTime = array(); 
     273        foreach ($results as $val) { 
     274            $arrDelivTime[$val['time_id']] = $val['deliv_time']; 
     275        } 
     276        return $arrDelivTime; 
     277    } 
     278 
     279    /** 
     280     * 配送業者ID から, 有効な支払方法IDを取得する. 
     281     * 
     282     * @param integer $deliv_id 配送業者ID 
     283     * @return array 有効な支払方法IDの配列 
     284     */ 
     285    public static function getPayments($deliv_id) { 
     286        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     287        $objQuery->setOrder('rank'); 
     288        return $objQuery->getCol('payment_id', 'dtb_payment_options', 
     289                                 'deliv_id = ?', 
     290                                 array($deliv_id), MDB2_FETCHMODE_ORDERED); 
     291    } 
     292 
     293    /** 
     294     * 都道府県から配送料金を取得する. 
     295     * 
     296     * @param integer|array $pref_id 都道府県ID 又は都道府県IDの配列 
     297     * @param integer $deliv_id 配送業者ID 
     298     * @return string 指定の都道府県, 配送業者の配送料金 
     299     */ 
     300    public static function getDelivFee($pref_id, $deliv_id = 0) { 
     301        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     302        if (!is_array($pref_id)) { 
     303            $pref_id = array($pref_id); 
     304        } 
     305        $sql = <<< __EOS__ 
     306            SELECT T1.fee AS fee 
     307            FROM dtb_delivfee T1 
     308                JOIN dtb_deliv T2 
     309                    ON T1.deliv_id = T2.deliv_id 
     310            WHERE T1.pref = ? 
     311                AND T1.deliv_id = ? 
     312                AND T2.del_flg = 0 
     313__EOS__; 
     314        $result = 0; 
     315        foreach ($pref_id as $pref) { 
     316            $result += $objQuery->getOne($sql, array($pref, $deliv_id)); 
     317        } 
     318        return $result; 
     319    } 
     320 
     321    /** 
     322     * 配送業者ID から, 配送料金の一覧を取得する. 
     323     * 
     324     * @param integer $deliv_id 配送業者ID 
     325     * @return array 配送料金の配列 
     326     */ 
     327    public static function getDelivFeeList($deliv_id) { 
     328        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     329        $objQuery->setOrder('pref'); 
     330        $col = 'fee'; 
     331        $where = 'deliv_id = ?'; 
     332        $table = 'dtb_delivfee'; 
     333        return $objQuery->getCol($col, $table, $where, array($deliv_id), 
     334                                 MDB2_FETCHMODE_ORDERED); 
     335    } 
    273336} 
Note: See TracChangeset for help on using the changeset viewer.