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

Модуль Скидки от суммы заказа [Поддержка]


Recommended Posts

В 16.03.2014 в 19:28, shoputils сказал:

 

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

@shoputils Здравствуйте. Как сделать, чтобы не учитывались акционные товары? Может быть, с 2014 года вы уже делали кому то правку?

Или все таки придется самому?

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

@efremovxp  Добрый день!

Делал для 2.3, на остальные версии еще нет.

Как только перенесу функционал для других версий движка - обновлю модуль для всех версий разом.

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

В 12.03.2021 в 14:14, shoputils сказал:

@efremovxp  Добрый день!

Делал для 2.3, на остальные версии еще нет.

Как только перенесу функционал для других версий движка - обновлю модуль для всех версий разом.

Сделал, чтобы на акционные товары не было скидки (но, чтобы они учитывались в общей сумме заказа).

Может кому понадобится:

 

Находим в /catalog/model/extension/total/sum_discounts.php

foreach ($this->discounts as $discount){
                switch ($discount['category_mode']){
                    case 'include':
                        $products_total = 0;
                        foreach ($this->products as $product){
							if (array_intersect($product['categories'], $discount['categories'])){
								$products_total += $product['total'];
							}
                        }
                        break;
                    case 'exclude':
                        $products_total = 0;
                        foreach ($this->products as $product){
							if (!array_intersect($product['categories'], $discount['categories'])){
								$products_total += $product['total'];
							}
                        }
                        break;
                    default:
                        $products_total = $this->cart->getTotal();
                        break;
                }
				
                if ($products_total >= $discount['total']){
                    if (self::MODE_MAX_TOTAL){
                        $sum = round($products_total * ($discount['percent'] / 100), 2);
                        if ($discount['total'] > $max_total){
                            $max_total = $discount['total'];
                            $max_sum = $sum;
                            $max_percent = $discount['percent'];
                        }
                    } else {
                        $sum = round($products_total * ($discount['percent'] / 100), 2);
                        if ($sum > $max_sum){
                            $max_sum = $sum;
                            $max_percent = $discount['percent'];
                        }
                    }
                }
            }

Меняем на:

foreach ($this->discounts as $discount){
                switch ($discount['category_mode']){
                    case 'include':
                        $products_total = 0;
						$minusprods = 0;
                        foreach ($this->products as $product){
							if (array_intersect($product['categories'], $discount['categories'])){
								$prodspecial = $this->model_catalog_product->getProduct($product['product_id']);
								if ((float)$prodspecial['special']){
									$minusprods += $product['total'];
								}
							
								$products_total += $product['total'];
							}
                        }
                        break;
                    case 'exclude':
                        $products_total = 0;
						$minusprods = 0;
                        foreach ($this->products as $product){
							if (!array_intersect($product['categories'], $discount['categories'])){
								$prodspecial = $this->model_catalog_product->getProduct($product['product_id']);
								if ((float)$prodspecial['special']){
									$minusprods += $product['total'];
								}
								$products_total += $product['total'];
							}
                        }
                        break;
                    default:
                        $products_total = $this->cart->getTotal();
                        break;
                }

                if ($products_total >= $discount['total']){
                    if (self::MODE_MAX_TOTAL){
                        $sum = round($products_total * ($discount['percent'] / 100) - $minusprods * ($discount['percent'] / 100), 2);
                        if ($discount['total'] > $max_total){
                            $max_total = $discount['total'];
                            $max_sum = $sum;
                            $max_percent = $discount['percent'];
                        }
                    } else {
                        $sum = round($products_total * ($discount['percent'] / 100) - $minusprods * ($discount['percent'] / 100), 2);
                        if ($sum > $max_sum){
                            $max_sum = $sum;
                            $max_percent = $discount['percent'];
                        }
                    }
                }
            }

 

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

  • 1 month later...

@gandhari

Для 3-го опенкарта:

 

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

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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