Ignore:
Timestamp:
2011/02/08 00:39:38 (15 years ago)
Author:
nanasess
bzr:base-revision:
[email protected]
bzr:committer:
Kentaro Ohkouchi <[email protected]>
bzr:file-ids:

data/Smarty/templates/default/shopping/confirm.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fshopping%2Fconfirm.tpl
data/Smarty/templates/default/shopping/payment.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fshopping%2Fpayment.tpl
data/Smarty/templates/mobile/shopping/confirm.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fmobile%2Fshopping%2Fconfirm.tpl
data/Smarty/templates/mobile/shopping/payment.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fmobile%2Fshopping%2Fpayment.tpl
data/Smarty/templates/mobile/shopping/select_deliv.tpl select_deliv.tpl-20110207152600-lm5bjhtot5ipow7j-1
data/Smarty/templates/sphone/shopping/confirm.tpl confirm.tpl-20101209134550-lsv02w9wikfx9cj3-35
data/Smarty/templates/sphone/shopping/payment.tpl payment.tpl-20101209134550-lsv02w9wikfx9cj3-40
data/class/SC_CartSession.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_CartSession.php
data/class/helper/SC_Helper_Purchase.php sc_helper_purchase.p-20101020100530-jyaoa7ch9pdfjqzp-1
data/class/pages/shopping/LC_Page_Shopping_Confirm.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping_Confirm.php
data/class/pages/shopping/LC_Page_Shopping_Payment.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping_Payment.php
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
bzr:mapping-version:
v4
bzr:merge:

[email protected]
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
[email protected]
bzr:revno:
2840
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-revisions:

data/Smarty/templates/default/shopping/confirm.tpl [email protected]
data/Smarty/templates/default/shopping/payment.tpl [email protected]
data/Smarty/templates/mobile/shopping/confirm.tpl [email protected]
data/Smarty/templates/mobile/shopping/payment.tpl [email protected]
data/Smarty/templates/mobile/shopping/select_deliv.tpl [email protected]
data/Smarty/templates/sphone/shopping/confirm.tpl [email protected]
data/Smarty/templates/sphone/shopping/payment.tpl [email protected]
data/class/SC_CartSession.php [email protected]
data/class/helper/SC_Helper_Purchase.php [email protected]
data/class/pages/shopping/LC_Page_Shopping_Confirm.php [email protected]
data/class/pages/shopping/LC_Page_Shopping_Payment.php [email protected]
html/install/sql/create_table_mysql.sql [email protected]
html/install/sql/create_table_pgsql.sql [email protected]
bzr:timestamp:
2011-02-08 00:39:32.996000051 +0900
bzr:user-agent:
bzr2.2.1+bzr-svn1.0.4
svn:original-date:
2011-02-07T15:39:32.996000Z
Message:

#990(配送設定・支払方法設定の仕様変更)

  • 支払方法設定ページ
Location:
branches/version-2_5-dev/data/class
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/SC_CartSession.php

    r20038 r20112  
    433433     * エラーメッセージを返す. 
    434434     * 
    435      * 1. 削除/非表示商品のチェック 
    436      * 2. 商品購入制限数のチェック 
    437      * 3. 在庫数チェック 
     435     * 1. 商品種別に関連づけられた配送業者の存在チェック 
     436     * 2. 削除/非表示商品のチェック 
     437     * 3. 商品購入制限数のチェック 
     438     * 4. 在庫数チェック 
    438439     * 
    439440     * @param string $key 商品種別ID 
     
    449450            $item =& $items[$key]; 
    450451            $product =& $item['productsClass']; 
     452 
     453            /* 
     454             * 配送業者のチェック 
     455             */ 
     456            $arrDeliv = SC_Helper_Purchase_Ex::getDeliv($productTypeId); 
     457            if (SC_Utils_Ex::isBlank($arrDeliv)) { 
     458                $tpl_message .= "※「" . $product['name'] . "」はまだ配送の準備ができておりません。恐れ入りますがお問い合わせページよりお問い合わせください。\n"; 
     459            } 
     460 
    451461            /* 
    452462             * 表示/非表示商品のチェック 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php

    r20111 r20112  
    461461 
    462462    /** 
    463      * 商品種別ID からお届け時間の配列を取得する. 
    464      */ 
    465     function getDelivTime($productTypeId) { 
    466         $objQuery =& SC_Query::getSingletonInstance(); 
    467         $from = <<< __EOS__ 
    468                  dtb_deliv T1 
    469             JOIN dtb_delivtime T2 
    470               ON T1.deliv_id = T2. deliv_id 
    471 __EOS__; 
    472             $objQuery->setOrder("time_id"); 
    473             $results = $objQuery->select("time_id, deliv_time", $from, 
    474                                          "product_type_id = ?", array($productTypeId)); 
    475             $arrDelivTime = array(); 
    476             foreach ($results as $val) { 
    477                 $arrDelivTime[$val['time_id']] = $val['deliv_time']; 
    478             } 
    479             return $arrDelivTime; 
     463     * 配送業者IDからお届け時間の配列を取得する. 
     464     * 
     465     * @param integer $deliv_id 配送業者ID 
     466     * @return array お届け時間の配列 
     467     */ 
     468    function getDelivTime($deliv_id) { 
     469        $objQuery =& SC_Query::getSingletonInstance(); 
     470        $objQuery->setOrder('time_id'); 
     471        $results = $objQuery->select('time_id, deliv_time', 
     472                                     'dtb_delivtime', 
     473                                     'deliv_id = ?', array($deliv_id)); 
     474        $arrDelivTime = array(); 
     475        foreach ($results as $val) { 
     476            $arrDelivTime[$val['time_id']] = $val['deliv_time']; 
     477        } 
     478        return $arrDelivTime; 
    480479    } 
    481480 
    482481    /** 
    483482     * 商品種別ID から配送業者を取得する. 
    484      */ 
    485     function getDeliv($productTypeId) { 
    486         $objQuery =& SC_Query::getSingletonInstance(); 
    487         return $objQuery->select("*", "dtb_deliv", "product_type_id = ?", 
    488                                  array($productTypeId)); 
    489     } 
    490  
    491     /** 
    492      * 配送業者ID から, 有効な支払方法を取得する. 
     483     * 
     484     * @param integer $product_type_id 商品種別ID 
     485     * @return array 配送業者の配列 
     486     */ 
     487    function getDeliv($product_type_id) { 
     488        $objQuery =& SC_Query::getSingletonInstance(); 
     489        $objQuery->setOrder('rank'); 
     490        return $objQuery->select('*', 'dtb_deliv', 'product_type_id = ?', 
     491                                 array($product_type_id)); 
     492    } 
     493 
     494    /** 
     495     * 配送業者ID から, 有効な支払方法IDを取得する. 
    493496     * 
    494497     * @param integer $deliv_id 配送業者ID 
     
    497500    function getPayments($deliv_id) { 
    498501        $objQuery =& SC_Query::getSingletonInstance(); 
    499         $from = <<< __EOS__ 
    500                       dtb_deliv T1 
    501             LEFT JOIN dtb_payment_options T2 
    502                    ON T1.deliv_id = T2.deliv_id 
    503 __EOS__; 
    504         $objQuery->setOrder('T2.rank'); 
    505         return $objQuery->getCol('payment_id', $from, 'T1.deliv_id = ?', 
     502        $objQuery->setOrder('rank'); 
     503        return $objQuery->getCol('payment_id', 'dtb_payment_options', 
     504                                 'deliv_id = ?', 
    506505                                 array($deliv_id), MDB2_FETCHMODE_ORDERED); 
    507506    } 
  • branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php

    r20041 r20112  
    5050        $this->arrMAILMAGATYPE = $masterData->getMasterData("mtb_mail_magazine_type"); 
    5151        $this->arrReminder = $masterData->getMasterData("mtb_reminder"); 
     52        $this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList("dtb_deliv", "deliv_id", "service_name"); 
    5253        $this->httpCacheControl('nocache'); 
    5354    } 
     
    9495        $this->tpl_message = $objCartSess->checkProducts($this->cartKey); 
    9596        if (strlen($this->tpl_message) >= 1) { 
    96             SC_Utils_Ex::sfDispSiteError(SOLD_OUT, '', true); 
     97            SC_Response_Ex::sendRedirect(CART_URLPATH); 
     98            exit; 
    9799        } 
    98100 
  • branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php

    r20069 r20112  
    7979        $objPurchase = new SC_Helper_Purchase_Ex(); 
    8080        $this->objCustomer = new SC_Customer(); 
    81  
    82         $this->shipping =& $objPurchase->getShippingTemp(); 
    83         $this->isMultiple = $objPurchase->isMultiple(); 
    84  
    85         // パラメータ管理クラス 
    8681        $this->objFormParam = new SC_FormParam(); 
    87         // パラメータ情報の初期化 
    88         $this->lfInitParam(); 
    89         // POST値の取得 
    90         $this->objFormParam->setParam($_POST); 
    91  
    92         $uniqid = $objSiteSess->getUniqId(); 
    93         $objPurchase->verifyChangeCart($uniqid, $objCartSess); 
    94  
    95         // ユニークIDを引き継ぐ 
    96         $this->tpl_uniqid = $uniqid; 
     82 
     83        $this->arrShipping =& $objPurchase->getShippingTemp(); 
     84        $this->is_multiple = $objPurchase->isMultiple(); 
     85        $this->tpl_uniqid = $objSiteSess->getUniqId(); 
     86        $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess); 
    9787 
    9888        $this->cartKey = $objCartSess->getKey(); 
    9989 
    100         // 配送時間を取得 
    101         $this->arrDelivTime = $objPurchase->getDelivTime($this->cartKey); 
     90        // 配送業者を取得 
     91        $this->arrDeliv = $objPurchase->getDeliv($this->cartKey); 
     92        if (count($this->arrDeliv) == 1) { 
     93            $this->is_single_deliv = true; 
     94            $deliv_id = $this->arrDeliv[0]['deliv_id']; 
     95        } else { 
     96            $this->is_single_deliv = false; 
     97        } 
    10298 
    10399        // 会員ログインチェック 
     
    117113 
    118114        // 一時受注テーブルの読込 
    119         $arrOrderTemp = $objPurchase->getOrderTemp($uniqid); 
     115        $arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid); 
    120116        //不正遷移チェック(正常に受注情報が格納されていない場合は一旦カート画面まで戻す) 
    121117        if (!$arrOrderTemp) { 
     
    129125 
    130126        if (strlen($this->tpl_message) >= 1) { 
    131             SC_Utils_Ex::sfDispSiteError(SOLD_OUT, '', true); 
     127            SC_Response_Ex::sendRedirect(CART_URLPATH); 
     128            exit; 
    132129        } 
    133130        // FIXME 使用ポイント, 手数料の扱い 
     
    137134        $total_inctax = $objCartSess->getAllProductsTotal($this->cartKey); 
    138135 
    139         // FIXME 支払い方法の取得 
    140         $arrDeliv = $objPurchase->getDeliv($this->cartKey); 
    141         $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $arrDeliv[0]['deliv_id']); 
     136        // お届け日一覧の取得 
     137        $this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $this->cartKey); 
    142138 
    143139        switch($this->getMode()) { 
     140        case 'select_deliv': 
     141            $this->objFormParam->convParam(); 
     142            $this->lfInitParam(true); 
     143            $this->objFormParam->setParam($_POST); 
     144            $arrErr = $this->objFormParam->checkError(); 
     145            if (SC_Utils_Ex::isBlank($arrErr)) { 
     146                $deliv_id = $this->objFormParam->getValue('deliv_id'); 
     147                $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $deliv_id); 
     148                $this->img_show = $this->lfGetImgShow($this->arrPayment); 
     149                // 配送時間を取得 
     150                $this->arrDelivTime = $objPurchase->getDelivTime($deliv_id); 
     151                $arrSelectDeliv = array('error' => false, 
     152                                        'arrPayment' => $this->arrPayment, 
     153                                        'arrDelivTime' => $this->arrDelivTime, 
     154                                        'img_show' => $this->img_show); 
     155            } else { 
     156                $arrSelectDeliv = array('error' => true); 
     157            } 
     158 
     159            if (SC_Display::detectDevice() != DEVICE_TYPE_MOBILE) { 
     160                $objJson = new Services_JSON(); 
     161                echo $objJson->encode($arrSelectDeliv); 
     162                exit; 
     163            } 
     164            break; 
     165 
    144166        case 'confirm': 
     167            // パラメータ情報の初期化 
     168            $this->lfInitParam(); 
     169            // POST値の取得 
     170            $this->objFormParam->setParam($_POST); 
    145171            // 入力値の変換 
    146172            $this->objFormParam->convParam(); 
     173            $deliv_id = $this->objFormParam->getValue('deliv_id'); 
     174            $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $deliv_id); 
     175            $this->arrDelivTime = $objPurchase->getDelivTime($deliv_id); 
    147176            $this->arrErr = $this->lfCheckError($this->arrData, $this->arrPayment); 
    148177            // 入力エラーなし 
     
    151180                foreach (array_keys($_SESSION['shipping']) as $key) { 
    152181                    $timeId = $this->objFormParam->getValue('deliv_time_id' . $key); 
     182 
    153183                    /* TODO 
    154184                     * SC_Purchase::getShippingTemp() で取得して, 
    155185                     * リファレンスで代入すると, セッションに添字を追加できない? 
    156186                     */ 
     187                    $_SESSION['shipping'][$key]['deliv_id'] = $deliv_id; 
    157188                    $_SESSION['shipping'][$key]['time_id'] = $timeId; 
    158189                    $_SESSION['shipping'][$key]['shipping_time'] = $this->arrDelivTime[$timeId]; 
    159190                    $_SESSION['shipping'][$key]['shipping_date'] = $this->objFormParam->getValue('deliv_date' . $key); 
    160191                } 
    161                 $this->lfRegistData($uniqid, $objPurchase); 
     192                $this->lfRegistData($this->tpl_uniqid, $objPurchase); 
    162193 
    163194                // 正常に登録されたことを記録しておく 
     
    167198                exit; 
    168199            }else{ 
    169                 // ユーザユニークIDの取得 
    170                 $uniqid = $objSiteSess->getUniqId(); 
    171200                // 受注一時テーブルからの情報を格納 
    172                 $this->objFormParam->setParam($objPurchase->getOrderTemp($uniqid)); 
     201                $this->img_show = $this->lfGetImgShow($this->arrPayment); 
     202                $this->objFormParam->setParam($objPurchase->getOrderTemp($this->tpl_uniqid)); 
    173203            } 
    174204            break; 
    175205        // 前のページに戻る 
    176206        case 'return': 
    177             // 非会員の場合 
     207 
    178208            // 正常な推移であることを記録しておく 
    179209            $objSiteSess->setRegistFlag(); 
     
    183213 
    184214        default: 
    185             // 受注一時テーブルからの情報を格納 
     215 
     216            // 前のページから戻ってきた場合の初期値を設定 
     217            $this->lfInitParam(); 
    186218            $this->objFormParam->setParam($arrOrderTemp); 
     219            $this->objFormParam->convParam(); 
     220 
     221            if (!$this->is_single_deliv) { 
     222                $deliv_id = $this->objFormParam->getValue('deliv_id'); 
     223            } 
     224 
     225            if (!SC_Utils_Ex::isBlank($deliv_id)) { 
     226                $this->objFormParam->setValue('deliv_id', $deliv_id); 
     227                $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $deliv_id); 
     228                // XXX セッションからデフォルト値を取得する必要あり 
     229                $this->arrDelivTime = $objPurchase->getDelivTime($deliv_id); 
     230                $this->img_show = $this->lfGetImgShow($this->arrPayment); 
     231            } 
    187232            break; 
    188233        } 
    189234 
    190         // 支払い方法の画像があるなしを取得($img_show true:ある false:なし) 
    191         $this->img_show = $this->lfGetImgShow($this->arrPayment); 
    192         // お届け日一覧の取得 
    193         $this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $this->cartKey); 
     235        // モバイル用 ポストバック処理 
     236        if (SC_Display::detectDevice() == DEVICE_TYPE_MOBILE) { 
     237            switch($this->getMode()) { 
     238            case 'select_deliv': 
     239                $this->tpl_mainpage = 'shopping/payment.tpl'; 
     240                break; 
     241 
     242            case 'confirm': 
     243            case 'return': 
     244            default: 
     245                if ($this->is_single_deliv) { 
     246                    $this->tpl_mainpage = 'shopping/payment.tpl'; 
     247                } else { 
     248                    $this->tpl_mainpage = 'shopping/select_deliv.tpl'; 
     249                } 
     250            } 
     251        } 
     252 
    194253        $this->arrForm = $this->objFormParam->getFormParamList(); 
    195254    } 
     
    205264 
    206265    /* パラメータ情報の初期化 */ 
    207     function lfInitParam() { 
    208         $this->objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    209         $this->objFormParam->addParam("ポイント", "use_point", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START")); 
    210         $this->objFormParam->addParam("その他お問い合わせ", "message", LTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    211         $this->objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2'); 
    212  
    213         for ($i = 0; $i < count($this->shipping); $i++) { 
    214             $this->objFormParam->addParam("お届け時間", "deliv_time_id" . $i, INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    215             $this->objFormParam->addParam("お届け日", "deliv_date" . $i, STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     266    function lfInitParam($deliv_only = false) { 
     267        $this->objFormParam->addParam("配送業者", "deliv_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
     268 
     269        if (!$deliv_only) { 
     270            $this->objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
     271            $this->objFormParam->addParam("ポイント", "use_point", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START")); 
     272            $this->objFormParam->addParam("その他お問い合わせ", "message", LTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     273            $this->objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2'); 
     274 
     275            for ($i = 0; $i < count($this->shipping); $i++) { 
     276                $this->objFormParam->addParam("お届け時間", "deliv_time_id" . $i, INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     277                $this->objFormParam->addParam("お届け日", "deliv_date" . $i, STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     278            } 
    216279        } 
    217280    } 
Note: See TracChangeset for help on using the changeset viewer.