コード例 #1
0
 /**
  * 受注登録を完了する.
  *
  * 引数の受注情報を受注テーブル及び受注詳細テーブルに登録する.
  * 登録後, 受注一時テーブルに削除フラグを立てる.
  *
  * @param array          $orderParams    登録する受注情報の配列
  * @param SC_CartSession $objCartSession カート情報のインスタンス
  * @param integer        $cartKey        登録を行うカート情報のキー
  * @param integer 受注ID
  */
 public function registerOrderComplete($orderParams, &$objCartSession, $cartKey)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     // 不要な変数を unset
     $unsets = array('mailmaga_flg', 'deliv_check', 'point_check', 'password', 'reminder', 'reminder_answer', 'mail_flag', 'session');
     foreach ($unsets as $unset) {
         unset($orderParams[$unset]);
     }
     // 対応状況の指定が無い場合は新規受付
     if (SC_Utils_Ex::isBlank($orderParams['status'])) {
         $orderParams['status'] = ORDER_NEW;
     }
     $orderParams['del_flg'] = '0';
     $orderParams['create_date'] = 'CURRENT_TIMESTAMP';
     $orderParams['update_date'] = 'CURRENT_TIMESTAMP';
     $this->registerOrder($orderParams['order_id'], $orderParams);
     // 詳細情報を取得
     $cartItems = $objCartSession->getCartList($cartKey, $orderParams['order_pref'], $orderParams['order_country_id']);
     // 詳細情報を生成
     $objProduct = new SC_Product_Ex();
     $i = 0;
     $arrDetail = array();
     foreach ($cartItems as $item) {
         $p =& $item['productsClass'];
         $arrDetail[$i]['order_id'] = $orderParams['order_id'];
         $arrDetail[$i]['product_id'] = $p['product_id'];
         $arrDetail[$i]['product_class_id'] = $p['product_class_id'];
         $arrDetail[$i]['product_name'] = $p['name'];
         $arrDetail[$i]['product_code'] = $p['product_code'];
         $arrDetail[$i]['classcategory_name1'] = $p['classcategory_name1'];
         $arrDetail[$i]['classcategory_name2'] = $p['classcategory_name2'];
         $arrDetail[$i]['point_rate'] = $item['point_rate'];
         $arrDetail[$i]['price'] = $item['price'];
         $arrDetail[$i]['quantity'] = $item['quantity'];
         $arrDetail[$i]['tax_rate'] = $item['tax_rate'];
         $arrDetail[$i]['tax_rule'] = $item['tax_rule'];
         $arrDetail[$i]['tax_adjuts'] = $item['tax_adjust'];
         // 在庫の減少処理
         if (!$objProduct->reduceStock($p['product_class_id'], $item['quantity'])) {
             $objQuery->rollback();
             SC_Utils_Ex::sfDispSiteError(SOLD_OUT, '', true);
         }
         $i++;
     }
     $this->registerOrderDetail($orderParams['order_id'], $arrDetail);
     $objQuery->update('dtb_order_temp', array('del_flg' => 1), 'order_temp_id = ?', array(SC_SiteSession_Ex::getUniqId()));
     return $orderParams['order_id'];
 }