// Update and fix some bugs on front and admin itnerfaces relative to available quantities functionnality

This commit is contained in:
dSevere
2011-12-05 15:11:21 +00:00
parent 24d39b3bf4
commit 84c885ddac
8 changed files with 113 additions and 48 deletions
+1
View File
@@ -641,6 +641,7 @@ class CategoryCore extends ObjectModel
.($active ? ' AND p.`active` = 1' : '') .($active ? ' AND p.`active` = 1' : '')
.($id_supplier ? ' AND p.id_supplier = '.(int)$id_supplier : ''). .($id_supplier ? ' AND p.id_supplier = '.(int)$id_supplier : '').
' GROUP BY p.id_product'; ' GROUP BY p.id_product';
if ($random === true) if ($random === true)
{ {
$sql .= ' ORDER BY RAND()'; $sql .= ' ORDER BY RAND()';
+59 -9
View File
@@ -1633,18 +1633,35 @@ class ProductCore extends ObjectModel
{ {
if (!Combination::isFeatureActive()) if (!Combination::isFeatureActive())
return array(); return array();
$sql = 'SELECT pa.*, GROUP_CONCAT(agl.`name`, \''.pSQL($attribute_value_separator).'\', $sql = 'SELECT pa.*, GROUP_CONCAT(agl.`name`, \''.pSQL($attribute_value_separator).'\',
al.`name` SEPARATOR \''.pSQL($attribute_separator).'\') as attribute_designation, IFNULL(stock.quantity, 0) al.`name` SEPARATOR \''.pSQL($attribute_separator).'\') as attribute_designation
FROM `'._DB_PREFIX_.'product_attribute` pa FROM `'._DB_PREFIX_.'product_attribute` pa
LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute`
LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.')
'.Product::sqlStock('pa', 'pa').'
WHERE pa.`id_product` = '.(int)$this->id.' WHERE pa.`id_product` = '.(int)$this->id.'
GROUP BY pa.`id_product_attribute`'; GROUP BY pa.`id_product_attribute`';
return Db::getInstance()->executeS($sql);
$res = Db::getInstance()->executeS($sql);
//Get quantity of each variations
foreach ($res as $key => $row)
{
$cache_key = $row['id_product'].'_'.$row['id_product_attribute'].'_quantity';
if (!Cache::isStored($cache_key))
Cache::store(
$cache_key,
StockAvailable::getQuantityAvailableByProduct($row['id_product'], $row['id_product_attribute'])
);
$res[$key]['quantity'] = Cache::retrieve($cache_key);
}
return $res;
} }
/** /**
@@ -1657,18 +1674,35 @@ class ProductCore extends ObjectModel
{ {
if (!Combination::isFeatureActive()) if (!Combination::isFeatureActive())
return array(); return array();
$sql = 'SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name, $sql = 'SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name,
a.`id_attribute`, pa.`unit_price_impact`, IFNULL(stock.quantity, 0) as quantity a.`id_attribute`, pa.`unit_price_impact`
FROM `'._DB_PREFIX_.'product_attribute` pa FROM `'._DB_PREFIX_.'product_attribute` pa
LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute`
LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.')
'.Product::sqlStock('pa', 'pa').'
WHERE pa.`id_product` = '.(int)$this->id.' WHERE pa.`id_product` = '.(int)$this->id.'
ORDER BY pa.`id_product_attribute`'; ORDER BY pa.`id_product_attribute`';
return Db::getInstance()->executeS($sql);
$res = Db::getInstance()->executeS($sql);
//Get quantity of each variations
foreach ($res as $key => $row)
{
$cache_key = $row['id_product'].'_'.$row['id_product_attribute'].'_quantity';
if (!Cache::isStored($cache_key))
Cache::store(
$cache_key,
StockAvailable::getQuantityAvailableByProduct($row['id_product'], $row['id_product_attribute'])
);
$res[$key]['quantity'] = Cache::retrieve($cache_key);
}
return $res;
} }
/** /**
@@ -1683,18 +1717,34 @@ class ProductCore extends ObjectModel
if (!Combination::isFeatureActive()) if (!Combination::isFeatureActive())
return array(); return array();
$sql = 'SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name, $sql = 'SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name,
a.`id_attribute`, pa.`unit_price_impact`, IFNULL(stock.quantity, 0) as quantity a.`id_attribute`, pa.`unit_price_impact`
FROM `'._DB_PREFIX_.'product_attribute` pa FROM `'._DB_PREFIX_.'product_attribute` pa
LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute`
LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.')
'.Product::sqlStock('pa', 'pa').'
WHERE pa.`id_product` = '.(int)$this->id.' WHERE pa.`id_product` = '.(int)$this->id.'
AND pa.`id_product_attribute` = '.(int)$id_product_attribute.' AND pa.`id_product_attribute` = '.(int)$id_product_attribute.'
ORDER BY pa.`id_product_attribute`'; ORDER BY pa.`id_product_attribute`';
return Db::getInstance()->executeS($sql);
$res = Db::getInstance()->executeS($sql);
//Get quantity of each variations
foreach ($res as $key => $row)
{
$cache_key = $row['id_product'].'_'.$row['id_product_attribute'].'_quantity';
if (!Cache::isStored($cache_key))
Cache::store(
$cache_key,
StockAvailable::getQuantityAvailableByProduct($row['id_product'], $row['id_product_attribute'])
);
$res[$key]['quantity'] = Cache::retrieve($cache_key);
}
return $res;
} }
public function getCombinationImages($id_lang) public function getCombinationImages($id_lang)
+12 -4
View File
@@ -294,12 +294,20 @@ class SupplierCore extends ObjectModel
public function getProductsLite($id_lang) public function getProductsLite($id_lang)
{ {
return Db::getInstance()->executeS(' $sql = '
SELECT p.`id_product`, pl.`name` SELECT p.`id_product`, pl.`name`
FROM `'._DB_PREFIX_.'product` p FROM `'._DB_PREFIX_.'product` p
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (
WHERE p.`id_supplier` = '.(int)$this->id p.`id_product` = pl.`id_product`
); AND pl.`id_lang` = '.(int)$id_lang.'
)
INNER JOIN `'._DB_PREFIX_.'product_supplier` ps ON (
ps.`id_product` = p.`id_product`
AND ps.`id_supplier` = '.(int)$this->id.'
)
GROUP BY p.`id_product`';
return Db::getInstance()->executeS($sql);
} }
/* /*
+3 -3
View File
@@ -826,13 +826,13 @@ class ShopCore extends ObjectModel
if ($tables_import && !isset($tables_import[$table_name])) if ($tables_import && !isset($tables_import[$table_name]))
continue; continue;
// Special case for stock if current shop is in a share stock group // Special case for stock_available if current shop is in a share stock group
/*if ($table_name == 'stock') if ($table_name == 'stock_available')
{ {
$group = new GroupShop($this->id_group_shop); $group = new GroupShop($this->id_group_shop);
if ($group->share_stock && $group->haveShops()) if ($group->share_stock && $group->haveShops())
continue; continue;
}*/ }
$id = 'id_'.$row['type']; $id = 'id_'.$row['type'];
if ($row['type'] == 'fk_shop') if ($row['type'] == 'fk_shop')
+11 -6
View File
@@ -282,7 +282,7 @@ class StockAvailableCore extends ObjectModel
$id_product_attribute = 0; $id_product_attribute = 0;
$query = new DbQuery(); $query = new DbQuery();
$query->select('quantity'); $query->select('SUM(quantity)');
$query->from('stock_available'); $query->from('stock_available');
// if null, it's a product without attributes // if null, it's a product without attributes
@@ -468,12 +468,17 @@ class StockAvailableCore extends ObjectModel
{ {
if ($group_shop->share_stock) if ($group_shop->share_stock)
{ {
$id_shops_list = implode(', ', Shop::getIdShopsByIdGroupShop($group_shop->id)); $shop_list = Shop::getIdShopsByIdGroupShop($group_shop->id);
return Db::getInstance()->execute(' if (count($shop_list) > 0)
DELETE FROM '._DB_PREFIX_.'stock_available {
WHERE id_shop IN ('.$id_shops_list.')' $id_shops_list = implode(', ', $shop_list);
);
return Db::getInstance()->execute('
DELETE FROM '._DB_PREFIX_.'stock_available
WHERE id_shop IN ('.$id_shops_list.')'
);
}
} }
else else
{ {
+25 -24
View File
@@ -176,7 +176,7 @@ class AdminProductsControllerCore extends AdminController
$object->on_sale = Tools::isSubmit('on_sale'); $object->on_sale = Tools::isSubmit('on_sale');
$object->online_only = Tools::isSubmit('online_only'); $object->online_only = Tools::isSubmit('online_only');
} }
public function getList($id_lang, $orderBy = null, $orderWay = null, $start = 0, $limit = null, $id_lang_shop = null) public function getList($id_lang, $orderBy = null, $orderWay = null, $start = 0, $limit = null, $id_lang_shop = null)
{ {
$orderByPriceFinal = (empty($orderBy) ? ($this->context->cookie->__get($this->table.'Orderby') ? $this->context->cookie->__get($this->table.'Orderby') : 'id_'.$this->table) : $orderBy); $orderByPriceFinal = (empty($orderBy) ? ($this->context->cookie->__get($this->table.'Orderby') ? $this->context->cookie->__get($this->table.'Orderby') : 'id_'.$this->table) : $orderBy);
@@ -1898,7 +1898,7 @@ class AdminProductsControllerCore extends AdminController
'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&id_product='.$product->id, 'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&id_product='.$product->id,
'desc' => $this->l('Create'), 'desc' => $this->l('Create'),
); );
$this->toolbar_btn['newCombinaison'] = array( $this->toolbar_btn['newCombinaison'] = array(
'short' => 'Add a new combination', 'short' => 'Add a new combination',
'desc' => $this->l('Add a new combination'), 'desc' => $this->l('Add a new combination'),
@@ -1920,7 +1920,7 @@ class AdminProductsControllerCore extends AdminController
'desc' => $this->l('Save and stay'), 'desc' => $this->l('Save and stay'),
); );
} }
} }
parent::initToolbar(); parent::initToolbar();
$this->context->smarty->assign('toolbar_fix', 1); $this->context->smarty->assign('toolbar_fix', 1);
@@ -2125,6 +2125,7 @@ class AdminProductsControllerCore extends AdminController
0 0
) )
); );
$price = Tools::ps_round($price, 6);
$id_currency = (int)Tools::getValue( $id_currency = (int)Tools::getValue(
'product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, 'product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier,
@@ -3093,7 +3094,7 @@ class AdminProductsControllerCore extends AdminController
'ean13' => array('title' => $this->l('EAN13'), 'align' => 'center', 'width' => 70), 'ean13' => array('title' => $this->l('EAN13'), 'align' => 'center', 'width' => 70),
'upc' => array('title' => $this->l('UPC'), 'align' => 'center', 'width' => 70) 'upc' => array('title' => $this->l('UPC'), 'align' => 'center', 'width' => 70)
); );
if ($id_product_download && !empty($product_download->display_filename)) if ($id_product_download && !empty($product_download->display_filename))
{ {
$this->fieldsDisplay['Filename'] = array('title' => $this->l('Filename'), 'align' => 'center', 'width' => 70); $this->fieldsDisplay['Filename'] = array('title' => $this->l('Filename'), 'align' => 'center', 'width' => 70);
@@ -3137,7 +3138,7 @@ class AdminProductsControllerCore extends AdminController
$groups[$combinaison['id_attribute_group']] = $combinaison['group_name']; $groups[$combinaison['id_attribute_group']] = $combinaison['group_name'];
} }
} }
$irow = 0; $irow = 0;
if (isset($combArray)) if (isset($combArray))
{ {
@@ -3145,10 +3146,10 @@ class AdminProductsControllerCore extends AdminController
{ {
$list = ''; $list = '';
$jsList = ''; $jsList = '';
/* In order to keep the same attributes order */ /* In order to keep the same attributes order */
asort($product_attribute['attributes']); asort($product_attribute['attributes']);
foreach ($product_attribute['attributes'] as $attribute) foreach ($product_attribute['attributes'] as $attribute)
{ {
$list .= addslashes(htmlspecialchars($attribute[0])).' - '.addslashes(htmlspecialchars($attribute[1])).', '; $list .= addslashes(htmlspecialchars($attribute[0])).' - '.addslashes(htmlspecialchars($attribute[1])).', ';
@@ -3168,12 +3169,12 @@ class AdminProductsControllerCore extends AdminController
$id_product_download = $product->productDownload->getIdFromIdAttribute((int) $product->id, (int) $id_product_attribute); $id_product_download = $product->productDownload->getIdFromIdAttribute((int) $product->id, (int) $id_product_attribute);
if ($id_product_download) if ($id_product_download)
$product->productDownload = new ProductDownload($id_product_download); $product->productDownload = new ProductDownload($id_product_download);
$available_date_attribute = substr($product->productDownload->date_expiration, 0, -9); $available_date_attribute = substr($product->productDownload->date_expiration, 0, -9);
if ($available_date_attribute == '0000-00-00') if ($available_date_attribute == '0000-00-00')
$available_date_attribute = ''; $available_date_attribute = '';
if ($id_product_download && !empty($product->productDownload->display_filename)) if ($id_product_download && !empty($product->productDownload->display_filename))
{ {
if ($product->productDownload->is_shareable == 1) if ($product->productDownload->is_shareable == 1)
@@ -3185,9 +3186,9 @@ class AdminProductsControllerCore extends AdminController
$combArray[$id_product_attribute]['nb_downloadable'] = $product->productDownload->nb_downloadable; $combArray[$id_product_attribute]['nb_downloadable'] = $product->productDownload->nb_downloadable;
$combArray[$id_product_attribute]['is_shareable'] = $is_shareable; $combArray[$id_product_attribute]['is_shareable'] = $is_shareable;
} }
$exists_file = realpath(_PS_DOWNLOAD_DIR_).'/'.$product->productDownload->filename; $exists_file = realpath(_PS_DOWNLOAD_DIR_).'/'.$product->productDownload->filename;
if ($product->productDownload->id && file_exists($exists_file)) if ($product->productDownload->id && file_exists($exists_file))
$filename = $product->productDownload->filename; $filename = $product->productDownload->filename;
else else
@@ -3289,10 +3290,10 @@ class AdminProductsControllerCore extends AdminController
{ {
$list = ''; $list = '';
$jsList = ''; $jsList = '';
/* In order to keep the same attributes order */ /* In order to keep the same attributes order */
asort($product_attribute['attributes']); asort($product_attribute['attributes']);
foreach ($product_attribute['attributes'] as $attribute) foreach ($product_attribute['attributes'] as $attribute)
{ {
$list .= addslashes(htmlspecialchars($attribute[0])).' - '.addslashes(htmlspecialchars($attribute[1])).', '; $list .= addslashes(htmlspecialchars($attribute[0])).' - '.addslashes(htmlspecialchars($attribute[1])).', ';
@@ -3302,21 +3303,21 @@ class AdminProductsControllerCore extends AdminController
$jsList = rtrim($jsList, ', '); $jsList = rtrim($jsList, ', ');
$attrImage = $product_attribute['id_image'] ? new Image($product_attribute['id_image']) : false; $attrImage = $product_attribute['id_image'] ? new Image($product_attribute['id_image']) : false;
$available_date = ($product_attribute['available_date'] != 0) ? date('Y-m-d', strtotime($product_attribute['available_date'])) : '0000-00-00'; $available_date = ($product_attribute['available_date'] != 0) ? date('Y-m-d', strtotime($product_attribute['available_date'])) : '0000-00-00';
$id_product_download = $product->productDownload->getIdFromIdAttribute((int) $product->id, (int) $id_product_attribute); $id_product_download = $product->productDownload->getIdFromIdAttribute((int) $product->id, (int) $id_product_attribute);
if ($id_product_download) if ($id_product_download)
$product->productDownload = new ProductDownload($id_product_download); $product->productDownload = new ProductDownload($id_product_download);
$available_date_attribute = substr($product->productDownload->date_expiration, 0, -9); $available_date_attribute = substr($product->productDownload->date_expiration, 0, -9);
if ($available_date_attribute == '0000-00-00') if ($available_date_attribute == '0000-00-00')
$available_date_attribute = ''; $available_date_attribute = '';
if ($product->productDownload->is_shareable == 1) if ($product->productDownload->is_shareable == 1)
$is_shareable = $this->l('Yes'); $is_shareable = $this->l('Yes');
else else
$is_shareable = $this->l('No'); $is_shareable = $this->l('No');
$content .= ' $content .= '
<tr'.($irow++ % 2 ? ' class="alt_row"' : '').($product_attribute['default_on'] ? ' style="background-color:#D1EAEF"' : '').'> <tr'.($irow++ % 2 ? ' class="alt_row"' : '').($product_attribute['default_on'] ? ' style="background-color:#D1EAEF"' : '').'>
<td>'.stripslashes($list).'</td> <td>'.stripslashes($list).'</td>
@@ -3325,7 +3326,7 @@ class AdminProductsControllerCore extends AdminController
<td class="right">'.$product_attribute['reference'].'</td> <td class="right">'.$product_attribute['reference'].'</td>
<td class="right">'.$product_attribute['ean13'].'</td> <td class="right">'.$product_attribute['ean13'].'</td>
<td class="right">'.$product_attribute['upc'].'</td>'; <td class="right">'.$product_attribute['upc'].'</td>';
if ($id_product_download && !empty($product->productDownload->display_filename)) if ($id_product_download && !empty($product->productDownload->display_filename))
{ {
$content .= '<td class="right">'.$product->productDownload->getHtmlLink(false, true).'</td> $content .= '<td class="right">'.$product->productDownload->getHtmlLink(false, true).'</td>
@@ -3333,9 +3334,9 @@ class AdminProductsControllerCore extends AdminController
<td class="center">'.$product->productDownload->nb_downloadable.'</td> <td class="center">'.$product->productDownload->nb_downloadable.'</td>
<td class="right">'.$is_shareable.'</td>'; <td class="right">'.$is_shareable.'</td>';
} }
$exists_file = realpath(_PS_DOWNLOAD_DIR_).'/'.$product->productDownload->filename; $exists_file = realpath(_PS_DOWNLOAD_DIR_).'/'.$product->productDownload->filename;
if ($product->productDownload->id && file_exists($exists_file)) if ($product->productDownload->id && file_exists($exists_file))
$filename = $product->productDownload->filename; $filename = $product->productDownload->filename;
else else
@@ -3369,12 +3370,12 @@ class AdminProductsControllerCore extends AdminController
<script type="text/javascript"> <script type="text/javascript">
var impact = getE(\'attribute_price_impact\'); var impact = getE(\'attribute_price_impact\');
var impact2 = getE(\'attribute_weight_impact\'); var impact2 = getE(\'attribute_weight_impact\');
var s_attr_group = $(\'#span_new_group\'); var s_attr_group = $(\'#span_new_group\');
var s_attr_name = $(\'#span_new_attr\'); var s_attr_name = $(\'#span_new_attr\');
var s_impact = $(\'#span_impact\'); var s_impact = $(\'#span_impact\');
var s_impact2 = $(\'#span_weight_impact\'); var s_impact2 = $(\'#span_weight_impact\');
init_elems(); init_elems();
</script>'; </script>';
return $content; return $content;
+1 -1
View File
@@ -284,7 +284,7 @@ class AdminShopControllerCore extends AdminController
'product' => $this->l('Products'), 'product' => $this->l('Products'),
'product_lang' => $this->l('Products lang'), 'product_lang' => $this->l('Products lang'),
'scene' => $this->l('Scenes'), 'scene' => $this->l('Scenes'),
'stock_available' => $this->l('Stock'), 'stock_available' => $this->l('Available quantities for sale'),
'store' => $this->l('Stores'), 'store' => $this->l('Stores'),
'warehouse' => $this->l('Warehouse'), 'warehouse' => $this->l('Warehouse'),
); );
+1 -1
View File
@@ -491,7 +491,7 @@ class MailAlerts extends Module
) )
die (Tools::displayError()); die (Tools::displayError());
$sql = 'SELECT ma.`id_product`, stock.quantity AS product_quantity, pl.`name`, ma.`id_product_attribute` $sql = 'SELECT ma.`id_product`, IFNULL(stock.quantity, 0) as product_quantity, pl.`name`, ma.`id_product_attribute`
FROM `'._DB_PREFIX_.'mailalert_customer_oos` ma FROM `'._DB_PREFIX_.'mailalert_customer_oos` ma
JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ma.`id_product` JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ma.`id_product`
JOIN `'._DB_PREFIX_.'product_lang` pl ON pl.`id_product` = ma.`id_product` AND pl.`id_lang` = '.$id_lang.Context::getContext()->shop->addSqlRestrictionOnLang('pl').' JOIN `'._DB_PREFIX_.'product_lang` pl ON pl.`id_product` = ma.`id_product` AND pl.`id_lang` = '.$id_lang.Context::getContext()->shop->addSqlRestrictionOnLang('pl').'