Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Изменить поведение Discount (скидки)


Recommended Posts

Привет.

 

Для зарегистрированных пользователей определенной группы необходимо выставить свою цену на всю продукцию через discount. Загружаться в базу все будет автоматом. Проблема в том, что размер скидки нужно указывать в процентах, а не новую цену (в валюте) как по дефолту. Я поправил 3 SQL-запроса в файле catalog/model/catalog/product.php (в функциях  getProduct, getProducts и getProductDiscounts). В магазине стало все гуд, но когда добавляем в корзину товар с дискаунтом, то в корзине цена отображается не новая (посчитанная), а число, например 5, т.е. проценты которые указаны в админке в дискаунте.

Вот кусок запроса:

 

162 Query SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT (p.price-(p.price/100*pd2.price)) AS price FROM oc_product_discount AS pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '2' AND (pd2.quantity = '0' OR pd2.quantity = '1')AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, ...

 

Тут видно, что селект пересчитывает процент скидки. В  pd2.price - указан процент скидки. Но как быть с корзиной. Не могу найти код, который делает запрос о цене товара с таблички oc_product_discount.


162 Query SELECT price FROM oc_product_discount WHERE product_id = '205' AND customer_group_id = '2' AND quantity <= '13' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY quantity DESC, priority ASC, price ASC LIMIT 1

 

Смотрел в код common.js, но что-то ничего не видно. Подскажите, плиз, как ведет себя опенкарт в этом случае.

Link to post
Share on other sites

Я делал по-другом, добавил в базу в product_discount поле percent

вывел его во вьюху в админке, поле с ценой закоментил

<!--<td class="right"><input type="text" name="product_discount[<?php echo $discount_row; ?>][price]" value="<?php echo $product_discount['price']; ?>" /></td>-->
                <td class="right"><input type="text" name="product_discount[<?php echo $discount_row; ?>][percent]" value="<?php echo $product_discount['percent']; ?>" /></td>

 

потом в модель добавил код, который отминусовует процент от основной цены

foreach ($data['product_discount'] as $product_discount) {

                $price_gen = (float)$data['price'] - ((float)$product_discount['percent']*((float)$data['price']*0.01));

				$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET
				product_id = '" . (int)$product_id . "',
				customer_group_id = '" . (int)$product_discount['customer_group_id'] . "',
				quantity = '" . (int)$product_discount['quantity'] . "',
				priority = '" . (int)$product_discount['priority'] . "',
				price = '" . $price_gen . "',
				percent = '" . (float)$product_discount['percent'] . "',
				date_start = '" . $this->db->escape($product_discount['date_start']) . "',
				date_end = '" . $this->db->escape($product_discount['date_end']) . "'");
			}

И в каталоге мне не пришлось вообще искать где выводится discount.  :-)

Link to post
Share on other sites

Я то же так думал, но не захотел изменять структуру таблиц БД. Как оно будет при обновлении ОС?

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

Link to post
Share on other sites

Что за "вредные советы"? По делу, нужно создать новый extantions с типом total и сценарий расчета скидки написать....

Link to post
Share on other sites

Можно и так, я не спорю, но я не настолько силен в PHP ООП, что бы это сделать. Мне подскажите лучше, когда нажимаем на кнопку в "Купить", откуда береться цена, которую мы видим в корзине. Просто если товар уже с нужной мне ценой (отминусован дискаунт), то в корзине светится другая цена (DB_PREFIX_product_discount/price)?? Не пойму какой код выполняется в этом случае. Кто знает - подскажите.

Link to post
Share on other sites

Что за "вредные советы"? По делу, нужно создать новый extantions с типом total и сценарий расчета скидки написать....

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

Link to post
Share on other sites

pashast, нет. Я как раз и говорю: "... не трогайте цену товара".

Link to post
Share on other sites

pashast, нет. Я как раз и говорю: "... не трогайте цену товара".

Не трогать цену товара - это как раз и есть "вредные советы".

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

  • +1 1
Link to post
Share on other sites

Для интересующихся. Нашел модификацию - скидки в процентах http://forum.opencart.com/viewtopic.php?t=6375 но это только половинчатое решение.

 

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

Link to post
Share on other sites

В product.tpl JS сценарий, в контроллере корзины (checkout/cart) все остальное

Link to post
Share on other sites

А есть ли нативный способ отлавливания цены и замена ее на лету без правки в моделях, а отдельным дополнением?

Link to post
Share on other sites
  • 1 month later...

Vladzimir, в OpenCart - нет.

Ну почему "нет", есть :)

И сделать очень легко.

Причем выгрузка заказов работает с динамически измененной ценой.

Причем без vqmod и без изменений системных файлов

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By louise170
      Модуль позволяет создавать и проводить акции с товарами идущими в подарок при заказе на определенную сумму денег или
      если с корзине лежит определенный товар или группа товаров. Подарочные товары автоматически попадают в заказ, если были выполнены условия акции.
      Отличия от модуля "Продукты по акции":
      Усовершенствована система добавления товаров в акцию.
      Это дает больше возможностей в управлении акционными товарами, а именно: нет вкладок, информация по акциям хранится в базе данных, это позволяет создавать большое кол-во акций (на вкладках максимум 59) связи между товарами: один к одному, один ко многим, многие к одному, многие ко многим, можно выбирать не конкретные товары, а сразу производителей или категории. создание связей разделено на группы - каждая группа - это отдельная строчка в таблице на странице "Связи". Описания акций отображаются подобно новостям: модуль с анонсами, страница с полным списком и отдельная страница описания акции Страница описания акции также содержит полный список товаров, участвующих в акции. Есть возможность выводить отдельными блоками товары из акции. В списке товаров в категориях видны акционные товары, при нажатии на ссылку открывается краткое описание акции. На странице акционного товара виден блок с подарочным товаром. SEO-урлы для списка и описания акций. Акционные товары можно отображать в корзине вместе с остальными товарами. Акционные товары, кот. отображаются лежащими в корзине, также будут отображаться в счете и в письмах отправляемых покупателю. Учитывается вес акционных товаров, кот. отображаются лежащими в корзине. Акции можно использовать для определенных групп покупателей.  
      С помощью данного модуля также можно делать акции типа "Бесплатная доставка" - описание и список товаров делается здесь, а непосредственная обработка бесплатных товаров в корзине делается с помощью модуля доставки, который может делать бесплатную доставку для определенных групп товаров. Еще в модуле можно делать анонсы для товаров со скидками и специальных предложений, которые делаются через стандартный функционал Опенкарта.
      Никакие системные файлы не затираются, модуль работает на vqmod.
      Модуль тестировался на OpenCart 1.5.4.1, 1.5.6, 1.5.6.4, 2.1.0.2, 2.2.0.0
       
      Поддерживаемые языки
      русский
       
      Пример работы модуля
      https://ocstore156.hypnoguru.ru/
      https://opencart2200.opencartplus.ru/
       
      Демо админки
      https://ocstore156.hypnoguru.ru/admin/
      https://opencart2200.opencartplus.ru/admin/
      доступ
      demo / demo
       
      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.
       
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
       
      Требования к серверу
      На хостинге должен быть PHP 5.3 или выше. На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 5.0). Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php Для корректной работе на Опенкарте 1.5.х на вашем сайте должен быть установлен VQMOD не ниже версии 2.4.1,
      если у вас стоит версия ниже - нужно обновиться отсюда: https://github.com/vqmod/vqmod/releases
      FAQ
      FAQ общие вопросы по Опенкарту  
    • By louise170
      1500
      Скачать/Купить дополнение


      Продукты по акции Pro
      Модуль позволяет создавать и проводить акции с товарами идущими в подарок при заказе на определенную сумму денег или
      если с корзине лежит определенный товар или группа товаров. Подарочные товары автоматически попадают в заказ, если были выполнены условия акции.
      Отличия от модуля "Продукты по акции":
      Усовершенствована система добавления товаров в акцию.
      Это дает больше возможностей в управлении акционными товарами, а именно: нет вкладок, информация по акциям хранится в базе данных, это позволяет создавать большое кол-во акций (на вкладках максимум 59) связи между товарами: один к одному, один ко многим, многие к одному, многие ко многим, можно выбирать не конкретные товары, а сразу производителей или категории. создание связей разделено на группы - каждая группа - это отдельная строчка в таблице на странице "Связи". Описания акций отображаются подобно новостям: модуль с анонсами, страница с полным списком и отдельная страница описания акции Страница описания акции также содержит полный список товаров, участвующих в акции. Есть возможность выводить отдельными блоками товары из акции. В списке товаров в категориях видны акционные товары, при нажатии на ссылку открывается краткое описание акции. На странице акционного товара виден блок с подарочным товаром. SEO-урлы для списка и описания акций. Акционные товары можно отображать в корзине вместе с остальными товарами. Акционные товары, кот. отображаются лежащими в корзине, также будут отображаться в счете и в письмах отправляемых покупателю. Учитывается вес акционных товаров, кот. отображаются лежащими в корзине. Акции можно использовать для определенных групп покупателей.  
      С помощью данного модуля также можно делать акции типа "Бесплатная доставка" - описание и список товаров делается здесь, а непосредственная обработка бесплатных товаров в корзине делается с помощью модуля доставки, который может делать бесплатную доставку для определенных групп товаров. Еще в модуле можно делать анонсы для товаров со скидками и специальных предложений, которые делаются через стандартный функционал Опенкарта.
      Никакие системные файлы не затираются, модуль работает на vqmod.
      Модуль тестировался на OpenCart 1.5.4.1, 1.5.6, 1.5.6.4, 2.1.0.2, 2.2.0.0
       
      Поддерживаемые языки
      русский
       
      Пример работы модуля
      http://ocstore156.hypnoguru.ru/
      http://opencart2200.opencartplus.ru/
       
      Демо админки
      http://ocstore156.hypnoguru.ru/admin/
      http://opencart2200.opencartplus.ru/admin/
      доступ
      demo / demo
       
      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.
       
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
       
      Требования к серверу
      На хостинге должен быть PHP 5.3 или выше. На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 5.0). Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php Для корректной работе на Опенкарте 1.5.х на вашем сайте должен быть установлен VQMOD не ниже версии 2.4.1,
      если у вас стоит версия ниже - нужно обновиться отсюда: https://github.com/vqmod/vqmod/releases
      FAQ
      FAQ общие вопросы по Опенкарту  
      Добавил louise170 Добавлено 21.12.2014 Категория Цены, скидки, акции, подарки Системные требования PHP 5.3+, IonCube Loader версии 5.0+, для Опенкарт 1.5.х - VQMOD не ниже версии 2.4.1 Метод активации По емейлу Ioncube Loader Требуется OpenCart 2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1 ocStore 2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика  
    • By Valery332
      Добрый вечер. Столкнулся с тем что стандартные скидки в ocStore 3.0.2.0 не работают. Все дефолтное http://test.woshop.pp.ua/index.php?route=product/product&product_id=42 При заказе от 10 должна меняться цена, но этого не происходит. 
      По идее данная проблема должна не раз всплывать на форуме, но я не нашел. Если уже есть решение, поделитесь пожалуйста. 
    • By TramplinStudio
      Поддержка больше не осуществляется!
       
      CountDown Timer v1.1 by Tramplin Studio - это очень гибкий в настройке модуль, который выводит таймер обратного отсчета для акционных товаров на всех возможных страницах и во всех стандартных модулях OpenCart. Широкие возможности настройки дизайна позволяют вписать таймер в любой шаблон.
      Таймер обратного отсчета акции позволит привлечь внимание посетителей интернет-магазина к акционным товаром, тем самым значительно повысить конверсию магазина.
       
      Модуль выводит числовой таймер на следующих страницах и модулях:
      страница "Товар" (product/product); страница "Категория" (product/category); страница "Производитель" (product/manufacturer); страница "Акции" (product/special); страница "Поиск" (product/search); модуль "Новинки" (module/latest); модуль "Хиты продаж" (module/bestseller); модуль "Акции" (module/special); модуль "Рекомендуемые" (module/featured); модуль "Рекомендуемые" (product/product) на странице товара.  
      Для каждой страницы и модуля можно отдельно настроить ряд внешних параметров таймера:
      отображать таймер на отдельной странице или в модуле; заголовок таймера: "Акция закончится через"; текстовые разделители (XX : XX : XX : XX); текстовые обозначения величин (XX день, XX час, XX минута, XX секунда); количество дней (также скрывается и текстовое обозначение этой величины); количество дней в часах (Пример: 5 дней * 24 часа = 120 часов + остаток за текущий день. Примечание: работает только если "количество дней" скрыто); количество секунд (также скрывается и текстовое обозначение этой величины).  
      Таймер для каждого отдельного товара включается при добавлении/редактировании товара во вкладке "Акция".
      Необходимо указать новую стоимость и дату окончания акции. Если не указать дату окончания, то числовой таймер не отобразится для этого товара.
       
      Если вы хотите чтобы таймер какого либо товара отсчитывал время до конца дня, то установите дату окончания акции "N дней", отключите опцию "Отображать количество дней", а опцию "Считать количество дней" включите. Например, если акция заканчивается через 5 дней, то ежедневно на протяжении 5-и дней будет отображаться таймер отсчета до конца текущих суток.
      Такой маневр приводит к еще большему повышению конверсии в продажу!
       
      -----------------------------------------------------------------------------------------------

      Смотреть DEMO
      Смотреть DEMO админки (логин: demo, пароль: demo)
       
      -----------------------------------------------------------------------------------------------
       
      Инструкция по установке:
      Перейдите в Панель администратора -> Модули -> Установка расширений; Загрузите архив с модулем для вашей версии OpenCart или ocStore; Обновите кэш модификаторов.  
      Файлы не перезаписываются!
      Используется OCMod!
       
      -----------------------------------------------------------------------------------------------

      Инструкция по обновлению:
      Удалите модификатор предыдущей версии модуля; Перейдите в Панель администратора -> Модули -> Установка расширений; Загрузите архив с модулем для вашей версии OpenCart или ocStore; Обновите кэш модификаторов; Проверьте настройки модуля и пересохраните.  
    • By TramplinStudio
      Скачать/Купить дополнение


      TS CountDown Timer
      Поддержка осуществляется в Пн-Пт с 18:00 до 20:00 по МСК!
       
      CountDown Timer v1.1 by Tramplin Studio - это очень гибкий в настройке модуль, который выводит таймер обратного отсчета для акционных товаров на всех возможных страницах и во всех стандартных модулях OpenCart. Широкие возможности настройки дизайна позволяют вписать таймер в любой шаблон.
      Таймер обратного отсчета акции позволит привлечь внимание посетителей интернет-магазина к акционным товаром, тем самым значительно повысить конверсию магазина.
       
      Модуль выводит числовой таймер на следующих страницах и модулях:
      страница "Товар" (product/product); страница "Категория" (product/category); страница "Производитель" (product/manufacturer); страница "Акции" (product/special); страница "Поиск" (product/search); модуль "Новинки" (module/latest); модуль "Хиты продаж" (module/bestseller); модуль "Акции" (module/special); модуль "Рекомендуемые" (module/featured); модуль "Рекомендуемые" (product/product) на странице товара.  
      Для каждой страницы и модуля можно отдельно настроить ряд внешних параметров таймера:
      отображать таймер на отдельной странице или в модуле; заголовок таймера: "Акция закончится через"; текстовые разделители (XX : XX : XX : XX); текстовые обозначения величин (XX день, XX час, XX минута, XX секунда); количество дней (также скрывается и текстовое обозначение этой величины); количество дней в часах (Пример: 5 дней * 24 часа = 120 часов + остаток за текущий день. Примечание: работает только если "количество дней" скрыто); количество секунд (также скрывается и текстовое обозначение этой величины).  
      Таймер для каждого отдельного товара включается при добавлении/редактировании товара во вкладке "Акция".
      Необходимо указать новую стоимость и дату окончания акции. Если не указать дату окончания, то числовой таймер не отобразится для этого товара.
       
      Если вы хотите чтобы таймер какого либо товара отсчитывал время до конца дня, то установите дату окончания акции "N дней", отключите опцию "Отображать количество дней", а опцию "Считать количество дней" включите. Например, если акция заканчивается через 5 дней, то ежедневно на протяжении 5-и дней будет отображаться таймер отсчета до конца текущих суток.
      Такой маневр приводит к еще большему повышению конверсии в продажу!
       
      -----------------------------------------------------------------------------------------------

      Смотреть DEMO
      Смотреть DEMO админки (логин: demo, пароль: demo)
       
      -----------------------------------------------------------------------------------------------
       
      Инструкция по установке:
      Перейдите в Панель администратора -> Модули -> Установка расширений; Загрузите архив с модулем для вашей версии OpenCart или ocStore; Обновите кэш модификаторов.  
      Файлы не перезаписываются!
      Используется OCMod!
       
      -----------------------------------------------------------------------------------------------

      Инструкция по обновлению:
      Удалите модификатор предыдущей версии модуля; Перейдите в Панель администратора -> Модули -> Установка расширений; Загрузите архив с модулем для вашей версии OpenCart или ocStore; Обновите кэш модификаторов; Проверьте настройки модуля и пересохраните.  
      Добавил TramplinStudio Добавлено 27.01.2019 Категория Цены, скидки, акции, подарки Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет Старая цена 0  
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.