Ignore:
Timestamp:
2011/02/15 16:43:52 (15 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:20166
bzr:committer:
Kentaro Ohkouchi <[email protected]>
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:

[email protected]
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
[email protected]
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 [email protected]
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php [email protected]
data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php [email protected]
data/class/helper/SC_Helper_DB.php [email protected]
data/class/helper/SC_Helper_Purchase.php [email protected]
data/class/pages/mypage/LC_Page_Mypage_History.php [email protected]
data/plugin/bingo/SC_Plugin_bingo.php [email protected]
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 クラスの未使用関数を削除
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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     * 
Note: See TracChangeset for help on using the changeset viewer.