Index: branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php	(revision 21481)
+++ branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php	(revision 21502)
@@ -1049,30 +1049,12 @@
                     $arrProductsClass = $objQuery->select($col, $table, $where, array($arrList['copy_product_id']));
 
-                    // 複製元商品の規格組み合わせデータ登録
-                    // 登録した組み合わせIDを取得
-                    $arrRetCombinationId = $this->lfRegistClassCombination($arrProductsClass);
-
                     // 規格データ登録
                     $objQuery =& SC_Query_Ex::getSingletonInstance();
                     foreach ($arrProductsClass as $arrData) {
-                        $sqlval = array();
+                        $sqlval = $arrData;
                         $sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
                         $sqlval['product_id'] = $product_id;
                         $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
-                        $sqlval['class_combination_id'] = $arrRetCombinationId[$arrData['class_combination_id']];
-                        $sqlval['product_type_id'] = $arrData['product_type_id'];
-                        $sqlval['product_code'] = $arrData['product_code'];
-                        $sqlval['stock'] = $arrData['stock'];
-                        $sqlval['stock_unlimited'] = $arrData['stock_unlimited'];
-                        $sqlval['sale_limit'] = $arrData['sale_limit'];
-                        $sqlval['price01'] = $arrData['price01'];
-                        $sqlval['price02'] = $arrData['price02'];
-                        $sqlval['deliv_fee'] = $arrData['deliv_fee'];
-                        $sqlval['point_rate'] = $arrData['point_rate'];
-                        $sqlval['creator_id'] = $arrData['creator_id'];
                         $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
-                        $sqlval['down_filename'] = $arrData['down_filename'];
-                        $sqlval['down_realfilename'] = $arrData['down_realfilename'];
-                        $sqlval['del_flg'] = $arrData['del_flg'];
                         $objQuery->insert($table, $sqlval);
                     }
@@ -1267,116 +1249,4 @@
 
     /**
-     * 商品規格データを元に、規格組み合わせデータを複製登録する
-     * 
-     * @param array $arrProductsClass 商品規格データ配列
-     * @return array 登録した規格組み合わせID配列
-     */
-    function lfRegistClassCombination($arrProductsClass) {
-        $arrRetCombinationId = array();
-
-        // 規格組み合わせデータを取得
-        $arrClassCombination = $this->lfGetClassCombination($arrProductsClass);
-
-        // 規格2を持っているかチェック
-        $has_class2 = $this->lfHasClass2($arrClassCombination);
-
-        // 規格組み合わせデータを複製登録
-        if ($has_class2 == true) {
-            // 規格2を持っている場合、規格1の組み合わせデータも取得
-            $arrClassCombinationParent = $this->lfGetClassCombination($arrClassCombination, true);
-
-            // 親組み合わせデータを複製登録
-            $arrRetCombinationId = $this->lfInsertClassCombination($arrClassCombinationParent);
-            // 子組み合わせデータを複製登録
-            $arrRetCombinationId = $this->lfInsertClassCombination($arrClassCombination, $arrRetCombinationId);
-        } else {
-            // 規格1のみの場合、複製登録
-            $arrRetCombinationId = $this->lfInsertClassCombination($arrClassCombination);
-        }
-
-        return $arrRetCombinationId;
-    }
-
-    /**
-     * 規格2を持っている規格組み合わせデータであるか判定する
-     * 
-     * @param array $arrClassCombination 規格組み合わせデータ配列
-     * @return boolean true: 規格2を持っている, false: 規格1のみ
-     */
-    function lfHasClass2($arrClassCombination) {
-        $has_class2 = false;
-
-        foreach ($arrClassCombination as $arrVal) {
-            if ($arrVal['level'] == '2') {
-                $has_class2 = true;
-                break;
-            }
-        }
-
-        return $has_class2;
-    }
-
-    /**
-     * 規格組み合わせデータを取得する
-     * 
-     * @param array $arrData 組み合わせIDを含むデータ配列
-     * @param boolean $is_parent 親規格IDから抽出するフラグ(省略時: false)
-     * @return array 規格組み合わせデータ配列
-     */
-    function lfGetClassCombination($arrData, $is_parent = false) {
-        $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $key = 'class_combination_id';
-        if ($is_parent == true) {
-            $key = 'parent_class_combination_id';
-        }
-
-        $where = 'class_combination_id IN (';
-        $arrParam = array();
-        foreach ($arrData as $arrVal) {
-            if (SC_Utils_Ex::isBlank($arrVal[$key]) == true) {
-                continue;
-            }
-            $where .= '?,';
-            $arrParam[] = $arrVal[$key];
-        }
-        $where = preg_replace('/,$/', ')', $where);
-        $arrClassCombination = $objQuery->select('*', 'dtb_class_combination', $where, $arrParam);
-
-        return $arrClassCombination;
-    }
-
-    /**
-     * 規格組み合わせデータを複製登録する
-     * 
-     * @param array $arrClassCombination 複製元の規格組み合わせデータ配列
-     * @param array $arrParentCombinationId 登録する親組み合わせID配列 (省略可)
-     * @return array 登録した規格組み合わせID配列
-     */
-    function lfInsertClassCombination($arrClassCombination, $arrParentCombinationId = array()) {
-        $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $arrRetCombinationId = array();
-
-        // 親組み合わせIDの指定がある場合、指定された親組み合わせIDで複製登録
-        if (count($arrParentCombinationId) > 0) {
-            foreach ($arrClassCombination as $key => $arrVal) {
-                $arrClassCombination[$key]['parent_class_combination_id'] = $arrParentCombinationId[$arrVal['parent_class_combination_id']];
-            }
-        }
-
-        foreach ($arrClassCombination as $arrVal) {
-            $sqlval = array();
-            $sqlval['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id');
-            $sqlval['parent_class_combination_id'] = $arrVal['parent_class_combination_id'];
-            $sqlval['classcategory_id'] = $arrVal['classcategory_id'];
-            $sqlval['level'] = $arrVal['level'];
-            $objQuery->insert('dtb_class_combination', $sqlval);
-
-            $arrRetCombinationId[$arrVal['class_combination_id']] = $sqlval['class_combination_id'];
-        }
-
-        return $arrRetCombinationId;
-    }
-
-    /**
      * リネームする際は、自動生成される画像名に一意となるように、Suffixを付ける
      * 
Index: branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php	(revision 21490)
+++ branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php	(revision 21502)
@@ -613,4 +613,5 @@
     function lfCheckErrorDetail($item, $arrErr) {
         // 規格IDの存在チェック
+        // FIXME 規格分類ID自体のが有効かを主眼においたチェックをすべきと感じる。
         if (!$this->lfIsDbRecord('dtb_products_class', 'product_class_id', $item)) {
             $arrErr['product_class_id'] = "※ 指定の商品規格IDは、登録されていません。";
@@ -628,15 +629,4 @@
             }
         }
-        // 規格組合せIDの存在チェック
-//        if (!$this->lfIsDbRecord('dtb_class_combination', 'class_combination_id', $item)) {
-//      SC_Utils::sfIsRecord が del_flg が無いと使えない為、個別処理
-        if(array_search('class_combination_id', $this->arrFormKeyList) !== FALSE
-                and $item['class_combination_id'] != "") {
-            $objQuery =& SC_Query_Ex::getSingletonInstance();
-            $ret = $objQuery->get('class_combination_id', 'dtb_class_combination', 'class_combination_id = ?', array($item['class_combination_id']));
-            if ($ret == "") {
-                $arrErr['class_combination_id'] = "※ 指定の規格組合せIDは、登録されていません。";
-            }
-        }
         // 表示ステータスの存在チェック
         if (!$this->lfIsArrayRecord($this->arrDISP, 'status', $item)) {
Index: branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php	(revision 21481)
+++ branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php	(revision 21502)
@@ -237,5 +237,5 @@
         $arrDefault = $this->getProductsClass($product_id);
 
-        $objQuery->delete('dtb_products_class', 'product_id = ? AND class_combination_id IS NOT NULL', array($product_id));
+        $objQuery->delete('dtb_products_class', 'product_id = ? AND (classcategory_id1 <> 0 OR classcategory_id2 <> 0)', array($product_id));
 
         for ($i = 0; $i < $total; $i++) {
@@ -244,7 +244,9 @@
             $price02 = SC_Utils_Ex::isBlank($arrList['price02'][$i]) ? 0 : $arrList['price02'][$i];
             // dtb_products_class 登録/更新用
-            $registerKeys = array('product_code', 'stock',
-                                  'price01', 'product_type_id',
-                                  'down_filename', 'down_realfilename');
+            $registerKeys = array(
+                'classcategory_id1', 'classcategory_id2',
+                'product_code', 'stock', 'price01', 'product_type_id',
+                'down_filename', 'down_realfilename',
+            );
 
             $arrPC = array();
@@ -264,33 +266,4 @@
             $arrPC['del_flg'] = $del_flg;
 
-            $class_combination_id = $arrExists[$arrList['product_class_id'][$i]]['class_combination_id'];
-            $existsCombi = $objQuery->getRow('*', 'dtb_class_combination',
-                                             'class_combination_id = ?',
-                                             array($class_combination_id));
-
-            $objQuery->delete('dtb_class_combination',
-                              'class_combination_id IN (?, ?)',
-                              array($existsCombi['class_combination_id'],
-                                    $existsCombi['parent_class_combination_id']));
-
-            // 規格組み合わせを登録
-            $arrComb1['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id');
-            $arrComb1['classcategory_id'] = $arrList['classcategory_id1'][$i];
-            $arrComb1['level'] = 1;
-            $objQuery->insert('dtb_class_combination', $arrComb1);
-
-            // 規格2も登録する場合
-            if (!SC_Utils_Ex::isBlank($arrList['classcategory_id2'][$i])) {
-                $arrComb2['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id');
-                $arrComb2['classcategory_id'] = $arrList['classcategory_id2'][$i];
-                $arrComb2['parent_class_combination_id'] = $arrComb1['class_combination_id'];
-                $arrComb2['level'] = 2;
-                $objQuery->insert('dtb_class_combination', $arrComb2);
-
-                $arrPC['class_combination_id'] = $arrComb2['class_combination_id'];
-            } else {
-                $arrPC['class_combination_id'] = $arrComb1['class_combination_id'];
-            }
-
             $arrPC['create_date'] = 'CURRENT_TIMESTAMP';
             // 更新の場合は, product_class_id を使い回す
@@ -313,5 +286,5 @@
         $arrBlank['update_date'] = 'CURRENT_TIMESTAMP';
         $objQuery->update('dtb_products_class', $arrBlank,
-                          "product_id = ? AND class_combination_id IS NULL",
+                          "product_id = ? AND classcategory_id1 = 0 AND classcategory_id2 = 0",
                           array($product_id));
 
@@ -479,5 +452,5 @@
         $product_id = $objFormParam->getValue('product_id');
         $objProduct = new SC_Product_Ex();
-        $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id, true);
+        $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id);
 
         // 規格のデフォルト値(すべての組み合わせ)を取得し, フォームに反映
@@ -557,27 +530,13 @@
 
         $objQuery->begin();
-        $arrClassCombi = $objQuery->getCol('class_combination_id',
-                                           'dtb_products_class',
-                                           'product_id = ?', array($product_id));
-
-        foreach ($arrClassCombi as $class_combination_id) {
-            if (SC_Utils_Ex::isBlank($class_combination_id)) {
-                continue;
-            }
-            $existsCombi = $objQuery->getRow('*', 'dtb_class_combination',
-                                             'class_combination_id = ?',
-                                             array($class_combination_id));
-
-            $objQuery->delete('dtb_class_combination',
-                              'class_combination_id IN (?, ?)',
-                              array($existsCombi['class_combination_id'],
-                                    $existsCombi['parent_class_combination_id']));
-        }
-        $objQuery->update('dtb_products_class', array('del_flg' => 0),
-                          "product_id = ? AND class_combination_id IS NULL",
-                          array($product_id));
-        $objQuery->delete('dtb_products_class',
-                          "product_id = ? AND class_combination_id IS NOT NULL",
-                          array($product_id));
+
+        // 商品規格なしデータの復元
+        $where = 'product_id = ? AND classcategory_id1 = 0 AND classcategory_id2 = 0';
+        $objQuery->update("dtb_products_class", array('del_flg' => 0), $where, array($product_id));
+
+        // 商品規格データの削除
+        $where = 'product_id = ? AND (classcategory_id1 <> 0 OR classcategory_id2 <> 0)';
+        $objQuery->delete("dtb_products_class", $where, array($product_id));
+
         $objQuery->commit();
 
@@ -780,5 +739,6 @@
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $col = "product_code, price01, price02, stock, stock_unlimited, sale_limit, deliv_fee, point_rate";
-        return $objQuery->getRow($col, 'dtb_products_class', "product_id = ? AND class_combination_id IS NULL", array($product_id));
+        $where = 'product_id = ? AND classcategory_id1 = 0 AND classcategory_id2 = 0';
+        return $objQuery->getRow($col, 'dtb_products_class', $where, array($product_id));
     }
 
