// 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(); $arrayResult = array();
foreach ($result AS $row) 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']; $p->pack_quantity = $row['quantity'];
$arrayResult[] = $p; $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); $this->unit_price = ($this->unit_price_ratio != 0 ? $this->price / $this->unit_price_ratio : 0);
if ($this->id) if ($this->id)
$this->tags = Tag::getProductTags((int)$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->loadStockData();
$this->quantity = StockAvailable::getQuantityAvailableByProduct($id_product, 0); }
$this->out_of_stock = StockAvailable::outOfStock($this->id);
$this->depends_on_stock = StockAvailable::dependsOnStock($this->id);
if ($this->id_category_default) if ($this->id_category_default)
$this->category = Category::getLinkRewrite((int)$this->id_category_default, (int)$id_lang); $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); 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() public function postProcess()
{ {
$this->product = new Product((int)Tools::getValue('id_product')); $this->product = new Product((int)Tools::getValue('id_product'));
$this->product->loadStockData();
if (isset($_POST['generate'])) 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')) if (array_key_exists('id', $info) && (int)$info['id'] && Product::existsInDatabase((int)$info['id'], 'product'))
{ {
$product = new Product((int)$info['id']); $product = new Product((int)$info['id']);
$product->loadStockData();
$category_data = Product::getProductCategories((int)$product->id); $category_data = Product::getProductCategories((int)$product->id);
foreach ($category_data as $tmp) foreach ($category_data as $tmp)
$product->category[] = $tmp; $product->category[] = $tmp;
@@ -1022,6 +1022,21 @@ class AdminProductsControllerCore extends AdminController
$this->display = 'list'; $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 * postProcess handle every checks before saving products information
* *