Тоже задался этим вопросом.
2 года прошло, может уже не актуально.
В
\system\library\cart.php
добавил
в массиве
$product_data[] = array(
'stock_status' => $product_query->row['stock_status_id'],
и
public function hasPrice() {
foreach ($this->getProducts() as $product) {
if ($product['price'] == 0 && $product['stock_status'] == 5) {
$query = $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product['product_id'] . "'");
}
}
return true;
}
также в файлах
\catalog\controller\checkout\cart.php
\catalog\controller\checkout\checkout.php
добавил проверку этого класса,
удаляется из корзины товар, если цена вдруг стала равна 0 (авторизован или нет)
Наколхозил, но работает