Page
[ class tree: Page ] [ index: Page ] [ all elements ]

Source for file LC_Page_Shopping_Confirm.php

Documentation is available at LC_Page_Shopping_Confirm.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. // {{{ requires
  25. require_once CLASS_EX_REALDIR 'page_extends/LC_Page_Ex.php';
  26.  
  27. /**
  28.  * 入力内容確認のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_Shopping_Confirm.php 21113 2011-08-03 10:25:08Z 468 $
  33.  */
  34. class LC_Page_Shopping_Confirm extends LC_Page_Ex {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_title "ご入力内容のご確認";
  47.         $masterData new SC_DB_MasterData();
  48.         $this->arrPref $masterData->getMasterData('mtb_pref');
  49.         $this->arrSex $masterData->getMasterData("mtb_sex");
  50.         $this->arrMAILMAGATYPE $masterData->getMasterData("mtb_mail_magazine_type");
  51.         $this->arrReminder $masterData->getMasterData("mtb_reminder");
  52.         $this->arrDeliv SC_Helper_DB_Ex::sfGetIDValueList("dtb_deliv""deliv_id""service_name");
  53.         $this->httpCacheControl('nocache');
  54.     }
  55.  
  56.     /**
  57.      * Page のプロセス.
  58.      *
  59.      * @return void 
  60.      */
  61.     function process({
  62.         parent::process();
  63.         $this->action();
  64.         $this->sendResponse();
  65.     }
  66.  
  67.     /**
  68.      * Page のアクション.
  69.      *
  70.      * @return void 
  71.      */
  72.     function action({
  73.         $objCartSess new SC_CartSession_Ex();
  74.         $objSiteSess new SC_SiteSession_Ex();
  75.         $objCustomer new SC_Customer_Ex();
  76.         $objQuery new SC_Query_Ex();
  77.         $objDb new SC_Helper_DB_Ex();
  78.         $objPurchase new SC_Helper_Purchase_Ex();
  79.  
  80.         $this->is_multiple $objPurchase->isMultiple();
  81.  
  82.         // 前のページで正しく登録手続きが行われた記録があるか判定
  83.         if (!$objSiteSess->isPrePage()) {
  84.             SC_Utils_Ex::sfDispSiteError(PAGE_ERROR$objSiteSess);
  85.         }
  86.  
  87.         // ユーザユニークIDの取得と購入状態の正当性をチェック
  88.         $this->tpl_uniqid $objSiteSess->getUniqId();
  89.         $objPurchase->verifyChangeCart($this->tpl_uniqid$objCartSess);
  90.  
  91.         $this->cartKey $objCartSess->getKey();
  92.  
  93.         // カート内商品のチェック
  94.         $this->tpl_message $objCartSess->checkProducts($this->cartKey);
  95.         if (!SC_Utils_Ex::isBlank($this->tpl_message)) {
  96.             SC_Response_Ex::sendRedirect(CART_URLPATH);
  97.             exit;
  98.         }
  99.  
  100.         // カートの商品を取得
  101.         $this->arrShipping $objPurchase->getShippingTemp($this->is_multiple);
  102.         $this->arrCartItems $objCartSess->getCartList($this->cartKey);
  103.         // 合計金額
  104.         $this->tpl_total_inctax[$this->cartKey$objCartSess->getAllProductsTotal($this->cartKey);
  105.         // 税額
  106.         $this->tpl_total_tax[$this->cartKey$objCartSess->getAllProductsTax($this->cartKey);
  107.         // ポイント合計
  108.         $this->tpl_total_point[$this->cartKey$objCartSess->getAllProductsPoint($this->cartKey);
  109.  
  110.         // 一時受注テーブルの読込
  111.         $arrOrderTemp $objPurchase->getOrderTemp($this->tpl_uniqid);
  112.  
  113.         // カート集計を元に最終計算
  114.         $arrCalcResults $objCartSess->calculate($this->cartKey$objCustomer,
  115.                                                   $arrOrderTemp['use_point'],
  116.                                                   $objPurchase->getShippingPref($this->is_multiple),
  117.                                                   $arrOrderTemp['charge'],
  118.                                                   $arrOrderTemp['discount'],
  119.                                                   $arrOrderTemp['deliv_id']);
  120.         $this->arrForm array_merge($arrOrderTemp$arrCalcResults);
  121.  
  122.         // 会員ログインチェック
  123.         if($objCustomer->isLoginSuccess(true)) {
  124.             $this->tpl_login '1';
  125.             $this->tpl_user_point $objCustomer->getValue('point');
  126.         }
  127.  
  128.         // 決済モジュールを使用するかどうか
  129.         $this->use_module $this->useModule($this->arrForm['payment_id']);
  130.  
  131.         switch($this->getMode()) {
  132.         // 前のページに戻る
  133.         case 'return':
  134.             // 正常な推移であることを記録しておく
  135.             $objSiteSess->setRegistFlag();
  136.             SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
  137.             exit;
  138.             break;
  139.         case 'confirm':
  140.             /*
  141.              * 決済モジュールで必要なため, 受注番号を取得
  142.              */
  143.             $this->arrForm["order_id"$objQuery->nextval("dtb_order_order_id");
  144.             $_SESSION["order_id"$this->arrForm['order_id'];
  145.  
  146.             // 集計結果を受注一時テーブルに反映
  147.             $objPurchase->saveOrderTemp($this->tpl_uniqid$this->arrForm,
  148.                                         $objCustomer);
  149.  
  150.             // 正常に登録されたことを記録しておく
  151.             $objSiteSess->setRegistFlag();
  152.  
  153.             // 決済モジュールを使用する場合
  154.             if ($this->use_module{
  155.                 $objPurchase->completeOrder(ORDER_PENDING);
  156.                 SC_Response_Ex::sendRedirect(SHOPPING_MODULE_URLPATH);
  157.             }
  158.             // 購入完了ページ
  159.             else {
  160.                 $objPurchase->completeOrder(ORDER_NEW);
  161.                 $objPurchase->sendOrderMail($this->arrForm["order_id"]);
  162.                 SC_Response_Ex::sendRedirect(SHOPPING_COMPLETE_URLPATH);
  163.             }
  164.             exit;
  165.             break;
  166.         default:
  167.             break;
  168.         }
  169.     }
  170.  
  171.     /**
  172.      * デストラクタ.
  173.      *
  174.      * @return void 
  175.      */
  176.     function destroy({
  177.         parent::destroy();
  178.     }
  179.  
  180.     /**
  181.      * 決済モジュールを使用するかどうか.
  182.      *
  183.      * dtb_payment.memo03 に値が入っている場合は決済モジュールと見なす.
  184.      *
  185.      * @param integer $payment_id 支払い方法ID
  186.      * @return boolean 決済モジュールを使用する支払い方法の場合 true
  187.      */
  188.     function useModule($payment_id{
  189.         $objQuery =SC_Query_Ex::getSingletonInstance();
  190.         $memo03 $objQuery->get('memo03''dtb_payment''payment_id = ?',
  191.                                  array($payment_id));
  192.         return !SC_Utils_Ex::isBlank($memo03);
  193.     }
  194. }
  195. ?>

Documentation generated on Fri, 24 Feb 2012 14:02:17 +0900 by Seasoft