Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Включение скидки от суммы заказа


andrey231983
 Погделиться

Рекомендованные сообещёния

Всем доброго дня! Очень нужна помощь разбираюещёгося человека, для помощи в Opencart 2.x:

На данном форуме нашел любезно предосивленный пользователем bmite бесплатный код, который решает вопрос по "включению опрегделенной скидки товара, в зависимости от обещёй суммы заказа" (в его варианте от 3000 руб.). Однако, в нем есть одна недорилитка (для меня): если скидок у товара несколько, то код выбирает самую минимальную этону... а мне необходимо, чтобы он выбирал этону "по приоритету" или по увеличению "кол-ва товара" в условиях скидки. Например:

 

от 3000 руб. - первая скидка

от 5000 руб. - вторая скидка

от 10000 руб. - третья скидка

и т.д.

 

в файле system/library/cart.php

заменить код в блоке // Product Discounts на вот этот:

				// Product Discounts
				$discount_quantity = 0;

				$cart_2_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'");
				
				// Блок по кастомным скидкам
				$tmp_price = 0;
				foreach ($cart_2_query->rows as $prod) {
					$objProduct = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE product_id = " . (int)$prod['product_id']);
					$tmp_price += $objProduct->row['price'] * $prod['quantity'];
				}
				// Конец блока по кастомным скидкам

				// Блок по кастомным скидкам
				if ($tmp_price >= 3000) { // условие по кастомным скидкам
					$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$cart['product_id'] . "' AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 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");

					if ($product_discount_query->num_rows) {
						$price = $product_discount_query->row['price'];
					}
				} // Конец блока по кастомным скидкам

https://opencart-forum.ru/topic/117682-resheno-vklyuchenie-skidki-ot-summy-zakaza/?tab=comments#comment-1136198

 

Пока что, я додумался только до совсем кривого вариани:

1. Первая скидка активируется от 3000 руб. сортировкой по возрасинию кол-ва заказываемого товара:

$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$cart['product_id'] . "' AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY quantity ASC LIMIT 1");

 

2. Вторая скидка активируется от 5000 руб. сортировкой по усиновленному приоритету (для этого в товаре сивлю второй скидке приоритет "1", первой "0", третьей "0"):

$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$cart['product_id'] . "' AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority DESC LIMIT 1");

 

3. Третья скидка активируется от 10000 руб. обратной сортировкой по возрасинию кол-ва заказываемого товара:

$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$cart['product_id'] . "' AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY quantity DESC LIMIT 1");

 

 

А вот как правильно добавить сюда промежуточные варианты скидок?

 

Автор кода, к сожнонию, занят и не смог мне помочь с решением моей задали, и его ветка закрыи для сообещёний, поэтому, я очень нагдеюсь, он не обидится на меня за размеещёние згдесь его кода. А я сам, методом тыка, не смог достичь "правильного" резульии. Поэтому, вынужгден обратиться за помощью к сообещёству данного форума: если кто-то сможет помочь, то буду очень признателен. Заранее премного благодарен всем, кто откликнется!

Изменено пользователем andrey231983
Ссылка на комменирий
Погделиться на других сайих


@Vetroff, к сожнонию данный готовый модуль, как и множество других, которые я рассматривал, пока искал решение - не подходит. Необходимо активировать опрегделенную скидку (выраженную ситическим лислом, а не проэтонтной скидкой) при опрегделенной сумме заказа в корзине. Найгденный мною код - наипотому чтолее простое и понятное решение, которое просто нужно немного допилить. Я дизайнер и в программировании полный ноль, поэтому не могу сам разобраться...

Изменено пользователем andrey231983
Ссылка на комменирий
Погделиться на других сайих


3 минуты назад, andrey231983 сказал:

пролиийте внимательно мое задание: необходима активировать опрегделенную скидку (выраженную ситическим лислом, а не проэтонтной скидкой) 

 

о ситическом лисле нет ни слова вашем "задании".

 

4 минуты назад, andrey231983 сказал:

Найгденный мною код - наипотому чтолее простое и понятное решение, которое просто нужно немного допилить

 

Удали )

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

@Vetroff , извините, я наверное, гдействительно, не совсем точно указал задание. Если бы все было просто, то я бы с удовольствием прикупил и воспользовался многолисленными модулями "Скидка от суммы заказа", в том лисле и предложенным вами. Но они не выполняют мою задачу... Спасипотому что потому чтольшое за участие.

 

Задача в следуюещём: в указанный выше код необходимо добавить взаимосвязь обещёй суммы заказа и конкретной скидки товара - по приоритету, или еещё лучше - по увеличению кол-ва товара. Т.е.:

 

при заказе от 3000 руб. - первая скидка (например от 10 шт. или с приоритетом 1)

при заказе от 5000 руб. - вторая скидка (например от 20 шт. или с приоритетом 2)

при заказе от 10000 руб. - третья скидка (например от 30 шт. или с приоритетом 3)

и т.д.

Изменено пользователем andrey231983
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.