Jump to content
Sign in to follow this  
elitesmart

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

Recommended Posts

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

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

 

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

 

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

2- 900

3- 800

4- 700

6- 500

 

и тп

 

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

 

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

 

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

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

 

 

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

 

 

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

Up

 

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

Share this post


Link to post
Share on other sites

попробуйте открыть файл  \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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

$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

Share this post


Link to post
Share on other sites

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

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

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  

  • 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.