Jump to content
Sign in to follow this  
qqq64

[Решено?..] Акции в процентах

Recommended Posts

Как в админке добавлять акции впроцентах?

Share this post


Link to post
Share on other sites

Если массово, то https://opencartforum.com/files/file/1841-

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

Share this post


Link to post
Share on other sites

Как в админке добавлять акции впроцентах?

 

Смысл вопроса в том чтобы значение акции сохранялось не как абсолютная величина а в процентах.

Я думаю это многим было бы полезно.

Share this post


Link to post
Share on other sites

пилить сохранение/редактирование и весь остальной код, отображающий/использующий акции - ДО.ФИ.ГА.

Share this post


Link to post
Share on other sites

ничего подобного

Не надо пилить

 

Т.е. ввод в %, а мод пересчитывает

percentage_discounts.xml

Share this post


Link to post
Share on other sites

ничего подобного

Не надо пилить

 

Т.е. ввод в %, а мод пересчитывает

 

Да работает , считает правильно, но значение сохраняется не в процентах.

Share this post


Link to post
Share on other sites

Вы скажите, что вам надо?

 

Выводить скидку в %

 

Ну так это тоже не сложно...

 

Или указывать

100

80 - скидка 20%

ps хотя это не совсем так, но не суть

Share this post


Link to post
Share on other sites

Вы скажите, что вам надо?

 

Выводить скидку в %

 

Ну так это тоже не сложно...

 

Или указывать

100

80 - скидка 20%

ps хотя это не совсем так, но не суть

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

То есть - если цена 200 а процент 20 то при изменении цены 200 на 190 процент оставался 20

Share this post


Link to post
Share on other sites

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

а в магазине она повсюду.

Share this post


Link to post
Share on other sites

а что мешает переделать в одном месте, модели product.php ?

Share this post


Link to post
Share on other sites

а что мешает переделать в одном месте, модели product.php ?

 

OC Team Подскажите пожалуйста подробней что и как переделать?

Я так понимаю где то в этих строках?

if (isset($data['product_discount'])) {
			foreach ($data['product_discount'] as $product_discount) {
				$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 = '" . (float)$product_discount['price'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");
			}
		}

		if (isset($data['product_special'])) {
			foreach ($data['product_special'] as $product_special) {
				$this->db->query("INSERT INTO " . DB_PREFIX . "product_special SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_special['customer_group_id'] . "', priority = '" . (int)$product_special['priority'] . "', price = '" . (float)$product_special['price'] . "', date_start = '" . $this->db->escape($product_special['date_start']) . "', date_end = '" . $this->db->escape($product_special['date_end']) . "'");
			}
		}

Мои рассуждения:

Вотс скрипт который пересчитывает процент

<script type="text/javascript"><!--
            
            function calcPrice(name, row) {
            
                var perc = $('input[name=\'product_' + name + '[' + row + '][percentage]\']').val();
                var price = $('input[name=\'price\']').val();
                var discounted_price = price * (1-(perc/100));
                var calculated_percentage = discounted_price * (1-(price/100));
                
                $('input[name=\'product_' + name + '[' + row + '][price]\']').val(discounted_price);
                
            }
            //--></script>

Он привязан к цене

А что если он просто будет брать цену и считать процент от нее.

То есть он и сейчас считает, но  при изменении цены изменяется и процент. Можно ли его зафиксировать?

Просто я в скриптах не шарю.

Share this post


Link to post
Share on other sites

а точно ли только в одном месте? ;)

 

если не ошибаюсь - встречалось неоднократно, хотя бы в той же обработке заказов

не считая, что какие-то сторонние модули могут не к функции лезть, а своими запросами формировать

Share this post


Link to post
Share on other sites

Ребята, а есть ли у кого решение с процентами для "Скидки" ?

Share this post


Link to post
Share on other sites

AlexDW, от сторонних запросов никто не застрахован ) но часто даже сторонние используют getProduct() из модели
qqq64, я код вам не буду писать. идея следующая: в модели product.php перед return добавить условие, если задана акция у товара, то акцию установить = цена * {процент скидки}/100

Share this post


Link to post
Share on other sites

Но тогда все акции нужно вводить в процентах

 

перед return добавить условие

 

 

Можно и в самом массиве, который возвращается.

 

Но тогда может сломаться сортировка по цене.

Share this post


Link to post
Share on other sites

Если ВСЕ акции указывать в процентах и только в %, то

(SELECT (p.price * ps.price / 100) FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id .....

пробуйте

 

Во всех местах, где есть  product_special

Share this post


Link to post
Share on other sites

Если ВСЕ акции указывать в процентах и только в %, то

(SELECT (p.price * ps.price / 100) FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id .....

пробуйте

 

Во всех местах, где есть  product_special

Попробовал вылезла ошибка    Notice: Error: Unknown column 'p.price' in 'field list'      Error No: 1054

 

Может я не туда вставил?

public function getProductSpecials($product_id) {
		$query = $this->db->query("SELECT (p.price * ps.price / 100) FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' ORDER BY priority, price");

		return $query->rows;
	}

Или еще где то? с селектом другого не нашел. А product_special  много??? куда именно подскажите плизззз.

Share this post


Link to post
Share on other sites

пилить сохранение/редактирование и весь остальной код, отображающий/использующий акции - ДО.ФИ.ГА.

 

+++++++

Share this post


Link to post
Share on other sites

Если ВСЕ акции указывать в процентах и только в %, то

(SELECT (p.price * ps.price / 100) FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id .....

пробуйте

 

Во всех местах, где есть  product_special

 

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

 

то, как вы описали поломает кучу кода по движку, потому как ВЕЗДЕ придется переписывать акция-процент

Share this post


Link to post
Share on other sites

Как раз то что я описал - это ВСЕГДА УКАЗЫВАТЬ акцию в процентах

И она пересчитается уже в запросах

 

Тогда будет возможность и сортировать по цене

И нигде больше в кодах нетрогать

 

Только модель!!!

 

 

Попробовал вылезла ошибка    Notice: Error: Unknown column 'p.price' in 'field list'      Error No: 1054

 

Может я не туда вставил?

ДА, не туда

нужно вставлять в getProducts. getProduct

 

Для getProductSpecials нужен другой запрос...

Share this post


Link to post
Share on other sites

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

 

 

В каком месте?

 вот мод который я показал  - добавляет js поле и пересчитывает

Но, нигде сам процент не участвует, при этом цена на акции остается фиксированной

 

В любом случае для расчета цены скидки нужна цена товара.

Share this post


Link to post
Share on other sites

Все намного проще!!!

Если у Вас цена более 1 рубля/доллара/евро и т.п., то делаете следующее:

1. В файле catalog/model/catalog/product.php

меняете строчку:

 

'special'          => $query->row['special'],

 

на

 

'special'          => ($query->row['special'] < 1 ? $query->row['price']*(1-$query->row['special']) : $query->row['special']),

 

2. Теперь, добавляя акцию, ставите в поле цены значение 0.1 (т.е. 10%), 0.2 (20%) и т.д.

 

Всем удачи!

Edited by artblmon

Share this post


Link to post
Share on other sites

Увы и ах..

Вы пробовали в таком случае сортировать по цене?

 

Кроме того, список товаров присутсвует не только в catalog, но и  в поиске, производителях, модулях

Share this post


Link to post
Share on other sites

В производителях, поиске работает.

Согласен - сортировка не работает, т.к. сортируется на уровне SQL-запроса.

Модули тоже не работают.

Буду делать только под себя и править некоторые модули...

 

З.Ы. в предыдущем посте вместо

'special'          => ($query->row['special'] < 1 ? $query->row['price']*(1-$query->row['special']) : $query->row['special']),

надо

'special'          => (($query->row['special'] > 0) && ($query->row['special'] < 1)   ? $query->row['price']*(1-$query->row['special']) : $query->row['special']),

может все-таки кому пригодится

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By legioner26
      Разработан многофункциональный модуль для Opencart позволяющий управлять акциями как в автоматическом режиме так и в ручном.
       
      Есть возможность выбрать товары для запуска акций из необходимых вам категорий и производителей.
       
      Модуль также ведет учет акций которые были запущены в автоматическом режиме, благодаря которому можно удалить акции в случае если они были запущены по ошибке, либо истекло время. 
       
      Также есть возможность удаления всех акций из всего интернет магазина.
      В модуле предусмотрена функция округления цены при скидке в большую, либо меньшую сторону, или оставить без изменения
       
      Данный модуль очень прост в освоении, но содержит весь необходимый функционал для менеджмента.
       
      ДЕМО МОДУЛЯ
      demo
      demo
    • By legioner26
      1 599.00 руб
      Скачать/Купить дополнение


      Управление, генерация, архив акций OpenCart Action PRO
      Разработан многофункциональный модуль для Opencart позволяющий управлять акциями как в автоматическом режиме так и в ручном.
       
      Есть возможность выбрать товары для запуска акций из необходимых вам категорий и производителей.
       
      Модуль также ведет учет акций которые были запущены в автоматическом режиме, благодаря которому можно удалить акции в случае если они были запущены по ошибке, либо истекло время. 
       
      Также есть возможность удаления всех акций из всего интернет магазина.
      В модуле предусмотрена функция округления цены при скидке в большую, либо меньшую сторону, или оставить без изменения
       
      Данный модуль очень прост в освоении, но содержит весь необходимый функционал для менеджмента.
       
      ДЕМО МОДУЛЯ
      demo
      demo
      Добавил legioner26 Добавлено 09.09.2020 Категория Цены, скидки, акции, подарки Системные требования Метод активации Без активации 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 Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет Старая цена 3500  
    • By Nymphetamine
      Особенности:
      Настраиваемая адаптивность товаров. Настраиваемое отображение. Настраиваемое направление карусели (горизонтально/вертикально). Возможность выводить товары в несколько рядов (учитывая адаптивность). Возможность разбивать карусель на табы. Возможность привязывать уникальные карусели [Новинки, Акции, и т.п.] к текущей странице категорий или карточки товара. Возможно выводить доп. карусель для изображений (независимые настройки). Различные варианты выбора пагинации (нумерация, маркированный список, полоса прогресса). Поддержка сенсорных событий (свайп-жесты). Поддержка слайд событий мышью. Поддержка прокрутки колесом мыши. Отложенная загрузка картинок (lazy load). Постраничная прокрутка. Автопрокрутка. Кеширование модуля.  
      Вывод товаров по:
      Дате. Акциям. Производителю. Рейтингу. Популярным Лидерам продаж. Выборочным товарам.  
      Отображение:
      Заголовок. Название товара. Цена товара. Рейтинг товара. Кнопка корзины. Кнопка закладки. Кнопка сравнение. Доп. изображения. Пагинация . Навигация.  
      При помощи данного модуля легко можно реализовать:
      Новинки. Акции. Рекомендуемые. Лидеры продаж. Хиты продаж. Случайные товары. Похожие товары. Просмотренные товары. и многое другое..
      Гибкая настройка вывода:
      Источник товаров - выводить товары, только из определенной категории / выборочные товары / просмотренные товары. Фильтр по производителю - все производители сразу, или какой-то определенный. Сортировка и фильтрация - по дате добавления, по рейтингу, по популярным, по порядку, только лидеры продаж, только товары со скидками.  
      * Весь функционал настраиваться из админ. панели.
      * Не требует vqmod/ocmod.
      * Простой в установке.
       
      Демо:
      Витрина - отображен весь основной функционал Категория - отображена карусель с привязкой к текущей категории Товар - отображена карусель с привязкой к текущей категории + учет текущего товара Админка - логин и пароль: demo
    • By Nymphetamine
      850.00 руб
      Скачать/Купить дополнение


      Swiper Карусель Товаров
      Особенности:
      Настраиваемая адаптивность товаров. Настраиваемое отображение. Настраиваемое направление карусели (горизонтально/вертикально). Возможность выводить товары в несколько рядов (учитывая адаптивность). Возможность разбивать карусель на табы. Возможность привязывать уникальные карусели [Новинки, Акции, и т.п.] к текущей странице категорий или карточки товара. Возможно выводить доп. карусель для изображений (независимые настройки). Различные варианты выбора пагинации (нумерация, маркированный список, полоса прогресса). Поддержка сенсорных событий (свайп-жесты). Поддержка слайд событий мышью. Поддержка прокрутки колесом мыши. Отложенная загрузка картинок (lazy load). Постраничная прокрутка. Автопрокрутка. Кеширование модуля.  
      Вывод товаров по:
      Дате. Акциям. Производителю. Рейтингу. Популярным Лидерам продаж. Выборочным товарам.  
      Отображение:
      Заголовок. Название товара. Цена товара. Рейтинг товара. Кнопка корзины. Кнопка закладки. Кнопка сравнение. Доп. изображения. Пагинация . Навигация.  
      При помощи данного модуля легко можно реализовать:
      Новинки. Акции. Рекомендуемые. Лидеры продаж. Хиты продаж. Случайные товары. Похожие товары. Просмотренные товары. и многое другое..
      Гибкая настройка вывода:
      Источник товаров - выводить товары, только из определенной категории / выборочные товары / просмотренные товары. Фильтр по производителю - все производители сразу, или какой-то определенный. Сортировка и фильтрация - по дате добавления, по рейтингу, по популярным, по порядку, только лидеры продаж, только товары со скидками.  
      * Весь функционал настраиваться из админ. панели.
      * Не требует vqmod/ocmod.
      * Простой в установке.
       
      Демо:
      Витрина - отображен весь основной функционал Категория - отображена карусель с привязкой к текущей категории Товар - отображена карусель с привязкой к текущей категории + учет текущего товара Админка - логин и пароль: demo Добавил Nymphetamine Добавлено 21.03.2020 Категория Модули Системные требования Метод активации Автоматическая активация 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 Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Да Старая цена 0  
    • By Nymphetamine
      Особенности:
      Настраиваемая адаптивность товаров. Настраиваемое отображение. Возможность разбивать карусель на табы. Возможность привязывать уникальные карусели [Новинки, Акции, и т.п.] к текущей странице категорий или карточки товара. Поддержка сенсорных событий (свайп-жесты). Поддержка слайд событий мышью. Отложенная загрузка картинок (lazy load). Автопрокрутка. Постраничная прокрутка. Кеширование модуля.  
      Вывод товаров по:
      Дате. Акциям. Производителю. Рейтингу. Популярным Лидерам продаж. Выборочным товарам.  
      Отображение:
      Заголовок. Название товара. Цена товара. Рейтинг товара. Кнопка корзины. Кнопка закладки. Кнопка сравнение. Пагинация. Навигация. И многое другое..  
      При помощи данного модуля легко можно реализовать:
      Новинки. Акции. Рекомендуемые. Лидеры продаж. Хиты продаж. Случайные товары. Похожие товары. Просмотренные товары. и многое другое..
      Гибкая настройка вывода:
      Источник товаров - выводить товары, только из определенной категории / выборочные товары / просмотренные товары. Фильтр по производителю - все производители сразу, или какой-то определенный. Сортировка и фильтрация - по дате добавления, по рейтингу, по популярным, по порядку, только лидеры продаж, только товары со скидками.  
      * Весь функционал настраиваться из админ. панели.
      * Не требует vqmod/ocmod.
      * Простой в установке.
       
      Демо:
      Витрина - отображен весь основной функционал Категория - отображена карусель с привязкой к текущей категории Товар - отображена карусель с привязкой к текущей категории + учет текущего товара Админка - логин и пароль: demo  
      Живые примеры сайтов работающие с данным модулем:
      https://mr-apple.ru https://alcoelite.com.ua https://eudoratex.com https://amperlumen.ru
      http://shwkclothing.com
  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.