Перейти к содержимому


[дополнение] Price как функция


  • Вы не можете ответить в тему
Сообщений в теме: 2

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 01 March 2015 - 09:38 PM

Дополнение позволяет вынести расчет цены товара в отдельную функцию mPriceRecalc, которую можно написать какую угодно и как угодно. Например, дающую скидку по понедельникам или разные скидки для разных групп клиентов.

Само по себе это дополнение актуально только для продвинутых пользователей, которые вышеозначенную функцию и административную обвязку способны написать самостоятельно. Но дополнение является законченным модулем и я предполагаю далее ссылаться на него, чтобы не включать каждый раз в описание инсталляции еще десяток пунктов, а просто писать "99. Выполните инсталляцию дополнения 'Price как функция'".

Также надо понимать, что дополнение касается только штатных мест ShopCMS, где показывается (и используется) цена. В большинстве своем сторонние модули не используют штатные функции ShopCMS для получения инфы о товаре (и это разумно, уж больно монстрообразна и избыточна та же функция getProduct), а содержат собственные SQL-запросы. Их придется переделывать аналогично.


0. копируем

multiprice_functions.php -> core/functions/

и переписываем функцию mPriceRecalc под свои надобности.
Сейчас она возращает то же самое, что получила, т.е. цена товара не изменится.


1. В файле cart_functions.php

в функции GetPriceProductWithOption

если пересчет нужен для суммы уже с добавленными вариантами, то перед


return $full_price;


а если пересчет нужен для суммы еще без добавления вариантов (т.е. довесок от вариантов не зависит от пересчета), то перед


foreach($variants as $vars)


вставляем


# BEGIN multiprice
$full_price = mPriceRecalc($full_price,(int)$productID);
# END multiprice



2. В файле product_functions.php

2.1. в функции GetProduct

2.1.1. после


if ( $product=db_fetch_row($q ) ){


вставляем


# BEGIN multiprice
$product['Price'] = mPriceRecalc($product['Price'],(int)$productID);
# END multiprice


2.1.2. если нужны изменения в суммах добавок по вариантам, то после


while ($_Row = db_fetch_row($Result)) {


вставляем


# BEGIN multiprice
$_Row['option_value'] = mPriceRecalc($_Row['option_value'],(int)$productID));
$_Row['value'] = mPriceRecalc($_Row['value'],(int)$productID));
# END multiprice


2.2. в функции GetExtraParametrs

если нужны изменения в суммах добавок по вариантам, то после


while( $_Rowue = db_fetch_assoc($q2) ){


вставляем


# BEGIN multiprice
$_Rowue['price_surplus'] = mPriceRecalc($_Rowue['price_surplus'],$_Row['productID']);
# END multiprice


2.3. в функции prdSearchProductByTemplate

перед


$row["PriceWithUnit"] = show_price($row["Price"]);


вставляем


# BEGIN multiprice
$row['Price'] = mPriceRecalc($row['Price'],$row["productID"]);
# END multiprice



3. В файле cart.php

если пересчет должен касаться суммы с вариантами, то перед


$k += $_SESSION["counts"][$i] * $sum;


а если пересчет должен касаться суммы еще без вариантов, то перед


foreach ( $_SESSION["configurations"][$i] as $varconf ) {


вставляем


# BEGIN multiprice
$sum = mPriceRecalc($sum,(int)$_SESSION["gids"][$i]);
# END multiprice



4. В файле home.php

после каждого (их три)


while ($row = db_fetch_row($q))
{


вставляем


# BEGIN multiprice
$row[3] = mPriceRecalc($row['Price'],$row['productID']);
$row['Price'] = mPriceRecalc($row['Price'],$row['productID']);
# END multiprice



5. В файле pricelist.php

после


while ($row1 = db_fetch_row($q))
{


вставляем


# BEGIN multiprice
$row1[2] = mPriceRecalc($row1['Price'],$row1['productID']);
# END multiprice



6. В файле shopping_cart_info.php

если пересчет должен касаться суммы с вариантами, то перед


$k += $_SESSION["counts"][$i]*$sum;


а если пересчет должен касаться суммы еще без вариантов, то перед


foreach( $_SESSION["configurations"][$i] as $vars )


вставляем


# BEGIN multiprice
$sum = mPriceRecalc($sum,(int)$_SESSION["gids"][$i]);
# END multiprice

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 valeradr

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 49 сообщений
Репутация: 0
Начинающий

Отправлено 30 April 2015 - 11:55 PM

А по времени суток позволяет делать скидку?
  • 0

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 01 May 2015 - 12:53 PM

А по времени суток позволяет делать скидку?

Цитата: "Дополнение позволяет вынести расчет цены товара в отдельную функцию mPriceRecalc, которую можно написать какую угодно и как угодно".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)