Changeset 20167
- Timestamp:
- 2011/02/15 16:43:52 (13 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:20166
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/class/SC_Query.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Query.php
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php 15123@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fdb%2Fdbfactory%2FSC_DB_DBFactory_MYSQL.php
data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php 15123@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fdb%2Fdbfactory%2FSC_DB_DBFactory_PGSQL.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/helper/SC_Helper_Purchase.php sc_helper_purchase.p-20101020100530-jyaoa7ch9pdfjqzp-1
data/class/pages/mypage/LC_Page_Mypage_History.php 16102@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fmypage%2FLC_Page_Mypage_History.php
data/plugin/bingo/SC_Plugin_bingo.php 19521@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcamp%2Fcamp-2_5-E%2Fdata%2Fplugin%2Fbingo%2FSC_Plugin_bingo.php- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20110215074339-73417ne1tgkich66
- bzr:revno:
- 2895
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-revisions:
data/class/SC_Query.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l
data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l
data/class/helper/SC_Helper_DB.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l
data/class/helper/SC_Helper_Purchase.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l
data/class/pages/mypage/LC_Page_Mypage_History.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l
data/plugin/bingo/SC_Plugin_bingo.php ohkouchi@loop-az.jp-20110215074124-badwi2srn94are2l- bzr:timestamp:
- 2011-02-15 16:43:39.124000072 +0900
- bzr:user-agent:
- bzr2.2.1+bzr-svn1.0.4
- svn:original-date:
- 2011-02-15T07:43:39.124000Z
- Location:
- branches/version-2_5-dev/data
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/SC_Query.php
r20039 r20167 838 838 839 839 /** 840 * パラメータの連想配列から, テーブルに存在する列のみを取得する. 841 * 842 * @param string $table テーブル名 843 * @param array ブレースホルダの連想配列 844 * @return array テーブルに存在する列のみ抽出した連想配列 845 */ 846 function extractOnlyColsOf($table, $arrParams) { 847 $arrCols = $this->listTableFields($table); 848 $arrResults = array(); 849 foreach ($arrParams as $key => $val) { 850 if (in_array($key, $arrCols)) { 851 $arrResults[$key] = $val; 852 } 853 } 854 return $arrResults; 855 } 856 857 /** 840 858 * プリペアドステートメントを構築する. 841 859 * -
branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
r20129 r20167 144 144 * @return string 検索条件の SQL 145 145 */ 146 function getDownloadableDaysWhereSql( ) {147 return "(SELECT IF((SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1)=1, 1, DATE(NOW()) <= DATE(DATE_ADD( o.payment_date, INTERVAL (SELECT downloadable_days FROM dtb_baseinfo) DAY))))";146 function getDownloadableDaysWhereSql($dtb_order_alias = 'dtb_order') { 147 return "(SELECT IF((SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1)=1, 1, DATE(NOW()) <= DATE(DATE_ADD(" . $dtb_order_alias . ".payment_date, INTERVAL (SELECT downloadable_days FROM dtb_baseinfo) DAY))))"; 148 148 } 149 149 -
branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
r20129 r20167 122 122 * @return string 検索条件の SQL 123 123 */ 124 function getDownloadableDaysWhereSql( ) {124 function getDownloadableDaysWhereSql($dtb_order_alias = 'dtb_order') { 125 125 $baseinfo = SC_Helper_DB_Ex::sfGetBasisData(); 126 126 //downloadable_daysにNULLが入っている場合(無期限ダウンロード可能時)もあるので、NULLの場合は0日に補正 127 127 $downloadable_days = $baseinfo['downloadable_days']; 128 128 if($downloadable_days ==null || $downloadable_days == "")$downloadable_days=0; 129 return "(SELECT CASE WHEN (SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1) = 1 AND o.payment_date IS NOT NULL THEN 1 WHEN DATE(NOW()) <= DATE(o.payment_date + '". $downloadable_days ." days') THEN 1 ELSE 0 END)";129 return "(SELECT CASE WHEN (SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1) = 1 AND " . $dtb_order_alias . ".payment_date IS NOT NULL THEN 1 WHEN DATE(NOW()) <= DATE(" . $dtb_order_alias . ".payment_date + '". $downloadable_days ." days') THEN 1 ELSE 0 END)"; 130 130 } 131 131 -
branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
r20144 r20167 183 183 184 184 /** 185 * 商品規格情報を取得する.186 *187 * TODO SC_Product クラスへ移動188 *189 * @param array $arrID 規格ID190 * @param boolean $includePrivateProducts 非公開商品を含むか191 * @return array 規格情報の配列192 */193 function sfGetProductsClass($arrID, $includePrivateProducts = false) {194 list($product_id, $classcategory_id1, $classcategory_id2) = $arrID;195 196 if (strlen($classcategory_id1) == 0) {197 $classcategory_id1 = null;198 }199 if (strlen($classcategory_id2) == 0) {200 $classcategory_id2 = null;201 }202 203 // 商品規格取得204 $objProduct = new SC_Product();205 $detail = $objProduct->getDetail($product_id);206 $productsClass = $objProduct->getProductsClassFullByProductId($product_id);207 foreach ($productsClass as $val) {208 209 if ($val['classcategory_id1'] == $classcategory_id1210 && $val['classcategory_id2'] == $classcategory_id2) {211 212 $detail = array_merge($val, $detail);213 if (!$includePrivateProducts) {214 if ($detail['status'] == 1) {215 return $detail;216 }217 }218 return $detail;219 }220 }221 }222 223 /**224 * 支払い方法を取得する.225 *226 * @return void227 */228 function sfGetPayment() {229 $objQuery =& SC_Query::getSingletonInstance();230 // 購入金額が条件額以下の項目を取得231 $where = "del_flg = 0";232 $objQuery->setOrder("fix, rank DESC");233 $arrRet = $objQuery->select("payment_id, payment_method, rule", "dtb_payment", $where);234 return $arrRet;235 }236 237 /**238 * カート内商品の集計処理を行う.239 *240 * 管理機能での利用は想定していないので注意。(非公開商品は除外される。)241 *242 * @param LC_Page $objPage ページクラスのインスタンス243 * @param SC_CartSession $objCartSess カートセッションのインスタンス244 * @param null $dummy1 互換性確保用(決済モジュール互換のため)245 * @return LC_Page 集計処理後のページクラスインスタンス246 *247 * @deprecated SC_CartSession::checkProducts(),248 * SC_CartSession::getAllProductsTotal(),249 * SC_CartSession::getAllProductsTax(),250 * SC_CartSession::getAllProductsPoint() を使用して下さい251 */252 function sfTotalCart(&$objPage, $objCartSess, $dummy1 = null, $key = "") {253 254 $objPage->tpl_total_inctax[$key] = 0; // 費用合計(税込み)255 $objPage->tpl_total_tax[$key] = 0; // 消費税合計256 $objPage->tpl_total_point[$key] = 0; // ポイント合計257 258 $objProduct = new SC_Product();259 // カート内情報の取得260 $arrQuantityInfo_by_product = array();261 $cnt = 0;262 foreach ($objCartSess->getCartList() as $arrCart) {263 // 商品規格情報の取得264 $arrData = $objProduct->getDetailAndProductsClass($arrCart['id']);265 $limit = null;266 // DBに存在する商品267 if (count($arrData) > 0) {268 269 // 購入制限数を求める。270 if ($arrData['stock_unlimited'] != '1' && SC_Utils_Ex::sfIsInt($arrData['sale_limit'])) {271 $limit = min($arrData['sale_limit'], $arrData['stock']);272 } elseif (SC_Utils_Ex::sfIsInt($arrData['sale_limit'])) {273 $limit = $arrData['sale_limit'];274 } elseif ($arrData['stock_unlimited'] != '1') {275 $limit = $arrData['stock'];276 }277 278 if (!is_null($limit) && $arrCart['quantity'] > $limit) {279 if ($limit > 0) {280 // カート内商品数を制限に合わせる281 $objCartSess->setProductValue($arrCart['id'], 'quantity', $limit);282 $quantity = $limit;283 $objPage->tpl_message .= "※「" . $arrData['name'] . "」は販売制限(または在庫が不足)しております。一度に数量{$limit}以上の購入はできません。\n";284 } else {285 // 売り切れ商品をカートから削除する286 $objCartSess->delProduct($arrCart['cart_no']);287 $objPage->tpl_message .= "※「" . $arrData['name'] . "」は売り切れました。\n";288 continue;289 }290 } else {291 $quantity = $arrCart['quantity'];292 }293 294 // (商品規格単位でなく)商品単位での評価のための準備295 $product_id = $arrData['product_id'];296 $arrQuantityInfo_by_product[$product_id]['quantity'] += $quantity;297 $arrQuantityInfo_by_product[$product_id]['sale_limit'] = $arrData['sale_limit'];298 $arrQuantityInfo_by_product[$product_id]['name'] = $arrData['name'];299 300 $objPage->arrProductsClass[$cnt][$key] = $arrData;301 $objPage->arrProductsClass[$cnt]['quantity'][$key] = $quantity;302 $objPage->arrProductsClass[$cnt]['cart_no'][$key] = $arrCart['cart_no'];303 $objPage->arrProductsClass[$cnt]['class_name1'][$key] =304 isset($arrData['class_name1'])305 ? $arrData['class_name1'] : "";306 307 $objPage->arrProductsClass[$cnt]['class_name2'][$key] =308 isset($arrData['class_name2'])309 ? $arrData['class_name2'] : "";310 311 $objPage->arrProductsClass[$cnt]['classcategory_name1'][$key] = $arrData['name1'];312 313 $objPage->arrProductsClass[$cnt]['classcategory_name2'][$key] = $arrData['name2'];314 // 価格の登録315 $objCartSess->setProductValue($arrCart['id'], 'price', $arrData['price02']);316 $objPage->arrProductsClass[$cnt]['uniq_price'][$key] = $arrData['price02'];317 // ポイント付与率の登録318 if (USE_POINT !== false) {319 $objCartSess->setProductValue($arrCart['id'], 'point_rate', $arrData['point_rate']);320 }321 // 商品ごとの合計金額322 $objPage->arrProductsClass[$cnt]['total_inctax'][$key] = $objCartSess->getProductTotal($arrCart['id']);323 // 送料の合計を計算する324 $objPage->tpl_total_deliv_fee[$key] += ($arrData['deliv_fee'] * $arrCart['quantity']);325 $cnt++;326 } else { // DBに商品が見つからない場合、327 $objPage->tpl_message .= "※ 現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。\n";328 // カート商品の削除329 $objCartSess->delProduct($arrCart['cart_no']);330 }331 }332 333 foreach ($arrQuantityInfo_by_product as $product_id => $quantityInfo) {334 if (SC_Utils_Ex::sfIsInt($quantityInfo['sale_limit']) && $quantityInfo['quantity'] > $quantityInfo['sale_limit']) {335 $objPage->tpl_error = "※「{$quantityInfo['name']}」は数量「{$quantityInfo['sale_limit']}」以下に販売制限しております。一度にこれ以上の購入はできません。\n";336 // 販売制限に引っかかった商品をマークする337 foreach (array_keys($objPage->arrProductsClass) as $k) {338 $ProductsClass =& $objPage->arrProductsClass[$k];339 if ($ProductsClass['product_id'] == $product_id) {340 $ProductsClass['error'] = true;341 }342 }343 }344 }345 346 // 全商品合計金額(税込み)347 $objPage->tpl_total_inctax[$key] = $objCartSess->getAllProductsTotal();348 // 全商品合計消費税349 $objPage->tpl_total_tax[$key] = $objCartSess->getAllProductsTax();350 // 全商品合計ポイント351 if (USE_POINT !== false) {352 $objPage->tpl_total_point[$key] = $objCartSess->getAllProductsPoint();353 }354 355 return $objPage;356 }357 358 /**359 * 受注一時テーブルへの書き込み処理を行う.360 *361 * @param string $uniqid ユニークID362 * @param array $sqlval SQLの値の配列363 * @return void364 * @deprecated SC_Helper_Purchase::saveOrderTemp() を使用して下さい365 */366 function sfRegistTempOrder($uniqid, $sqlval) {367 if($uniqid != "") {368 $sqlval['session'] = serialize($_SESSION);369 // 既存データのチェック370 $objQuery =& SC_Query::getSingletonInstance();371 $where = "order_temp_id = ?";372 $cnt = $objQuery->count("dtb_order_temp", $where, array($uniqid));373 // 既存データがない場合374 if ($cnt == 0) {375 // 初回書き込み時に会員の登録済み情報を取り込む376 $sqlval = $this->sfGetCustomerSqlVal($uniqid, $sqlval);377 $sqlval['order_temp_id'] = $uniqid;378 $sqlval['create_date'] = "now()";379 $objQuery->insert("dtb_order_temp", $sqlval);380 } else {381 $objQuery->update("dtb_order_temp", $sqlval, $where, array($uniqid));382 }383 384 // 受注_Tempテーブルの名称列を更新385 // ・決済モジュールに対応するため、static メソッドとして扱う386 //SC_Helper_DB_Ex::sfUpdateOrderNameCol($uniqid, true);387 }388 }389 390 /**391 * 会員情報から SQL文の値を生成する.392 *393 * @param string $uniqid ユニークID394 * @param array $sqlval SQL の値の配列395 * @return array 会員情報を含んだ SQL の値の配列396 * @deprecated SC_Helper_Purchase::copyFromCustomer() を使用して下さい397 */398 function sfGetCustomerSqlVal($uniqid, $sqlval) {399 400 $objCustomer = new SC_Customer();401 // 会員情報登録処理402 if ($objCustomer->isLoginSuccess(true)) {403 // 登録データの作成404 $sqlval['update_date'] = 'Now()';405 $sqlval['customer_id'] = $objCustomer->getValue('customer_id');406 $sqlval['order_name01'] = $objCustomer->getValue('name01');407 $sqlval['order_name02'] = $objCustomer->getValue('name02');408 $sqlval['order_kana01'] = $objCustomer->getValue('kana01');409 $sqlval['order_kana02'] = $objCustomer->getValue('kana02');410 $sqlval['order_sex'] = $objCustomer->getValue('sex');411 $sqlval['order_zip01'] = $objCustomer->getValue('zip01');412 $sqlval['order_zip02'] = $objCustomer->getValue('zip02');413 $sqlval['order_pref'] = $objCustomer->getValue('pref');414 $sqlval['order_addr01'] = $objCustomer->getValue('addr01');415 $sqlval['order_addr02'] = $objCustomer->getValue('addr02');416 $sqlval['order_tel01'] = $objCustomer->getValue('tel01');417 $sqlval['order_tel02'] = $objCustomer->getValue('tel02');418 $sqlval['order_tel03'] = $objCustomer->getValue('tel03');419 if (defined('MOBILE_SITE')) {420 $email_mobile = $objCustomer->getValue('email_mobile');421 if (empty($email_mobile)) {422 $sqlval['order_email'] = $objCustomer->getValue('email');423 } else {424 $sqlval['order_email'] = $email_mobile;425 }426 } else {427 $sqlval['order_email'] = $objCustomer->getValue('email');428 }429 $sqlval['order_job'] = $objCustomer->getValue('job');430 $sqlval['order_birth'] = $objCustomer->getValue('birth');431 }432 return $sqlval;433 }434 435 /**436 185 * 受注番号、最終ポイント、加算ポイント、利用ポイントから「オーダー前ポイント」を取得する 437 186 * … … 1166 915 1167 916 /** 1168 * 受注一時テーブルから情報を取得する.1169 *1170 * @param integer $order_temp_id 受注一時ID1171 * @return array 受注一時情報の配列1172 * @deprecated SC_Helper_Purchase::getOrderTemp() を使用して下さい1173 */1174 function sfGetOrderTemp($order_temp_id) {1175 $objQuery =& SC_Query::getSingletonInstance();1176 $where = "order_temp_id = ?";1177 $arrRet = $objQuery->select("*", "dtb_order_temp", $where, array($order_temp_id));1178 return $arrRet[0];1179 }1180 1181 /**1182 917 * SELECTボックス用リストを作成する. 1183 918 * … … 1449 1184 1450 1185 /** 1451 * FIXME 商品種別からお届け時間を取得する.1452 *1453 * @param integer $productTypeId 商品種別ID1454 * @return array お届け時間の配列1455 * @deprecated SC_Purchase::getDelivTime() を使用して下さい1456 */1457 function sfGetDelivTime($productTypeId) {1458 $objQuery =& SC_Query::getSingletonInstance();1459 1460 $deliv_id = "";1461 $arrRet = array();1462 1463 if($payment_id != "") {1464 $where = "del_flg = 0 AND product_type_id = ?";1465 $arrRet = $objQuery->select("deliv_id", "dtb_payment", $where, array($productTypeId));1466 $deliv_id = $arrRet[0]['deliv_id'];1467 }1468 1469 if($deliv_id != "") {1470 $objQuery->setOrder("time_id");1471 $where = "deliv_id = ?";1472 $arrRet= $objQuery->select("time_id, deliv_time", "dtb_delivtime", $where, array($deliv_id));1473 }1474 1475 return $arrRet;1476 }1477 1478 /**1479 1186 * 都道府県から配送料金を取得する. 1480 1187 * … … 1511 1218 1512 1219 /** 1513 * 集計情報を元に最終計算を行う.1514 *1515 * @param array $arrData 各種情報1516 * @param LC_Page $objPage LC_Page インスタンス1517 * @param SC_CartSession $objCartSess SC_CartSession インスタンス1518 * @param null $dummy1 互換性確保用(決済モジュール互換のため)1519 * @param SC_Customer $objCustomer SC_Customer インスタンス1520 * @return array 最終計算後の配列1521 * @deprecated SC_CartSession::calculate() を使用して下さい1522 */1523 function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $dummy1 = null, $objCustomer = "", $key = "") {1524 // 店舗基本情報を取得する1525 $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();1526 1527 // 未定義変数を定義1528 if (!isset($arrData['deliv_pref'])) $arrData['deliv_pref'] = "";1529 if (!isset($arrData['payment_id'])) $arrData['payment_id'] = "";1530 if (!isset($arrData['charge'])) $arrData['charge'] = "";1531 if (!isset($arrData['use_point'])) $arrData['use_point'] = "";1532 if (!isset($arrData['add_point'])) $arrData['add_point'] = 0;1533 1534 // 税金の取得1535 $arrData['tax'] = $objPage->tpl_total_tax[$key];1536 // 小計の取得1537 $arrData['subtotal'] = $objPage->tpl_total_inctax[$key];1538 1539 // 合計送料の取得1540 $arrData['deliv_fee'] = 0;1541 1542 // 商品ごとの送料が有効の場合1543 if (OPTION_PRODUCT_DELIV_FEE == 1) {1544 // 全商品の合計送料を加算する1545 $this->lfAddAllProductsDelivFee($arrData, $objPage, $objCartSess);1546 }1547 1548 // 配送業者の送料が有効の場合1549 if (OPTION_DELIV_FEE == 1) {1550 // 都道府県、支払い方法から配送料金を加算する1551 // FIXME ここでしか使ってない1552 $this->lfAddDelivFee($arrData);1553 }1554 1555 // 送料無料の購入数が設定されている場合1556 if (DELIV_FREE_AMOUNT > 0) {1557 // 商品の合計数量1558 $total_quantity = $objCartSess->getTotalQuantity(true);1559 1560 if($total_quantity >= DELIV_FREE_AMOUNT) {1561 $arrData['deliv_fee'] = 0;1562 }1563 }1564 1565 // ダウンロード商品のみの場合は送料無料1566 if($this->chkCartDown($objCartSess)==2){1567 $arrData['deliv_fee'] = 0;1568 }1569 1570 // 送料無料条件が設定されている場合1571 if($arrInfo['free_rule'] > 0) {1572 // 小計が無料条件を超えている場合1573 if($arrData['subtotal'] >= $arrInfo['free_rule']) {1574 $arrData['deliv_fee'] = 0;1575 }1576 }1577 1578 // 合計の計算1579 $arrData['total'] = $objPage->tpl_total_inctax[$key]; // 商品合計1580 $arrData['total']+= $arrData['deliv_fee']; // 送料1581 $arrData['total']+= $arrData['charge']; // 手数料1582 // お支払い合計1583 $arrData['payment_total'] = $arrData['total'] - ($arrData['use_point'] * POINT_VALUE);1584 // 加算ポイントの計算1585 if (USE_POINT !== false) {1586 $arrData['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($objPage->tpl_total_point[$key], $arrData['use_point']);1587 1588 if($objCustomer != "") {1589 // 誕生日月であった場合1590 if($objCustomer->isBirthMonth()) {1591 $arrData['birth_point'] = BIRTH_MONTH_POINT;1592 $arrData['add_point'] += $arrData['birth_point'];1593 }1594 }1595 }1596 1597 if($arrData['add_point'] < 0) {1598 $arrData['add_point'] = 0;1599 }1600 return $arrData;1601 }1602 1603 /**1604 1220 * レコードの存在チェックを行う. 1221 * 1222 * TODO SC_Query に移行するべきか? 1605 1223 * 1606 1224 * @param string $table テーブル名 … … 1733 1351 1734 1352 /** 1735 * 全商品の合計送料を加算する1736 */1737 function lfAddAllProductsDelivFee(&$arrData, &$objPage, &$objCartSess) {1738 $arrData['deliv_fee'] += $this->lfCalcAllProductsDelivFee($arrData, $objCartSess);1739 }1740 1741 /**1742 * 全商品の合計送料を計算する1743 */1744 function lfCalcAllProductsDelivFee(&$arrData, &$objCartSess) {1745 $objQuery =& SC_Query::getSingletonInstance();1746 $deliv_fee_total = 0;1747 $max = $objCartSess->getMax();1748 for ($i = 0; $i <= $max; $i++) {1749 // 商品送料1750 $deliv_fee = $objQuery->getOne('SELECT deliv_fee FROM dtb_products WHERE product_id = ?', array($_SESSION[$objCartSess->key][$i]['id'][0]));1751 // 数量1752 $quantity = $_SESSION[$objCartSess->key][$i]['quantity'];1753 // 累積1754 $deliv_fee_total += $deliv_fee * $quantity;1755 }1756 return $deliv_fee_total;1757 }1758 1759 /**1760 * 都道府県、支払い方法から配送料金を加算する.1761 *1762 * @param array $arrData 各種情報1763 */1764 function lfAddDelivFee(&$arrData) {1765 $arrData['deliv_fee'] += $this->sfGetDelivFee($arrData);1766 }1767 1768 /**1769 1353 * 受注の名称列を更新する 1770 1354 * … … 2001 1585 return $count >= 1; 2002 1586 } 2003 /**2004 * カート内の商品の販売方法判定処理2005 *2006 * @param $objCartSess SC_CartSession カートセッション2007 * @return bool 0:実商品のみ 1:ダウンロード販売と実商品混在 2:全てダウンロード販売2008 */2009 function chkCartDown(&$objCartSess, $cartKey = 1) {2010 $objQuery =& SC_Query::getSingletonInstance();2011 $down = false;2012 $nodown = false;2013 $ret = 0;2014 $arrID = $objCartSess->getAllProductID();2015 $table = "dtb_products_class pc";2016 $where = "pc.product_class_id = ?";2017 if(!is_null($arrID)){2018 //カート内のIDから販売方法を取得2019 foreach ($arrID as $rec) {2020 $arrRet = $objQuery->select("pc.down AS down", $table, $where, array($rec));2021 if ($arrRet[0]['down'] == "2"){2022 $down = true;2023 }else{2024 $nodown = true;2025 }2026 }2027 }2028 //混在2029 if($nodown && $down){2030 $ret = 1;2031 //全てダウンロード商品2032 }else if(!$nodown && $down){2033 $ret = 2;2034 }2035 return $ret;2036 }2037 2038 /* 会員情報の住所を一時受注テーブルへ */2039 function sfRegistDelivData($uniqid, $objCustomer) {2040 2041 // 登録データの作成2042 $sqlval['order_temp_id'] = $uniqid;2043 $sqlval['update_date'] = 'Now()';2044 $sqlval['customer_id'] = $objCustomer->getValue('customer_id');2045 $sqlval['deliv_check'] = '-1';2046 $sqlval['order_name01'] = $objCustomer->getValue('name01');2047 $sqlval['order_name02'] = $objCustomer->getValue('name02');2048 $sqlval['order_kana01'] = $objCustomer->getValue('kana01');2049 $sqlval['order_kana02'] = $objCustomer->getValue('kana02');2050 $sqlval['order_zip01'] = $objCustomer->getValue('zip01');2051 $sqlval['order_zip02'] = $objCustomer->getValue('zip02');2052 $sqlval['order_pref'] = $objCustomer->getValue('pref');2053 $sqlval['order_addr01'] = $objCustomer->getValue('addr01');2054 $sqlval['order_addr02'] = $objCustomer->getValue('addr02');2055 $sqlval['order_tel01'] = $objCustomer->getValue('tel01');2056 $sqlval['order_tel02'] = $objCustomer->getValue('tel02');2057 $sqlval['order_tel03'] = $objCustomer->getValue('tel03');2058 $sqlval['order_fax01'] = $objCustomer->getValue('fax01');2059 $sqlval['order_fax02'] = $objCustomer->getValue('fax02');2060 $sqlval['order_fax03'] = $objCustomer->getValue('fax03');2061 $sqlval['deliv_name01'] = $objCustomer->getValue('name01');2062 $sqlval['deliv_name02'] = $objCustomer->getValue('name02');2063 $sqlval['deliv_kana01'] = $objCustomer->getValue('kana01');2064 $sqlval['deliv_kana02'] = $objCustomer->getValue('kana02');2065 $sqlval['deliv_zip01'] = $objCustomer->getValue('zip01');2066 $sqlval['deliv_zip02'] = $objCustomer->getValue('zip02');2067 $sqlval['deliv_pref'] = $objCustomer->getValue('pref');2068 $sqlval['deliv_addr01'] = $objCustomer->getValue('addr01');2069 $sqlval['deliv_addr02'] = $objCustomer->getValue('addr02');2070 $sqlval['deliv_tel01'] = $objCustomer->getValue('tel01');2071 $sqlval['deliv_tel02'] = $objCustomer->getValue('tel02');2072 $sqlval['deliv_tel03'] = $objCustomer->getValue('tel03');2073 $sqlval['deliv_fax01'] = $objCustomer->getValue('fax01');2074 $sqlval['deliv_fax02'] = $objCustomer->getValue('fax02');2075 $sqlval['deliv_fax03'] = $objCustomer->getValue('fax03');2076 2077 $this->sfRegistTempOrder($uniqid, $sqlval);2078 }2079 2080 2081 /**2082 * 配送情報の取得.2083 * TODO リファクタリング2084 */2085 function sfGetShippingData($orderId) {2086 $objQuery =& SC_Query::getSingletonInstance();2087 $objProduct = new SC_Product();2088 $objQuery->setOrder('shipping_id');2089 $arrRet = $objQuery->select("*", "dtb_shipping", "order_id = ?", array($orderId));2090 2091 foreach (array_keys($arrRet) as $key) {2092 $objQuery->setOrder('shipping_id');2093 $arrItems = $objQuery->select("*", "dtb_shipment_item", "order_id = ? AND shipping_id = ?",2094 array($orderId, $arrRet[$key]['shipping_id']));2095 foreach ($arrItems as $itemKey => $arrDetail) {2096 foreach ($arrDetail as $detailKey => $detailVal) {2097 $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']][$detailKey] = $detailVal;2098 }2099 2100 $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']]['productsClass'] =& $objProduct->getDetailAndProductsClass($arrDetail['product_class_id']);2101 }2102 }2103 return $arrRet;2104 }2105 2106 1587 } 2107 1588 ?> -
branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php
r20116 r20167 107 107 if (SC_Utils_Ex::isBlank($cartKeys)) { 108 108 SC_Response_Ex::sendRedirect(CART_URLPATH); 109 exit; 109 110 } 110 111 … … 119 120 if(!SC_SiteSession::checkUniqId()) { 120 121 SC_Utils_Ex::sfDispSiteError(CANCEL_PURCHASE); 122 exit; 121 123 } 122 124 … … 190 192 /** 191 193 * 配送商品を設定する. 192 */ 193 function setShipmentItemTemp($otherDelivId, $productClassId, $quantity) { 194 $_SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['shipping_id'] = $otherDelivId; 195 $_SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['product_class_id'] = $productClassId; 196 $_SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['quantity'] += $quantity; 194 * 195 * @param integer $shipping_id 配送先ID 196 * @param integer $product_class_id 商品規格ID 197 * @param integer $quantity 数量 198 * @return void 199 */ 200 function setShipmentItemTemp($shipping_id, $product_class_id, $quantity) { 201 // 配列が長くなるので, リファレンスを使用する 202 $arrItems =& $_SESSION['shipping'][$shipping_id]['shipment_item']; 203 204 $arrItems[$product_class_id]['shipping_id'] = $shipping_id; 205 $arrItems[$product_class_id]['product_class_id'] = $product_class_id; 206 $arrItems[$product_class_id]['quantity'] += $quantity; 197 207 198 208 $objProduct = new SC_Product(); 199 if (empty($ _SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['productsClass'])) {200 $product =& $objProduct->getDetailAndProductsClass($product ClassId);201 $ _SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['productsClass'] = $product;202 } 203 $incTax = SC_Helper_DB_Ex::sfCalcIncTax($ _SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['productsClass']['price02']);204 $ _SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['total_inctax'] = $incTax * $_SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['quantity'];209 if (empty($arrItems[$product_class_id]['productsClass'])) { 210 $product =& $objProduct->getDetailAndProductsClass($product_class_id); 211 $arrItems[$product_class_id]['productsClass'] = $product; 212 } 213 $incTax = SC_Helper_DB_Ex::sfCalcIncTax($arrItems[$product_class_id]['productsClass']['price02']); 214 $arrItems[$product_class_id]['total_inctax'] = $incTax * $arrItems[$product_class_id]['quantity']; 205 215 } 206 216 207 217 /** 208 218 * 配送商品の情報でカートを更新する. 219 * 220 * @param SC_CartSession $objCartSession SC_CartSession インスタンス 209 221 */ 210 222 function shippingItemTempToCart(&$objCartSession) { 211 $ shipmentItems = array();212 213 foreach (array_keys($_SESSION['shipping']) as $ otherDelivId) {214 foreach (array_keys($_SESSION['shipping'][$ otherDelivId]['shipment_item']) as $productClassId) {215 $ shipmentItems[$productClassId] += $_SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['quantity'];223 $arrShipmentItems = array(); 224 225 foreach (array_keys($_SESSION['shipping']) as $shipping_id) { 226 foreach (array_keys($_SESSION['shipping'][$shipping_id]['shipment_item']) as $product_class_id) { 227 $arrShipmentItems[$product_class_id] += $_SESSION['shipping'][$shipping_id]['shipment_item'][$product_class_id]['quantity']; 216 228 } 217 229 } 218 foreach ($ shipmentItems as $productClassId => $quantity) {219 $objCartSession->setProductValue($product ClassId, 'quantity',230 foreach ($arrShipmentItems as $product_class_id => $quantity) { 231 $objCartSession->setProductValue($product_class_id, 'quantity', 220 232 $quantity,$objCartSession->getKey()); 221 233 } … … 244 256 /** 245 257 * 配送情報をセッションに保存する. 246 */ 247 function saveShippingTemp(&$src, $otherDelivId = 0) { 248 if (empty($_SESSION['shipping'][$otherDelivId])) { 249 $_SESSION['shipping'][$otherDelivId] = $src; 258 * 259 * @param array $arrSrc 配送情報の連想配列 260 * @param integer $shipping_id 配送先ID 261 * @return void 262 */ 263 function saveShippingTemp(&$arrSrc, $shipping_id = 0) { 264 if (empty($_SESSION['shipping'][$shipping_id])) { 265 $_SESSION['shipping'][$shipping_id] = $arrSrc; 266 $_SESSION['shipping'][$shipping_id]['shipping_id'] = $shipping_id; 250 267 } else { 251 $_SESSION['shipping'][$otherDelivId] = array_merge($_SESSION['shipping'][$otherDelivId], $src); 268 $_SESSION['shipping'][$shipping_id] = array_merge($_SESSION['shipping'][$shipping_id], $arrSrc); 269 $_SESSION['shipping'][$shipping_id]['shipping_id'] = $shipping_id; 252 270 } 253 271 } … … 507 525 508 526 /** 509 * 配送情報を登録する. 510 */ 511 function registerShipping($orderId, $params) { 512 $objQuery =& SC_Query::getSingletonInstance(); 513 514 $cols = $objQuery->listTableFields('dtb_shipping'); 515 516 foreach ($params as $shipping_id => $shipping_val) { 517 // 存在するカラムのみ INSERT 518 foreach ($shipping_val as $key => $val) { 519 if (in_array($key, $cols)) { 520 $sqlval[$key] = $val; 521 } 522 } 527 * 配送情報の登録を行う. 528 * 529 * $arrParam のうち, dtb_shipping テーブルに存在するカラムのみを登録する. 530 * 531 * @param integer $order_id 受注ID 532 * @param array $arrParams 配送情報の連想配列 533 * @return void 534 */ 535 function registerShipping($order_id, $arrParams) { 536 $objQuery =& SC_Query::getSingletonInstance(); 537 $table = 'dtb_shipping'; 538 539 foreach ($arrParams as $arrShipping) { 540 541 $arrValues = $objQuery->extractOnlyColsOf($table, $arrShipping); 523 542 524 543 // 配送日付を timestamp に変換 525 if (!SC_Utils_Ex::isBlank($ sqlval['shipping_date'])) {526 $d = mb_strcut($ sqlval["shipping_date"], 0, 10);544 if (!SC_Utils_Ex::isBlank($arrValues['shipping_date'])) { 545 $d = mb_strcut($arrValues["shipping_date"], 0, 10); 527 546 $arrDate = split("/", $d); 528 547 $ts = mktime(0, 0, 0, $arrDate[1], $arrDate[2], $arrDate[0]); 529 $sqlval['shipping_date'] = date("Y-m-d", $ts); 530 } 531 532 $sqlval['order_id'] = $orderId; 533 $sqlval['shipping_id'] = $shipping_id; 534 $sqlval['create_date'] = 'Now()'; 535 $sqlval['update_date'] = 'Now()'; 536 $objQuery->insert("dtb_shipping", $sqlval); 548 $arrValues['shipping_date'] = date("Y-m-d", $ts); 549 } 550 551 $arrValues['order_id'] = $order_id; 552 $arrValues['create_date'] = 'Now()'; 553 $arrValues['update_date'] = 'Now()'; 554 $objQuery->insert($table, $arrValues); 537 555 } 538 556 } … … 540 558 /** 541 559 * 配送商品を登録する. 560 * 561 * @param integer $order_id 受注ID 562 * @param integer $shipping_id 配送先ID 563 * @param array $arrParams 配送商品の配列 564 * @return void 542 565 */ 543 566 function registerShipmentItem($orderId, $shippingId, $params) { … … 641 664 642 665 /** 666 * 受注情報を取得する. 667 * 668 * @param integer $order_id 受注ID 669 * @param integer $customer_id 顧客ID 670 * @return array 受注情報の配列 671 */ 672 function getOrder($order_id, $customer_id = null) { 673 $objQuery =& SC_Query::getSingletonInstance(); 674 $where = 'order_id = ?'; 675 $arrValues = array($order_id); 676 if (!SC_Utils_Ex::isBlank($customer_id)) { 677 $where .= ' AND customer_id = ?'; 678 $arrValues[] = $customer_id; 679 } 680 return $objQuery->getRow('*', 'dtb_order', $where, $arrValues); 681 } 682 683 /** 684 * 受注詳細を取得する. 685 * 686 * @param integer $order_id 受注ID 687 * @return array 受注詳細の配列 688 */ 689 function getOrderDetail($order_id) { 690 $objQuery =& SC_Query::getSingletonInstance(); 691 $dbFactory = SC_DB_DBFactory_Ex::getInstance(); 692 $col = <<< __EOS__ 693 T3.product_id, 694 T3.product_class_id as product_class_id, 695 T3.product_type_id AS product_type_id, 696 T2.product_code, 697 T2.product_name, 698 T2.classcategory_name1 AS classcategory_name1, 699 T2.classcategory_name2 AS classcategory_name2, 700 T2.price, 701 T2.quantity, 702 T2.point_rate, 703 T1.status AS status, 704 T1.payment_date AS payment_date, 705 CASE WHEN EXISTS( 706 SELECT 1 FROM dtb_products 707 WHERE product_id = T3.product_id 708 AND del_flg = 0 709 AND status = 1) 710 THEN '1' ELSE '0' 711 END AS enable, 712 __EOS__; 713 $col .= $dbFactory->getDownloadableDaysWhereSql('T1') . ' AS effective'; 714 $from = <<< __EOS__ 715 dtb_order T1 716 JOIN dtb_order_detail T2 717 ON T1.order_id = T2.order_id 718 JOIN dtb_products_class T3 719 ON T2.product_class_id = T3.product_class_id 720 __EOS__; 721 return $objQuery->select($col, $from, 'T1.order_id = ?', array($order_id)); 722 } 723 724 /** 725 * 配送情報を取得する. 726 * 727 * @param integer $order_id 受注ID 728 * @param boolean $has_items 結果に配送商品も含める場合 true 729 * @return array 配送情報の配列 730 */ 731 function getShippings($order_id, $has_items = true) { 732 $objQuery =& SC_Query::getSingletonInstance(); 733 $arrResults = array(); 734 $objQuery->setOrder('shipping_id'); 735 $arrShippings = $objQuery->select("*", "dtb_shipping", "order_id = ?", 736 array($order_id)); 737 // shipping_id ごとの配列を生成する 738 foreach ($arrShippings as $shipping) { 739 foreach ($shipping as $key => $val) { 740 $arrResults[$shipping['shipping_id']][$key] = $val; 741 } 742 } 743 744 if ($has_items) { 745 $objProduct = new SC_Product(); 746 foreach (array_keys($arrResults) as $shipping_id) { 747 $arrResults[$shipping_id]['shipment_item'] 748 =& $this->getShipmentItems($order_id, $shipping_id); 749 } 750 } 751 return $arrResults; 752 } 753 754 /** 755 * 配送商品を取得する. 756 * 757 * @param integer $order_id 受注ID 758 * @param integer $shipping_id 配送先ID 759 * @param boolean $has_detail 商品詳細も取得する場合 true 760 * @return array 商品規格IDをキーにした配送商品の配列 761 */ 762 function getShipmentItems($order_id, $shipping_id, $has_detail = true) { 763 $objQuery =& SC_Query::getSingletonInstance(); 764 $objProduct = new SC_Product(); 765 $arrResults = array(); 766 $arrItems = $objQuery->select("*", "dtb_shipment_item", 767 "order_id = ? AND shipping_id = ?", 768 array($order_id, $shipping_id)); 769 770 foreach ($arrItems as $key => $arrItem) { 771 $product_class_id = $arrItem['product_class_id']; 772 773 foreach ($arrItem as $detailKey => $detailVal) { 774 $arrResults[$product_class_id][$detailKey] = $detailVal; 775 } 776 // 商品詳細を関連づける 777 if ($has_detail) { 778 $arrResults[$product_class_id]['productsClass'] 779 =& $objProduct->getDetailAndProductsClass($product_class_id); 780 } 781 } 782 return $arrResults; 783 } 784 785 /** 643 786 * 受注完了メールを送信する. 644 787 * -
branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_History.php
r20162 r20167 70 70 $objCustomer = new SC_Customer(); 71 71 $objDb = new SC_Helper_DB_Ex(); 72 $objPurchase = new SC_Helper_Purchase_Ex(); 72 73 73 74 if (!SC_Utils_Ex::sfIsInt($_GET['order_id'])) { … … 76 77 77 78 $order_id = $_GET['order_id']; 78 $arrOrderData = $this->lfGetOrderData($objCustomer->getValue('customer_id'), $order_id);79 79 80 if (empty($arrOrderData)){ 80 //受注データの取得 81 $this->tpl_arrOrderData = $objPurchase->getOrder($order_id, $objCustomer->getValue('customer_id')); 82 83 if (empty($this->tpl_arrOrderData)){ 81 84 SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); 82 85 } 83 86 84 //受注詳細データの取得 85 $this->tpl_arrOrderData = $arrOrderData[0]; 87 $this->arrShipping = $objPurchase->getShippings($order_id); 86 88 87 $this->arrShipping = $objDb->sfGetShippingData($order_id);88 89 $this->isMultiple = count($this->arrShipping) > 1; 89 90 // 支払い方法の取得 90 91 $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 91 // お届け時間の取得 92 $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($objDb->sfGetDelivTime($this->tpl_arrOrderData['payment_id']), 93 'time_id', 94 'deliv_time'); 92 // FIXME お届け時間の取得 93 //$this->arrDelivTime = $objPurchase->getDelivTime($this->tpl_arrOrderData['deliv_id']); 95 94 // 受注商品明細の取得 96 $this->tpl_arrOrderDetail = $ this->lfGetOrderDetail($order_id);95 $this->tpl_arrOrderDetail = $objPurchase->getOrderDetail($order_id); 97 96 // 受注メール送信履歴の取得 98 97 $this->tpl_arrMailHistory = $this->lfGetMailHistory($order_id); … … 107 106 function destroy() { 108 107 parent::destroy(); 109 }110 111 /**112 * 受注の取得113 *114 * @param integer $orderId 注文番号115 * @return array 受注の内容116 */117 function lfGetOrderData($customer_id, $order_id) {118 // DBから受注情報を読み込む119 $objQuery =& SC_Query::getSingletonInstance();120 $from = "dtb_order";121 $where = "del_flg = 0 AND customer_id = ? AND order_id = ?";122 return $objQuery->select("*", $from, $where, array($customer_id, $order_id));123 }124 125 /**126 * 受注商品明細の取得127 *128 * @param integer $orderId 注文番号129 * @return array 受注商品明細の内容130 */131 function lfGetOrderDetail($order_id) {132 $objQuery =& SC_Query::getSingletonInstance();133 $dbFactory = SC_DB_DBFactory_Ex::getInstance();134 135 $col = "136 od.product_id AS product_id,137 od.product_code AS product_code,138 od.product_name AS product_name,139 od.classcategory_name1 AS classcategory_name1,140 od.classcategory_name2 AS classcategory_name2,141 od.price AS price,142 od.quantity AS quantity,143 od.point_rate AS point_rate144 ,CASE WHEN EXISTS(SELECT * FROM dtb_products WHERE product_id = od.product_id AND del_flg = 0 AND status = 1) THEN '1' ELSE '0' END AS enable145 ,o.status AS status,146 pc.product_type_id AS product_type_id,147 o.payment_date AS payment_date,148 od.product_class_id as product_class_id,149 ".$dbFactory->getDownloadableDaysWhereSql()."150 AS effective";151 152 $from = "dtb_products p, dtb_products_class pc, dtb_order_detail od, dtb_order o";153 $where = "p.product_id = od.product_id AND pc.product_id = od.product_id AND pc.product_class_id = od.product_class_id AND od.order_id = o.order_id AND od.order_id = ?";154 155 return $objQuery->select($col, $from, $where, array($order_id));156 108 } 157 109 -
branches/version-2_5-dev/data/plugin/bingo/SC_Plugin_bingo.php
r20116 r20167 96 96 $objCustomer = new SC_Customer(); 97 97 $objSiteSess = new SC_SiteSession(); 98 $objPurchase = new SC_Helper_Purchase_Ex(); 98 99 99 $tmpData = $obj Db->sfGetOrderTemp($uniqid);100 $tmpData = $objPurchase->getOrderTemp($uniqid); 100 101 101 102 // 当たりなので、使用ポイントを未使用にする。 … … 112 113 113 114 $uniqid = $objSiteSess->getUniqId(); 114 $obj Db->sfRegistTempOrder($uniqid, $tmpData);115 $objPurchase->saveOrderTemp($uniqid, $tmpData, $objCustomer); 115 116 116 117 // is_bingoセット
Note: See TracChangeset
for help on using the changeset viewer.