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);
}

Обновление всех комплектов:

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