diff --git a/classes/Category.php b/classes/Category.php index 2800bf205..f968dce9c 100644 --- a/classes/Category.php +++ b/classes/Category.php @@ -599,7 +599,7 @@ class CategoryCore extends ObjectModel return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); } - $sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, + $sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, product_attribute_shop.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(product_shop.`date_add`, DATE_SUB(NOW(), @@ -610,10 +610,10 @@ class CategoryCore extends ObjectModel LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa - ON (p.`id_product` = pa.`id_product` AND pa.`default_on` = 1) - '.Shop::addSqlAssociation('product_attribute', 'pa', false).' + ON (p.`id_product` = pa.`id_product`) + '.Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.`default_on` = 1').' '.Shop::addSqlAssociation('product', 'p').' - '.Product::sqlStock('p', 'pa', false, $context->shop).' + '.Product::sqlStock('p', 'product_attribute_shop', false, $context->shop).' LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').') @@ -639,7 +639,6 @@ class CategoryCore extends ObjectModel LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE product_shop.`id_shop` = '.(int)Context::getContext()->shop->id.' - AND (product_attribute_shop.default_on = 1 OR product_attribute_shop.default_on IS NULL) AND cp.`id_category` = '.(int)$this->id .($active ? ' AND product_shop.`active` = 1' : '') .($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '') diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index 5de1b552d..dc3a3ef15 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -692,6 +692,8 @@ class AdminProductsControllerCore extends AdminController $this->isProductFieldUpdated('attribute_minimal_quantity') ? Tools::getValue('attribute_minimal_quantity') : null, $this->isProductFieldUpdated('available_date_attribute') ? Tools::getValue('available_date_attribute') : null, false); + StockAvailable::setProductDependsOnStock((int)$product->id, $product->depends_on_stock, null, (int)$id_product_attribute); + StockAvailable::setProductOutOfStock((int)$product->id, $product->out_of_stock, null, (int)$id_product_attribute); } } else @@ -705,6 +707,7 @@ class AdminProductsControllerCore extends AdminController if ($product->productAttributeExists(Tools::getValue('attribute_combination_list'))) $this->errors[] = Tools::displayError('This combination already exists.'); else + { $id_product_attribute = $product->addCombinationEntity( Tools::getValue('attribute_wholesale_price'), Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact'), @@ -721,6 +724,9 @@ class AdminProductsControllerCore extends AdminController Tools::getValue('attribute_upc'), Tools::getValue('attribute_minimal_quantity') ); + StockAvailable::setProductDependsOnStock((int)$product->id, $product->depends_on_stock, null, (int)$id_product_attribute); + StockAvailable::setProductOutOfStock((int)$product->id, $product->out_of_stock, null, (int)$id_product_attribute); + } } else $this->errors[] = Tools::displayError('You do not have permission to').'
'.Tools::displayError('Edit here.');