Changeset 18829
- Timestamp:
- 2010/09/27 19:30:37 (14 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18828
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/Smarty/templates/default/detail.tpl 15747@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fdetail.tpl
data/Smarty/templates/default/list.tpl 15747@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Flist.tpl
data/class/SC_Product.php 18277@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2FSC_Product.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/pages/cart/LC_Page_Cart.php 15179@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fcart%2FLC_Page_Cart.php
data/class/pages/products/LC_Page_Products_Detail.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_Detail.php
data/class/pages/products/LC_Page_Products_List.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_List.php
data/class/pages/shopping/LC_Page_Shopping_Complete.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping_Complete.php
data/install.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Finstall.php- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20100927103023-gxi8k3mun5ajq1th
- bzr:revno:
- 2312
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-revisions:
data/Smarty/templates/default/list.tpl ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
data/class/helper/SC_Helper_DB.php ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
data/class/pages/cart/LC_Page_Cart.php ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
data/class/pages/shopping/LC_Page_Shopping_Complete.php ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq- bzr:timestamp:
- 2010-09-27 19:30:23.668999910 +0900
- bzr:user-agent:
- bzr2.2.0+bzr-svn1.0.3
- svn:original-date:
- 2010-09-27T10:30:23.669000Z
- Location:
- branches/version-2_5-dev/data
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/Smarty/templates/default/detail.tpl
r18777 r18829 130 130 eleDynamic.innerHTML = ''; 131 131 } 132 // 商品規格 133 eleDynamic = document.getElementById('product_class_id'); 134 if ( 135 classcat2 136 && typeof classcat2.product_class_id != 'undefined' 137 && String(classcat2.product_class_id).length >= 1 138 ) { 139 eleDynamic.value = classcat2.product_class_id; 140 } else { 141 eleDynamic.value = '' 142 } 132 143 } 133 144 $(document).ready(function() { … … 280 291 <input type="hidden" name="mode" value="cart" /> 281 292 <input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->" /> 293 <input type="hidden" name="product_class_id" value="<!--{$tpl_product_class_id}-->" id="product_class_id" /> 282 294 <input type="hidden" name="favorite_product_id" value="" /> 283 295 -
branches/version-2_5-dev/data/Smarty/templates/default/list.tpl
r18700 r18829 73 73 fnSetVal("quantity", productForm["quantity"].value); 74 74 fnSetVal("product_id", productForm["product_id"].value); 75 fnSetVal("product_class_id", productForm["product_class_id"].value); 75 76 fnSubmit(); 76 77 } … … 109 110 eleDynamic.innerHTML = ''; 110 111 } 112 // 商品規格 113 eleDynamic = document.getElementById('product_class_id' + product_id); 114 if ( 115 classcat2 116 && typeof classcat2.product_class_id != 'undefined' 117 && String(classcat2.product_class_id).length >= 1 118 ) { 119 eleDynamic.value = classcat2.product_class_id; 120 } else { 121 eleDynamic.value = '' 122 } 111 123 } 112 124 //]]> … … 131 143 <input type="hidden" name="classcategory_id1" value="" /> 132 144 <input type="hidden" name="classcategory_id2" value="" /> 145 <input type="hidden" name="product_class_id" value="" /> 133 146 <input type="hidden" name="quantity" value="" /> 134 147 <!--{* ▲注文関連 *}--> … … 254 267 <form name="product_form<!--{$id|escape}-->" action="?" onsubmit="return false;"> 255 268 <input type="hidden" name="product_id" value="<!--{$id|escape}-->" /> 269 <input type="hidden" name="product_class_id" id="product_class_id<!--{$id|escape}-->" value="<!--{$tpl_product_class_id[$id]}-->" /> 256 270 <div class="in_cart"> 257 271 <!--{if $tpl_stock_find[$id]}--> -
branches/version-2_5-dev/data/class/SC_Product.php
r18826 r18829 124 124 125 125 /** 126 * 商品詳細情報と商品規格を取得する. 127 * 128 * @param integer $productClassId 商品規格ID 129 * @return array 商品詳細情報と商品規格の配列 130 */ 131 function getDetailAndProductsClass($productClassId) { 132 $result = $this->getProductsClass($productClassId); 133 $result = array_merge($result, $this->getDetail($result['product_id'])); 134 return $result; 135 } 136 137 /** 126 138 * 商品IDに紐づく商品規格を自分自身に設定する. 127 139 * … … 163 175 $classCategories = array(); 164 176 $classCategories['']['']['name'] = '選択してください'; 177 $classCategories['']['']['product_class_id'] = $arrProductClass[0]['product_class_id']; 178 $this->product_class_id[$productId] = $arrProductClass[0]['product_class_id']; 165 179 foreach ($arrProductClass as $productsClass) { 166 180 $productsClass1 = $productsClass['classcategory_id1']; … … 201 215 // 商品コード 202 216 $classCategories[$productsClass1][$productsClass2]['product_code'] = $productsClass['product_code']; 217 // 商品規格ID 218 $classCategories[$productsClass1][$productsClass2]['product_class_id'] = $productsClass['product_class_id']; 203 219 } 204 220 … … 211 227 212 228 /** 213 * 複数の商品IDに紐づいた, 商品規格を取得する. 214 * 215 * @param array $productIds 商品IDの配列 229 * SC_Query インスタンスに設定された検索条件を使用して商品規格を取得する. 230 * 231 * @param SC_Query $objQuery SC_Queryインスタンス 232 * @param array $params 検索パラメータの配列 216 233 * @return array 商品規格の配列 217 234 */ 218 function getProductsClassByProductIds($productIds = array()) { 219 if (empty($productIds)) { 220 return array(); 221 } 222 $objQuery =& SC_Query::getSingletonInstance(); 223 $objQuery->setWhere('product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'); 224 $objQuery->setOrder("T2.level DESC"); 235 function getProductsClassByQuery(&$objQuery, $params) { 225 236 // 末端の規格を取得 226 237 $col = <<< __EOS__ … … 254 265 ON T3.class_id = T4.class_id 255 266 __EOS__; 256 $arrRet = $objQuery->select($col, $table, "", $p roductIds);267 $arrRet = $objQuery->select($col, $table, "", $params); 257 268 $levels = array(); 258 269 $parents = array(); … … 317 328 318 329 /** 330 * 商品規格IDから商品規格を取得する. 331 */ 332 function getProductsClass($productClassId) { 333 $objQuery =& SC_Query::getSingletonInstance(); 334 $objQuery->setWhere('product_class_id = ?'); 335 $objQuery->setOrder("T2.level DESC"); 336 $results = $this->getProductsClassByQuery($objQuery, $productClassId); 337 $productsClass = $this->getProductsClassFull($results); 338 return $productsClass[0]; 339 } 340 341 /** 342 * 複数の商品IDに紐づいた, 商品規格を取得する. 343 * 344 * @param array $productIds 商品IDの配列 345 * @return array 商品規格の配列 346 */ 347 function getProductsClassByProductIds($productIds = array()) { 348 if (empty($productIds)) { 349 return array(); 350 } 351 $objQuery =& SC_Query::getSingletonInstance(); 352 $objQuery->setWhere('product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'); 353 $objQuery->setOrder("T2.level DESC"); 354 return $this->getProductsClassByQuery($objQuery, $productIds); 355 } 356 357 /** 319 358 * 商品IDに紐づいた, 商品規格を階層ごとに取得する. 320 359 * 321 * @param array $productId 商品ID の配列360 * @param array $productId 商品ID 322 361 * @return array 階層ごとの商品規格の配列 323 362 */ 324 363 function getProductsClassLevelByProductId($productId) { 325 364 $results = $this->getProductsClassByProductIds(array($productId)); 326 foreach ($results as $row) { 365 return $this->getProductsClassLevel($results); 366 } 367 368 /** 369 * 商品IDに紐づいた, 商品規格をすべての組み合わせごとに取得する. 370 * 371 * @param array $productId 商品ID 372 * @return array すべての組み合わせの商品規格の配列 373 */ 374 function getProductsClassFullByProductId($productId) { 375 $results = $this->getProductsClassByProductIds(array($productId)); 376 return $this->getProductsClassFull($results); 377 } 378 379 /** 380 * 商品規格の配列から, 商品規格を階層ごとに取得する. 381 * 382 * @access private 383 * @param array $productsClassResults 商品規格の結果の配列 384 * @return array 階層ごとの商品規格の配列 385 */ 386 function getProductsClassLevel($productsClassResults) { 387 foreach ($productsClassResults as $row) { 327 388 $productsClassLevel["level" . $row['level']][] = $row; 328 389 } … … 331 392 332 393 /** 333 * 商品IDに紐づいた, 商品規格をすべての組み合わせごとに取得する. 334 * 335 * @param array $productId 商品IDの配列 336 * @return array すべての組み合わせの商品規格の配列 337 */ 338 function getProductsClassFullByProductId($productId) { 339 $results = $this->getProductsClassLevelByProductId($productId); 394 * 商品規格の配列から, 商品規格のすべての組み合わせを取得する. 395 * 396 * @access private 397 * @param array $productsClassResults 商品規格の結果の配列 398 * @ array 階層ごとの商品規格の配列 399 */ 400 function getProductsClassFull($productsClassResults) { 401 $results = $this->getProductsClassLevel($productsClassResults); 340 402 $productsClass = array(); 341 if (SC_Utils_Ex::isBlank($results["level1"]) && SC_Utils_Ex::isBlank($results["level2"])) { 403 if (SC_Utils_Ex::isBlank($results["level1"]) 404 && SC_Utils_Ex::isBlank($results["level2"])) { 342 405 return $results["level"]; 343 406 } -
branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
r18823 r18829 256 256 $objPage->tpl_total_point = 0; // ポイント合計 257 257 258 $objProduct = new SC_Product(); 258 259 // カート内情報の取得 259 260 $arrQuantityInfo_by_product = array(); … … 261 262 foreach ($objCartSess->getCartList() as $arrCart) { 262 263 // 商品規格情報の取得 263 $arrData = $ this->sfGetProductsClass($arrCart['id']);264 $arrData = $objProduct->getDetailAndProductsClass($arrCart['id']); 264 265 $limit = null; 265 266 // DBに存在する商品 … … 292 293 293 294 // (商品規格単位でなく)商品単位での評価のための準備 294 $product_id = $arr Cart['id'][0];295 $product_id = $arrData['product_id']; 295 296 $arrQuantityInfo_by_product[$product_id]['quantity'] += $quantity; 296 297 $arrQuantityInfo_by_product[$product_id]['sale_limit'] = $arrData['sale_limit']; … … 301 302 $objPage->arrProductsClass[$cnt]['cart_no'] = $arrCart['cart_no']; 302 303 $objPage->arrProductsClass[$cnt]['class_name1'] = 303 isset($arr ClassName[$arrData['class_id1']])304 ? $arr ClassName[$arrData['class_id1']] : "";304 isset($arrData['class_name1']) 305 ? $arrData['class_name1'] : ""; 305 306 306 307 $objPage->arrProductsClass[$cnt]['class_name2'] = 307 isset($arrClassName[$arrData['class_id2']]) 308 ? $arrClassName[$arrData['class_id2']] : ""; 309 310 $objPage->arrProductsClass[$cnt]['classcategory_name1'] = 311 $arrClassCatName[$arrData['classcategory_id1']]; 312 313 $objPage->arrProductsClass[$cnt]['classcategory_name2'] = 314 $arrClassCatName[$arrData['classcategory_id2']]; 315 308 isset($arrData['class_name2']) 309 ? $arrData['class_name2'] : ""; 310 311 $objPage->arrProductsClass[$cnt]['classcategory_name1'] = $arrData['name1']; 312 313 $objPage->arrProductsClass[$cnt]['classcategory_name2'] = $arrData['name2']; 316 314 // 価格の登録 317 315 $objCartSess->setProductValue($arrCart['id'], 'price', $arrData['price02']); -
branches/version-2_5-dev/data/class/pages/cart/LC_Page_Cart.php
r18701 r18829 78 78 $objCustomer = new SC_Customer(); 79 79 $objDb = new SC_Helper_DB_Ex(); 80 80 $objProduct = new SC_Product(); 81 81 // 商品購入中にカート内容が変更された。 82 82 if($objCartSess->getCancelPurchase()) { … … 106 106 for ($i = 0; $i < $max; $i++) { 107 107 // 商品規格情報の取得 108 $this->arrData = $obj Db->sfGetProductsClass($arrRet[$i]['id']);108 $this->arrData = $objProduct->getProductsClass($arrRet[$i]['id']); 109 109 // DBに存在する商品 110 110 if($this->arrData != "") { -
branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_Detail.php
r18826 r18829 169 169 170 170 $this->tpl_stock_find = $objProduct->stock_find[$product_id]; 171 $this->tpl_product_class_id = $objProduct->classCategories[$product_id]['']['']['product_class_id']; 171 172 172 173 require_once DATA_PATH . 'module/Services/JSON.php'; … … 191 192 $classcategory_id1 = $_POST['classcategory_id1']; 192 193 $classcategory_id2 = $_POST['classcategory_id2']; 194 $product_class_id = $_POST['product_class_id']; 193 195 194 196 if (!empty($_POST['gmo_oneclick'])) { … … 207 209 // 規格IDを取得 208 210 $objProduct = new SC_Product(); 209 $product_class_id = $objProduct->getClasscategoryIdsByProductClassId($_POST['product_id'],$classcategory_id1,$classcategory_id2); 210 $objCartSess->addProduct(array($_POST['product_id'], $product_class_id, $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); 211 $objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity')); 211 212 212 213 if (!empty($_POST['gmo_oneclick'])) { -
branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php
r18826 r18829 157 157 // 規格IDを取得 158 158 $objProduct = new SC_Product(); 159 $product_class_id = $ objProduct->getClasscategoryIdsByProductClassId($product_id,$classcategory_id1,$classcategory_id2);159 $product_class_id = $this->arrForm['product_class_id']; 160 160 $objCartSess = new SC_CartSession(); 161 $objCartSess->addProduct( array($product_id, $product_class_id, $classcategory_id1, $classcategory_id2), $this->arrForm['quantity']);162 163 161 $objCartSess->addProduct($product_class_id, $this->arrForm['quantity']); 162 $this->sendRedirect($this->getLocation(URL_CART_TOP)); 163 exit; 164 164 } 165 165 foreach (array_keys($this->arrProducts) as $key) { … … 475 475 476 476 $this->tpl_stock_find = $objProduct->stock_find; 477 $this->tpl_product_class_id = $objProduct->product_class_id; 477 478 478 479 $productsClassCategories = $objProduct->classCategories; -
branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php
r18824 r18829 536 536 $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); 537 537 538 $objProduct = new SC_Product(); 538 539 for ($i = 0; $i < $max; $i++) { 539 540 // 商品規格情報の取得 540 $arrData = $obj Db->sfGetProductsClass($arrCart[$i]['id']);541 $arrData = $objProduct->getDetailAndProductsClass($arrCart[$i]['id']); 541 542 542 543 // 存在する商品のみ表示する。 543 544 if($arrData != "") { 544 545 $sqlval['order_id'] = $order_id; 545 $sqlval['product_id'] = $arrCart[$i]['id'][0]; 546 $sqlval['product_class_id'] = $arrCart[$i]['id'][1]; 547 $sqlval['classcategory_id1'] = $arrCart[$i]['id'][2]; 548 $sqlval['classcategory_id2'] = $arrCart[$i]['id'][3]; 546 $sqlval['product_id'] = $arrData['product_id']; 547 $sqlval['product_class_id'] = $arrData['product_class_id']; 548 // FIXME product_class_id のみで対応予定のため暫定対応 549 $sqlval['classcategory_id1'] = is_null($arrData['classcategory_id1']) ? 0 : $sqlval['classcategory_id1']; 550 $sqlval['classcategory_id2'] = is_null($arrData['classcategory_id2']) ? 0 : $sqlval['classcategory_id2']; 549 551 $sqlval['product_name'] = $arrData['name']; 550 552 $sqlval['product_code'] = $arrData['product_code']; 551 $sqlval['classcategory_name1'] = $arr ClassCatName[$arrData['classcategory_id1']];552 $sqlval['classcategory_name2'] = $arr ClassCatName[$arrData['classcategory_id2']];553 $sqlval['classcategory_name1'] = $arrData['name1']; 554 $sqlval['classcategory_name2'] = $arrData['name2']; 553 555 $sqlval['point_rate'] = $arrCart[$i]['point_rate']; 554 556 $sqlval['price'] = $arrCart[$i]['price']; … … 665 667 } 666 668 667 // 在庫を減らす処理 668 function lfReduceStock(&$objQuery, $arrID, $quantity) { 669 /** 670 * 在庫を減らす処理 671 * 672 * FIXME 件数カウントバッチは最後にまとめて実行すること. 673 */ 674 function lfReduceStock(&$objQuery, $product_class_id, $quantity) { 669 675 $objDb = new SC_Helper_DB_Ex(); 670 676 … … 675 681 676 682 $objProduct = new SC_Product(); 677 $productsClass = $objProduct->getProductsClassFullByProductId($arrID[0]); 678 679 foreach ($productsClass as $val) { 680 if ($val['classcategory_id1'] == $arrID[2] 681 && $val['classcategory_id2'] == $arrID[3]) { 682 683 if (($val['stock_unlimited'] != '1' && $val['stock'] < $quantity) || $quantity == 0) { 684 // 売り切れエラー 685 $objQuery->rollback(); 686 SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true); 687 } 688 689 // 在庫を減らす 690 $arrRawSql = array(); 691 $arrRawSql['stock'] = 'stock - ?'; 692 $arrRawSqlVal[] = $quantity; 693 $objQuery->update('dtb_products_class', array(), "product_class_id = ?", array($val['product_class_id']), $arrRawSql, $arrRawSqlVal); 694 break; 695 } 696 } 683 $productsClass = $objProduct->getDetailAndProductsClass($product_class_id); 684 685 if (($productsClass['stock_unlimited'] != '1' && $productsClass['stock'] < $quantity) 686 || $quantity == 0) { 687 // 売り切れエラー 688 $objQuery->rollback(); 689 SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true); 690 } 691 692 // 在庫を減らす 693 $arrRawSql = array(); 694 $arrRawSql['stock'] = 'stock - ?'; 695 $arrRawSqlVal[] = $quantity; 696 $objQuery->update('dtb_products_class', array(), "product_class_id = ?", array($val['product_class_id']), $arrRawSql, $arrRawSqlVal); 697 697 698 698 // 在庫無し商品の非表示対応
Note: See TracChangeset
for help on using the changeset viewer.