Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Шаги "оформление заказа"

Автор atachРаздел Шаблоны TPL

Ответов: 11
Просмотров: 6630
Последний ответ 14 Августа 2013, 16:59:21
от admin
Вывести сумму заказа на странице "Заказ поступил в обработку"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 3803
Последний ответ 07 Ноября 2014, 23:46:49
от Axiomateria
Перенаправление на страницу регистрации покупателя перед оформлением заказа

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 16
Просмотров: 10093
Последний ответ 11 Марта 2013, 11:54:29
от Axiomateria
Проблемы уведомления клиента при смене статуса заказа и доставки

Автор stud_maiРаздел Шаблоны XSLT

Ответов: 7
Просмотров: 4299
Последний ответ 05 Января 2016, 00:59:01
от admin
Как в форму заказа в один шаг добавить свое поле адрес?

Автор rob1nРаздел Шаблоны XSLT

Ответов: 3
Просмотров: 2048
Последний ответ 03 Мая 2017, 23:21:19
от aghigay

0 Пользователей и 1 Гость просматривают эту тему.

*

smartweb

  • *
  • 6
  • +0/-0
    • Просмотр профиля
Всем привет.
Возник вопрос:
в системе добавлены 2 типа скидок:
1) 20% от суммы заказа в 5000 р
2) 30% на определённый товар "Сувенир"

При добавлении "обычных" товаров без скидок на сумму 5000 р и добавлении товара "Сувенир" скидки в корзине суммируются, т.е. UMI берёт 20% от суммы заказа, включая товар, который уже итак идёт с 30% скидкой.

Задача: при расчёте скидки на заказ не брать во внимание товар "Сувенир"( и вообще скидку на группу товаров) и его скидочную цену.

В каком направлении двигаться? начали ковыряться в /classes/modules/emarket/classes/discounts/discounts/OrderDiscount.php, но что-то не ясно пока что да как. Насколько я понимаю, нужно исправить функцию search

<?php
/**
* Скидка на заказ в интернет-магазине
*/
class orderDiscount extends discount {
/**
* Проверить, применима ли скидка к заказу $order
* @param order $order
* @return Boolean
*/
public function validate(order $order) {
$rules = $this->getDiscountRules();

$validateCount = 0;
foreach($rules as $rule) {
if($rule instanceof orderDiscountRule == false) {
continue;
}

if($rule->validateOrder($order) == false) {
return false;
}
$validateCount++;
}
return $validateCount > 0;
}


/**
* Найти наиболее подходящую скидку для заказа $order
* @param order $order заказ
* @return orderDiscount самая подходящая скидка для заказа $order
*/
public static function search(order $order) {
$cmsController = cmsController::getInstance();
$emarket = $cmsController->getModule('emarket');

if($emarket instanceof def_module == false) {
throw new coreException('Emarket module must be installed in order to calculate discounts');
}

$allDiscounts = $emarket->getAllDiscounts('order'); $discounts = array();
foreach($allDiscounts as $discountObject) {
$discount = discount::get($discountObject->id);
if($discount instanceof orderDiscount == false) continue;
if($discount->validate($order)) $discounts[] = $discount;
}

switch(sizeof($discounts)) {
case 0: return null;
default:
$orderPrice = $order->getOriginalPrice();
$maxDiscount = null; $minPrice = null;
foreach($discounts as $i => $discount) {
$price = $discount->recalcPrice($orderPrice);
if($price <= 0) continue;

if(is_null($minPrice) || $minPrice > $price) {
$minPrice = $price;
$maxDiscount = $discount;
}
}
return $maxDiscount;
}
}
};
?>


*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Предполагаю, что нужно делать новый тип скидок, в который добавить товары, на которые не нужно делать скидки. Это, условно, будет называться "Скидка 20% от суммы заказа в 5000 р, где сумма заказа складывается только из тех товаров, которых нет в списке самой скидки"
Мой блог http://umicms.me

*

smartweb

  • *
  • 6
  • +0/-0
    • Просмотр профиля
Предполагаю, что нужно делать новый тип скидок, в который добавить товары, на которые не нужно делать скидки. Это, условно, будет называться "Скидка 20% от суммы заказа в 5000 р, где сумма заказа складывается только из тех товаров, которых нет в списке самой скидки"
а если товары подгружаются из 1С и их много? как думаете: не вариант ковырять .php файл и написать конструкцию перед расчётом скидки от заказа?

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Конечно вариант ковырять php-файл. :-)
Особенно учитывая то, что создание нового типа скидки - это создание отдельного php-файла с соответсвующими параметрами и логикой внутри
Мой блог http://umicms.me