Index: branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php	(revision 19909)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php	(revision 19928)
@@ -1477,25 +1477,35 @@
 
     /**
-     * 都道府県、支払い方法から配送料金を取得する.
-     *
-     * @param array $arrData 各種情報
-     * @return string 指定の都道府県, 支払い方法の配送料金
+     * 都道府県から配送料金を取得する.
+     *
+     * @param integer|array $pref_id 都道府県ID 又は都道府県IDの配列
+     * @return string 指定の都道府県, 商品種別の配送料金
      */
     function sfGetDelivFee($pref_id, $product_type_id) {
         $objQuery =& SC_Query::getSingletonInstance();
 
-        // 配送業者から配送料を取得
-        if($deliv_id != "") {
-
-            // 都道府県が指定されていない場合は、東京都の番号を指定しておく
-            if($pref_id == "") {
-                $pref_id = 13;
-            }
-
-            $objQuery =& SC_Query::getSingletonInstance();
-            $where = "product_type_id = ? AND pref = ?";
-            $arrRet= $objQuery->select("fee", "dtb_delivfee", $where, array($product_type_id, $pref_id));
-        }
-        return $arrRet[0]['fee'];
+        /*
+         * FIXME 都道府県が指定されていない場合は、東京都の番号を指定しておく
+         * http://svn.ec-cube.net/open_trac/ticket/410
+         */
+        if($pref_id == "") {
+            $pref_id = 13;
+        }
+        if (!is_array($pref_id)) {
+            $pref_id = array($pref_id);
+        }
+        $sql = <<< __EOS__
+            SELECT SUM(T1.fee) AS fee
+              FROM dtb_delivfee T1
+              JOIN dtb_deliv T2
+                ON T1.deliv_id = T2.deliv_id
+             WHERE T1.pref = ? AND T2.product_type_id = ?
+__EOS__;
+
+        $result = 0;
+        foreach ($pref_id as $pref) {
+            $result += $objQuery->getOne($sql, array($pref, $product_type_id));
+        }
+        return $result;
     }
 
Index: branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php	(revision 19927)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php	(revision 19928)
@@ -225,4 +225,15 @@
 
     /**
+     * 配送先都道府県の配列を返す.
+     */
+    function getShippingPref() {
+        $results = array();
+        foreach ($_SESSION['shipping'] as $val) {
+            $results[] = $val['shipping_pref'];
+        }
+        return $results;
+    }
+
+    /**
      * 複数配送指定の購入かどうか.
      *
@@ -552,14 +563,4 @@
         $objQuery =& SC_Query::getSingletonInstance();
 
-        // 別のお届け先を指定が無ければ, お届け先に登録住所をコピー
-        /* FIXME
-        if ($orderParams['deliv_check'] == "-1") {
-            $keys = array('name01', 'name02', 'kana01', 'kana02', 'pref', 'zip01',
-                          'zip02', 'addr01', 'addr02', 'tel01', 'tel02', 'tel03');
-            foreach ($keys as $key) {
-                $orderParams['deliv_' . $key] = $orderParams['order_' . $key];
-            }
-        }
-        */
         // 不要な変数を unset
         $unsets = array('mailmaga_flg', 'deliv_check', 'point_check', 'password',
