Changeset 21502 for branches/version-2_12-dev/data/class/pages
- Timestamp:
- 2012/02/14 15:10:54 (15 years ago)
- Location:
- branches/version-2_12-dev/data/class/pages/admin/products
- Files:
-
- 3 edited
-
LC_Page_Admin_Products_Product.php (modified) (2 diffs)
-
LC_Page_Admin_Products_ProductClass.php (modified) (7 diffs)
-
LC_Page_Admin_Products_UploadCSV.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
r21481 r21502 1049 1049 $arrProductsClass = $objQuery->select($col, $table, $where, array($arrList['copy_product_id'])); 1050 1050 1051 // 複製元商品の規格組み合わせデータ登録1052 // 登録した組み合わせIDを取得1053 $arrRetCombinationId = $this->lfRegistClassCombination($arrProductsClass);1054 1055 1051 // 規格データ登録 1056 1052 $objQuery =& SC_Query_Ex::getSingletonInstance(); 1057 1053 foreach ($arrProductsClass as $arrData) { 1058 $sqlval = array();1054 $sqlval = $arrData; 1059 1055 $sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); 1060 1056 $sqlval['product_id'] = $product_id; 1061 1057 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 1062 $sqlval['class_combination_id'] = $arrRetCombinationId[$arrData['class_combination_id']];1063 $sqlval['product_type_id'] = $arrData['product_type_id'];1064 $sqlval['product_code'] = $arrData['product_code'];1065 $sqlval['stock'] = $arrData['stock'];1066 $sqlval['stock_unlimited'] = $arrData['stock_unlimited'];1067 $sqlval['sale_limit'] = $arrData['sale_limit'];1068 $sqlval['price01'] = $arrData['price01'];1069 $sqlval['price02'] = $arrData['price02'];1070 $sqlval['deliv_fee'] = $arrData['deliv_fee'];1071 $sqlval['point_rate'] = $arrData['point_rate'];1072 $sqlval['creator_id'] = $arrData['creator_id'];1073 1058 $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 1074 $sqlval['down_filename'] = $arrData['down_filename'];1075 $sqlval['down_realfilename'] = $arrData['down_realfilename'];1076 $sqlval['del_flg'] = $arrData['del_flg'];1077 1059 $objQuery->insert($table, $sqlval); 1078 1060 } … … 1267 1249 1268 1250 /** 1269 * 商品規格データを元に、規格組み合わせデータを複製登録する1270 *1271 * @param array $arrProductsClass 商品規格データ配列1272 * @return array 登録した規格組み合わせID配列1273 */1274 function lfRegistClassCombination($arrProductsClass) {1275 $arrRetCombinationId = array();1276 1277 // 規格組み合わせデータを取得1278 $arrClassCombination = $this->lfGetClassCombination($arrProductsClass);1279 1280 // 規格2を持っているかチェック1281 $has_class2 = $this->lfHasClass2($arrClassCombination);1282 1283 // 規格組み合わせデータを複製登録1284 if ($has_class2 == true) {1285 // 規格2を持っている場合、規格1の組み合わせデータも取得1286 $arrClassCombinationParent = $this->lfGetClassCombination($arrClassCombination, true);1287 1288 // 親組み合わせデータを複製登録1289 $arrRetCombinationId = $this->lfInsertClassCombination($arrClassCombinationParent);1290 // 子組み合わせデータを複製登録1291 $arrRetCombinationId = $this->lfInsertClassCombination($arrClassCombination, $arrRetCombinationId);1292 } else {1293 // 規格1のみの場合、複製登録1294 $arrRetCombinationId = $this->lfInsertClassCombination($arrClassCombination);1295 }1296 1297 return $arrRetCombinationId;1298 }1299 1300 /**1301 * 規格2を持っている規格組み合わせデータであるか判定する1302 *1303 * @param array $arrClassCombination 規格組み合わせデータ配列1304 * @return boolean true: 規格2を持っている, false: 規格1のみ1305 */1306 function lfHasClass2($arrClassCombination) {1307 $has_class2 = false;1308 1309 foreach ($arrClassCombination as $arrVal) {1310 if ($arrVal['level'] == '2') {1311 $has_class2 = true;1312 break;1313 }1314 }1315 1316 return $has_class2;1317 }1318 1319 /**1320 * 規格組み合わせデータを取得する1321 *1322 * @param array $arrData 組み合わせIDを含むデータ配列1323 * @param boolean $is_parent 親規格IDから抽出するフラグ(省略時: false)1324 * @return array 規格組み合わせデータ配列1325 */1326 function lfGetClassCombination($arrData, $is_parent = false) {1327 $objQuery =& SC_Query_Ex::getSingletonInstance();1328 $key = 'class_combination_id';1329 if ($is_parent == true) {1330 $key = 'parent_class_combination_id';1331 }1332 1333 $where = 'class_combination_id IN (';1334 $arrParam = array();1335 foreach ($arrData as $arrVal) {1336 if (SC_Utils_Ex::isBlank($arrVal[$key]) == true) {1337 continue;1338 }1339 $where .= '?,';1340 $arrParam[] = $arrVal[$key];1341 }1342 $where = preg_replace('/,$/', ')', $where);1343 $arrClassCombination = $objQuery->select('*', 'dtb_class_combination', $where, $arrParam);1344 1345 return $arrClassCombination;1346 }1347 1348 /**1349 * 規格組み合わせデータを複製登録する1350 *1351 * @param array $arrClassCombination 複製元の規格組み合わせデータ配列1352 * @param array $arrParentCombinationId 登録する親組み合わせID配列 (省略可)1353 * @return array 登録した規格組み合わせID配列1354 */1355 function lfInsertClassCombination($arrClassCombination, $arrParentCombinationId = array()) {1356 $objQuery =& SC_Query_Ex::getSingletonInstance();1357 $arrRetCombinationId = array();1358 1359 // 親組み合わせIDの指定がある場合、指定された親組み合わせIDで複製登録1360 if (count($arrParentCombinationId) > 0) {1361 foreach ($arrClassCombination as $key => $arrVal) {1362 $arrClassCombination[$key]['parent_class_combination_id'] = $arrParentCombinationId[$arrVal['parent_class_combination_id']];1363 }1364 }1365 1366 foreach ($arrClassCombination as $arrVal) {1367 $sqlval = array();1368 $sqlval['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id');1369 $sqlval['parent_class_combination_id'] = $arrVal['parent_class_combination_id'];1370 $sqlval['classcategory_id'] = $arrVal['classcategory_id'];1371 $sqlval['level'] = $arrVal['level'];1372 $objQuery->insert('dtb_class_combination', $sqlval);1373 1374 $arrRetCombinationId[$arrVal['class_combination_id']] = $sqlval['class_combination_id'];1375 }1376 1377 return $arrRetCombinationId;1378 }1379 1380 /**1381 1251 * リネームする際は、自動生成される画像名に一意となるように、Suffixを付ける 1382 1252 * -
branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
r21481 r21502 237 237 $arrDefault = $this->getProductsClass($product_id); 238 238 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)); 240 240 241 241 for ($i = 0; $i < $total; $i++) { … … 244 244 $price02 = SC_Utils_Ex::isBlank($arrList['price02'][$i]) ? 0 : $arrList['price02'][$i]; 245 245 // 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 ); 249 251 250 252 $arrPC = array(); … … 264 266 $arrPC['del_flg'] = $del_flg; 265 267 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 295 268 $arrPC['create_date'] = 'CURRENT_TIMESTAMP'; 296 269 // 更新の場合は, product_class_id を使い回す … … 313 286 $arrBlank['update_date'] = 'CURRENT_TIMESTAMP'; 314 287 $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", 316 289 array($product_id)); 317 290 … … 479 452 $product_id = $objFormParam->getValue('product_id'); 480 453 $objProduct = new SC_Product_Ex(); 481 $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id , true);454 $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id); 482 455 483 456 // 規格のデフォルト値(すべての組み合わせ)を取得し, フォームに反映 … … 557 530 558 531 $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 582 541 $objQuery->commit(); 583 542 … … 780 739 $objQuery =& SC_Query_Ex::getSingletonInstance(); 781 740 $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)); 783 743 } 784 744 -
branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php
r21490 r21502 613 613 function lfCheckErrorDetail($item, $arrErr) { 614 614 // 規格IDの存在チェック 615 // FIXME 規格分類ID自体のが有効かを主眼においたチェックをすべきと感じる。 615 616 if (!$this->lfIsDbRecord('dtb_products_class', 'product_class_id', $item)) { 616 617 $arrErr['product_class_id'] = "※ 指定の商品規格IDは、登録されていません。"; … … 628 629 } 629 630 } 630 // 規格組合せIDの存在チェック631 // if (!$this->lfIsDbRecord('dtb_class_combination', 'class_combination_id', $item)) {632 // SC_Utils::sfIsRecord が del_flg が無いと使えない為、個別処理633 if(array_search('class_combination_id', $this->arrFormKeyList) !== FALSE634 and $item['class_combination_id'] != "") {635 $objQuery =& SC_Query_Ex::getSingletonInstance();636 $ret = $objQuery->get('class_combination_id', 'dtb_class_combination', 'class_combination_id = ?', array($item['class_combination_id']));637 if ($ret == "") {638 $arrErr['class_combination_id'] = "※ 指定の規格組合せIDは、登録されていません。";639 }640 }641 631 // 表示ステータスの存在チェック 642 632 if (!$this->lfIsArrayRecord($this->arrDISP, 'status', $item)) {
Note: See TracChangeset
for help on using the changeset viewer.
