From c026a075047704be5cf4fb8f8d57689700a58ed4 Mon Sep 17 00:00:00 2001 From: rGaillard Date: Mon, 12 Nov 2012 13:28:35 +0000 Subject: [PATCH] [-] BO : fix the change of advanced stock management in the products on GroupShop context #PSCFV-5521 --- classes/Product.php | 26 ++++++++++++++++--- controllers/admin/AdminProductsController.php | 3 +-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/classes/Product.php b/classes/Product.php index d51b6af2c..2fb0d1819 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -4978,11 +4978,31 @@ class ProductCore extends ObjectModel $this->out_of_stock = StockAvailable::outOfStock($this->id); $this->depends_on_stock = StockAvailable::dependsOnStock($this->id); if (Context::getContext()->shop->getContext() == Shop::CONTEXT_GROUP && Context::getContext()->shop->getContextShopGroup()->share_stock == 1) - $this->advanced_stock_management = Db::getInstance()->getValue('SELECT `advanced_stock_management` - FROM '._DB_PREFIX_.'product_shop - WHERE id_product='.(int)$this->id.Shop::addSqlRestriction()); + $this->advanced_stock_management = $this->useAdvancedStockManagement(); } } + + public function useAdvancedStockManagement() + { + return Db::getInstance()->getValue(' + SELECT `advanced_stock_management` + FROM '._DB_PREFIX_.'product_shop + WHERE id_product='.(int)$this->id.Shop::addSqlRestriction() + ); + } + + public function setAdvancedStockManagement($value) + { + $this->advanced_stock_management = (int)$value; + if (Context::getContext()->shop->getContext() == Shop::CONTEXT_GROUP && Context::getContext()->shop->getContextShopGroup()->share_stock == 1) + Db::getInstance()->execute(' + UPDATE `'._DB_PREFIX_.'product_shop` + SET `advanced_stock_management`='.(int)$value.' + WHERE id_product='.(int)$this->id.Shop::addSqlRestriction() + ); + else + $this->save(); + } /** * get the default category according to the shop diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index 751c0af4b..92ee1b1f6 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -4022,8 +4022,7 @@ class AdminProductsControllerCore extends AdminController if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && Pack::isPack($product->id)) die (Tools::jsonEncode(array('error' => $this->l('Not possible if the product is a pack')))); - $product->advanced_stock_management = (int)Tools::getValue('value'); - $product->save(); + $product->setAdvancedStockManagement((int)Tools::getValue('value')); if (StockAvailable::dependsOnStock($product->id) == 1 && (int)Tools::getValue('value') == 0) StockAvailable::setProductDependsOnStock($product->id, 0); break;