/** * @param SC_FormParam $objFormParam */ public function lfRegistDataNonMember($objFormParam) { $arrRegistColumn = $objFormParam->getDbArray(); foreach ($arrRegistColumn as $key => $val) { $arrRegist['shipping_' . $key] = $val; } if (count($_SESSION['shipping']) >= DELIV_ADDR_MAX) { SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, '', false, '別のお届け先最大登録数に達しています。'); } else { $_SESSION['shipping'][] = $arrRegist; } }
/** * DB更新処理 * * @param integer $order_id 受注ID * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param string $message 通知メッセージ * @param array $arrValuesBefore 更新前の受注情報 * @return integer $order_id 受注ID * * エラー発生時は負数を返す。 */ function doRegister($order_id, &$objPurchase, &$objFormParam, &$message, &$arrValuesBefore) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrValues = $objFormParam->getDbArray(); $where = 'order_id = ?'; $objQuery->begin(); // 支払い方法が変更されたら、支払い方法名称も更新 if ($arrValues['payment_id'] != $arrValuesBefore['payment_id']) { $arrValues['payment_method'] = $this->arrPayment[$arrValues['payment_id']]; $arrValuesBefore['payment_id'] = NULL; } // 受注テーブルの更新 $order_id = $objPurchase->registerOrder($order_id, $arrValues); $arrDetail = $objFormParam->getSwapArray(array('product_id', 'product_class_id', 'product_code', 'product_name', 'price', 'quantity', 'point_rate', 'classcategory_name1', 'classcategory_name2')); // 変更しようとしている商品情報とDBに登録してある商品情報を比較することで、更新すべき数量を計算 $max = count($arrDetail); $k = 0; $arrStockData = array(); for ($i = 0; $i < $max; $i++) { if (!empty($arrDetail[$i]['product_id'])) { $arrPreDetail = $objQuery->select('*', 'dtb_order_detail', 'order_id = ? AND product_class_id = ?', array($order_id, $arrDetail[$i]['product_class_id'])); if (!empty($arrPreDetail) && $arrPreDetail[0]['quantity'] != $arrDetail[$i]['quantity']) { // 数量が変更された商品 $arrStockData[$k]['product_class_id'] = $arrDetail[$i]['product_class_id']; $arrStockData[$k]['quantity'] = $arrPreDetail[0]['quantity'] - $arrDetail[$i]['quantity']; ++$k; } elseif (empty($arrPreDetail)) { // 新しく追加された商品 もしくは 違う商品に変更された商品 $arrStockData[$k]['product_class_id'] = $arrDetail[$i]['product_class_id']; $arrStockData[$k]['quantity'] = -$arrDetail[$i]['quantity']; ++$k; } $objQuery->delete('dtb_order_detail', 'order_id = ? AND product_class_id = ?', array($order_id, $arrDetail[$i]['product_class_id'])); } } // 上記の新しい商品のループでDELETEされなかった商品は、注文より削除された商品 $arrPreDetail = $objQuery->select('*', 'dtb_order_detail', 'order_id = ?', array($order_id)); foreach ($arrPreDetail as $key => $val) { $arrStockData[$k]['product_class_id'] = $val['product_class_id']; $arrStockData[$k]['quantity'] = $val['quantity']; ++$k; } // 受注詳細データの更新 $objPurchase->registerOrderDetail($order_id, $arrDetail); // 在庫数調整 if (ORDER_DELIV != $arrValues['status'] && ORDER_CANCEL != $arrValues['status']) { foreach ($arrStockData as $stock) { $objQuery->update('dtb_products_class', array(), 'product_class_id = ?', array($stock['product_class_id']), array('stock' => 'stock + ?'), array($stock['quantity'])); } } $arrAllShipping = $objFormParam->getSwapArray($this->arrShippingKeys); $arrAllShipmentItem = $objFormParam->getSwapArray($this->arrShipmentItemKeys); $arrDelivTime = $objPurchase->getDelivTime($objFormParam->getValue('deliv_id')); $arrShippingValues = array(); foreach ($arrAllShipping as $shipping_index => $arrShipping) { $shipping_id = $arrShipping['shipping_id']; $arrShippingValues[$shipping_index] = $arrShipping; $arrShippingValues[$shipping_index]['shipping_date'] = SC_Utils_Ex::sfGetTimestamp($arrShipping['shipping_date_year'], $arrShipping['shipping_date_month'], $arrShipping['shipping_date_day']); // 配送業者IDを取得 $arrShippingValues[$shipping_index]['deliv_id'] = $objFormParam->getValue('deliv_id'); // お届け時間名称を取得 $arrShippingValues[$shipping_index]['shipping_time'] = $arrDelivTime[$arrShipping['time_id']]; // 複数配送の場合は配送商品を登録 if (!SC_Utils_Ex::isBlank($arrAllShipmentItem)) { $arrShipmentValues = array(); foreach ($arrAllShipmentItem[$shipping_index] as $key => $arrItem) { $i = 0; foreach ($arrItem as $item) { $arrShipmentValues[$shipping_index][$i][str_replace('shipment_', '', $key)] = $item; $i++; } } $objPurchase->registerShipmentItem($order_id, $shipping_id, $arrShipmentValues[$shipping_index]); } } $objPurchase->registerShipping($order_id, $arrShippingValues, false); $objQuery->commit(); return $order_id; }
/** * レビュー情報の更新 * * @param integer $review_id レビューID * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfRegistReviewData($review_id, &$objFormParam) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrValues = $objFormParam->getDbArray(); $arrValues['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery->update('dtb_review', $arrValues, 'review_id = ?', array($review_id)); }
/** * データの一時登録を行う. * * 非会員向けの処理 * @param integer $uniqid 受注一時テーブルのユニークID * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス * @param SC_Customer $objCustomer SC_Customer インスタンス * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param boolean $isMultiple 複数配送の場合 true */ function lfRegistData($uniqid, &$objPurchase, &$objCustomer, &$objFormParam, $isMultiple = false) { $arrParams = $objFormParam->getHashArray(); // 注文者をお届け先とする配列を取得 $arrShippingOwn = array(); $objPurchase->copyFromOrder($arrShippingOwn, $arrParams); // 都度入力されたお届け先 $arrShipping = $objPurchase->extractShipping($arrParams); if ($isMultiple) { $objPurchase->unsetOneShippingTemp(0); $objPurchase->unsetOneShippingTemp(1); $objPurchase->saveShippingTemp($arrShippingOwn, 0); if ($arrParams['deliv_check'] == '1') { $objPurchase->saveShippingTemp($arrShipping, 1); } } else { $objPurchase->unsetAllShippingTemp(true); if ($arrParams['deliv_check'] == '1') { $objPurchase->saveShippingTemp($arrShipping, 1); } else { $objPurchase->saveShippingTemp($arrShippingOwn, 0); } } $arrValues = $objFormParam->getDbArray(); // 登録データの作成 $arrValues['order_birth'] = SC_Utils_Ex::sfGetTimestamp($arrParams['year'], $arrParams['month'], $arrParams['day']); $arrValues['update_date'] = 'CURRENT_TIMESTAMP'; $arrValues['customer_id'] = '0'; $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer); }
/** * メルマガテンプレートデータの登録・更新を行う * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param integer template_id 更新時は指定 * @return void */ function lfRegistData(&$objFormParam, $template_id = null) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $sqlval = $objFormParam->getDbArray(); $sqlval['creator_id'] = $_SESSION['member_id']; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; if (SC_Utils_Ex::sfIsInt($template_id)) { // 更新時 $objQuery->update('dtb_mailmaga_template', $sqlval, 'template_id = ?', array($template_id)); } else { // 新規登録時 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $sqlval['template_id'] = $objQuery->nextVal('dtb_mailmaga_template_template_id'); $objQuery->insert('dtb_mailmaga_template', $sqlval); } }
/** * 会員情報を登録する * * @param SC_FormParam $objFormParam * @param mixed $customer_id * @access private * @return void */ public function lfRegistCustomerData(&$objFormParam, $customer_id) { $arrRet = $objFormParam->getHashArray(); $sqlval = $objFormParam->getDbArray(); $sqlval['birth'] = SC_Utils_Ex::sfGetTimestamp($arrRet['year'], $arrRet['month'], $arrRet['day']); SC_Helper_Customer_Ex::sfEditCustomerData($sqlval, $customer_id); }
/** * データの一時登録を行う. * * @param integer $uniqid 受注一時テーブルのユニークID * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス * @param SC_Customer $objCustomer SC_Customer インスタンス * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param boolean $isMultiple 複数配送の場合 true */ function lfRegistData($uniqid, &$objPurchase, &$objCustomer, &$objFormParam, $isMultiple = false) { $arrParams = $objFormParam->getHashArray(); $arrValues = $objFormParam->getDbArray(); // 登録データの作成 $arrValues['order_birth'] = SC_Utils_Ex::sfGetTimestamp($arrParams['year'], $arrParams['month'], $arrParams['day']); $arrValues['update_date'] = 'CURRENT_TIMESTAMP'; $arrValues['customer_id'] = '0'; // お届け先を指定しない場合、 if ($arrParams['deliv_check'] != '1') { // order_* を shipping_* へコピー $objPurchase->copyFromOrder($arrValues, $arrParams); } /* * order_* と shipping_* をそれぞれ $_SESSION['shipping'][$shipping_id] * に, shipping_* というキーで保存 */ foreach ($arrValues as $key => $val) { if (preg_match('/^order_/', $key)) { $arrOrder['shipping_' . str_replace('order_', '', $key)] = $val; } elseif (preg_match('/^shipping_/', $key)) { $arrShipping[$key] = $val; } } if ($isMultiple) { $objPurchase->saveShippingTemp($arrOrder, 0); if ($arrParams['deliv_check'] == '1') { $objPurchase->saveShippingTemp($arrShipping, 1); } } else { if ($arrParams['deliv_check'] == '1') { $objPurchase->saveShippingTemp($arrShipping, 0); } else { $objPurchase->saveShippingTemp($arrOrder, 0); } } $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer); }
/** * 会員登録に必要なSQLパラメーターの配列を生成する. * * フォームに入力された情報を元に, SQLパラメーターの配列を生成する. * モバイル端末の場合は, email を email_mobile にコピーし, * mobile_phone_id に携帯端末IDを格納する. * * @param SC_FormParam $objFormParam * @access private * @return $arrResults */ public function lfMakeSqlVal(&$objFormParam) { $arrForm = $objFormParam->getHashArray(); $arrResults = $objFormParam->getDbArray(); // 生年月日の作成 $arrResults['birth'] = SC_Utils_Ex::sfGetTimestamp($arrForm['year'], $arrForm['month'], $arrForm['day']); // 仮会員 1 本会員 2 $arrResults['status'] = CUSTOMER_CONFIRM_MAIL == true ? '1' : '2'; /* * secret_keyは、テーブルで重複許可されていない場合があるので、 * 本会員登録では利用されないがセットしておく。 */ $arrResults['secret_key'] = SC_Helper_Customer_Ex::sfGetUniqSecretKey(); // 入会時ポイント $CONF = SC_Helper_DB_Ex::sfGetBasisData(); $arrResults['point'] = $CONF['welcome_point']; if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { // 携帯メールアドレス $arrResults['email_mobile'] = $arrResults['email']; // PHONE_IDを取り出す $arrResults['mobile_phone_id'] = SC_MobileUserAgent_Ex::getId(); } return $arrResults; }
protected function doRegister($order_id, SC_Helper_Purchase &$objPurchase, SC_FormParam &$objFormParam, &$message, &$arrValuesBefore) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrValues = $objFormParam->getDbArray(); $objQuery->begin(); // 支払い方法(固定) $arrValues['payment_method'] = 'ポイント購入'; // 購入時情報を付与 $arrValues["add_point"] = 0; $arrValues["carrier"] = $_SESSION["customer"]["carrier"]; $arrValues["useragent"] = $_SERVER["HTTP_USER_AGENT"]; // 受注テーブルの更新 $order_id = $objPurchase->registerOrder($order_id, $arrValues); $arrDetail = $objFormParam->getHashArray(); $arrDetail = $objQuery->extractOnlyColsOf("dtb_order_detail", $arrDetail); array_walk($arrDetail, function ($v, $k) use(&$arrDetail) { if (is_array($v)) { $arrDetail[$k] = array_shift($v); } else { $arrDetail[$k] = $v; } }); $arrDetail = array(0 => $arrDetail); // 受注詳細データの更新 $objPurchase->registerOrderDetail($order_id, $arrDetail); $objQuery->commit(); if ($order_id > 0) { $objPurchase->sfUpdateOrderStatus($order_id, ORDER_PRE_END, 0, $objFormParam->getValue("use_point")); } else { $this->order_id = $order_id; GC_Utils_Ex::gfPrintLog(print_r($objFormParam->getHashArray(), true), ERROR_LOG_REALFILE); SC_Utils_Ex::sfDispSiteError(CANCEL_PURCHASE); } return $order_id; }
function doEdit(SC_Query $objQuery, SC_FormParam &$objFormParam) { if (is_array($this->arrErr)) { $this->arrErr = array_filter($this->arrErr); if (count($this->arrErr)) { GC_Utils_Ex::gfPrintLog(print_r($this->arrErr, TRUE), ERROR_LOG_REALFILE); return; } } $this->arrErr = $objFormParam->checkError(); if (!SC_Utils_Ex::isBlank($this->arrErr)) { return; } $device_id = $objFormParam->getValue("device_id"); $sqldata = $objFormParam->getDbArray(); $arrDateColumn = $this->ARR_DATE_COLUMN; foreach ($arrDateColumn as $column) { $date_keys = $this->date_keys($column); $date = $objFormParam->getHashArray(array_values($date_keys)); $date = array_map("intval", $date); if (checkdate($date[$date_keys["month"]], $date[$date_keys["day"]], $date[$date_keys["year"]])) { $sqldata[$column] = SC_Utils_Ex::sfGetTimestamp($date[$date_keys["year"]], $date[$date_keys["month"]], $date[$date_keys["day"]], FALSE); } } $has_insert = false; $sqldata["update_date"] = "CURRENT_TIMESTAMP"; $device_id = intval($device_id); if ($device_id == 0) { $sqldata["device_id"] = $objQuery->nextVal("cp_dtb_device_device_id"); $sqldata["create_date"] = "CURRENT_TIMESTAMP"; $sqldata["del_flg"] = 0; $objQuery->insert("cp_dtb_device", $sqldata); $device_id = $sqldata["device_id"]; // 端末情報初期設定 $objFormParam->addParam("edit_device_id", "edit_device_id"); $objFormParam->setValue("edit_device_id", $device_id); $has_insert = true; } else { $sqldata["update_date"] = "CURRENT_TIMESTAMP"; $objQuery->update("cp_dtb_device", $sqldata, "device_id=?", (array) $device_id); $objQuery->delete("cp_dtb_device_categories", "device_id=?", (array) $device_id); } $form = $objFormParam->getHashArray(array("category_id")); if (is_array($form["category_id"]) && count($form["category_id"])) { foreach ($form["category_id"] as $category_id) { $sqldata = compact("category_id", "device_id"); $objQuery->insert("cp_dtb_device_categories", $sqldata); } if ($has_insert) { // 初回登録時のみ $this->doProductSupportinitial($objQuery, $objFormParam); } } $this->tpl_onload = "eccube.setValueAndSubmit('search_form', 'mode', 'return');"; return $device_id; }