本文整理汇总了PHP中Eccube\Framework\Util\Utils::sfPrePoint方法的典型用法代码示例。如果您正苦于以下问题:PHP Utils::sfPrePoint方法的具体用法?PHP Utils::sfPrePoint怎么用?PHP Utils::sfPrePoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Eccube\Framework\Util\Utils
的用法示例。
在下文中一共展示了Utils::sfPrePoint方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getAllProductsPoint
/**
* @param integer $productTypeId
*/
public function getAllProductsPoint($productTypeId)
{
// ポイント合計
$total = 0;
if (USE_POINT !== false) {
$max = $this->getMax($productTypeId);
for ($i = 0; $i <= $max; $i++) {
$price = $this->cartSession[$productTypeId][$i]['price'];
$quantity = $this->cartSession[$productTypeId][$i]['quantity'];
if (!isset($this->cartSession[$productTypeId][$i]['point_rate'])) {
$this->cartSession[$productTypeId][$i]['point_rate'] = '';
}
$point_rate = $this->cartSession[$productTypeId][$i]['point_rate'];
if (!isset($this->cartSession[$productTypeId][$i]['id'][0])) {
$this->cartSession[$productTypeId][$i]['id'][0] = '';
}
$point = Utils::sfPrePoint($price, $point_rate);
$total += $point * $quantity;
}
}
return $total;
}
示例2: setProductsClassByProductIds
/**
* 商品IDに紐づく商品規格を自分自身に設定する.
*
* 引数の商品IDの配列に紐づく商品規格を取得し, 自分自身のフィールドに
* 設定する.
*
* @param array $arrProductId 商品ID の配列
* @param boolean $has_deleted 削除された商品規格も含む場合 true; 初期値 false
* @return void
*/
public function setProductsClassByProductIds($arrProductId, $has_deleted = false)
{
foreach ($arrProductId as $productId) {
$arrProductClasses = $this->getProductsClassFullByProductId($productId, $has_deleted);
$classCats1 = array();
$classCats1['__unselected'] = '選択してください';
// 規格1クラス名
$this->className1[$productId] = isset($arrProductClasses[0]['class_name1']) ? $arrProductClasses[0]['class_name1'] : '';
// 規格2クラス名
$this->className2[$productId] = isset($arrProductClasses[0]['class_name2']) ? $arrProductClasses[0]['class_name2'] : '';
// 規格1が設定されている
$this->classCat1_find[$productId] = $arrProductClasses[0]['classcategory_id1'] > 0;
// 要変更ただし、他にも改修が必要となる
// 規格2が設定されている
$this->classCat2_find[$productId] = $arrProductClasses[0]['classcategory_id2'] > 0;
// 要変更ただし、他にも改修が必要となる
$this->stock_find[$productId] = false;
$classCategories = array();
$classCategories['__unselected']['__unselected']['name'] = '選択してください';
$classCategories['__unselected']['__unselected']['product_class_id'] = $arrProductClasses[0]['product_class_id'];
// 商品種別
$classCategories['__unselected']['__unselected']['product_type'] = $arrProductClasses[0]['product_type_id'];
$this->product_class_id[$productId] = $arrProductClasses[0]['product_class_id'];
// 商品種別
$this->product_type[$productId] = $arrProductClasses[0]['product_type_id'];
foreach ($arrProductClasses as $arrProductsClass) {
$arrClassCats2 = array();
$classcategory_id1 = $arrProductsClass['classcategory_id1'];
$classcategory_id2 = $arrProductsClass['classcategory_id2'];
// 在庫
$stock_find_class = $arrProductsClass['stock_unlimited'] || $arrProductsClass['stock'] > 0;
$arrClassCats2['classcategory_id2'] = $classcategory_id2;
$arrClassCats2['name'] = $arrProductsClass['classcategory_name2'] . ($stock_find_class ? '' : ' (品切れ中)');
$arrClassCats2['stock_find'] = $stock_find_class;
if ($stock_find_class) {
$this->stock_find[$productId] = true;
}
if (!in_array($classcategory_id1, $classCats1)) {
$classCats1[$classcategory_id1] = $arrProductsClass['classcategory_name1'] . ($classcategory_id2 == 0 && !$stock_find_class ? ' (品切れ中)' : '');
}
// 価格
// TODO: ここでprice01,price02を税込みにしてよいのか? _inctax を付けるべき?要検証
$arrClassCats2['price01'] = strlen($arrProductsClass['price01']) ? number_format(TaxRuleHelper::sfCalcIncTax($arrProductsClass['price01'], $productId, $arrProductsClass['product_class_id'])) : '';
$arrClassCats2['price02'] = strlen($arrProductsClass['price02']) ? number_format(TaxRuleHelper::sfCalcIncTax($arrProductsClass['price02'], $productId, $arrProductsClass['product_class_id'])) : '';
// ポイント
$arrClassCats2['point'] = number_format(Utils::sfPrePoint($arrProductsClass['price02'], $arrProductsClass['point_rate']));
// 商品コード
$arrClassCats2['product_code'] = $arrProductsClass['product_code'];
// 商品規格ID
$arrClassCats2['product_class_id'] = $arrProductsClass['product_class_id'];
// 商品種別
$arrClassCats2['product_type'] = $arrProductsClass['product_type_id'];
// #929(GC8 規格のプルダウン順序表示不具合)対応のため、2次キーは「#」を前置
if (!$this->classCat1_find[$productId]) {
$classcategory_id1 = '__unselected2';
}
$classCategories[$classcategory_id1]['#'] = array('classcategory_id2' => '', 'name' => '選択してください');
$classCategories[$classcategory_id1]['#' . $classcategory_id2] = $arrClassCats2;
}
$this->classCategories[$productId] = $classCategories;
// 規格1
$this->classCats1[$productId] = $classCats1;
}
}
示例3: lfCheckError
/**
* 入力内容のチェックを行う.
*
* @param FormParam $objFormParam FormParam インスタンス
* @return array エラーメッセージの配列
*/
public function lfCheckError(&$objFormParam)
{
/* @var $objProduct Product */
$objProduct = Application::alias('eccube.product');
$arrValues = $objFormParam->getHashArray();
$arrErr = array();
$arrErrTemp = $objFormParam->checkError();
$arrErrDate = array();
foreach ($arrValues['shipping_date_year'] as $key_index => $year) {
$month = $arrValues['shipping_date_month'][$key_index];
$day = $arrValues['shipping_date_day'][$key_index];
/* @var $objError CheckError */
$objError = Application::alias('eccube.check_error', array('shipping_date_year' => $year, 'shipping_date_month' => $month, 'shipping_date_day' => $day));
$objError->doFunc(array('お届け日', 'shipping_date_year', 'shipping_date_month', 'shipping_date_day'), array('CHECK_DATE'));
$arrErrDate['shipping_date_year'][$key_index] = $objError->arrErr['shipping_date_year'];
}
$arrErrTemp = array_merge($arrErrTemp, $arrErrDate);
// 複数項目チェック
$year = $arrValues['order_birth_year'];
$month = $arrValues['order_birth_month'];
$day = $arrValues['order_birth_day'];
/* @var $objError CheckError */
$objError = Application::alias('eccube.check_error', array('order_birth_year' => $year, 'order_birth_month' => $month, 'order_birth_day' => $day));
$objError->doFunc(array('生年月日', 'order_birth_year', 'order_birth_month', 'order_birth_day'), array('CHECK_BIRTHDAY'));
$arrErrTemp['order_birth_year'] = $objError->arrErr['order_birth_year'];
// 商品の種類数
$max = count($arrValues['quantity']);
$subtotal = 0;
$totalpoint = 0;
$totaltax = 0;
for ($i = 0; $i < $max; $i++) {
// 小計の計算
$subtotal += Application::alias('eccube.helper.db')->calcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i];
// 小計の計算
$totaltax += Utils::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i];
// 加算ポイントの計算
$totalpoint += Utils::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i];
// 在庫数のチェック
$arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]);
// 編集前の値と比較するため受注詳細を取得
/* @var $objPurchase PurchaseHelper */
$objPurchase = Application::alias('eccube.helper.purchase');
$arrOrderDetail = Utils::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false));
if ($arrProduct['stock_unlimited'] != '1' && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) {
$class_name1 = $arrValues['classcategory_name1'][$i];
$class_name1 = Utils::isBlank($class_name1) ? 'なし' : $class_name1;
$class_name2 = $arrValues['classcategory_name2'][$i];
$class_name2 = Utils::isBlank($class_name2) ? 'なし' : $class_name2;
$arrErr['quantity'][$i] .= $arrValues['product_name'][$i] . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />';
}
}
// 消費税
$arrValues['tax'] = $totaltax;
// 小計
$arrValues['subtotal'] = $subtotal;
// 合計
$arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge'];
// お支払い合計
$arrValues['payment_total'] = $arrValues['total'] - $arrValues['use_point'] * POINT_VALUE;
// 加算ポイント
$arrValues['add_point'] = Application::alias('eccube.helper.db')->getAddPoint($totalpoint, $arrValues['use_point']) + $arrValues['birth_point'];
// 最終保持ポイント
$arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point'];
if ($arrValues['total'] < 0) {
$arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />';
}
if ($arrValues['payment_total'] < 0) {
$arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />';
}
if ($arrValues['total_point'] < 0) {
$arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />';
}
$objFormParam->setParam($arrValues);
$arrErr = array_merge($arrErr, $arrErrTemp);
return $arrErr;
}
示例4: lfGetProductsAllData
/**
* lfGetProductsAllData.
*
* @return array $arrProduct 商品情報の配列を返す
*/
public function lfGetProductsAllData()
{
$objQuery = Application::alias('eccube.query');
//商品情報を取得
$arrProduct = $this->lfGetProductsAllclass($objQuery);
// 値の整形
foreach (array_keys($arrProduct) as $key) {
// 画像ファイルのURLセット
if (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image'])) {
$dir = IMAGE_SAVE_RSS_URL;
} else {
$dir = IMAGE_TEMP_RSS_URL;
}
$arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image'];
if (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image'])) {
$dir = IMAGE_SAVE_RSS_URL;
} else {
$dir = IMAGE_TEMP_RSS_URL;
}
$arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image'];
if (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image'])) {
$dir = IMAGE_SAVE_RSS_URL;
} else {
$dir = IMAGE_TEMP_RSS_URL;
}
$arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image'];
// ポイント計算
$arrProduct[$key]['point_max'] = Utils::sfPrePoint($arrProduct[$key]['price02_max'], $arrProduct[$key]['point_rate']);
$arrProduct[$key]['point_min'] = Utils::sfPrePoint($arrProduct[$key]['price02_min'], $arrProduct[$key]['point_rate']);
}
return $arrProduct;
}