Changeset 18646
- Timestamp:
- 2010/05/08 23:47:32 (14 years ago)
- Location:
- branches/comu-ver2
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu-ver2
- Property svn:mergeinfo changed
/branches/version-2_4 merged: 18527
- Property svn:mergeinfo changed
-
branches/comu-ver2/data/Smarty/templates/default/admin/order/edit.tpl
r18489 r18646 302 302 <input type="button" name="add_product" value="商品の追加" onclick="win03('<!--{$smarty.const.URL_DIR}-->admin/order/product_select.php<!--{if $tpl_order_id}-->?order_id=<!--{$tpl_order_id}--><!--{/if}-->', 'search', '500', '500'); " /> 303 303 </h2> 304 <div class="attention">商品の追加、及び数量の変更に伴う在庫数の変更は手動にてお願いします。</div>305 304 <!--{if $arrErr.product_id || $arrErr.quantity || $arrErr.price}--> 306 305 <span class="attention"><!--{$arrErr.product_id}--></span> -
branches/comu-ver2/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
r18642 r18646 550 550 SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id); 551 551 552 $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 553 554 555 // 変更しようとしている商品情報とDBに登録してある商品情報を比較することで、更新すべき数量を計算 556 $max = count($arrDetail); 557 $k = 0; 558 $arrStockData = array(); 559 for($i = 0; $i < $max; $i++) { 560 if (!empty($arrDetail[$i]['product_id'])) { 561 $arrPreDetail = $objQuery->select('*', "dtb_order_detail", "order_id = ? AND product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?", array($order_id, $arrDetail[$i]['product_id'], $arrDetail[$i]['classcategory_id1'], $arrDetail[$i]['classcategory_id2'])); 562 if (!empty($arrPreDetail) && $arrPreDetail[0]['quantity'] != $arrDetail[$i]['quantity']) { 563 // 数量が変更された商品 564 $arrStockData[$k]['product_id'] = $arrDetail[$i]['product_id']; 565 $arrStockData[$k]['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 566 $arrStockData[$k]['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 567 $arrStockData[$k]['quantity'] = $arrPreDetail[0]['quantity'] - $arrDetail[$i]['quantity']; 568 ++$k; 569 } elseif (empty($arrPreDetail)) { 570 // 新しく追加された商品 もしくは 違う商品に変更された商品 571 $arrStockData[$k]['product_id'] = $arrDetail[$i]['product_id']; 572 $arrStockData[$k]['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 573 $arrStockData[$k]['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 574 $arrStockData[$k]['quantity'] = -$arrDetail[$i]['quantity']; 575 ++$k; 576 } 577 $objQuery->delete("dtb_order_detail", "order_id = ? AND product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?", array($order_id, $arrDetail[$i]['product_id'], $arrDetail[$i]['classcategory_id1'], $arrDetail[$i]['classcategory_id2'])); 578 } 579 } 580 581 // 上記の新しい商品のループでDELETEされなかった商品は、注文より削除された商品 582 $arrPreDetail = $objQuery->select('*', "dtb_order_detail", "order_id = ?", array($order_id)); 583 foreach ($arrPreDetail AS $key=>$val) { 584 $arrStockData[$k]['product_id'] = $val['product_id']; 585 $arrStockData[$k]['classcategory_id1'] = $val['classcategory_id1']; 586 $arrStockData[$k]['classcategory_id2'] = $val['classcategory_id2']; 587 $arrStockData[$k]['quantity'] = $val['quantity']; 588 ++$k; 589 } 590 591 // 受注詳細データの初期化 592 $objQuery->delete("dtb_order_detail", $where, array($order_id)); 593 552 594 // 受注詳細データの更新 553 $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2"));554 $objQuery->delete("dtb_order_detail", $where, array($order_id));555 556 595 $max = count($arrDetail); 557 596 for ($i = 0; $i < $max; $i++) { … … 571 610 } 572 611 612 // 在庫数調整 613 $status = $sqlval['status']; 614 if (ORDER_DELIV != $status && ORDER_CANCEL != $status) { 615 $stock_sql = "UPDATE dtb_products_class SET stock = stock + ? WHERE product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?;"; 616 foreach ($arrStockData AS $key=>$val) { 617 $stock_sqlval = array(); 618 $stock_sqlval[] = $val['quantity']; 619 $stock_sqlval[] = $val['product_id']; 620 $stock_sqlval[] = $val['classcategory_id1']; 621 $stock_sqlval[] = $val['classcategory_id2']; 622 623 $objQuery->query($stock_sql, $stock_sqlval); 624 } 625 } 626 573 627 $objQuery->commit(); 574 628 } … … 630 684 $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 631 685 $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 686 632 687 $objQuery->insert("dtb_order_detail", $sqlval); 633 } 634 688 689 690 // 在庫数減少処理 691 // 現在の実在庫数取得 692 $pre_stock = $objQuery->getone("SELECT stock FROM dtb_products_class WHERE product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?", array($arrDetail[$i]['product_id'], $arrDetail[$i]['classcategory_id1'], $arrDetail[$i]['classcategory_id2'])); 693 694 $stock_sqlval = array(); 695 $stock_sqlval['stock'] = intval($pre_stock - $arrDetail[$i]['quantity']); 696 if ($stock_sqlval['stock'] === 0) { 697 $stock_sqlval['stock'] = '0'; 698 } 699 700 $st_params = array(); 701 $st_params[] = $arrDetail[$i]['product_id']; 702 $st_params[] = $arrDetail[$i]['classcategory_id1']; 703 $st_params[] = $arrDetail[$i]['classcategory_id2']; 704 705 $objQuery->update("dtb_products_class", $stock_sqlval, 'product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?', $st_params); 706 } 635 707 $objQuery->commit(); 636 708
Note: See TracChangeset
for help on using the changeset viewer.