diff --git a/classes/Product.php b/classes/Product.php index 6289519d2..bc48efa6a 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -601,6 +601,14 @@ class ProductCore extends ObjectModel if ($real_quantity > $physical_quantity) return false; + /** + * @since 1.5.0 + * Removes the product from StockAvailable, for the current shop + */ + $context = Context::getContext(); + $id_shop = $context->shop->id; + StockAvailable::removeProductFromStockAvailable($this->id, null, $id_shop); + if (!GroupReduction::deleteProductReduction($this->id)) return false; diff --git a/classes/stock/StockAvailable.php b/classes/stock/StockAvailable.php index 20ec83fc6..118cb82ef 100644 --- a/classes/stock/StockAvailable.php +++ b/classes/stock/StockAvailable.php @@ -291,4 +291,20 @@ class StockAvailableCore extends ObjectModel $stock_available->quantity = $stock_available->quantity + $delta_quantity; $stock_available->save(); } + + /** + * Remove a given product from the stock available + * + * @param int $id_product + * @param int $id_product_attribute Optional + * @param int $id_shop Optional + */ + public static function removeProductFromStockAvailable($id_product, $id_product_attribute = null, $id_shop = null) + { + Db::getInstance()->execute(' + DELETE FROM '._DB_PREFIX_.'stock_available + WHERE id_product = '.(int)$id_product. + ($id_product_attribute ? ' AND id_product_attribute = '.(int)$id_product_attribute : ''). + ($id_shop ? ' AND id_shop = '.(int)$id_shop : '')); + } }