Есть ещё небольшое уточнение. Во всех версиях движка проверяется наличие товара в корзине вот таким кодом:
// Stock
if (!$product_query->row['quantity'] || ($product_query->row['quantity'] < $cart['quantity'])) {
$stock = false;
}
Тут напрочь игнорируется признак "Вычитать со склада". Поэтому в количестве стоит всё же записывать заведомо большое число, чтобы не наткнуться на этот неприятный момент.
Причём такая штука во всех версиях движка, даже в самой последней тройке 3.0.3.8
А вот в опциях всё проверяется корректно:
if ($option_value_query->row['subtract'] && (!$option_value_query->row['quantity'] || ($option_value_query->row['quantity'] < $cart['quantity']))) {
$stock = false;
}
Если стоит "Вычитать на складе - нет", то опция будет на складе, даже если в количестве 0.