Перейти к содержанию
elitesmart

[Решено] Товары - Скидка и Акции (Проблема)

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

Уж не знаю, что я мог натворить, но внезапно обнаружил следующую проблему.

Прошу откликнутся и сообщить как у вас.

 

Имеется товар к примеру с ценой 1000 руб

 

на него установил в Скидки в зависимости от кол-ва штук:

2- 900

3- 800

4- 700

6- 500

 

и тп

 

И тут же добавил акцию

 

вместо 1000, как 800 руб за товар

 

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

Учитывается только Акционная цена, скидки ниже ее не учитываются.

 

 

У всех так или только у меня?

 

 

Поделиться сообщением


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

у всех

у акций приоритет выше, чем у "скидок".

Поделиться сообщением


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

у всех

у акций приоритет выше, чем у "скидок".

Вот попал то :))) Реально проверил на чистом дистрибутиве, результат тот же

 

Так как обойти данную проблему?

 

Как задать скидкам больший приоритет, если их цена ниже акционной?

Поделиться сообщением


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

Up

 

Это реальная проблема. Как сделать приоритет для Скидок выше, чем у Акционной цене?

Поделиться сообщением


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

попробуйте открыть файл  \system\library\cart.php

 

и поменять местами блоки

$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND quantity <= '" . (int)$discount_quantity . "' 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'];					}
// Product Specials					$product_special_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$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 ASC, price ASC LIMIT 1");									if ($product_special_query->num_rows) {						$price = $product_special_query->row['price'];					}

по умолчанию они друг за другом, сделайте наоборот, второй первым

// Product Specials					$product_special_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$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 ASC, price ASC LIMIT 1");									if ($product_special_query->num_rows) {						$price = $product_special_query->row['price'];					}$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND quantity <= '" . (int)$discount_quantity . "' 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'];					}
  • +1 1

Поделиться сообщением


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

Спасибо. Попробую...

 

Но суть в том, что если Скидок от кол-ва на товар нет или Акционная цена ниже, то должна приниматься акционная цена.

 

А если имеются Скидки ниже Акционной цены, то принималась бы к расчету Скидочная цена.

 

Сейчас при любом случае, берется только Акционная.

 

Простите за каламбур :) Но думаю суть ясна.

Поделиться сообщением


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

Спасибо. Попробую...

 

Но суть в том, что если Скидок от кол-ва на товар нет или Акционная цена ниже, то должна приниматься акционная цена.

 

А если имеются Скидки ниже Акционной цены, то принималась бы к расчету Скидочная цена.

 

Сейчас при любом случае, берется только Акционная.

 

Простите за каламбур :) Но думаю суть ясна.

$product_discount_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND quantity <= '" . (int)$discount_quantity . "' 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_tmp = $product_discount_query->row['price'];

    $price = min($price, $price_tmp);
}

// Product Specials
$product_special_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$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 ASC, price ASC LIMIT 1");

if ($product_special_query->num_rows) {
    $price_tmp = $product_special_query->row['price'];

    $price = min($price, $price_tmp);
}
  • +1 1

Поделиться сообщением


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

Супер! Вроде теперь все как нужно! Однозначно в FAQ! ;)

А лучше сразу в сборку ocStore

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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