Ignore:
Timestamp:
2011/01/10 13:59:23 (13 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:19859
bzr:committer:
Kentaro Ohkouchi <nanasess@fsm.ne.jp>
bzr:file-ids:

data/Smarty/templates/default/shopping/deliv.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fshopping%2Fdeliv.tpl
data/Smarty/templates/default/shopping/multiple.tpl multiple.tpl-20110109122547-u3fq5xmi1b4jn5n4-1
data/Smarty/templates/default/shopping/nonmember_input.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fshopping%2Fnonmember_input.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/class/SC_CartSession.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_CartSession.php
data/class/SC_Customer.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Customer.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/error/LC_Page_Error.php 15141@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Ferror%2FLC_Page_Error.php
data/class/pages/mypage/LC_Page_Mypage_DeliveryAddr.php 16093@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fmypage%2FLC_Page_Mypage_DeliveryAddr.php
data/class/pages/shopping/LC_Page_Shopping.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping.php
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_Deliv.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping_Deliv.php
data/class/pages/shopping/LC_Page_Shopping_Multiple.php lc_page_shopping_mul-20110109122547-u3fq5xmi1b4jn5n4-2
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
data/class/util/SC_Utils.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Futil%2FSC_Utils.php
data/class_extends/page_extends/shopping/LC_Page_Shopping_Multiple_Ex.php lc_page_shopping_mul-20110109122547-u3fq5xmi1b4jn5n4-3
data/install.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Finstall.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
html/install/sql/drop_table.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fdrop_table.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
html/js/site.js site.js-20101208110316-7ungq6kj49bhw4d1-7
html/shopping/multiple.php multiple.php-20110109122547-u3fq5xmi1b4jn5n4-4
html/user_data/packages/default/css/under02.css 16708@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Fuser_data%2Fpackages%2Fdefault%2Fcss%2Funder02.css
bzr:mapping-version:
v4
bzr:merge:

nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
nanasess@fsm.ne.jp-20110110045915-6b02oxleldtyw7ee
bzr:revno:
2589
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-revisions:

data/Smarty/templates/default/shopping/deliv.tpl nanasess@fsm.ne.jp-20110109122851-7ox5o3sn0yp5rjpn
data/Smarty/templates/default/shopping/multiple.tpl nanasess@fsm.ne.jp-20110109122851-7ox5o3sn0yp5rjpn
data/Smarty/templates/default/shopping/nonmember_input.tpl nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/Smarty/templates/default/shopping/payment.tpl nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/SC_CartSession.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/SC_Customer.php nanasess@fsm.ne.jp-20110109122851-7ox5o3sn0yp5rjpn
data/class/helper/SC_Helper_DB.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/helper/SC_Helper_Purchase.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/pages/error/LC_Page_Error.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/pages/mypage/LC_Page_Mypage_DeliveryAddr.php nanasess@fsm.ne.jp-20110109122851-7ox5o3sn0yp5rjpn
data/class/pages/shopping/LC_Page_Shopping.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/pages/shopping/LC_Page_Shopping_Confirm.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/pages/shopping/LC_Page_Shopping_Deliv.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/pages/shopping/LC_Page_Shopping_Multiple.php nanasess@fsm.ne.jp-20110109122851-7ox5o3sn0yp5rjpn
data/class/pages/shopping/LC_Page_Shopping_Payment.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class/util/SC_Utils.php nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
data/class_extends/page_extends/shopping/LC_Page_Shopping_Multiple_Ex.php nanasess@fsm.ne.jp-20110109122604-8059rgcurt250q06
html/install/sql/create_table_mysql.sql nanasess@fsm.ne.jp-20110109121902-2oqes35heyjm5nlc
html/install/sql/create_table_pgsql.sql nanasess@fsm.ne.jp-20110109121902-2oqes35heyjm5nlc
html/install/sql/drop_table.sql nanasess@fsm.ne.jp-20110109121902-2oqes35heyjm5nlc
html/install/sql/insert_data.sql nanasess@fsm.ne.jp-20110109122604-8059rgcurt250q06
html/js/site.js nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
html/shopping/multiple.php nanasess@fsm.ne.jp-20110109122604-8059rgcurt250q06
html/user_data/packages/default/css/under02.css nanasess@fsm.ne.jp-20110110045555-wppbrefvyq7ccz18
bzr:timestamp:
2011-01-10 13:59:15.388999939 +0900
bzr:user-agent:
bzr2.2.2+bzr-svn1.0.4
svn:original-date:
2011-01-10T04:59:15.389000Z
Message:

#843(複数配送先の指定)

  • とりあえず通常配送が通るように修正
File:
1 edited

Legend:

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

    r19763 r19860  
    6363        $objQuery->begin(); 
    6464        SC_Utils_Ex::sfIsPrePage($objSiteSession); 
    65         $uniqId = SC_Utils_Ex::sfCheckNormalAccess($objSiteSession, 
    66                                                    $objCartSession); 
     65 
     66        $uniqId = $objSiteSession->getUniqId(); 
     67        $this->verifyChangeCart($uniqId, $objCartSession); 
     68 
    6769        $orderTemp = $this->getOrderTemp($uniqId); 
    6870 
     
    7577 
    7678    /** 
     79     * カートに変化が無いか検証する. 
     80     * 
     81     * ユニークIDとセッションのユニークIDを比較し, 異なる場合は 
     82     * エラー画面を表示する. 
     83     * 
     84     * カートが空の場合, 購入ボタン押下後にカートが変更された場合は 
     85     * カート画面へ遷移する. 
     86     * 
     87     * @param string $uniqId ユニークID 
     88     * @param SC_CartSession $objCartSession 
     89     * @return void 
     90     */ 
     91    function verifyChangeCart($uniqId, &$objCartSession) { 
     92        $cartkeys = $objCartSession->getKeys(); 
     93 
     94        foreach ($cartKeys as $cartKey) { 
     95            // 初回のみカートの内容を保存 
     96            $objCartSess->saveCurrentCart($uniqid, $cartKey); 
     97            /* 
     98             * POSTのユニークIDとセッションのユニークIDを比較 
     99             *(ユニークIDがPOSTされていない場合はスルー) 
     100             */ 
     101            if(!SC_SiteSession::checkUniqId()) { 
     102                // エラーページの表示 
     103                // XXX $objSiteSess インスタンスは未使用? 
     104                SC_Utils_Ex::sfDispSiteError(CANCEL_PURCHASE, $objSiteSess); 
     105            } 
     106 
     107            // カート内が空でないか || 購入ボタンを押してから変化がないか 
     108            $quantity = $objCartSess->getTotalQuantity($cartKey); 
     109            if($objCartSess->checkChangeCart($cartKey) || !($quantity > 0)) { 
     110                // カート情報表示に強制移動する 
     111                if (Net_UserAgent_Mobile::isMobile()) { 
     112                    header("Location: ". MOBILE_CART_URL_PATH 
     113                           . "?" . session_name() . "=" . session_id()); 
     114                } else { 
     115                    header("Location: ".CART_URL_PATH); 
     116                } 
     117                exit; 
     118            } 
     119        } 
     120    } 
     121 
     122    /** 
    77123     * 受注一時情報を取得する. 
    78124     * 
     
    84130        return $objQuery->getRow("*", "dtb_order_temp", "order_temp_id = ?", 
    85131                                 array($uniqId)); 
     132    } 
     133 
     134    /** 
     135     * 受注一時情報を保存する. 
     136     * 
     137     * 既存のデータが存在しない場合は新規保存. 存在する場合は更新する. 
     138     * 既存のデータが存在せず, ユーザーがログインしている場合は, 
     139     * 会員情報をコピーする. 
     140     * 
     141     * @param integer $uniqId 受注一時情報ID 
     142     * @param array $params 登録する受注情報の配列 
     143     * @param SC_Customer $objCustomer SC_Customer インスタンス 
     144     * @return array void 
     145     */ 
     146    function saveOrderTemp($uniqId, $params, &$objCustomer) { 
     147        if (SC_Utils_Ex::isBlank($uniqId)) { 
     148            return; 
     149        } 
     150 
     151        $objQuery =& SC_Query::getSingletonInstance(); 
     152        // 存在するカラムのみを対象とする 
     153        $cols = $objQuery->listTableFields('dtb_order_temp'); 
     154        foreach ($params as $key => $val) { 
     155            if (in_array($key, $cols)) { 
     156                $sqlval[$key] = $val; 
     157            } 
     158        } 
     159 
     160        $sqlval['session'] = serialize($_SESSION); 
     161        $exists = $this->getOrderTemp($uniqId); 
     162        if (SC_Utils_Ex::isBlank($exists)) { 
     163            $this->copyFromCustomer($sqlval, $objCustomer); 
     164            $sqlval['order_temp_id'] = $uniqId; 
     165            $sqlval['create_date'] = "now()"; 
     166            $objQuery->insert("dtb_order_temp", $sqlval); 
     167        } else { 
     168            $objQuery->update("dtb_order_temp", $sqlval, 'order_temp_id = ?', 
     169                              array($uniqId)); 
     170        } 
     171    } 
     172 
     173    /** 
     174     * 配送情報をセッションに保存する. 
     175     */ 
     176    function saveShippingTemp(&$src, $other_deliv_id = 0, 
     177                              $keys = array('name01', 'name02', 'kana01', 'kana02', 
     178                                            'sex', 'zip01', 'zip02', 'pref', 
     179                                            'addr01', 'addr02', 
     180                                            'tel01', 'tel02', 'tel03'), 
     181                              $prefix = 'shipping') { 
     182        $dest = array(); 
     183        foreach ($keys as $key) { 
     184            $dest[$prefix . '_' . $key] = $src[$prefix . '_' . $key]; 
     185        } 
     186        $_SESSION['shipping'][$other_deliv_id] = $src; 
     187    } 
     188 
     189    /** 
     190     * 会員情報を受注情報にコピーする. 
     191     * 
     192     * ユーザーがログインしていない場合は何もしない. 
     193     * 会員情報を $dest の order_* へコピーする. 
     194     * customer_id は強制的にコピーされる. 
     195     * 
     196     * @param array $dest コピー先の配列 
     197     * @param SC_Customer $objCustomer SC_Customer インスタンス 
     198     * @param array $keys コピー対象のキー 
     199     * @param string $prefix コピー先の接頭辞. デフォルト order 
     200     * @return void 
     201     */ 
     202    function copyFromCustomer(&$dest, &$objCustomer, 
     203                              $keys = array('name01', 'name02', 'kana01', 'kana02', 
     204                                            'sex', 'zip01', 'zip02', 'pref', 
     205                                            'addr01', 'addr02', 
     206                                            'tel01', 'tel02', 'tel03', 'job', 
     207                                            'birth', 'email'), 
     208                              $prefix = 'order') { 
     209        if ($objCustomer->isLoginSuccess(true)) { 
     210 
     211            foreach ($keys as $key) { 
     212                if (in_array($key, $keys)) { 
     213                    $dest[$prefix . '_' . $key] = $objCustomer->getValue($key); 
     214                } 
     215            } 
     216 
     217            if (Net_UserAgent_Mobile::isMobile() 
     218                && in_array('email', $keys)) { 
     219                $email_mobile = $objCustomer->getValue('email_mobile'); 
     220                if (empty($email_mobile)) { 
     221                    $dest[$prefix . '_email'] = $objCustomer->getValue('email'); 
     222                } else { 
     223                    $dest[$prefix . '_email'] = $email_mobile; 
     224                } 
     225            } 
     226 
     227            $dest['customer_id'] = $objCustomer->getValue('customer_id'); 
     228            $dest['update_date'] = 'Now()'; 
     229        } 
     230    } 
     231 
     232    /** 
     233     * 受注情報を配送情報にコピーする. 
     234     * 
     235     * 受注情報($src)を $dest の order_* へコピーする. 
     236     * 
     237     * @param array $dest コピー先の配列 
     238     * @param array $src コピー元の配列 
     239     * @param array $keys コピー対象のキー 
     240     * @param string $prefix コピー先の接頭辞. デフォルト shipping 
     241     * @param string $src_prefix コピー元の接頭辞. デフォルト order 
     242     * @return void 
     243     */ 
     244    function copyFromOrder(&$dest, $src, 
     245                           $keys = array('name01', 'name02', 'kana01', 'kana02', 
     246                                         'sex', 'zip01', 'zip02', 'pref', 
     247                                         'addr01', 'addr02', 
     248                                         'tel01', 'tel02', 'tel03'), 
     249                           $prefix = 'shipping', $src_prefix = 'order') { 
     250        foreach ($keys as $key) { 
     251            if (in_array($key, $keys)) { 
     252                $dest[$prefix . '_' . $key] = $src[$src_prefix . '_' . $key]; 
     253            } 
     254        } 
     255    } 
     256 
     257    /** 
     258     * 購入金額に応じた支払方法を取得する. 
     259     * 
     260     * @param integer $total 購入金額 
     261     * @param array $productClassIds 購入する商品規格IDの配列 
     262     * @return array 購入金額に応じた支払方法の配列 
     263     */ 
     264    function getPayment($total, $productClassIds) { 
     265        // 有効な支払方法を取得 
     266        $objProduct = new SC_Product(); 
     267        $paymentIds = $objProduct->getEnablePaymentIds($productClassIds); 
     268 
     269        $objQuery =& SC_Query::getSingletonInstance(); 
     270 
     271        // 削除されていない支払方法を取得 
     272        $where = 'del_flg = 0 AND payment_id IN (' . implode(', ', array_pad(array(), count($paymentIds), '?')) . ')'; 
     273        $objQuery->setOrder("rank DESC"); 
     274        $payments = $objQuery->select("payment_id, payment_method, rule, upper_rule, note, payment_image", "dtb_payment", $where, $paymentIds); 
     275 
     276        foreach ($payments as $data) { 
     277            // 下限と上限が設定されている 
     278            if (strlen($data['rule']) != 0 && strlen($data['upper_rule']) != 0) { 
     279                if ($data['rule'] <= $total_inctax && $data['upper_rule'] >= $total_inctax) { 
     280                    $arrPayment[] = $data; 
     281                } 
     282            } 
     283            // 下限のみ設定されている 
     284            elseif (strlen($data['rule']) != 0) { 
     285                if($data['rule'] <= $total_inctax) { 
     286                    $arrPayment[] = $data; 
     287                } 
     288            } 
     289            // 上限のみ設定されている 
     290            elseif (strlen($data['upper_rule']) != 0) { 
     291                if($data['upper_rule'] >= $total_inctax) { 
     292                    $arrPayment[] = $data; 
     293                } 
     294            } 
     295            // いずれも設定なし 
     296            else { 
     297                $arrPayment[] = $data; 
     298            } 
     299          } 
     300        return $arrPayment; 
     301    } 
     302 
     303    /** 
     304     * 商品規格IDの配列からお届け予定日の配列を取得する. 
     305     * 
     306     * @param array $productClassIds 商品規格IDの配列 
     307     */ 
     308    function getDelivDate($productClassIds) { 
     309        // TODO 
     310    } 
     311 
     312    /** 
     313     * 商品種別ID からお届け時間の配列を取得する. 
     314     */ 
     315    function getDelivTime($productTypeId) { 
     316        $objQuery =& SC_Query::getSingletonInstance(); 
     317        $from = <<< __EOS__ 
     318                 dtb_deliv T1 
     319            JOIN dtb_delivtime T2 
     320              ON T1.deliv_id = T2. deliv_id 
     321__EOS__; 
     322            $objQuery->setOrder("time_id"); 
     323            $where = "deliv_id = ?"; 
     324            $results = $objQuery->select("time_id, deliv_time", $from, 
     325                                         "product_type_id = ?", array($productTypeId)); 
     326            $arrDelivTime = array(); 
     327            foreach ($results as $val) { 
     328                $arrDelivTime[$val['time_id']] = $val['deliv_time']; 
     329            } 
     330            return $arrDelivTime; 
    86331    } 
    87332 
     
    103348 
    104349        // 別のお届け先を指定が無ければ, お届け先に登録住所をコピー 
     350        /* FIXME 
    105351        if ($orderParams['deliv_check'] == "-1") { 
    106352            $keys = array('name01', 'name02', 'kana01', 'kana02', 'pref', 'zip01', 
     
    110356            } 
    111357        } 
    112  
     358        */ 
    113359        // 不要な変数を unset 
    114360        $unsets = array('mailmaga_flg', 'deliv_check', 'point_check', 'password', 
Note: See TracChangeset for help on using the changeset viewer.