From a53f47911f9620dade84c14edd564d98df0d2a0b Mon Sep 17 00:00:00 2001 From: bMancone Date: Tue, 20 Dec 2011 08:52:45 +0000 Subject: [PATCH] // Stock : updated Product --- classes/Product.php | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/classes/Product.php b/classes/Product.php index 445138ba5..3c2fa7501 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -606,7 +606,7 @@ class ProductCore extends ObjectModel * - physical stock for this product * - supply order(s) for this product */ - if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) + if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $this->advanced_stock_management) { $stock_manager = StockManagerFactory::getManager(); $physical_quantity = $stock_manager->getProductPhysicalQuantities($this->id, 0); @@ -4633,6 +4633,16 @@ class ProductCore extends ObjectModel return $success; } + /** + * For a given product, returns its real quantity + * + * @since 1.5.0 + * @param int $id_product + * @param int $id_product_attribute + * @param int $id_warehouse + * @param int $id_shop + * @return int real_quantity + */ public static function getRealQuantity($id_product, $id_product_attribute = 0, $id_warehouse = 0, $id_shop = null) { static $manager = null; @@ -4643,9 +4653,27 @@ class ProductCore extends ObjectModel if (is_null($id_shop)) $id_shop = Context::getContext()->shop->getID(true); - if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && StockAvailable::dependsOnStock($id_product, $id_shop)) + if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && self::usesAdvancedStockManagement($id_product) && + StockAvailable::dependsOnStock($id_product, $id_shop)) return $manager->getProductRealQuantities($id_product, $id_product_attribute, $id_warehouse, true); else return StockAvailable::getQuantityAvailableByProduct($id_product, $id_product_attribute, $id_shop); } + + /** + * For a given product, tells if it uses the advanced stock management + * + * @since 1.5.0 + * @param int $id_product + * @return bool + */ + public static function usesAdvancedStockManagement($id_product) + { + $query = new DbQuery; + $query->select('p.advanced_stock_management'); + $query->from('products', 'p'); + $query->where('p.id_product = '.(int)$id_product); + + return (bool)Db::getInstance()->getValue($query); + } }