12. Автоматическое обновление цен

Эта статья актуальна только для комплектов в режимах "Комплект как товар" и "Комплект как товар. Упрощенный режим".

Для более ранних версий модуля (до 1.5.8.3.) описание здесь.


В модуле цена комплекта меняется динамически в зависимости от товаров которые содержатся в комплекте, от их наличия и цены.

Это особенно важно учитывать при выводе комплектов в режимах "Комплект как товар" и "Комплект как товар. Упрощенный режим" в категориях при сортировке или фильтрации товаров по цене.

Сложность в том, что процесс динамического расчета стоимости комплекта довольно трудозатратная операция для сервера. И при отборе в категории комплектов по цене, при большом количестве комплектов или большом количестве товаров в комплекте, эта операция будет вызывать достаточно большую нагрузку на сервер.

Поэтому модуль позволяет автоматически сохранять стоимость комплекта в поле "цена" основного товара, а цену со скидкой в раздел "Акции" основного товара.

Тогда при сортировке товаров или при использовании фильтра по цене вывод товаров в категориях будет осуществляться быстро и корректно.


Обратите внимание: для режима "Комплект как товар. Упрощенный режим" использовать автоматическое обновление цены основного товара имеет смысл если изначально в комплекте присутствует только один основной товар. Иначе в цену основного товара добавятся стоимость других товаров из комплекта. И при выводе комплекта покупателю основной товар будет выводится с неправильной ценой.


Автоматическое обновление цены основного товара можно включать и отключать в настройках модуля:

 


Цена комплекта автоматически обновляется в основном товаре в следующих случаях:

1. При редактировании комплекта.

2. При редактировании товара входящего в комплект.

3. При смене статуса заказа, когда со склада вычитаются\добавляются остатки товара входящего в комплект.

4. При нажатии на кнопку "Обновить кэш" модуля 


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


Обратите внимание: пункты 2 и 3 срабатывают только если используется стандартный код opencart при сохранении изменённого товара и смене статуса заказа.

Если используются сторонние модули, то необходимо вставить следующий код.

При изменении товара:

if($this->registry->has('bundle_expert')){
$this->bundle_expert->onEditProduct($product_id);
}

При смене статуса заказа:

if($this->registry->has('bundle_expert')){
$this->bundle_expert->onChangeOrderStatus($order_id);
}
Как быстро узнать настройки комплекта?