Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


elitesmart

Recommended Posts

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

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

 

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

 

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

2- 900

3- 800

4- 700

6- 500

 

и тп

 

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

 

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

 

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

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

 

 

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

 

 

Надіслати
Поділитися на інших сайтах


у всех

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

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

 

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

 

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

Надіслати
Поділитися на інших сайтах


попробуйте открыть файл  \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
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.