// Fix product bug when no quantity was added for new products attributes

This commit is contained in:
rGaillard
2012-05-21 14:00:17 +00:00
parent 9d9919784e
commit 84401fa4e2
2 changed files with 14 additions and 9 deletions
+4
View File
@@ -1066,6 +1066,10 @@ class ProductCore extends ObjectModel
if (!$id_product_attribute || !$result) if (!$id_product_attribute || !$result)
return false; return false;
if ($this->getType() == Product::PTYPE_VIRTUAL)
StockAvailable::setProductOutOfStock((int)$this->id, 1, null, $id_product_attribute);
else
StockAvailable::setProductOutOfStock((int)$this->id, 2, null, $id_product_attribute);
return $id_product_attribute; return $id_product_attribute;
} }
+10 -9
View File
@@ -187,19 +187,20 @@ class StockAvailableCore extends ObjectModel
* @param int $depends_on_stock Optional : true by default * @param int $depends_on_stock Optional : true by default
* @param int $id_shop Optional : gets context by default * @param int $id_shop Optional : gets context by default
*/ */
public static function setProductDependsOnStock($id_product, $depends_on_stock = true, $id_shop = null) public static function setProductDependsOnStock($id_product, $depends_on_stock = true, $id_shop = null, $id_product_attribute = 0)
{ {
if (is_null($id_shop)) if (is_null($id_shop))
$id_shop = Context::getContext()->shop->id; $id_shop = Context::getContext()->shop->id;
$existing_id = StockAvailable::getStockAvailableIdByProductId((int)$id_product, 0, (int)$id_shop); $existing_id = StockAvailable::getStockAvailableIdByProductId((int)$id_product, (int)$id_product_attribute, (int)$id_shop);
if ($existing_id > 0) if ($existing_id > 0)
{ {
Db::getInstance()->update( Db::getInstance()->update(
'stock_available', 'stock_available',
array('depends_on_stock' => (int)(bool)$depends_on_stock), array('depends_on_stock' => (int)(bool)$depends_on_stock),
'id_product = '.(int)$id_product. 'id_product = '.(int)$id_product,
'id_product_attribute = '.(int)$id_product_attribute.
StockAvailable::addSqlShopRestriction(null, $id_shop) StockAvailable::addSqlShopRestriction(null, $id_shop)
); );
} }
@@ -208,7 +209,7 @@ class StockAvailableCore extends ObjectModel
$params = array( $params = array(
'depends_on_stock' => (int)(bool)$depends_on_stock, 'depends_on_stock' => (int)(bool)$depends_on_stock,
'id_product' => (int)$id_product, 'id_product' => (int)$id_product,
'id_product_attribute' => 0 'id_product_attribute' => (int)$id_product_attribute
); );
StockAvailable::addSqlShopParams($params, $id_shop); StockAvailable::addSqlShopParams($params, $id_shop);
@@ -228,19 +229,20 @@ class StockAvailableCore extends ObjectModel
* @param int $out_of_stock Optional false by default * @param int $out_of_stock Optional false by default
* @param int $id_shop Optional gets context by default * @param int $id_shop Optional gets context by default
*/ */
public static function setProductOutOfStock($id_product, $out_of_stock = false, $id_shop = null) public static function setProductOutOfStock($id_product, $out_of_stock = false, $id_shop = null, $id_product_attribute = 0)
{ {
if (is_null($id_shop)) if (is_null($id_shop))
$id_shop = Context::getContext()->shop->id; $id_shop = Context::getContext()->shop->id;
$existing_id = StockAvailable::getStockAvailableIdByProductId((int)$id_product, 0, (int)$id_shop); $existing_id = StockAvailable::getStockAvailableIdByProductId((int)$id_product, (int)$id_product_attribute, (int)$id_shop);
if ($existing_id > 0) if ($existing_id > 0)
{ {
Db::getInstance()->update( Db::getInstance()->update(
'stock_available', 'stock_available',
array('out_of_stock' => (int)$out_of_stock), array('out_of_stock' => (int)$out_of_stock),
'id_product = '.(int)$id_product. 'id_product = '.(int)$id_product,
'id_product_attribute = '.(int)$id_product_attribute.
StockAvailable::addSqlShopRestriction(null, $id_shop) StockAvailable::addSqlShopRestriction(null, $id_shop)
); );
} }
@@ -249,11 +251,10 @@ class StockAvailableCore extends ObjectModel
$params = array( $params = array(
'out_of_stock' => (int)$out_of_stock, 'out_of_stock' => (int)$out_of_stock,
'id_product' => (int)$id_product, 'id_product' => (int)$id_product,
'id_product_attribute' => 0 'id_product_attribute' => (int)$id_product_attribute
); );
StockAvailable::addSqlShopParams($params, $id_shop); StockAvailable::addSqlShopParams($params, $id_shop);
Db::getInstance()->insert('stock_available', $params); Db::getInstance()->insert('stock_available', $params);
} }
} }