/** * 受注登録を完了する. * * 引数の受注情報を受注テーブル及び受注詳細テーブルに登録する. * 登録後, 受注一時テーブルに削除フラグを立てる. * * @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']; }