/**
  * カートの情報を取得する
  *
  * @param  SC_CartSession $objCart カートセッション管理クラス
  * @return array          カートデータ配列
  */
 public function lfGetCartData(&$objCart)
 {
     $arrCartKeys = $objCart->getKeys();
     foreach ($arrCartKeys as $cart_key) {
         // 購入金額合計
         $products_total += $objCart->getAllProductsTotal($cart_key);
         // 合計数量
         $total_quantity += $objCart->getTotalQuantity($cart_key);
         // 送料無料チェック
         if (!$this->isMultiple && !$this->hasDownload) {
             $is_deliv_free = $objCart->isDelivFree($cart_key);
         }
     }
     $arrCartList = array();
     $arrCartList['ProductsTotal'] = $products_total;
     $arrCartList['TotalQuantity'] = $total_quantity;
     // 店舗情報の取得
     $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
     $arrCartList['free_rule'] = $arrInfo['free_rule'];
     // 送料無料までの金額
     if ($is_deliv_free) {
         $arrCartList['deliv_free'] = 0;
     } else {
         $deliv_free = $arrInfo['free_rule'] - $products_total;
         $arrCartList['deliv_free'] = $deliv_free;
     }
     return $arrCartList;
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $objSubView = new SC_SiteView();
     $objCart = new SC_CartSession();
     $objSiteInfo = new SC_SiteInfo();
     if (count($_SESSION[$objCart->key]) > 0) {
         // カート情報を取得
         $arrCartList = $objCart->getCartList();
         // カート内の商品ID一覧を取得
         $arrAllProductID = $objCart->getAllProductID();
         // 商品が1つ以上入っている場合には商品名称を取得
         if (count($arrAllProductID) > 0) {
             $objQuery = new SC_Query();
             $arrVal = array();
             $sql = "";
             $sql = "SELECT name FROM dtb_products WHERE product_id IN ( ?";
             $arrVal = array($arrAllProductID[0]);
             for ($i = 1; $i < count($arrAllProductID); $i++) {
                 $sql .= " ,? ";
                 array_push($arrVal, $arrAllProductID[$i]);
             }
             $sql .= " )";
             $arrProduct_name = $objQuery->getAll($sql, $arrVal);
             foreach ($arrProduct_name as $key => $val) {
                 $arrCartList[$key]['product_name'] = $val['name'];
             }
         }
         // 店舗情報の取得
         $arrInfo = $objSiteInfo->data;
         // 購入金額合計
         $ProductsTotal = $objCart->getAllProductsTotal($arrInfo);
         // 合計個数
         $TotalQuantity = $objCart->getTotalQuantity();
         // 送料無料までの金額
         $arrCartList[0]['ProductsTotal'] = $ProductsTotal;
         $arrCartList[0]['TotalQuantity'] = $TotalQuantity;
         $deliv_free = $arrInfo['free_rule'] - $ProductsTotal;
         $arrCartList[0]['free_rule'] = $arrInfo['free_rule'];
         $arrCartList[0]['deliv_free'] = $deliv_free;
         $this->arrCartList = $arrCartList;
     }
     $objSubView->assignobj($this);
     $objSubView->display($this->tpl_mainpage);
 }
 /**
  * カートの情報を取得する
  *
  * @param  SC_CartSession $objCart  カートセッション管理クラス
  * @param  Array          $arrInfo  基本情報配列
  * @param  Array          $cartKeys 商品種類配列
  * @return array          $arrCartList カートデータ配列
  */
 public function lfGetCartData($objCart, $arrInfo, $cartKeys)
 {
     $cartList = array();
     foreach ($cartKeys as $key) {
         // カート集計処理
         $cartList[$key]['productTypeName'] = $this->arrProductType[$key];
         //商品種類名
         $cartList[$key]['totalInctax'] = $objCart->getAllProductsTotal($key);
         //合計金額
         $cartList[$key]['delivFree'] = $arrInfo['free_rule'] - $cartList[$key]['totalInctax'];
         // 送料無料までの金額を計算
         $cartList[$key]['totalTax'] = $objCart->getAllProductsTax($key);
         //消費税合計
         $cartList[$key]['quantity'] = $objCart->getTotalQuantity($key);
         //商品数量合計
         $cartList[$key]['productTypeId'] = $key;
         // 商品種別ID
     }
     return $cartList;
 }
 /**
  * 配送業者IDから, 支払い方法, お届け時間の配列を取得する.
  *
  * 結果の連想配列の添字の値は以下の通り
  * - 'arrDelivTime' - お届け時間の配列
  * - 'arrPayment' - 支払い方法の配列
  * - 'img_show' - 支払い方法の画像の有無
  *
  * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス
  * @param SC_CartSession $objCartSess SC_CartSession インスタンス
  * @param integer $deliv_id 配送業者ID
  * @return array 支払い方法, お届け時間を格納した配列
  */
 function getSelectedDeliv(&$objPurchase, &$objCartSess, $deliv_id)
 {
     $arrResults = array();
     $arrResults['arrDelivTime'] = $objPurchase->getDelivTime($deliv_id);
     $total = $objCartSess->getAllProductsTotal($objCartSess->getKey(), $deliv_id);
     $arrResults['arrPayment'] = $objPurchase->getPaymentsByPrice($total, $deliv_id);
     $arrResults['img_show'] = $this->hasPaymentImage($arrResults['arrPayment']);
     return $arrResults;
 }
 /**
  * 配送業者IDから, 支払い方法, お届け時間の配列を取得する.
  *
  * 結果の連想配列の添字の値は以下の通り
  * - 'arrDelivTime' - お届け時間の配列
  * - 'arrPayment' - 支払い方法の配列
  * - 'img_show' - 支払い方法の画像の有無
  *
  * @param  SC_CartSession $objCartSess SC_CartSession インスタンス
  * @param  integer        $deliv_id    配送業者ID
  * @return array          支払い方法, お届け時間を格納した配列
  */
 public function getSelectedDeliv(&$objCartSess, $deliv_id)
 {
     $arrResults = array();
     if (strval($deliv_id) === strval(intval($deliv_id))) {
         $arrResults['arrDelivTime'] = SC_Helper_Delivery_Ex::getDelivTime($deliv_id);
         $total = $objCartSess->getAllProductsTotal($objCartSess->getKey());
         $payments_deliv = SC_Helper_Delivery_Ex::getPayments($deliv_id);
         $objPayment = new SC_Helper_Payment_Ex();
         $payments_total = $objPayment->getByPrice($total);
         $arrPayment = array();
         foreach ($payments_total as $payment) {
             if (in_array($payment['payment_id'], $payments_deliv)) {
                 $arrPayment[] = $payment;
             }
         }
         $arrResults['arrPayment'] = $arrPayment;
         $arrResults['img_show'] = $this->hasPaymentImage($arrResults['arrPayment']);
     }
     return $arrResults;
 }
示例#6
0
 /**
  * カート内商品の集計処理を行う.
  *
  * @param LC_Page $objPage ページクラスのインスタンス
  * @param SC_CartSession $objCartSess カートセッションのインスタンス
  * @param array $arrInfo 商品情報の配列
  * @return LC_Page 集計処理後のページクラスインスタンス
  */
 function sfTotalCart(&$objPage, $objCartSess, $arrInfo)
 {
     // 規格名一覧
     $arrClassName = $this->sfGetIDValueList("dtb_class", "class_id", "name");
     // 規格分類名一覧
     $arrClassCatName = $this->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
     $objPage->tpl_total_pretax = 0;
     // 費用合計(税込み)
     $objPage->tpl_total_tax = 0;
     // 消費税合計
     if (USE_POINT === true) {
         $objPage->tpl_total_point = 0;
         // ポイント合計
     }
     // カート内情報の取得
     $arrCart = $objCartSess->getCartList();
     $max = count($arrCart);
     $cnt = 0;
     for ($i = 0; $i < $max; $i++) {
         // 商品規格情報の取得
         $arrData = $this->sfGetProductsClass($arrCart[$i]['id']);
         $limit = "";
         // DBに存在する商品
         if (count($arrData) > 0) {
             // 購入制限数を求める。
             if ($arrData['stock_unlimited'] != '1' && $arrData['sale_unlimited'] != '1') {
                 if ($arrData['sale_limit'] < $arrData['stock']) {
                     $limit = $arrData['sale_limit'];
                 } else {
                     $limit = $arrData['stock'];
                 }
             } else {
                 if ($arrData['sale_unlimited'] != '1') {
                     $limit = $arrData['sale_limit'];
                 }
                 if ($arrData['stock_unlimited'] != '1') {
                     $limit = $arrData['stock'];
                 }
             }
             if ($limit != "" && $limit < $arrCart[$i]['quantity']) {
                 // カート内商品数を制限に合わせる
                 $objCartSess->setProductValue($arrCart[$i]['id'], 'quantity', $limit);
                 $quantity = $limit;
                 $objPage->tpl_message = "※「" . $arrData['name'] . "」は販売制限しております、一度にこれ以上の購入はできません。";
             } else {
                 $quantity = $arrCart[$i]['quantity'];
             }
             $objPage->arrProductsClass[$cnt] = $arrData;
             $objPage->arrProductsClass[$cnt]['quantity'] = $quantity;
             $objPage->arrProductsClass[$cnt]['cart_no'] = $arrCart[$i]['cart_no'];
             $objPage->arrProductsClass[$cnt]['class_name1'] = isset($arrClassName[$arrData['class_id1']]) ? $arrClassName[$arrData['class_id1']] : "";
             $objPage->arrProductsClass[$cnt]['class_name2'] = isset($arrClassName[$arrData['class_id2']]) ? $arrClassName[$arrData['class_id2']] : "";
             $objPage->arrProductsClass[$cnt]['classcategory_name1'] = $arrClassCatName[$arrData['classcategory_id1']];
             $objPage->arrProductsClass[$cnt]['classcategory_name2'] = $arrClassCatName[$arrData['classcategory_id2']];
             // 画像サイズ
             $main_image_path = IMAGE_SAVE_DIR . basename($objPage->arrProductsClass[$cnt]["main_image"]);
             if (file_exists($main_image_path)) {
                 list($image_width, $image_height) = getimagesize($main_image_path);
             } else {
                 $image_width = 0;
                 $image_height = 0;
             }
             $objPage->arrProductsClass[$cnt]["tpl_image_width"] = $image_width + 60;
             $objPage->arrProductsClass[$cnt]["tpl_image_height"] = $image_height + 80;
             // 価格の登録
             if ($arrData['price02'] != "") {
                 $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price02']);
                 $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price02'];
             } else {
                 $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price01']);
                 $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price01'];
             }
             // ポイント付与率の登録
             if (USE_POINT === true) {
                 $objCartSess->setProductValue($arrCart[$i]['id'], 'point_rate', $arrData['point_rate']);
             }
             // 商品ごとの合計金額
             $objPage->arrProductsClass[$cnt]['total_pretax'] = $objCartSess->getProductTotal($arrInfo, $arrCart[$i]['id']);
             // 送料の合計を計算する
             $objPage->tpl_total_deliv_fee += $arrData['deliv_fee'] * $arrCart[$i]['quantity'];
             $cnt++;
         } else {
             // DBに商品が見つからない場合はカート商品の削除
             $objCartSess->delProductKey('id', $arrCart[$i]['id']);
         }
     }
     // 全商品合計金額(税込み)
     $objPage->tpl_total_pretax = $objCartSess->getAllProductsTotal($arrInfo);
     // 全商品合計消費税
     $objPage->tpl_total_tax = $objCartSess->getAllProductsTax($arrInfo);
     // 全商品合計ポイント
     if (USE_POINT === true) {
         $objPage->tpl_total_point = $objCartSess->getAllProductsPoint();
     }
     return $objPage;
 }
 function lfCheckError($arrData)
 {
     // 入力データを渡す。
     $arrRet = $this->objFormParam->getHashArray();
     $objErr = new SC_CheckError($arrRet);
     $objErr->arrErr = $this->objFormParam->checkError();
     if (USE_POINT === false) {
         $_POST['point_check'] = "";
         $_POST['use_point'] = "0";
     }
     if (!isset($_POST['point_check'])) {
         $_POST['point_check'] = "";
     }
     if ($_POST['point_check'] == '1') {
         $objErr->doFunc(array("ポイントを使用する", "point_check"), array("EXIST_CHECK"));
         $objErr->doFunc(array("ポイント", "use_point"), array("EXIST_CHECK"));
         $max_point = $this->objCustomer->getValue('point');
         if ($max_point == "") {
             $max_point = 0;
         }
         // FIXME mobile 互換のため br は閉じない...
         if ($arrRet['use_point'] > $max_point) {
             $objErr->arrErr['use_point'] = "※ ご利用ポイントが所持ポイントを超えています。<br>";
         }
         if ($arrRet['use_point'] * POINT_VALUE > $arrData['subtotal']) {
             $objErr->arrErr['use_point'] = "※ ご利用ポイントがご購入金額を超えています。<br>";
         }
     }
     $objView = new SC_MobileView();
     $objSiteInfo = $objView->objSiteInfo;
     $arrInfo = $objSiteInfo->data;
     $objCartSess = new SC_CartSession();
     $arrInfo = $objSiteInfo->data;
     // 購入金額の取得得
     $total_pretax = $objCartSess->getAllProductsTotal($arrInfo);
     // 支払い方法の取得
     $arrPayment = $this->lfGetPayment($total_pretax);
     $pay_flag = true;
     foreach ($arrPayment as $key => $payment) {
         if ($payment['payment_id'] == $arrRet['payment_id']) {
             $pay_flag = false;
             break;
         }
     }
     if ($pay_flag && $arrRet['payment_id'] != "") {
         SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
     }
     return $objErr->arrErr;
 }
示例#8
0
 /**
  * 配送業者IDから, 支払い方法, お届け時間の配列を取得する.
  *
  * 結果の連想配列の添字の値は以下の通り
  * - 'arrDelivTime' - お届け時間の配列
  * - 'arrPayment' - 支払い方法の配列
  * - 'img_show' - 支払い方法の画像の有無
  *
  * @param  SC_CartSession $objCartSess SC_CartSession インスタンス
  * @param  integer        $deliv_id    配送業者ID
  * @return array          支払い方法, お届け時間を格納した配列
  */
 public function getSelectablePayment(&$objCartSess, $deliv_id, $is_list = false)
 {
     $arrPayment = array();
     if (strval($deliv_id) === strval(intval($deliv_id))) {
         $total = $objCartSess->getAllProductsTotal($objCartSess->getKey());
         $payments_deliv = DeliveryHelper::getPayments($deliv_id);
         $objPayment = new PaymentHelper();
         $payments_total = $objPayment->getByPrice($total);
         foreach ($payments_total as $payment) {
             if (in_array($payment['payment_id'], $payments_deliv)) {
                 if ($is_list) {
                     $arrPayment[$payment['payment_id']] = $payment['payment_method'];
                 } else {
                     $arrPayment[] = $payment;
                 }
             }
         }
     }
     return $arrPayment;
 }
 /**
  * カートの情報を取得する
  *
  * @param SC_CartSession $objCart カートセッション管理クラス
  * @return array $arrCartList カートデータ配列
  */
 function lfGetCartData(&$objCart)
 {
     $arrCartKeys = $objCart->getKeys();
     foreach ($arrCartKeys as $cart_key) {
         // カート情報を取得
         $arrCartList = $objCart->getCartList($cart_key);
         // カート内の商品ID一覧を取得
         $arrAllProductID = $objCart->getAllProductID($cart_key);
         // 商品が1つ以上入っている場合には商品名称を取得
         if (!SC_Utils_Ex::isBlank($arrCartList['productsClass'])) {
             foreach ($arrCartList['productsClass'] as $key => $val) {
                 $arrCartList[$key]['product_name'] = $val['name'];
             }
         }
         // 購入金額合計
         $products_total += $objCart->getAllProductsTotal($cart_key);
         // 合計数量
         $total_quantity += $objCart->getTotalQuantity($cart_key);
         // 送料無料チェック
         if (!$this->isMultiple && !$this->hasDownload) {
             $is_deliv_free = $objCart->isDelivFree($cart_key);
         }
     }
     $arrCartList[0]['ProductsTotal'] = $products_total;
     $arrCartList[0]['TotalQuantity'] = $total_quantity;
     // 店舗情報の取得
     $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
     $arrCartList[0]['free_rule'] = $arrInfo['free_rule'];
     // 送料無料までの金額
     if ($is_deliv_free) {
         $arrCartList[0]['deliv_free'] = 0;
     } else {
         $deliv_free = $arrInfo['free_rule'] - $products_total;
         $arrCartList[0]['deliv_free'] = $deliv_free;
     }
     return $arrCartList;
 }