Changeset 18100 for branches/comu-ver2/data
- Timestamp:
- 2009/06/12 21:47:32 (15 years ago)
- Location:
- branches/comu-ver2/data/class
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu-ver2/data/class/helper/SC_Helper_DB.php
r18095 r18100 1816 1816 return SC_Utils_Ex::sfGetAddPoint($totalpoint, $use_point, $CONF['point_rate']); 1817 1817 } 1818 1819 /** 1820 * 受注.対応状況の更新 1821 * 1822 * ・必ず呼び出し元でトランザクションブロックを開いておくこと。 1823 * 1824 * @param integer $orderId 注文番号 1825 * @param integer|null $newStatus 対応状況 (null=変更無し) 1826 * @param integer|null $newAddPoint 加算ポイント (null=変更無し) 1827 * @param integer|null $newUsePoint ポイント (null=変更無し) 1828 * @return void 1829 */ 1830 function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null) { 1831 $objQuery = new SC_Query(); 1832 1833 $arrOrderOld = $objQuery->getRow('dtb_order', 'status, add_point, use_point, customer_id', 'order_id = ?', array($orderId)); 1834 1835 // 対応状況 1836 if (is_null($newStatus)) { 1837 $newStatus = $arrOrderOld['status']; 1838 } 1839 1840 if (USE_POINT !== false) { 1841 $addPoint = 0; 1842 1843 // 使用ポイント 1844 if (!is_null($newUsePoint)) { 1845 $addPoint += $arrOrderOld['use_point']; // 変更前のポイントを戻す 1846 $addPoint -= $newUsePoint; // 変更後のポイントを引く 1847 } 1848 1849 // ▼加算ポイント 1850 // 変更前の状態が加算対象の場合、 1851 if (SC_Utils_Ex::sfIsAddPoint($arrOrderOld['status'])) { 1852 $addPoint -= $arrOrderOld['add_point']; 1853 } 1854 1855 // 変更後の状態が加算対象の場合、 1856 if (SC_Utils_Ex::sfIsAddPoint($newStatus)) { 1857 $addPoint += is_null($newAddPoint) ? $arrOrderOld['add_point'] : $newAddPoint; 1858 } 1859 // ▲加算ポイント 1860 1861 if ($addPoint != 0) { 1862 // ▼顧客テーブルの更新 1863 $sqlval = array(); 1864 $where = ''; 1865 $arrVal = array(); 1866 $arrRawSql = array(); 1867 1868 $sqlval['update_date'] = 'Now()'; 1869 $arrRawSql['point'] = 'point + ?'; 1870 $arrVal[] = $addPoint; 1871 $where .= 'customer_id = ?'; 1872 $arrVal[] = $arrOrderOld['customer_id']; 1873 1874 $objQuery->update('dtb_customer', $sqlval, $where, $arrVal, $arrRawSql); 1875 // ▲顧客テーブルの更新 1876 1877 // ポイントをマイナスした場合、 1878 if ($addPoint < 0) { 1879 $sql = 'SELECT point FROM dtb_customer WHERE customer_id = ?'; 1880 $point = $objQuery->getone($sql, array($arrOrderOld['customer_id'])); 1881 // 変更後のポイントがマイナスの場合、 1882 if ($point < 0) { 1883 // ロールバック 1884 $objQuery->rollback(); 1885 // エラー 1886 SC_Utils_Ex::sfDispSiteError(LACK_POINT); 1887 } 1888 } 1889 } 1890 } 1891 1892 // ▼受注テーブルの更新 1893 $sqlval = array(); 1894 if (USE_POINT !== false) { 1895 if (!is_null($newAddPoint)) { 1896 $sqlval['add_point'] = $newAddPoint; 1897 } 1898 if (!is_null($newUsePoint)) { 1899 $sqlval['use_point'] = $newUsePoint; 1900 } 1901 } 1902 // ステータスが発送済みに変更の場合、発送日を更新 1903 if ($arrOrderOld['status'] != ORDER_DELIV && $newStatus == ORDER_DELIV) { 1904 $sqlval['commit_date'] = 'Now()'; 1905 } 1906 $sqlval['status'] = $newStatus; 1907 $sqlval['update_date'] = 'Now()'; 1908 1909 $objQuery->update('dtb_order', $sqlval, 'order_id = ?', array($orderId)); 1910 // ▲受注テーブルの更新 1911 } 1818 1912 } 1819 1913 ?> -
branches/comu-ver2/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
r18089 r18100 154 154 if(count($this->arrErr) == 0) { 155 155 if ($_POST['mode'] == 'add') { 156 $order_id = $this->lfRegistNewData();157 158 $this->tpl_order_id = $order_id;159 $this->tpl_mode = 'edit';160 161 $arrData['order_id'] = $order_id;162 $this->objFormParam->setParam($arrData);156 $order_id = $this->lfRegistNewData(); 157 158 $this->tpl_order_id = $order_id; 159 $this->tpl_mode = 'edit'; 160 161 $arrData['order_id'] = $order_id; 162 $this->objFormParam->setParam($arrData); 163 163 164 164 $text = "'新規受注を登録しました。'"; … … 523 523 #} 524 524 } 525 /* DB登録処理 */ 525 526 /** 527 * DB更新処理 528 * 529 * @param integer $order_id 注文番号 530 * @return void 531 */ 526 532 function lfRegistData($order_id) { 527 533 $objQuery = new SC_Query(); … … 530 536 531 537 // 入力データを渡す。 532 $arrRet = 533 foreach ($arrRet as $key => $val) {538 $arrRet = $this->objFormParam->getHashArray(); 539 foreach ($arrRet as $key => $val) { 534 540 // 配列は登録しない 535 if (!is_array($val)) {541 if (!is_array($val)) { 536 542 $sqlval[$key] = $val; 537 543 } 538 544 } 545 $sqlval['update_date'] = 'Now()'; 539 546 540 547 unset($sqlval['total_point']); 541 548 unset($sqlval['point']); 549 unset($sqlval['commit_date']); 542 550 543 551 $where = "order_id = ?"; 544 552 545 // 受注 ステータスの判定546 if ($sqlval['status'] == ODERSTATUS_COMMIT) {547 // 受注テーブルの発送済み日を更新する548 $sqlval['commit_date'] = "Now()";549 }553 // 受注.対応状況の更新 554 SC_Helper_DB_Ex::sfUpdateOrderStatus($order_id, $sqlval['status'], $sqlval['add_point'], $sqlval['use_point']); 555 unset($sqlval['status']); 556 unset($sqlval['add_point']); 557 unset($sqlval['use_point']); 550 558 551 559 // 受注テーブルの更新 … … 553 561 554 562 // 受注テーブルの名称列を更新 555 $objDb = new SC_Helper_DB_Ex(); 556 $objDb->sfUpdateOrderNameCol($order_id); 563 SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id); 557 564 558 565 // 受注詳細データの更新 … … 561 568 562 569 $max = count($arrDetail); 563 for ($i = 0; $i < $max; $i++) {570 for ($i = 0; $i < $max; $i++) { 564 571 $sqlval = array(); 565 572 $sqlval['order_id'] = $order_id; … … 580 587 } 581 588 582 /* DB登録処理(追加) */ 589 /** 590 * DB登録処理 591 * 592 * @return integer 注文番号 593 */ 583 594 function lfRegistNewData() { 584 595 $objQuery = new SC_Query(); … … 588 599 // 入力データを渡す。 589 600 $arrRet = $this->objFormParam->getHashArray(); 590 foreach ($arrRet as $key => $val) {601 foreach ($arrRet as $key => $val) { 591 602 // 配列は登録しない 592 if (!is_array($val)) {603 if (!is_array($val)) { 593 604 $sqlval[$key] = $val; 594 605 } 595 606 } 596 $sqlval['create_date'] = "Now()"; 597 598 // 注文ステータス:指定が無ければ新規受付に設定 599 if($sqlval["status"] == ""){ 600 $sqlval['status'] = '1'; 601 } 602 603 // customer_id 604 if($sqlval["customer_id"] == ""){ 605 $sqlval['customer_id'] = '0'; 606 } 607 607 608 // 受注テーブルに書き込まない列を除去 608 609 unset($sqlval['order_id']); 609 610 unset($sqlval['total_point']); 610 611 unset($sqlval['point']); 611 612 $where = "order_id = ?"; 613 614 // 受注ステータスの判定 615 if ($sqlval['status'] == ODERSTATUS_COMMIT) { 616 // 受注テーブルの発送済み日を更新する 617 $sqlval['commit_date'] = "Now()"; 618 } 612 unset($sqlval['commit_date']); 613 614 // ポイントは別登録 615 $addPoint = $sqlval['add_point']; 616 $usePoint = $sqlval['use_point']; 617 $sqlval['add_point'] = 0; 618 $sqlval['use_point'] = 0; 619 620 // 注文ステータス:指定が無ければ新規受付に設定 621 if (strlen($sqlval['status']) == 0) { 622 $sqlval['status'] = ORDER_NEW; 623 } 624 // customer_id 625 if ($sqlval["customer_id"] == "") { 626 $sqlval['customer_id'] = '0'; 627 } 628 629 $sqlval['create_date'] = 'Now()'; // 受注日 630 $sqlval['update_date'] = 'Now()'; // 更新日時 619 631 620 632 // 受注テーブルの登録 … … 622 634 $order_id = $objQuery->currval('dtb_order', 'order_id'); 623 635 636 // 受注.対応状況の更新 637 SC_Helper_DB_Ex::sfUpdateOrderStatus($order_id, null, $addPoint, $usePoint); 638 624 639 // 受注テーブルの名称列を更新 625 $objDb = new SC_Helper_DB_Ex(); 626 $objDb->sfUpdateOrderNameCol($order_id); 640 SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id); 627 641 628 642 // 受注詳細データの更新 629 643 $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 630 $objQuery->delete("dtb_order_detail", $where, array($order_id));644 $objQuery->delete("dtb_order_detail", 'order_id = ?', array($order_id)); 631 645 632 646 $max = count($arrDetail); 633 for ($i = 0; $i < $max; $i++) {647 for ($i = 0; $i < $max; $i++) { 634 648 $sqlval = array(); 635 649 $sqlval['order_id'] = $order_id; … … 646 660 $objQuery->insert("dtb_order_detail", $sqlval); 647 661 } 662 648 663 $objQuery->commit(); 649 664 -
branches/comu-ver2/data/class/pages/admin/order/LC_Page_Admin_Order_Status.php
r18099 r18100 64 64 $objSess = new SC_Session(); 65 65 $objDb = new SC_Helper_DB_Ex(); 66 $objQuery = new SC_Query();67 66 68 67 // 認証可否の判定 … … 82 81 case 'update': 83 82 if (!isset($_POST['change_status'])) $_POST['change_status'] = ""; 84 if (!empty($_POST['change_status'])) { 85 $this->lfStatusMove($_POST['change_status'], $_POST['move']); 83 84 switch ($_POST['change_status']) { 85 case '': 86 break; 87 88 // 削除 89 case 'delete': 90 $this->lfDelete($_POST['move']); 91 break; 92 93 // 更新 94 default: 95 $this->lfStatusMove($_POST['change_status'], $_POST['move']); 96 break; 86 97 } 98 87 99 //ステータス情報 88 100 $status = isset($_POST['status']) ? $_POST['status'] : ""; … … 151 163 } 152 164 153 //ステータス情報の更新(削除) 154 function lfStatusMove($status_id, $arrMove){ 165 /** 166 * ステータス情報の更新 167 */ 168 function lfStatusMove($statusId, $arrOrderId) { 155 169 $objQuery = new SC_Query(); 170 171 if (!isset($arrOrderId) || !is_array($arrOrderId)) { 172 return false; 173 } 156 174 $masterData = new SC_DB_MasterData_Ex(); 157 175 $arrORDERSTATUS = $masterData->getMasterData("mtb_order_status"); 158 159 $table = 'dtb_order'; 160 $where = 'order_id = ?'; 161 $arrUpdate = array('update_date' => 'NOW()'); 162 163 $delflg = '1'; // 削除フラグ 164 $message = ''; // ステータス変更後にポップアップするメッセージの内容 165 166 if ( $status_id == 'delete' ) { 167 $arrUpdate['del_flg'] = $delflg; 168 $message = '削除'; 169 } 170 // ステータスが発送済みの時は発送日を更新 171 elseif ( $status_id == ORDER_DELIV ) { 172 $arrUpdate['status'] = $status_id; 173 $arrUpdate['commit_date'] = 'NOW()'; 174 $message = $arrORDERSTATUS[$status_id] . 'へ移動'; 175 } 176 else { 177 $arrUpdate['status'] = $status_id; 178 $message = $arrORDERSTATUS[$status_id] . 'へ移動'; 179 } 180 181 if ( isset($arrMove) ){ 182 foreach ( $arrMove as $val ){ 183 if ( $val != "" ) { 184 $objQuery->update($table, $arrUpdate, $where, array($val)); 185 } 186 187 } 188 } 189 190 $this->tpl_onload = "window.alert('選択項目を" . $message . "しました。');"; 176 177 $objQuery->begin(); 178 179 foreach ($arrOrderId as $orderId) { 180 SC_Helper_DB_Ex::sfUpdateOrderStatus($orderId, $statusId); 181 } 182 183 $objQuery->commit(); 184 185 $this->tpl_onload = "window.alert('選択項目を" . $arrORDERSTATUS[$statusId] . "へ移動しました。');"; 186 return true; 187 } 188 189 /** 190 * 受注テーブルの論理削除 191 */ 192 function lfDelete($arrOrderId) { 193 $objQuery = new SC_Query(); 194 195 if (!isset($arrOrderId) || !is_array($arrOrderId)) { 196 return false; 197 } 198 199 $arrUpdate = array( 200 'del_flg' => 1 201 ,'update_date' => 'Now()' 202 ); 203 204 $objQuery->begin(); 205 206 foreach ($arrOrderId as $orderId) { 207 $objQuery->update('dtb_order', $arrUpdate, 'order_id = ?', array($orderId)); 208 } 209 210 $objQuery->commit(); 211 212 $this->tpl_onload = "window.alert('選択項目を削除しました。');"; 213 return true; 191 214 } 192 215 } -
branches/comu-ver2/data/class/pages/shopping/LC_Page_Shopping_Complete.php
r18099 r18100 435 435 } 436 436 437 // 受注テーブルへ登録 437 /** 438 * 受注テーブルへ登録 439 * 440 * @return integer 注文番号 441 */ 438 442 function lfRegistOrder($objQuery, $arrData, $objCampaignSess = null) { 439 443 $sqlval = $arrData; 440 444 441 445 // 受注テーブルに書き込まない列を除去 442 unset($sqlval['mailmaga_flg']); // メルマガチェック 443 unset($sqlval['deliv_check']); // 別のお届け先チェック 444 unset($sqlval['point_check']); // ポイント利用チェック 445 unset($sqlval['member_check']); // 購入時会員チェック 446 unset($sqlval['password']); // ログインパスワード 447 unset($sqlval['reminder']); // リマインダー質問 448 unset($sqlval['reminder_answer']); // リマインダー答え 449 unset($sqlval['mail_flag']); // メールフラグ 450 unset($sqlval['session']); // セッション情報 446 unset($sqlval['mailmaga_flg']); // メルマガチェック 447 unset($sqlval['deliv_check']); // 別のお届け先チェック 448 unset($sqlval['point_check']); // ポイント利用チェック 449 unset($sqlval['member_check']); // 購入時会員チェック 450 unset($sqlval['password']); // ログインパスワード 451 unset($sqlval['reminder']); // リマインダー質問 452 unset($sqlval['reminder_answer']); // リマインダー答え 453 unset($sqlval['mail_flag']); // メールフラグ 454 unset($sqlval['session']); // セッション情報 455 456 // ポイントは別登録 457 $addPoint = $sqlval['add_point']; 458 $usePoint = $sqlval['use_point']; 459 $sqlval['add_point'] = 0; 460 $sqlval['use_point'] = 0; 451 461 452 462 // 注文ステータス:指定が無ければ新規受付に設定 453 if ($sqlval["status"] == ""){454 $sqlval['status'] = '1';463 if (strlen($sqlval['status']) == 0) { 464 $sqlval['status'] = ORDER_NEW; 455 465 } 456 466 457 467 // 別のお届け先を指定していない場合、配送先に登録住所をコピーする。 458 if ($arrData["deliv_check"] == "-1") {468 if ($arrData["deliv_check"] == "-1") { 459 469 $sqlval['deliv_name01'] = $arrData['order_name01']; 460 470 $sqlval['deliv_name02'] = $arrData['order_name02']; … … 471 481 } 472 482 473 $order_id = $arrData['order_id']; // 注文番号 474 $sqlval['create_date'] = 'now()'; // 受注日 483 $order_id = $arrData['order_id']; // 注文番号 484 $sqlval['create_date'] = 'Now()'; // 受注日 485 $sqlval['update_date'] = 'Now()'; // 更新日時 475 486 476 487 // キャンペーンID 477 488 if (!defined("MOBILE_SITE")) { 478 if ($objCampaignSess->getIsCampaign()) $sqlval['campaign_id'] = $objCampaignSess->getCampaignId();489 if ($objCampaignSess->getIsCampaign()) $sqlval['campaign_id'] = $objCampaignSess->getCampaignId(); 479 490 } 480 491 … … 482 493 //$sqlval = lfGetInsParam($sqlval); 483 494 484 // INSERTの実行495 // 受注テーブルの登録 485 496 $objQuery->insert("dtb_order", $sqlval); 497 498 // 受注.対応状況の更新 499 SC_Helper_DB_Ex::sfUpdateOrderStatus($order_id, null, $addPoint, $usePoint); 486 500 487 501 return $order_id; … … 547 561 548 562 $sqlval = $arrOrder[0]; 549 $sqlval['create_date'] = ' now()';563 $sqlval['create_date'] = 'Now()'; 550 564 551 565 // INSERTの実行 … … 619 633 /* 購入情報を会員テーブルに登録する */ 620 634 function lfSetCustomerPurchase($customer_id, $arrData, &$objQuery) { 621 $col = "first_buy_date, last_buy_date, buy_times, buy_total , point";635 $col = "first_buy_date, last_buy_date, buy_times, buy_total"; 622 636 $where = "customer_id = ?"; 623 637 $arrRet = $objQuery->select($col, "dtb_customer", $where, array($customer_id)); … … 630 644 $sqlval['buy_times']++; 631 645 $sqlval['buy_total']+= $arrData['total']; 632 $sqlval['point'] = ($sqlval['point'] + $arrData['add_point'] - $arrData['use_point']);633 634 // ポイントが不足している場合635 if($sqlval['point'] < 0) {636 $objQuery->rollback();637 SC_Utils_Ex::sfDispSiteError(LACK_POINT);638 }639 646 640 647 $objQuery->update("dtb_customer", $sqlval, $where, array($customer_id)); -
branches/comu-ver2/data/class/util/SC_Utils.php
r18052 r18100 2062 2062 print("<strong>**デバッグ中**</strong></div>\n"); 2063 2063 } 2064 2065 /** 2066 * ポイント加算するかの判定 2067 * 2068 * @param integer $status 対応状況 2069 * @return boolean 加算するか 2070 */ 2071 function sfIsAddPoint($status) { 2072 switch ($status) { 2073 case ORDER_NEW: // 新規注文 2074 case ORDER_PAY_WAIT: // 入金待ち 2075 case ORDER_PRE_END: // 入金済み 2076 case ORDER_CANCEL: // キャンセル 2077 case ORDER_BACK_ORDER: // 取り寄せ中 2078 return false; 2079 2080 case ORDER_DELIV: // 発送済み 2081 return true; 2082 2083 default: 2084 break; 2085 } 2086 2087 return false; 2088 } 2064 2089 } 2065 2090 ?>
Note: See TracChangeset
for help on using the changeset viewer.