12. Автоматическое обновление цены и количества
Эта статья актуальна только для комплектов в режимах "Комплект как товар" и "Комплект как товар. Упрощенный режим".
Для более ранних версий модуля (до 1.5.8.3.) описание здесь.
Цена
В модуле цена комплекта меняется динамически в зависимости от товаров которые содержатся в комплекте, от их наличия и цены.
Это особенно важно учитывать при выводе комплектов в режимах "Комплект как товар" и "Комплект как товар. Упрощенный режим" в категориях при сортировке или фильтрации товаров по цене.
Сложность в том, что процесс динамического расчета стоимости комплекта довольно трудозатратная операция для сервера. И при отборе в категории комплектов по цене, при большом количестве комплектов или большом количестве товаров в комплекте, эта операция будет вызывать достаточно большую нагрузку на сервер.
Поэтому модуль позволяет автоматически сохранять стоимость комплекта в поле "цена" основного товара, а цену со скидкой в раздел "Акции" основного товара.
Тогда при сортировке товаров или при использовании фильтра по цене вывод товаров в категориях будет осуществляться быстро и корректно.
Обратите внимание: для режима "Комплект как товар. Упрощенный режим" использовать автоматическое обновление цены основного товара имеет смысл если изначально в комплекте присутствует только один основной товар. Иначе в цену основного товара добавятся стоимость других товаров из комплекта. И при выводе комплекта покупателю основной товар будет выводится с неправильной ценой.
Автоматическое обновление цены основного товара можно включать и отключать в настройках модуля:
Цена комплекта автоматически обновляется в основном товаре в следующих случаях:
1. При редактировании комплекта.
2. При редактировании товара входящего в комплект.
3. При смене статуса заказа, когда со склада вычитаются\добавляются остатки товара входящего в комплект.
Количество
Модуль позволяет отслеживать наличие товаров входящих в комплект и в соответствии с этим корректировать информацию о количестве всего комплекта.
Например если в одной из "обязательных" позиций комплекта одного из товаров нет в наличии, то модуль корректирует информацию в главном товаре - количеству устанавливается нулевое значение.
(Обязательные позиции комплекта - это "Фиксированный товар" и "Товар на выбор")
В этом случае если в настройках магазина запрещена продажа отсутствующих товаров, то комплект нельзя будет купить.
По умолчанию в самой базе данных количество в основном товаре не меняется, оно только корректируется при отображении информации покупателю. Но возможно включение режима при котором количество основного товара в базе данных также корректируется.
Корректировка количества выполняется в тех же случаях что и цена.
Пользоваться данными возможностями модуля надо аккуратно, т.к. если к комплекту привязано несколько товаров или даже категорий, то цены будут меняться у всех привязанных товаров.
Обратите внимание: пункты 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();
}