// AdminController and stock management : some debug and updates
This commit is contained in:
1 parent
e7cf665a7c
commit
2640bb1094
5 files changed
+57
-122
No files matched your search
@@ -77,13 +77,9 @@
|
|||||||
<div class="translatable">
|
<div class="translatable">
|
||||||
{foreach $languages as $language}
|
{foreach $languages as $language}
|
||||||
<div class="lang_{$language.id_lang}" style="display:{if $language.id_lang == $defaultFormLanguage}block{else}none{/if}; float: left;">
|
<div class="lang_{$language.id_lang}" style="display:{if $language.id_lang == $defaultFormLanguage}block{else}none{/if}; float: left;">
|
||||||
|
|
||||||
{if $input.type == 'tags'}
|
{if $input.type == 'tags'}
|
||||||
{literal}
|
{literal}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$().ready(function () {
|
$().ready(function () {
|
||||||
var input_id = '{/literal}{if isset($input.id)}{$input.id}_{$language.id_lang}{else}{$input.name}_{$language.id_lang}{/if}{literal}';
|
var input_id = '{/literal}{if isset($input.id)}{$input.id}_{$language.id_lang}{else}{$input.name}_{$language.id_lang}{/if}{literal}';
|
||||||
$('#'+input_id).tagify({addTagPrompt: '{/literal}{l s='add tag'}{literal}'});
|
$('#'+input_id).tagify({addTagPrompt: '{/literal}{l s='add tag'}{literal}'});
|
||||||
@@ -119,7 +115,6 @@
|
|||||||
$({/literal}'#{$table}{literal}_form').submit( function() {
|
$({/literal}'#{$table}{literal}_form').submit( function() {
|
||||||
$(this).find('#'+input_id).val($('#'+input_id).tagify('serialize'));
|
$(this).find('#'+input_id).val($('#'+input_id).tagify('serialize'));
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{/literal}
|
{/literal}
|
||||||
@@ -349,15 +344,15 @@
|
|||||||
{block name="after"}{/block}
|
{block name="after"}{/block}
|
||||||
{if isset($tinymce) && $tinymce}
|
{if isset($tinymce) && $tinymce}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
var iso = '{$iso}';
|
var iso = '{$iso}';
|
||||||
var pathCSS = '{$smarty.const._THEME_CSS_DIR_}';
|
var pathCSS = '{$smarty.const._THEME_CSS_DIR_}';
|
||||||
var ad = '{$ad}';
|
var ad = '{$ad}';
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
tinySetup();
|
tinySetup();
|
||||||
|
|
||||||
{block name="autoload_tinyMCE"}
|
{block name="autoload_tinyMCE"}
|
||||||
// change each by click to load only on click
|
// change each by click to load only on click
|
||||||
$(".autoload_rte").each(function(e){
|
$(".autoload_rte").each(function(e){
|
||||||
@@ -368,7 +363,7 @@
|
|||||||
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull|cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,undo,redo",
|
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull|cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,undo,redo",
|
||||||
theme_advanced_buttons2 : "link,unlink,anchor,image,cleanup,code,|,forecolor,backcolor,|,hr,removeformat,visualaid,|,charmap,media,|,ltr,rtl,|,fullscreen",
|
theme_advanced_buttons2 : "link,unlink,anchor,image,cleanup,code,|,forecolor,backcolor,|,hr,removeformat,visualaid,|,charmap,media,|,ltr,rtl,|,fullscreen",
|
||||||
theme_advanced_buttons3 : "",
|
theme_advanced_buttons3 : "",
|
||||||
theme_advanced_buttons4 : "",
|
theme_advanced_buttons4 : "",
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
{/block}
|
{/block}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
content.append($('<td class="empty"></td>'));
|
content.append($('<td class="empty"></td>'));
|
||||||
$('#details_{$id}').parent().parent().after(content);
|
$('#details_{$id}').parent().parent().after(content.show('slow'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -98,7 +98,7 @@ $(document).ready(function() {
|
|||||||
else
|
else
|
||||||
var content = $('<tr class="details_{$id}"></tr>');
|
var content = $('<tr class="details_{$id}"></tr>');
|
||||||
content.append($('<td style="border:none!important;">'+data.data+'</td>').attr('colspan', $('#details_{$id}').parent().parent().find('td').length));
|
content.append($('<td style="border:none!important;">'+data.data+'</td>').attr('colspan', $('#details_{$id}').parent().parent().find('td').length));
|
||||||
$('#details_{$id}').parent().parent().after(content);
|
$('#details_{$id}').parent().parent().after(content.show('slow'));
|
||||||
}
|
}
|
||||||
this.dataMaped = true;
|
this.dataMaped = true;
|
||||||
this.opened = false;
|
this.opened = false;
|
||||||
@@ -110,13 +110,13 @@ $(document).ready(function() {
|
|||||||
if (this.opened)
|
if (this.opened)
|
||||||
{
|
{
|
||||||
$(this).find('img').attr('src', '../img/admin/more.png');
|
$(this).find('img').attr('src', '../img/admin/more.png');
|
||||||
$(this).parent().parent().parent().find('.details_{$id}').hide();
|
$(this).parent().parent().parent().find('.details_{$id}').hide('slow');
|
||||||
this.opened = false
|
this.opened = false
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$(this).find('img').attr('src', '../img/admin/less.png');
|
$(this).find('img').attr('src', '../img/admin/less.png');
|
||||||
$(this).parent().parent().parent().find('.details_{$id}').show();
|
$(this).parent().parent().parent().find('.details_{$id}').show('slow');
|
||||||
this.opened = true;
|
this.opened = true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -351,8 +351,8 @@ class AdminControllerCore extends Controller
|
|||||||
$country = Tools::getValue('country');
|
$country = Tools::getValue('country');
|
||||||
$version = Tools::getValue('version');
|
$version = Tools::getValue('version');
|
||||||
|
|
||||||
if (isset($item) AND isset($isoUser) AND isset($country))
|
if (isset($item) && isset($isoUser) && isset($country))
|
||||||
$this->content = HelpAccess::getHelp($item, $isoUser, $country, $version);
|
$this->content = HelpAccess::getHelp($item, $isoUser, $country, $version);
|
||||||
else
|
else
|
||||||
$this->content = 'none';
|
$this->content = 'none';
|
||||||
$this->display = 'content';
|
$this->display = 'content';
|
||||||
@@ -501,7 +501,7 @@ class AdminControllerCore extends Controller
|
|||||||
' <b>'.$this->table.'</b><br />'.
|
' <b>'.$this->table.'</b><br />'.
|
||||||
Tools::displayError('You cannot delete all of the items.');
|
Tools::displayError('You cannot delete all of the items.');
|
||||||
}
|
}
|
||||||
else if (array_key_exists('delete', $this->list_skip_actions) AND in_array($object->id, $this->list_skip_actions['delete'])) //check if some ids are in list_skip_actions and forbid deletion
|
else if (array_key_exists('delete', $this->list_skip_actions) && in_array($object->id, $this->list_skip_actions['delete'])) //check if some ids are in list_skip_actions and forbid deletion
|
||||||
$this->_errors[] = Tools::displayError('You cannot delete this items.');
|
$this->_errors[] = Tools::displayError('You cannot delete this items.');
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -544,6 +544,7 @@ class AdminControllerCore extends Controller
|
|||||||
if (!count($this->_errors))
|
if (!count($this->_errors))
|
||||||
{
|
{
|
||||||
$id = (int)Tools::getValue($this->identifier);
|
$id = (int)Tools::getValue($this->identifier);
|
||||||
|
|
||||||
/* Object update */
|
/* Object update */
|
||||||
if (isset($id) && !empty($id))
|
if (isset($id) && !empty($id))
|
||||||
{
|
{
|
||||||
@@ -643,7 +644,8 @@ class AdminControllerCore extends Controller
|
|||||||
if (Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent'))
|
if (Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent'))
|
||||||
$this->redirect_after = self::$currentIndex.'&'.$this->identifier.'='.$parent_id.'&conf=3&token='.$token;
|
$this->redirect_after = self::$currentIndex.'&'.$this->identifier.'='.$parent_id.'&conf=3&token='.$token;
|
||||||
// Default behavior (save and back)
|
// Default behavior (save and back)
|
||||||
$this->redirect_after = self::$currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=3&token='.$token;
|
if (empty($this->redirect_after))
|
||||||
|
$this->redirect_after = self::$currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=3&token='.$token;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1002,7 +1004,7 @@ class AdminControllerCore extends Controller
|
|||||||
|
|
||||||
public function displayAjax()
|
public function displayAjax()
|
||||||
{
|
{
|
||||||
if($this->json)
|
if ($this->json)
|
||||||
{
|
{
|
||||||
$this->context->smarty->assign(array(
|
$this->context->smarty->assign(array(
|
||||||
'json' => true,
|
'json' => true,
|
||||||
@@ -1638,7 +1640,7 @@ class AdminControllerCore extends Controller
|
|||||||
unset($parse_query['setShopContext'], $parse_query['conf']);
|
unset($parse_query['setShopContext'], $parse_query['conf']);
|
||||||
$this->redirect_after = $url['path'].'?'.http_build_query($parse_query);
|
$this->redirect_after = $url['path'].'?'.http_build_query($parse_query);
|
||||||
}
|
}
|
||||||
elseif (!Shop::isFeatureActive())
|
else if (!Shop::isFeatureActive())
|
||||||
$this->context->cookie->shopContext = 's-1';
|
$this->context->cookie->shopContext = 's-1';
|
||||||
$shop_id = '';
|
$shop_id = '';
|
||||||
if ($this->context->cookie->shopContext)
|
if ($this->context->cookie->shopContext)
|
||||||
@@ -1647,9 +1649,9 @@ class AdminControllerCore extends Controller
|
|||||||
if (count($split) == 2 && $split[0] == 's')
|
if (count($split) == 2 && $split[0] == 's')
|
||||||
$shop_id = (int)$split[1];
|
$shop_id = (int)$split[1];
|
||||||
}
|
}
|
||||||
elseif ($this->context->employee->id_profile == _PS_ADMIN_PROFILE_)
|
else if ($this->context->employee->id_profile == _PS_ADMIN_PROFILE_)
|
||||||
$shop_id = '';
|
$shop_id = '';
|
||||||
elseif ($this->context->shop->getTotalShopsWhoExists() != Employee::getTotalEmployeeShopById((int)$this->context->employee->id))
|
else if ($this->context->shop->getTotalShopsWhoExists() != Employee::getTotalEmployeeShopById((int)$this->context->employee->id))
|
||||||
{
|
{
|
||||||
$shops = Employee::getEmployeeShopById((int)$this->context->employee->id);
|
$shops = Employee::getEmployeeShopById((int)$this->context->employee->id);
|
||||||
if (count($shops))
|
if (count($shops))
|
||||||
|
|||||||
@@ -1078,7 +1078,7 @@ class AdminSupplyOrdersControllerCore extends AdminController
|
|||||||
if (Tools::isSubmit('submitBulkUpdatesupply_order_detail') && !($this->tabAccess['edit'] === '1'))
|
if (Tools::isSubmit('submitBulkUpdatesupply_order_detail') && !($this->tabAccess['edit'] === '1'))
|
||||||
$this->_errors[] = Tools::displayError($this->l('You do not have the required permission to edit an order.'));
|
$this->_errors[] = Tools::displayError($this->l('You do not have the required permission to edit an order.'));
|
||||||
// Global checks when add / update a supply order
|
// Global checks when add / update a supply order
|
||||||
if (Tools::isSubmit('submitAddsupply_order'))
|
if (Tools::isSubmit('submitAddsupply_order') || Tools::isSubmit('submitAddsupply_orderAndStay'))
|
||||||
{
|
{
|
||||||
$this->action = 'save';
|
$this->action = 'save';
|
||||||
|
|
||||||
|
|||||||
@@ -63,76 +63,6 @@ class AdminTrackingController extends AdminController
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getObjects($type)
|
|
||||||
{
|
|
||||||
switch ($type)
|
|
||||||
{
|
|
||||||
case 'categories_empty':
|
|
||||||
$sql = '
|
|
||||||
SELECT id_category
|
|
||||||
FROM `'._DB_PREFIX_.'category`
|
|
||||||
WHERE id_category NOT IN (
|
|
||||||
SELECT DISTINCT(id_category)
|
|
||||||
FROM `'._DB_PREFIX_.'category_product`
|
|
||||||
)
|
|
||||||
';
|
|
||||||
break;
|
|
||||||
case 'products_disabled':
|
|
||||||
$sql = '
|
|
||||||
SELECT *
|
|
||||||
FROM `'._DB_PREFIX_.'product`
|
|
||||||
WHERE active = 0
|
|
||||||
';
|
|
||||||
$this->_list['message'] = $this->l('List of disabled products:');
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'products_nostock':
|
|
||||||
$sql = '
|
|
||||||
SELECT DISTINCT(id_product)
|
|
||||||
FROM `'._DB_PREFIX_.'product`
|
|
||||||
WHERE id_product IN (
|
|
||||||
SELECT id_product
|
|
||||||
FROM `'._DB_PREFIX_.'product`
|
|
||||||
WHERE id_product NOT IN (
|
|
||||||
SELECT DISTINCT(id_product)
|
|
||||||
FROM `'._DB_PREFIX_.'product_attribute`
|
|
||||||
)
|
|
||||||
AND quantity <= 0
|
|
||||||
)
|
|
||||||
';
|
|
||||||
$this->_list['message'] = $this->l('List of out of stock products without attributes:');
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'attributes_nostock':
|
|
||||||
$sql = 'SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name, a.`id_attribute`,
|
|
||||||
m.`name` AS manufacturer_name, pl.`name` AS name, p.`weight` AS product_weight, p.`active` AS active
|
|
||||||
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_.'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_lang` al
|
|
||||||
ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$this->context->language->id.')
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl
|
|
||||||
ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$this->context->language->id.')
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product` p
|
|
||||||
ON (p.`id_product` = pa.`id_product`)
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
|
|
||||||
ON (pl.`id_product` = p.`id_product` AND pl.`id_lang` = '.(int)$this->context->language->id.$this->context->shop->addSqlRestrictionOnLang('pl').')
|
|
||||||
'.Product::sqlStock('p', 'pa').'
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'manufacturer` m
|
|
||||||
ON (p.`id_manufacturer` = m.`id_manufacturer`)
|
|
||||||
WHERE stock.quantity <= 0
|
|
||||||
ORDER BY pa.`id_product_attribute`';
|
|
||||||
$this->_list['message'] = $this->l('List of out of stock products with attributes:');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Db::getInstance()->executeS($sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getCustomListCategoriesEmpty()
|
public function getCustomListCategoriesEmpty()
|
||||||
{
|
{
|
||||||
$this->clearListOptions();
|
$this->clearListOptions();
|
||||||
@@ -149,10 +79,10 @@ class AdminTrackingController extends AdminController
|
|||||||
$this->addRowAction('view');
|
$this->addRowAction('view');
|
||||||
|
|
||||||
$this->fieldsDisplay = (array(
|
$this->fieldsDisplay = (array(
|
||||||
'id_category' => array('title' => $this->l('ID')),
|
'id_category' => array('title' => $this->l('ID'), 'width' => 50),
|
||||||
'name' => array('title' => $this->l('Name')),
|
'name' => array('title' => $this->l('Name')),
|
||||||
'description' => array('title' => $this->l('Description')),
|
'description' => array('title' => $this->l('Description')),
|
||||||
'active' => array('title' => $this->l('Status'), 'type' => 'bool', 'active' => 'status')
|
'active' => array('title' => $this->l('Status'), 'type' => 'bool', 'active' => 'status', 'width' => 50)
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->_filter = ' AND a.id_category NOT IN (
|
$this->_filter = ' AND a.id_category NOT IN (
|
||||||
@@ -160,7 +90,6 @@ class AdminTrackingController extends AdminController
|
|||||||
FROM `'._DB_PREFIX_.'category_product` cp
|
FROM `'._DB_PREFIX_.'category_product` cp
|
||||||
)';
|
)';
|
||||||
|
|
||||||
$this->getObjects('categories_empty');
|
|
||||||
$this->tpl_list_vars = array('sub_title' => $this->l('List of empty categories:'));
|
$this->tpl_list_vars = array('sub_title' => $this->l('List of empty categories:'));
|
||||||
|
|
||||||
return parent::initList();
|
return parent::initList();
|
||||||
@@ -177,29 +106,29 @@ class AdminTrackingController extends AdminController
|
|||||||
self::$currentIndex = 'index.php?controller=AdminProducts';
|
self::$currentIndex = 'index.php?controller=AdminProducts';
|
||||||
$this->token = Tools::getAdminTokenLite('AdminProducts');
|
$this->token = Tools::getAdminTokenLite('AdminProducts');
|
||||||
$this->show_toolbar = false;
|
$this->show_toolbar = false;
|
||||||
|
|
||||||
|
$this->addRowAction('edit');
|
||||||
|
$this->addRowAction('delete');
|
||||||
|
|
||||||
$this->fieldsDisplay = array(
|
$this->fieldsDisplay = array(
|
||||||
'ID' => array('title' => $this->l('ID')),
|
'id_product' => array('title' => $this->l('ID'), 'width' => 50),
|
||||||
'manufacturer' => array('title' => $this->l('Manufacturer')),
|
'reference' => array('title' => $this->l('Reference'), 'width' => 150),
|
||||||
'reference' => array('title' => $this->l('Reference')),
|
|
||||||
'name' => array('title' => $this->l('Name')),
|
'name' => array('title' => $this->l('Name')),
|
||||||
'price' => array('title' => $this->l('Price')),
|
'active' => array('title' => $this->l('Status'), 'type' => 'bool', 'active' => 'status', 'width' => 50)
|
||||||
'tax' => array('title' => $this->l('Tax')),
|
|
||||||
'stock' => array('title' => $this->l('Stock')),
|
|
||||||
'weight' => array('title' => $this->l('Weight')),
|
|
||||||
'active' => array('title' => $this->l('Status'), 'type' => 'bool', 'active' => 'status')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->_filter = 'AND a.id_product IN (
|
$this->_filter = 'AND a.id_product IN (
|
||||||
SELECT id_product
|
SELECT p.id_product
|
||||||
FROM `'._DB_PREFIX_.'product`
|
FROM `'._DB_PREFIX_.'product` p
|
||||||
WHERE id_product IN (
|
'.Product::sqlStock('p').'
|
||||||
|
WHERE p.id_product IN (
|
||||||
SELECT DISTINCT(id_product)
|
SELECT DISTINCT(id_product)
|
||||||
FROM `'._DB_PREFIX_.'product_attribute`
|
FROM `'._DB_PREFIX_.'product_attribute`
|
||||||
)
|
)
|
||||||
AND quantity <= 0
|
AND stock.quantity <= 0
|
||||||
)';
|
)';
|
||||||
|
|
||||||
$this->tpl_list_vars = array('sub_title' => $this->l('List of out of stock products without attributes:'));
|
$this->tpl_list_vars = array('sub_title' => $this->l('List of products with attributes and without available quantities for sale:'));
|
||||||
|
|
||||||
return parent::initList();
|
return parent::initList();
|
||||||
}
|
}
|
||||||
@@ -216,29 +145,28 @@ class AdminTrackingController extends AdminController
|
|||||||
self::$currentIndex = 'index.php?controller=AdminProducts';
|
self::$currentIndex = 'index.php?controller=AdminProducts';
|
||||||
$this->token = Tools::getAdminTokenLite('AdminProducts');
|
$this->token = Tools::getAdminTokenLite('AdminProducts');
|
||||||
|
|
||||||
|
$this->addRowAction('edit');
|
||||||
|
$this->addRowAction('delete');
|
||||||
|
|
||||||
$this->fieldsDisplay = array(
|
$this->fieldsDisplay = array(
|
||||||
'ID' => array('title' => $this->l('ID')),
|
'id_product' => array('title' => $this->l('ID'), 'width' => 50),
|
||||||
'manufacturer' => array('title' => $this->l('Manufacturer')),
|
'reference' => array('title' => $this->l('Reference'), 'width' => 150),
|
||||||
'reference' => array('title' => $this->l('Reference')),
|
|
||||||
'name' => array('title' => $this->l('Name')),
|
'name' => array('title' => $this->l('Name')),
|
||||||
'price' => array('title' => $this->l('Price')),
|
'active' => array('title' => $this->l('Status'), 'type' => 'bool', 'active' => 'status', 'width' => 50)
|
||||||
'tax' => array('title' => $this->l('Tax')),
|
|
||||||
'stock' => array('title' => $this->l('Stock')),
|
|
||||||
'weight' => array('title' => $this->l('Weight')),
|
|
||||||
'active' => array('title' => $this->l('Status'), 'type' => 'bool', 'active' => 'status')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->_filter = 'AND a.id_product IN (
|
$this->_filter = 'AND a.id_product IN (
|
||||||
SELECT id_product
|
SELECT p.id_product
|
||||||
FROM `'._DB_PREFIX_.'product`
|
FROM `'._DB_PREFIX_.'product` p
|
||||||
WHERE id_product NOT IN (
|
'.Product::sqlStock('p').'
|
||||||
|
WHERE p.id_product NOT IN (
|
||||||
SELECT DISTINCT(id_product)
|
SELECT DISTINCT(id_product)
|
||||||
FROM `'._DB_PREFIX_.'product_attribute`
|
FROM `'._DB_PREFIX_.'product_attribute`
|
||||||
)
|
)
|
||||||
AND quantity <= 0
|
AND stock.quantity <= 0
|
||||||
)';
|
)';
|
||||||
|
|
||||||
$this->tpl_list_vars = array('sub_title' => $this->l('List of out of stock products with attributes:'));
|
$this->tpl_list_vars = array('sub_title' => $this->l('List of products without attributes and without available quantities for sale:'));
|
||||||
|
|
||||||
return parent::initList();
|
return parent::initList();
|
||||||
}
|
}
|
||||||
@@ -258,12 +186,22 @@ class AdminTrackingController extends AdminController
|
|||||||
self::$currentIndex = 'index.php?controller=AdminProducts';
|
self::$currentIndex = 'index.php?controller=AdminProducts';
|
||||||
$this->token = Tools::getAdminTokenLite('AdminProducts');
|
$this->token = Tools::getAdminTokenLite('AdminProducts');
|
||||||
|
|
||||||
|
$this->addRowAction('edit');
|
||||||
|
$this->addRowAction('delete');
|
||||||
|
|
||||||
|
$this->fieldsDisplay = array(
|
||||||
|
'id_product' => array('title' => $this->l('ID'), 'width' => 50),
|
||||||
|
'reference' => array('title' => $this->l('Reference'), 'width' => 150),
|
||||||
|
'name' => array('title' => $this->l('Name'))
|
||||||
|
);
|
||||||
|
|
||||||
return parent::initList();
|
return parent::initList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function clearListOptions()
|
public function clearListOptions()
|
||||||
{
|
{
|
||||||
$this->table = '';
|
$this->table = '';
|
||||||
|
$this->actions = array();
|
||||||
$this->lang = false;
|
$this->lang = false;
|
||||||
$this->identifier = '';
|
$this->identifier = '';
|
||||||
$this->_defaultOrderBy = '';
|
$this->_defaultOrderBy = '';
|
||||||
|
|||||||
Reference in new issue
Block a user