Ignore:
Timestamp:
2012/02/14 15:10:54 (12 years ago)
Author:
Seasoft
Message:

#1641 (商品規格における木構造の廃止)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php

    r21481 r21502  
    237237        $arrDefault = $this->getProductsClass($product_id); 
    238238 
    239         $objQuery->delete('dtb_products_class', 'product_id = ? AND class_combination_id IS NOT NULL', array($product_id)); 
     239        $objQuery->delete('dtb_products_class', 'product_id = ? AND (classcategory_id1 <> 0 OR classcategory_id2 <> 0)', array($product_id)); 
    240240 
    241241        for ($i = 0; $i < $total; $i++) { 
     
    244244            $price02 = SC_Utils_Ex::isBlank($arrList['price02'][$i]) ? 0 : $arrList['price02'][$i]; 
    245245            // dtb_products_class 登録/更新用 
    246             $registerKeys = array('product_code', 'stock', 
    247                                   'price01', 'product_type_id', 
    248                                   'down_filename', 'down_realfilename'); 
     246            $registerKeys = array( 
     247                'classcategory_id1', 'classcategory_id2', 
     248                'product_code', 'stock', 'price01', 'product_type_id', 
     249                'down_filename', 'down_realfilename', 
     250            ); 
    249251 
    250252            $arrPC = array(); 
     
    264266            $arrPC['del_flg'] = $del_flg; 
    265267 
    266             $class_combination_id = $arrExists[$arrList['product_class_id'][$i]]['class_combination_id']; 
    267             $existsCombi = $objQuery->getRow('*', 'dtb_class_combination', 
    268                                              'class_combination_id = ?', 
    269                                              array($class_combination_id)); 
    270  
    271             $objQuery->delete('dtb_class_combination', 
    272                               'class_combination_id IN (?, ?)', 
    273                               array($existsCombi['class_combination_id'], 
    274                                     $existsCombi['parent_class_combination_id'])); 
    275  
    276             // 規格組み合わせを登録 
    277             $arrComb1['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id'); 
    278             $arrComb1['classcategory_id'] = $arrList['classcategory_id1'][$i]; 
    279             $arrComb1['level'] = 1; 
    280             $objQuery->insert('dtb_class_combination', $arrComb1); 
    281  
    282             // 規格2も登録する場合 
    283             if (!SC_Utils_Ex::isBlank($arrList['classcategory_id2'][$i])) { 
    284                 $arrComb2['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id'); 
    285                 $arrComb2['classcategory_id'] = $arrList['classcategory_id2'][$i]; 
    286                 $arrComb2['parent_class_combination_id'] = $arrComb1['class_combination_id']; 
    287                 $arrComb2['level'] = 2; 
    288                 $objQuery->insert('dtb_class_combination', $arrComb2); 
    289  
    290                 $arrPC['class_combination_id'] = $arrComb2['class_combination_id']; 
    291             } else { 
    292                 $arrPC['class_combination_id'] = $arrComb1['class_combination_id']; 
    293             } 
    294  
    295268            $arrPC['create_date'] = 'CURRENT_TIMESTAMP'; 
    296269            // 更新の場合は, product_class_id を使い回す 
     
    313286        $arrBlank['update_date'] = 'CURRENT_TIMESTAMP'; 
    314287        $objQuery->update('dtb_products_class', $arrBlank, 
    315                           "product_id = ? AND class_combination_id IS NULL", 
     288                          "product_id = ? AND classcategory_id1 = 0 AND classcategory_id2 = 0", 
    316289                          array($product_id)); 
    317290 
     
    479452        $product_id = $objFormParam->getValue('product_id'); 
    480453        $objProduct = new SC_Product_Ex(); 
    481         $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id, true); 
     454        $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id); 
    482455 
    483456        // 規格のデフォルト値(すべての組み合わせ)を取得し, フォームに反映 
     
    557530 
    558531        $objQuery->begin(); 
    559         $arrClassCombi = $objQuery->getCol('class_combination_id', 
    560                                            'dtb_products_class', 
    561                                            'product_id = ?', array($product_id)); 
    562  
    563         foreach ($arrClassCombi as $class_combination_id) { 
    564             if (SC_Utils_Ex::isBlank($class_combination_id)) { 
    565                 continue; 
    566             } 
    567             $existsCombi = $objQuery->getRow('*', 'dtb_class_combination', 
    568                                              'class_combination_id = ?', 
    569                                              array($class_combination_id)); 
    570  
    571             $objQuery->delete('dtb_class_combination', 
    572                               'class_combination_id IN (?, ?)', 
    573                               array($existsCombi['class_combination_id'], 
    574                                     $existsCombi['parent_class_combination_id'])); 
    575         } 
    576         $objQuery->update('dtb_products_class', array('del_flg' => 0), 
    577                           "product_id = ? AND class_combination_id IS NULL", 
    578                           array($product_id)); 
    579         $objQuery->delete('dtb_products_class', 
    580                           "product_id = ? AND class_combination_id IS NOT NULL", 
    581                           array($product_id)); 
     532 
     533        // 商品規格なしデータの復元 
     534        $where = 'product_id = ? AND classcategory_id1 = 0 AND classcategory_id2 = 0'; 
     535        $objQuery->update("dtb_products_class", array('del_flg' => 0), $where, array($product_id)); 
     536 
     537        // 商品規格データの削除 
     538        $where = 'product_id = ? AND (classcategory_id1 <> 0 OR classcategory_id2 <> 0)'; 
     539        $objQuery->delete("dtb_products_class", $where, array($product_id)); 
     540 
    582541        $objQuery->commit(); 
    583542 
     
    780739        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    781740        $col = "product_code, price01, price02, stock, stock_unlimited, sale_limit, deliv_fee, point_rate"; 
    782         return $objQuery->getRow($col, 'dtb_products_class', "product_id = ? AND class_combination_id IS NULL", array($product_id)); 
     741        $where = 'product_id = ? AND classcategory_id1 = 0 AND classcategory_id2 = 0'; 
     742        return $objQuery->getRow($col, 'dtb_products_class', $where, array($product_id)); 
    783743    } 
    784744 
Note: See TracChangeset for help on using the changeset viewer.