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 19993)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php	(revision 20069)
@@ -341,18 +341,16 @@
      *
      * @param integer $total 購入金額
-     * @param array $productClassIds 購入する商品規格IDの配列
+     * @param integer $deliv_id 配送業者ID
      * @return array 購入金額に応じた支払方法の配列
      */
-    function getPayment($total, $productClassIds) {
-        // 有効な支払方法を取得
-        $objProduct = new SC_Product();
-        $paymentIds = $objProduct->getEnablePaymentIds($productClassIds);
-
+    function getPaymentsByPrice($total, $deliv_id) {
+
+        $arrPaymentIds = $this->getPayments($deliv_id);
         $objQuery =& SC_Query::getSingletonInstance();
 
         // 削除されていない支払方法を取得
-        $where = 'del_flg = 0 AND payment_id IN (' . implode(', ', array_pad(array(), count($paymentIds), '?')) . ')';
+        $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", "dtb_payment", $where, $paymentIds);
+        $payments = $objQuery->select("payment_id, payment_method, rule, upper_rule, note, payment_image", "dtb_payment", $where, $arrPaymentIds);
 
         foreach ($payments as $data) {
@@ -485,12 +483,28 @@
 
     /**
-     * 商品種別ID から配送業者ID を取得する.
+     * 商品種別ID から配送業者を取得する.
      */
     function getDeliv($productTypeId) {
         $objQuery =& SC_Query::getSingletonInstance();
-        $result = $objQuery->get("deliv_id", "dtb_deliv", "product_type_id = ?",
+        return $objQuery->select("*", "dtb_deliv", "product_type_id = ?",
                                  array($productTypeId));
-        // XXX ダウンロード商品の場合の dtb_shipping の扱い
-        return is_null($result) ? 0 : $result;
+    }
+
+    /**
+     * 配送業者ID から, 有効な支払方法を取得する.
+     *
+     * @param integer $deliv_id 配送業者ID
+     * @return array 有効な支払方法IDの配列
+     */
+    function getPayments($deliv_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $from = <<< __EOS__
+                      dtb_deliv T1
+            LEFT JOIN dtb_payment_options T2
+                   ON T1.deliv_id = T2.deliv_id
+__EOS__;
+        $objQuery->setOrder('T2.rank');
+        return $objQuery->getCol('payment_id', $from, 'T1.deliv_id = ?',
+                                 array($deliv_id), MDB2_FETCHMODE_ORDERED);
     }
 
Index: branches/version-2_5-dev/data/class/SC_View.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_View.php	(revision 20032)
+++ branches/version-2_5-dev/data/class/SC_View.php	(revision 20069)
@@ -66,5 +66,5 @@
 
         // サイト情報を取得する
-        // XXX 要動作確認. 不要の可能性有り
+        // XXX LC_Page 配下で取得した方が良い
         if($siteinfo) {
             if(!defined('LOAD_SITEINFO')) {
Index: branches/version-2_5-dev/data/class/SC_Product.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_Product.php	(revision 20048)
+++ branches/version-2_5-dev/data/class/SC_Product.php	(revision 20069)
@@ -584,44 +584,4 @@
         // TODO エラーハンドリング
         return true;
-    }
-
-    /**
-     * 引数の商品規格IDで有効な支払方法IDの配列を取得する.
-     *
-     * @param array $productClassIds 商品規格IDの配列
-     * @return array 支払方法IDの配列
-     */
-    function getEnablePaymentIds($productClassIds) {
-        $size = count($productClassIds);
-        $objQuery =& SC_Query::getSingletonInstance();
-        $objQuery->groupby = 'GROUP BY payment_id HAVING COUNT(payment_id) = ?';
-        $paymentIds = $objQuery->getCol('payment_id', 'dtb_payment_options',
-                                        'product_class_id IN (' . implode(', ', array_pad(array(), $size, '?')) . ')',
-                                        array_merge($productClassIds, array($size)),
-                                        MDB2_FETCHMODE_ORDERED);
-        return $paymentIds;
-    }
-
-    /**
-     * 商品規格に支払方法を設定する.
-     *
-     * TODO 現在は DELETE/INSERT だが, UPDATE を検討する.
-     *
-     * @param integer $productClassId 商品規格ID
-     * @param array 設定する支払方法IDの配列
-     * @return void
-     */
-    function setPaymentOptions($productClassId, $paymentIds) {
-        $val['product_class_id'] = $productClassId;
-
-        $objQuery =& SC_Query::getSingletonInstance();
-        $objQuery->delete('dtb_payment_options', 'product_class_id = ?', array($productClassId));
-        $rank = 1;
-        foreach ($paymentIds as $paymentId) {
-            $val['payment_id'] = $paymentId;
-            $val['rank'] = $rank;
-            $objQuery->insert('dtb_payment_options', $val);
-            $rank++;
-        }
     }
 
Index: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	(revision 20041)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	(revision 20069)
@@ -137,6 +137,7 @@
         $total_inctax = $objCartSess->getAllProductsTotal($this->cartKey);
 
-        // 支払い方法の取得
-        $this->arrPayment = $objPurchase->getPayment($total_inctax, $objCartSess->getAllProductClassID($this->cartKey));
+        // FIXME 支払い方法の取得
+        $arrDeliv = $objPurchase->getDeliv($this->cartKey);
+        $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $arrDeliv[0]['deliv_id']);
 
         switch($this->getMode()) {
Index: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php	(revision 20041)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php	(revision 20069)
@@ -290,7 +290,7 @@
         }
 
-        $deliv_id = $objPurchase->getDeliv($productTypeId);
-        $order_val = array('deliv_id' => $deliv_id);
-        $shipping_val = array('deliv_id' => $deliv_id);
+        $arrDeliv = $objPurchase->getDeliv($productTypeId);
+        $order_val = array('deliv_id' => $arrDeliv[0]['deliv_id']);
+        $shipping_val = array('deliv_id' => $arrDeliv[0]['deliv_id']);
 
         /*
Index: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php	(revision 20044)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php	(revision 20069)
@@ -172,5 +172,6 @@
                 $objPurchase->copyFromCustomer($sqlval, $objCustomer, 'shipping');
                 // FIXME ダウンロード商品の場合は配送無し
-                $sqlval['deliv_id'] = $objPurchase->getDeliv($this->cartKey);
+                $arrDeliv = $objPurchase->getDeliv($this->cartKey);
+                $sqlval['deliv_id'] = $arrDeliv[0]['deliv_id'];
                 $objPurchase->saveShippingTemp($sqlval);
                 $objPurchase->saveOrderTemp($uniqid, $sqlval, $objCustomer);
@@ -193,5 +194,6 @@
         case 'customer_addr':
             $sqlval = array();
-            $sqlval['deliv_id'] = $objPurchase->getDeliv($this->cartKey);
+            $arrDeliv = $objPurchase->getDeliv($this->cartKey);
+            $sqlval['deliv_id'] = $arrDeliv[0]['deliv_id'];
             // 会員登録住所がチェックされている場合
             if ($_POST['deliv_check'] == '-1') {
Index: branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php	(revision 20041)
+++ branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php	(revision 20069)
@@ -56,4 +56,5 @@
         $this->arrPref = $masterData->getMasterData('mtb_pref');
         $this->arrProductType = $masterData->getMasterData("mtb_product_type");
+        $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
         $this->tpl_subtitle = '配送業者設定';
         $this->mode = $this->getMode();
@@ -134,4 +135,5 @@
                 $this->objFormParam->addParam("伝票No.確認URL", "confirm_url", STEXT_LEN, "n", array("URL_CHECK", "MAX_LENGTH_CHECK"), "http://");
                 $this->objFormParam->addParam("取扱商品種別", "product_type_id", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+                $this->objFormParam->addParam("取扱支払方法", "payment_ids", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
 
                 for($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) {
@@ -258,4 +260,16 @@
                 }
             }
+        }
+
+        // TODO 支払方法登録
+        $objQuery->delete('dtb_payment_options', 'deliv_id = ?', array($_POST['deliv_id']));
+        $sqlval = array();
+        $i = 1;
+        foreach ($arrRet['payment_ids'] as $val) {
+            $sqlval['deliv_id'] = $deliv_id;
+            $sqlval['payment_id'] = $val;
+            $sqlval['rank'] = $i;
+            $objQuery->insert('dtb_payment_options', $sqlval);
+            $i++;
         }
         $objQuery->commit();
@@ -288,4 +302,14 @@
         $arrRet = $objQuery->select($col, $table, $where, array($deliv_id));
         $this->objFormParam->setParamList($arrRet, 'fee');
+        // 支払方法
+        $col = 'payment_id';
+        $where = 'deliv_id = ? ORDER BY rank';
+        $table = 'dtb_payment_options';
+        $arrRet = $objQuery->select($col, $table, $where, array($deliv_id));
+        $arrPaymentIds = array();
+        foreach ($arrRet as $val) {
+            $arrPaymentIds[] = $val['payment_id'];
+        }
+        $this->objFormParam->setValue('payment_ids', $arrPaymentIds);
     }
 
Index: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php	(revision 20044)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php	(revision 20069)
@@ -74,5 +74,4 @@
         $this->arrProductType = $masterData->getMasterData("mtb_product_type");
         $this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList("dtb_maker", "maker_id", "name");
-        $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
         $this->tpl_nonclass = true;
     }
@@ -143,5 +142,4 @@
                 $productStatus= $objProduct->getProductStatus(array($_POST['product_id']));
                 $this->arrForm['product_status'] = $productStatus[$_POST['product_id']];
-                $this->arrForm['payment_ids'] = $objProduct->getEnablePaymentIds(array($this->arrForm['product_class_id']));
 
                 // DBデータから画像ファイル名の読込
@@ -684,9 +682,4 @@
             }
 
-            // 支払方法チェック
-            if (empty($array['payment_ids'])) {
-                $objErr->arrErr['payment_ids'] = "※ 支払方法は、いずれかを選択してください。<br />";
-            }
-
             //ダウンロード商品チェック
             if($array['product_type_id'] == PRODUCT_TYPE_DOWNLOAD) {
@@ -932,7 +925,4 @@
 
         }
-
-        $objProduct = new SC_Product();
-        $objProduct->setPaymentOptions($sqlval['product_class_id'], $arrList['payment_ids']);
     }
 
Index: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php	(revision 20041)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php	(revision 20069)
@@ -56,5 +56,4 @@
         $masterData = new SC_DB_MasterData_Ex();
         $this->arrProductType = $masterData->getMasterData("mtb_product_type");
-        $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
     }
 
@@ -298,7 +297,4 @@
             }
 
-            // 支払方法登録
-            $objProduct = new SC_Product();
-            $objProduct->setPaymentOptions($pVal['product_class_id'], $arrList['payment_ids:'.$i]);
             $i++;
         }
@@ -373,9 +369,4 @@
                 }
 
-                // 支払方法チェック
-                if (empty($array['payment_ids:' . $no])) {
-                    $objErr->arrErr['payment_ids:' . $no] = "※ 支払方法は、いずれかを選択してください。<br />";
-                }
-
                 //ダウンロード商品チェック
                 if($array["product_type_id:".$no] == PRODUCT_TYPE_DOWNLOAD) {
@@ -397,5 +388,4 @@
             if(count($objErr->arrErr) > 0) {
                 $objErr->arrErr["error:".$no] = $objErr->arrErr["product_type_id:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["payment_ids:".$no];
                 $objErr->arrErr["error:".$no] .= $objErr->arrErr["product_code:".$no];
                 $objErr->arrErr["error:".$no] .= $objErr->arrErr["price01:".$no];
@@ -490,7 +480,4 @@
                     break;
 
-                    case 'product_class_id':
-                        $this->arrForm["payment_ids:" . ($i+1)] = $objProduct->getEnablePaymentIds(array($val));
-                        break;
                 default:
                 }
Index: branches/version-2_5-dev/data/Smarty/templates/admin/basis/delivery_input.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/basis/delivery_input.tpl	(revision 19965)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/basis/delivery_input.tpl	(revision 20069)
@@ -85,5 +85,17 @@
     <tr>
       <th>商品種別</th>
-      <td><span class="attention"><!--{$arrErr[$key]}--></span><!--{html_radios name=$key options=$arrProductType selected=$arrForm[$key].value}--></td>
+      <td><span class="attention"><!--{$arrErr[$key]}--></span><!--{html_radios name=$key options=$arrProductType selected=$arrForm[$key].value separator='&nbsp;&nbsp;'}--></td>
+    </tr>
+  </table>
+
+  <h2>取扱支払方法</h2>
+  <!--{assign var=key value="payment_ids"}-->
+  <table>
+    <tr>
+      <th>支払方法</th>
+      <td>
+        <span class="attention"><!--{$arrErr[$key]}--></span>
+        <!--{html_checkboxes name=$key options=$arrPayments selected=$arrForm[$key].value separator='&nbsp;&nbsp;'}-->
+      </td>
     </tr>
   </table>
Index: branches/version-2_5-dev/data/Smarty/templates/admin/products/product.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/products/product.tpl	(revision 19972)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/products/product.tpl	(revision 20069)
@@ -183,11 +183,4 @@
       </td>
     </tr>
-    <tr>
-      <th>支払方法<span class="attention"> *</span></th>
-       <td>
-         <span class="attention"><!--{$arrErr.payment_ids}--></span>
-         <!--{html_checkboxes name="payment_ids" options=$arrPayments selected=$arrForm.payment_ids separator='&nbsp;&nbsp;'}-->
-       </td>
-    </tr>
     <!--{/if}-->
 
Index: branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class_confirm.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class_confirm.tpl	(revision 19993)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class_confirm.tpl	(revision 20069)
@@ -25,11 +25,5 @@
 <form name="form1" id="form1" method="post" action="?" enctype="multipart/form-data">
 <!--{foreach key=key item=item from=$arrForm}-->
-  <!--{if '/payment_ids:/'|preg_match:$key}-->
-    <!--{foreach item=paymentsVal from=$item}-->
-      <input type="hidden" name="<!--{$key}-->[]" value="<!--{$paymentsVal|h}-->" />
-    <!--{/foreach}-->
-  <!--{else}-->
     <input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" />
-  <!--{/if}-->
 <!--{/foreach}-->
 
@@ -51,5 +45,4 @@
       <th><!--{$smarty.const.SALE_PRICE_TITLE}-->(円)</th>
       <th>商品種別</th>
-      <th>支払方法</th>
       <th>ダウンロードファイル名</th>
       <th>ダウンロード商品用ファイルアップロード</th>
@@ -84,10 +77,4 @@
       <!--{/foreach}-->
       </td>
-      <!--{assign var=key value="payment_ids:`$smarty.section.cnt.iteration`"}-->
-      <td>
-      <!--{foreach from=$arrForm[$key] item=payment_id}-->
-        <!--{$arrPayments[$payment_id]|h}-->&nbsp;
-      <!--{/foreach}-->
-      </td>
       <!--{assign var=key value="down_filename:`$smarty.section.cnt.iteration`"}-->
       <td class="right"><!--{$arrForm[$key]}--></td>
Index: branches/version-2_5-dev/data/Smarty/templates/admin/products/confirm.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/products/confirm.tpl	(revision 19983)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/products/confirm.tpl	(revision 20069)
@@ -24,5 +24,5 @@
 <form name="form1" id="form1" method="post" action="?" enctype="multipart/form-data">
   <!--{foreach key=key item=item from=$arrForm}-->
-    <!--{if $key == 'product_status' || $key == 'payment_ids'}-->
+    <!--{if $key == 'product_status'}-->
       <!--{foreach item=statusVal from=$item}-->
       <input type="hidden" name="<!--{$key}-->[]" value="<!--{$statusVal|h}-->" />
@@ -112,12 +112,4 @@
         <!--{$arrForm.stock|h}-->
       <!--{/if}-->
-      </td>
-    </tr>
-    <tr>
-      <th>支払方法</th>
-      <td>
-      <!--{foreach from=$arrForm.payment_ids item=payment_id}-->
-        <!--{$arrPayments[$payment_id]|h}-->&nbsp;
-      <!--{/foreach}-->
       </td>
     </tr>
Index: branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl	(revision 19993)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl	(revision 20069)
@@ -114,5 +114,4 @@
       <th><!--{$smarty.const.SALE_PRICE_TITLE}-->(円)<span class="attention">*</span></th>
       <th>商品種別<span class="attention">*</span></th>
-      <th><span class="attention">*</span> <input type="checkbox" name="allPaymentIds" id="allPaymentIds" onclick="fnAllCheck(this, 'input[name^=payment_ids]')" /><label for="allPaymentIds">支払方法</label></th>
       <th>ダウンロード<br>ファイル名<span class="red"><br>上限<!--{$smarty.const.STEXT_LEN}-->文字</span></th>
       <th>ダウンロード商品用<br>ファイル</th>
@@ -155,8 +154,4 @@
         <!--{html_radios name=$key options=$arrProductType selected=$arrForm[$key] separator='<br />'}-->
       </td>
-      <td class="class-payment center">
-        <!--{assign var=key value="payment_ids:`$smarty.section.cnt.iteration`"}-->
-        <!--{html_checkboxes name=$key options=$arrPayments selected=$arrForm[$key] separator='<br />'}-->
-      </td>
       <td class="center">
         <!--{assign var=key value="down_filename:`$smarty.section.cnt.iteration`"}-->
