// optimization to Product constructor (stock data is not loaded by default)

This commit is contained in:
tDidierjean
2012-01-03 13:40:50 +00:00
parent 21e4a2fb89
commit 93e2f8b5bf
5 changed files with 32 additions and 6 deletions
+2 -1
View File
@@ -78,7 +78,8 @@ class PackCore extends Product
$arrayResult = array();
foreach ($result AS $row)
{
$p = new Product($row['id_product_item'], false, (int)($id_lang));
$p = new Product($row['id_product_item'], false, $id_lang);
$p->loadStockData();
$p->pack_quantity = $row['quantity'];
$arrayResult[] = $p;
}
+13 -5
View File
@@ -391,12 +391,9 @@ class ProductCore extends ObjectModel
$this->unit_price = ($this->unit_price_ratio != 0 ? $this->price / $this->unit_price_ratio : 0);
if ($this->id)
$this->tags = Tag::getProductTags((int)$this->id);
}
// By default, the product quantity correspond to the available quantity to sell in the current shop
$this->quantity = StockAvailable::getQuantityAvailableByProduct($id_product, 0);
$this->out_of_stock = StockAvailable::outOfStock($this->id);
$this->depends_on_stock = StockAvailable::dependsOnStock($this->id);
$this->loadStockData();
}
if ($this->id_category_default)
$this->category = Category::getLinkRewrite((int)$this->id_category_default, (int)$id_lang);
@@ -4729,4 +4726,15 @@ class ProductCore extends ObjectModel
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
}
/**
* Fill the variables used for stock management
*/
public function loadStockData()
{
// By default, the product quantity correspond to the available quantity to sell in the current shop
$this->quantity = StockAvailable::getQuantityAvailableByProduct($this->id, 0);
$this->out_of_stock = StockAvailable::outOfStock($this->id);
$this->depends_on_stock = StockAvailable::dependsOnStock($this->id);
}
}
@@ -79,6 +79,7 @@ class AdminAttributeGeneratorControllerCore extends AdminController
public function postProcess()
{
$this->product = new Product((int)Tools::getValue('id_product'));
$this->product->loadStockData();
if (isset($_POST['generate']))
{
@@ -924,6 +924,7 @@ class AdminImportControllerCore extends AdminController
if (array_key_exists('id', $info) && (int)$info['id'] && Product::existsInDatabase((int)$info['id'], 'product'))
{
$product = new Product((int)$info['id']);
$product->loadStockData();
$category_data = Product::getProductCategories((int)$product->id);
foreach ($category_data as $tmp)
$product->category[] = $tmp;
@@ -1022,6 +1022,21 @@ class AdminProductsControllerCore extends AdminController
$this->display = 'list';
}
/**
* Override parent to add stock data to object
* We don't want to make a "full" product load because of side effects to prices
*
* @param boolean $opt Return an empty object if load fail
* @return object
*/
protected function loadObject($opt = false)
{
$result = parent::loadObject($opt);
if ($result)
$this->object->loadStockData();
return $result;
}
/**
* postProcess handle every checks before saving products information
*