Перейти к содержанию
Форум поддержки пользователей VamShop

Модуль скидка в зависимости от количества


Рекомендуемые сообщения

Модуль скидка в зависимости от количества товара. Попросили такой сделать. Кое-что получилось.

В общем из архива копируем файлы в соответствующие директории. Потом идем в админку и включаем модуль в модулях_итого. В сортировке он должен идти после модуля ot_discount.

Для того, чтобы скидка отображалась в корзине:

1) в файле /includes/modules/order_details_cart.php

после

$total_content = '';

$total =$_SESSION['cart']->show_total();

if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == '1' && $_SESSION['customers_status']['customers_status_ot_discount'] != '0.00') {

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {

$price = $total-$_SESSION['cart']->show_tax(false);

} else {

$price = $total;

}

$discount = $vamPrice->GetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']);

$total_content = $_SESSION['customers_status']['customers_status_ot_discount'].' % '.SUB_TITLE_OT_DISCOUNT.' -'.vam_format_price($discount, $price_special = 1, $calculate_currencies = false).'<br />';

}   

добавляем

//apply the discounts MOD 24/03/2008

    if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true'){

 

  $table_quant = split("[:,]" , MODULE_ORDER_TOTAL_DISCOUNT_QUANT_PERCENT);

      $size = sizeof($table_quant);

      for ($i=0, $n=$size; $i<$n; $i+=2) {

        if ($_SESSION['cart']->count_contents() <= $table_quant[$i]) {

          $discount_quant_percent = $table_quant[$i+1];

          break;

        }

if ($i>=($n-2))  $discount_quant_percent = $table_quant[$i+1];

      }

   if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){

         $discount_quant = $vamPrice->GetDC($price, $discount_quant_percent);

             $total_content .= $discount_quant_percent.' % '.SUB_TITLE_OT_DISCOUNT_QUANT.' -'.vam_format_price($discount_quant, $price_special = 1, $calculate_currencies = false).'<br />';

  }

}

//apply the discounts MOD 24/03/2008

после

if ($_SESSION['customers_status']['customers_status_show_price'] == '1') {

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) $total-=$discount;

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) $total-=$discount;

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) $total-=$discount;

добавляем

        

            if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true') $total-=$discount_quant;

     

2) в /lang/russian/russian.php

после

define('SUB_TITLE_OT_DISCOUNT','Скидка:');

добавляем

define('SUB_TITLE_OT_DISCOUNT_QUANT','Скидка от количества:');

3) в /templates/шаблон/source/boxes/shopping_cart.php

после

if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == '1' && $_SESSION['customers_status']['customers_status_ot_discount'] != '0.00') {

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {

$price = $total-$_SESSION['cart']->show_tax(false);

} else {

$price = $total;

}

$discount = $vamPrice->GetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']);

$box->assign('DISCOUNT', $vamPrice->Format(($discount * (-1)), $price_special = 1, $calculate_currencies = false));

}

добавляем

//apply the discounts MOD 24/03/2008

    if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true'){

 

  $table_quant = split("[:,]" , MODULE_ORDER_TOTAL_DISCOUNT_QUANT_PERCENT);

      $size = sizeof($table_quant);

      for ($i=0, $n=$size; $i<$n; $i+=2) {

        if ($_SESSION['cart']->count_contents() <= $table_quant[$i]) {

          $discount_quant_percent = $table_quant[$i+1];

          break;

        }

if ($i>=($n-2))  $discount_quant_percent = $table_quant[$i+1];

      }

   if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){

         $discount_quant = $vamPrice->GetDC($price, $discount_quant_percent);            

  }

}

//apply the discounts MOD 24/03/2008

после

if ($_SESSION['customers_status']['customers_status_show_price'] == '1') {

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) $total-=$discount;

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) $total-=$discount;

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) $total-=$discount;

добавляем

           if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true') $total-=$discount_quant;

Вроде ничего не забыл.

Ссылка на сообщение
Поделиться на другие сайты

kpoxas

Спасибо огромное за модуль.

и сразу вопрос, а стандартный модуль скидки от количества, что идёт с магазином он не подходит?!

В админке когда создал товар, при редактировании в закладке Цены там можно указывать количество товара и цена для данного количества.

Вобщем, вот так - http://vamshop.ru/manual/ch06s02.html

Ссылка на сообщение
Поделиться на другие сайты

Просто я использую его, когда надо для всего товара скидку сделать, а то для каждого выставлять трудновато. Да и показывается он сразу в корзине...покупатель видит, что у него скидка. У меня такой вопрос еще. Можно ли сделать, чтобы со всех скидок , подключенных к товару, учитывались не все, а только большая?

Ссылка на сообщение
Поделиться на другие сайты

ДА и еще этот модкль считает все количество товара в корзине, а стандартный по-моему только для одного товара

Ссылка на сообщение
Поделиться на другие сайты

Во насчёт всех подключённых скидок даже не знаю, вроде бы они суммируются, а не выбирается большая.

kpoxas

А что с этим модулем делать?!

Может выложить его в файлы и сделать в виде CIP модуля, т.е. что б можно было ставить через Админку - Модули - Установка модулей.

Ссылка на сообщение
Поделиться на другие сайты

Да вот как раз попробовал, на странице корзины вроде текст выводит, что есть скидка, но не отнимает.

Вот глянь скриншот.

post-1-1304838276,0826_thumb.png

Ссылка на сообщение
Поделиться на другие сайты

Странно, у меня все выводится. Вроде ж динамический процент высчитывается.

Посмотри в файле /includes/modules/order_details_cart.php :

$discount_quant = $vamPrice->GetDC($price, $discount_quant_percent);

вот эта функция считает скидку. Так как у тебя выводит, что 5 % , то  $discount_quant_percent посчитано правильно, а сама сумма считается по аналогии, как она посчитана чуть выше для групповой скидки:

$discount = $vamPrice->GetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']);

Ссылка на сообщение
Поделиться на другие сайты

Попробуй поставить в "группах клиентов" для твоей группы в Скидке от общей стоимости заказа какое-то число, и скидка начнет считаться. Смешно)) .

Ссылка на сообщение
Поделиться на другие сайты

Все, разобрался . Там надо

в файлах /includes/modules/order_details_cart.php и в /templates/шаблон/source/boxes/shopping_cart.php

вместо

$discount_quant = $vamPrice->GetDC($price, $discount_quant_percent); 

поставить

$discount_quant = $vamPrice->GetDC($total, $discount_quant_percent); 

Ссылка на сообщение
Поделиться на другие сайты

Вот теперь всё нормально, спасибо.

Сегодня-завтра попробую соорудить CIP модуль.

Напишу в теме в этой.

Ссылка на сообщение
Поделиться на другие сайты

kpoxas

Сделал cip пакет и создал отдельную тему для модуля - http://vamshop.ru/forum/index.php?topic=1180

Ещё раз спасибо за модуль.

Ссылка на сообщение
Поделиться на другие сайты

Не за что. Но все-таки остается вопрос, можно ли сделать, чтобы со всех скидок , подключенных к товару, учитывались не все, а только большая?

Ссылка на сообщение
Поделиться на другие сайты

Вот насчёт этого я не знаю, знаю, что все скидки считаются в /includes/classes/vam_price.php

Нужно как-то там копаться.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...