Changeset 20167


Ignore:
Timestamp:
2011/02/15 16:43:52 (13 years ago)
Author:
nanasess
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
Message:

#981([フロント]MYページ)

  • 受注取得処理を抽象化

#642(共通ロジックの機能向上)

  • SC_Query::extractOnlyColsOf() を追加

#628(未使用処理・定義などの削除)

  • SC_Helper_DB クラスの未使用関数を削除
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  
    838838 
    839839    /** 
     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    /** 
    840858     * プリペアドステートメントを構築する. 
    841859     * 
  • branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php

    r20129 r20167  
    144144     * @return string 検索条件の SQL 
    145145     */ 
    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))))"; 
    148148    } 
    149149 
  • branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php

    r20129 r20167  
    122122     * @return string 検索条件の SQL 
    123123     */ 
    124     function getDownloadableDaysWhereSql() { 
     124    function getDownloadableDaysWhereSql($dtb_order_alias = 'dtb_order') { 
    125125        $baseinfo = SC_Helper_DB_Ex::sfGetBasisData(); 
    126126        //downloadable_daysにNULLが入っている場合(無期限ダウンロード可能時)もあるので、NULLの場合は0日に補正 
    127127        $downloadable_days = $baseinfo['downloadable_days']; 
    128128        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)"; 
    130130    } 
    131131 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php

    r20144 r20167  
    183183 
    184184    /** 
    185      * 商品規格情報を取得する. 
    186      * 
    187      * TODO SC_Product クラスへ移動 
    188      * 
    189      * @param array $arrID 規格ID 
    190      * @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_id1 
    210                 && $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 void 
    227      */ 
    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 ユニークID 
    362      * @param array $sqlval SQLの値の配列 
    363      * @return void 
    364      * @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 ユニークID 
    394      * @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     /** 
    436185     * 受注番号、最終ポイント、加算ポイント、利用ポイントから「オーダー前ポイント」を取得する 
    437186     * 
     
    1166915 
    1167916    /** 
    1168      * 受注一時テーブルから情報を取得する. 
    1169      * 
    1170      * @param integer $order_temp_id 受注一時ID 
    1171      * @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     /** 
    1182917     * SELECTボックス用リストを作成する. 
    1183918     * 
     
    14491184 
    14501185    /** 
    1451      * FIXME 商品種別からお届け時間を取得する. 
    1452      * 
    1453      * @param integer $productTypeId 商品種別ID 
    1454      * @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     /** 
    14791186     * 都道府県から配送料金を取得する. 
    14801187     * 
     
    15111218 
    15121219    /** 
    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     /** 
    16041220     * レコードの存在チェックを行う. 
     1221     * 
     1222     * TODO SC_Query に移行するべきか? 
    16051223     * 
    16061224     * @param string $table テーブル名 
     
    17331351 
    17341352    /** 
    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     /** 
    17691353     * 受注の名称列を更新する 
    17701354     * 
     
    20011585        return $count >= 1; 
    20021586    } 
    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  
    21061587} 
    21071588?> 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php

    r20116 r20167  
    107107        if (SC_Utils_Ex::isBlank($cartKeys)) { 
    108108            SC_Response_Ex::sendRedirect(CART_URLPATH); 
     109            exit; 
    109110        } 
    110111 
     
    119120            if(!SC_SiteSession::checkUniqId()) { 
    120121                SC_Utils_Ex::sfDispSiteError(CANCEL_PURCHASE); 
     122                exit; 
    121123            } 
    122124 
     
    190192    /** 
    191193     * 配送商品を設定する. 
    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; 
    197207 
    198208        $objProduct = new SC_Product(); 
    199         if (empty($_SESSION['shipping'][$otherDelivId]['shipment_item'][$productClassId]['productsClass'])) { 
    200             $product =& $objProduct->getDetailAndProductsClass($productClassId); 
    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']; 
    205215    } 
    206216 
    207217    /** 
    208218     * 配送商品の情報でカートを更新する. 
     219     * 
     220     * @param SC_CartSession $objCartSession SC_CartSession インスタンス 
    209221     */ 
    210222    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']; 
    216228           } 
    217229        } 
    218         foreach ($shipmentItems as $productClassId => $quantity) { 
    219             $objCartSession->setProductValue($productClassId, 'quantity', 
     230        foreach ($arrShipmentItems as $product_class_id => $quantity) { 
     231            $objCartSession->setProductValue($product_class_id, 'quantity', 
    220232                                             $quantity,$objCartSession->getKey()); 
    221233        } 
     
    244256    /** 
    245257     * 配送情報をセッションに保存する. 
    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; 
    250267        } 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; 
    252270        } 
    253271    } 
     
    507525 
    508526    /** 
    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); 
    523542 
    524543            // 配送日付を 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); 
    527546                $arrDate = split("/", $d); 
    528547                $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); 
    537555        } 
    538556    } 
     
    540558    /** 
    541559     * 配送商品を登録する. 
     560     * 
     561     * @param integer $order_id 受注ID 
     562     * @param integer $shipping_id 配送先ID 
     563     * @param array $arrParams 配送商品の配列 
     564     * @return void 
    542565     */ 
    543566    function registerShipmentItem($orderId, $shippingId, $params) { 
     
    641664 
    642665    /** 
     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    /** 
    643786     * 受注完了メールを送信する. 
    644787     * 
  • branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_History.php

    r20162 r20167  
    7070        $objCustomer    = new SC_Customer(); 
    7171        $objDb          = new SC_Helper_DB_Ex(); 
     72        $objPurchase = new SC_Helper_Purchase_Ex(); 
    7273 
    7374        if (!SC_Utils_Ex::sfIsInt($_GET['order_id'])) { 
     
    7677 
    7778        $order_id        = $_GET['order_id']; 
    78         $arrOrderData   = $this->lfGetOrderData($objCustomer->getValue('customer_id'), $order_id); 
    7979 
    80         if (empty($arrOrderData)){ 
     80        //受注データの取得 
     81        $this->tpl_arrOrderData = $objPurchase->getOrder($order_id, $objCustomer->getValue('customer_id')); 
     82 
     83        if (empty($this->tpl_arrOrderData)){ 
    8184            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); 
    8285        } 
    8386 
    84         //受注詳細データの取得 
    85         $this->tpl_arrOrderData = $arrOrderData[0]; 
     87        $this->arrShipping      = $objPurchase->getShippings($order_id); 
    8688 
    87         $this->arrShipping      = $objDb->sfGetShippingData($order_id); 
    8889        $this->isMultiple       = count($this->arrShipping) > 1; 
    8990        // 支払い方法の取得 
    9091        $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']); 
    9594        // 受注商品明細の取得 
    96         $this->tpl_arrOrderDetail = $this->lfGetOrderDetail($order_id); 
     95        $this->tpl_arrOrderDetail = $objPurchase->getOrderDetail($order_id); 
    9796        // 受注メール送信履歴の取得 
    9897        $this->tpl_arrMailHistory = $this->lfGetMailHistory($order_id); 
     
    107106    function destroy() { 
    108107        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_rate 
    144             ,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 enable 
    145             ,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)); 
    156108    } 
    157109 
  • branches/version-2_5-dev/data/plugin/bingo/SC_Plugin_bingo.php

    r20116 r20167  
    9696            $objCustomer = new SC_Customer(); 
    9797            $objSiteSess = new SC_SiteSession(); 
     98            $objPurchase = new SC_Helper_Purchase_Ex(); 
    9899 
    99             $tmpData = $objDb->sfGetOrderTemp($uniqid); 
     100            $tmpData = $objPurchase->getOrderTemp($uniqid); 
    100101 
    101102            // 当たりなので、使用ポイントを未使用にする。 
     
    112113 
    113114            $uniqid = $objSiteSess->getUniqId(); 
    114             $objDb->sfRegistTempOrder($uniqid, $tmpData); 
     115            $objPurchase->saveOrderTemp($uniqid, $tmpData, $objCustomer); 
    115116 
    116117            // is_bingoセット 
Note: See TracChangeset for help on using the changeset viewer.