frontend_checkout_stock_rules

Позволяет применять правила выбора склада для списания товаров при оформлении заказов.

Доступно начиная с версии 7.0.1.

Shop-Script

Входящие параметры (передаются по ссылке)

$params['order'] object Экземпляр класса shopOrder со свойствами заказа.
$params['stocks'] array Список складов. Каждый элемент списка — массив со следующими ключами:
$params['stocks'][stock_id]['id'] int ID склада.
$params['stocks'][stock_id]['name'] string Название склада.
$params['stocks'][stock_id]['public'] bool Признак видимости на витрине.
$params['stocks'][stock_id]['sort'] int Значение сортировки.
$params['stocks'][stock_id]['low_count'] int Максимальное количество товара, считающееся низким.
$params['stocks'][stock_id]['critical_count'] int Максимальное количество товара, считающееся критически низким.
$params['rules'] array Список правил выбора складов. Плагин должен модифицировать элементы списка, устанавливая флаг с ключом 'fulfilled' для тех правил, которые должен обработать плагин. См. также описание хука "backend_settings_stocks" о том, как модифицировать форму настроек для создания таких правил.
$params['rules'][rule_id]['id'] int ID правила.
$params['rules'][rule_id]['stock_id'] int ID склада для списания остатков.
$params['rules'][rule_id]['virtualstock_id'] int ID виртуального склада для списания остатков.
$params['rules'][rule_id]['rule_type'] string Тип правила: 'by_region' (по адресу доставки), 'by_region' (по способу доставки).
$params['rules'][rule_id]['rule_data'] string Значение правила: обозначение региона доставки (для типа правила 'by_region') или ID способа доставки (для типа правила 'by_shipping').
$params['rules'][rule_id]['sort'] int Значение сортировки.
… код плагина …

Результат работы плагина

Shop-Script

Пример кода плагина

PHP

/**
 * As an example, let us determine whether total quantity of order items is above a value
 * selected in the first available stock rule setting provided by this plugin.
 * For details, see description and code example for 'backend_settings_stock' event
 */
public function frontendCheckoutStockRules($params)
{
    $quantity = 0;
    foreach ($params['order']['items'] as $item) {
        $quantity += $item['quantity'];
    }

    foreach ($params['rules'] as &$rule) {
        if ($rule['rule_type'] == $this->id) {
            if ($quantity > $rule['rule_data']) {
                $rule['fulfilled'] = true;
                break;
            }
        }
    }
}