/** * カートの情報を取得する * * @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; }
/** * カート内商品の集計処理を行う. * * @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; }
/** * 配送業者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; }