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

Денежная Скидка от кол-ва товара в заказе


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

Подскажите плз, Как сделать скидку в зависимости от кол-ва товара в заказе не процентную, а денежную?

Например: если в заказе 2а разных! товара (а не 2а одинаковых) то скидка 200 руб.

если в заказе 4е разных! товара (а не 4е одинаковых) то скидка 1000 руб.

и т.д...

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

В файле /includes/modules/order_total/ot_discount_quant.php нужно вот этот кусок менять:

        if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){
          $discount_quant = $vamPrice->Format($order->info['subtotal'], false)/ 100 *  $discount_quant_percent ;
          $order->info['total'] -= $discount_quant;
          $this->output[] = array('title' => $this->title . " " .  $discount_quant_percent . '% :',
                                  'text' => '<font color="ff0000">'.$vamPrice->Format("-".$discount_quant, true).'</font>',
                                  'value' => $discount_quant);

Наверное менять на:

        if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){
          $discount_quant = $discount_quant_percent ;
          $order->info['total'] -= $discount_quant;
          $this->output[] = array('title' => $this->title . " " .  $discount_quant_percent . ' руб. :',
                                  'text' => '<font color="ff0000">'.$vamPrice->Format("-".$discount_quant, true).'</font>',
                                  'value' => $discount_quant);

Что б просто отнимало указанное число от суммы заказа.

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

Еще вопрос в тему:

если использовать процентную скидку, как округлить результат, полученный после вычитания скидки, например до ...50 руб.

Пример:. у клиента 5 различных позиций в корзине на 23750 руб. - скидка составила 5% , т.е. 1187 руб. 50 коп.,

Итого к оплате 22562 руб. 50 коп.

Не хочется связываться с мелочью, и округлить результат, чтобы он был кратным 50.

т.е должно получиться 22550 руб.

Возможно ли такое?

 

 

Ссылка на сообщение
Поделиться на другие сайты
11 минуту назад, Nikita сказал:

Еще вопрос в тему:

если использовать процентную скидку, как округлить результат, полученный после вычитания скидки, например до ...50 руб.

Пример:. у клиента 5 различных позиций в корзине на 23750 руб. - скидка составила 5% , т.е. 1187 руб. 50 коп.,

Итого к оплате 22562 руб. 50 коп.

Не хочется связываться с мелочью, и округлить результат, чтобы он был кратным 50.

т.е должно получиться 22550 руб.

Возможно ли такое?

 

 

В Админке - Разное - Валюты в настройках валюты в опции Десятичные порядки укажите 0

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

Указано 0, но я так понял это значение определяет кол-во разрядов после запятой. А нужно чтобы в целом значении кратность была 50.

Т.е. сейчас при Десятичном порядке получается значение  22562 руб., а должно 22550 руб.

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

Вряд ли получится именно так округлять.

Можно лишь если пробное число, например 4.3 , то округлить либо в меньшую, т.е. до 3, либо в большую, т.е. до 5 сторону.

А вот что б именно кратность была, что-то я такой php функции не знаю.

Хоть готовой php функции и нет, но есть разные статьи в инете, вот например - https://glebov-gin.blogspot.com/2011/11/php.html

т.е. можно вместо:

'value' => $discount_quant);

попробовать что-то типа:

'value' => ceil(number_format($discount_quant)/10) * 10);

ищите примеры в гугле, наверняка много разных вариантов готовых есть в различных статьях.

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

вот тут нашел вроде, но ничего не понимаю, что люди пишут))))))))))))))))))))))))))))))

http://forum.php.su/topic.php?forum=71&topic=12378

вот еще конкретно мой случай:

Предположим, что цена товара составляет 350 рублей. Если объявить на него скидку в 3 процента, то получается новая цена 339 рублей 50 копеек.

Такое значение во многих случаях не устраивает, поскольку некоторые кассиры отказываются от копеек, а иногда директора магазинов предпочитают иметь цены, кратные 50 рублям.

В этой связи возникает такая задача: как средствами РНР округлить цену с заранее заданной точностью?

Как отсюда вытащить код в ВамШоп?

http://www.cyberforum.ru/php-beginners/thread722685.html

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

Наверное как-то так:

if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){
          $discount_quant_percent = ceil(number_format($discount_quant)/0.5) * 0.5;
          $discount_quant = $discount_quant_percent;
          $order->info['total'] -= $discount_quant;
          $this->output[] = array('title' => $this->title . " " .  $discount_quant_percent . ' руб. :',
                                  'text' => '<font color="ff0000">'.$vamPrice->Format("-".$discount_quant, true).'</font>',
                                  'value' => $discount_quant);

 

По последней ссылке код неуниверсальный ведь.

Там как раз дискретность надо указыть, то 2, то 20

Автоматически ведь это не посчитаешь, т.е. скидка может быть10, может быть 100, может быть 1000 рублей.

Код, по идее, из той темы, что на cyberforum не совсем универсальный и не будет во всех случаях правильно работать.

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

Внес изменения в   /includes/modules/order_total/ot_discount_quant.php

Захожу в админку Модули - Модули Итого а там исчезла возможность редактировать какие-либо модули да и самих модулей только 2е шт осталось.

Меняю на старый файл ot_discount_quant.php - все работает

 

Попробовал Ваш самый 1й вариант вставить с фиксированным размером скидки - все работает

 

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

Видимо, скобка лишняя.

Попробуйте так:

if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){
          $discount_quant_percent = ceil(number_format($discount_quant)/0.5) * 0.5;
          $discount_quant = $discount_quant_percent;
          $order->info['total'] -= $discount_quant;
          $this->output[] = array('title' => $this->title . " " .  $discount_quant_percent . ' руб. :',
                                  'text' => '<font color="ff0000">'.$vamPrice->Format("-".$discount_quant, true).'</font>',
                                  'value' => $discount_quant);

 

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

Да, теперь можно редактировать в админке.

Поставил следующее правило: скидка начинает действовать если в корзине 2е позиции и скидка 5%

т.е. в админке в строке Скидка указано: 2:5

При оформлении заказа на странице подтверждения видим следующее:

Стоимость товара: 26.550 ₽
Скидка от количества 0 ���. : бесплатно
Курьерская доставка по Москве в пределах МКАД (Стоимость доставки): бесплатно
Всего: 26.550 ₽

 

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

Наверное какое-то условие не выполняется.

Да и файле в неправильной кодировк сохранили, нужно в utf8

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

кодировку выбрал UTF-8

Получилось следующее:

Стоимость товара: 63.700 руб.
Скидка от количества 0 ₽ : бесплатно
Самовывоз (Покупатель сам забирает свой заказ): бесплатно
Всего: 63.700 руб.

Какое условие не выполняется, где искать ошибку.

правило в админке указал 2:5

если ко-во 1, то на странице подтверждения заказа строка

Скидка от количества 0 ₽ : бесплатно

отсутствует, значит правило срабатывает, только не считает.

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

Короче говоря, нервы сдали)))))), поставил денежную, а не процентную скидку все работает. 

 

Спасибо!

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

В продолжение темы, как вывести эту денежную скидку на страницу ....shopping_cart.php

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

 

Стоимость товара: 32.100 руб.
Скидка от количества : -300 руб.
Всего:  31.800 руб.
   

 

Ссылка на сообщение
Поделиться на другие сайты
Только что, Nikita сказал:

В продолжение темы, как вывести эту денежную скидку на страницу ....shopping_cart.php

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

 

Стоимость товара: 32.100 руб.
Скидка от количества : -300 руб.
Всего:  31.800 руб.
   

 

Никак не вывести, в корзине итоговые суммы не выводятся на данный момент.

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

Как-то так.

Шаблон корзины в /templates/шаблон/module/shopping_cart.html или order_details.html

В один из этих шаблонов вставляйте текст.

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

Ну да, я так и сделаю.

Еще вопрос возникает в тему.:

как сделать, чтобы эта скидка не распространялась, если сумма заказа меньше, например 10000 руб.?

 

Вопрос не в тему:

Как сделать так, - если способ оплаты не наложенный платеж, в /sender_form.php не заполнялось поле с наложенным платежом, а заполненным было поле с объявленной ценностью, а  там где указывается наложенный платеж было бы написано БЕЗ НАЛОЖЕННОГО ПЛАТЕЖА?

На форуме что-то сходу не нашел решения.

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

Если настроек в модуле нет, то никак не сделать, только код переписывать.

Опять же, всё это ведь правкой кода делается и не двумя строчками, что б можно было тут в теме написать.

Если знаете php, то правьте код и добавялйте нужный текст, нужные условия.

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

Так это ведь тоже не так просто, там бланк в виде картинки.

т.е. нужно править код, если надо сверху что-то написать на бланке.

Смотрите как сделаны надписи, что уже есть и делаете по аналогии нужный Вам текст.

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

Добрый день!

Руки все не доходили поднять эту проблему с денежными скидками, но сегодняшний "косяк" заставил меня вернуться к ней.

Скидка от кол-ва товара в корзине работает без проблем, но до тех пор пока не залезешь в админку и не выберешь: Редактировать товары или  Редактировать другие данные заказа.

Скидка перестает быть скидкой, а становится наценкой к заказу.  

Т.е. если открыть Редактировать другие данные заказа, то увидим, что в поле Скидка от количества : 300 и если нажать сохранить, то заказ станет на 300 дороже.

 

Т.е. каждый раз, когда тебе необходимо изменить состав заказа или изменить способ оплаты, нужно помнить, что обязательно поставить знак "-" перед размером скидки! иначе быть беде.

Т.е. если вручную изменить на Скидка от количества : -300

то все работает, но это упомнить невозможно.

 

Как решить эту проблем? Спасибо!

 

 

 

Ссылка на сообщение
Поделиться на другие сайты
14 минуты назад, Nikita сказал:

Добрый день!

Руки все не доходили поднять эту проблему с денежными скидками, но сегодняшний "косяк" заставил меня вернуться к ней.

Скидка от кол-ва товара в корзине работает без проблем, но до тех пор пока не залезешь в админку и не выберешь: Редактировать товары или  Редактировать другие данные заказа.

Скидка перестает быть скидкой, а становится наценкой к заказу.  

Т.е. если открыть Редактировать другие данные заказа, то увидим, что в поле Скидка от количества : 300 и если нажать сохранить, то заказ станет на 300 дороже.

 

Т.е. каждый раз, когда тебе необходимо изменить состав заказа или изменить способ оплаты, нужно помнить, что обязательно поставить знак "-" перед размером скидки! иначе быть беде.

Т.е. если вручную изменить на Скидка от количества : -300

то все работает, но это упомнить невозможно.

 

Как решить эту проблем? Спасибо!

 

 

 

Пока не могу сказать, редактор заказа понимает только если - ставить.

Зарегистрируйте в ошибках - https://forum.vamshop.ru/bugs/

Посмотрим, что можно сделать.

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

В админке присвоил товару скидку от кол-ва, в БД она есть, а при оформлении заказа цена  товара стандартная, т.е без скидки... что не так делаю?

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