Files
interblue.pl/modules/addcolumninlist/addcolumninlist.php
2025-05-30 09:08:26 +02:00

147 lines
4.1 KiB
PHP

<?php
/*
*
* @author FuenRob <fuenrob@gmail.com>
* @copyright 2018 FuenRob
* International Registered Trademark & Property of FuenRob
*
*/
if (!defined('_PS_VERSION_'))
{
exit;
}
class AddColumnInList extends Module
{
public function __construct()
{
$this->name = 'addcolumninlist';
$this->tab = 'administration';
$this->version = '2.0.1';
$this->author = 'Dominik Wójcicki';
$this->need_instance = 0;
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Add column in list product');
$this->description = $this->l('Dodatkowe filtorwanie produktów w Back Office');
$this->confirmUninstall = $this->l('Czy na pewno odinstalować moduł?');
}
public function install()
{
if (
!parent::install()
|| !$this->registerHook('displayAdminCatalogTwigProductFilter')
|| !$this->registerHook('actionAdminProductsListingFieldsModifier')
|| !$this->registerHook('ProductsListingFieldsModifier')
|| !$this->registerHook('ManufacturerPagination')
)
{
return false;
}
return true;
}
public function uninstall()
{
return parent::uninstall();
}
public function hookManufacturerPagination()
{
return Tools::getValue('filter_column_manufacturer', '');
}
public function hookDisplayAdminCatalogTwigProductFilter($params)
{
$manufacturers = Manufacturer::getManufacturers();
$this->context->smarty->assign([
'filter_column_manufacturer' => Tools::getValue('filter_column_manufacturer', ''),
'filter_column_ean13' => Tools::getValue('filter_column_ean13', ''),
'manufacturers' => $manufacturers,
]);
return $this->display(__FILE__, 'views/templates/hook/displayAdminCatalogTwigProductFilter.tpl');
return $this->render('@PrestaShopBundle/Admin/Common/pagination.html.twig', [
'filter_column_manufacturer' => Tools::getValue('filter_column_manufacturer', ''),
'filter_column_ean13' => Tools::getValue('filter_column_ean13', ''),
'manufacturers' => $manufacturers,
]);
}
public function hookActionAdminProductsListingFieldsModifier($params)
{
// EAN13
$params['sql_select']['ean13'] = [
'table' => 'p',
'field' => 'ean13',
'filtering' => \PrestaShop\PrestaShop\Adapter\Admin\AbstractAdminQueryBuilder::FILTERING_LIKE_BOTH
];
$ean13_filter = Tools::getValue('filter_column_ean13', false);
if ($ean13_filter && $ean13_filter != '')
{
$params['sql_where'][] .= "p.ean13 = " . $ean13_filter;
}
// Cena zakupu
$params['sql_select']['wholesale_price'] = [
'table' => 'p',
'field' => 'wholesale_price',
'filtering' => \PrestaShop\PrestaShop\Adapter\Admin\AbstractAdminQueryBuilder::FILTERING_LIKE_BOTH
];
$wholesale_price_filter = Tools::getValue('filter_column_name_wholesale_price', false);
if ($wholesale_price_filter && $wholesale_price_filter != '')
{
$params['sql_where'][] .= " p.wholesale_price = " . $wholesale_price_filter;
}
// Marża
$params['sql_select']['trade_margin'] = [
'table' => 'p',
'field' => 'trade_margin',
'filtering' => \PrestaShop\PrestaShop\Adapter\Admin\AbstractAdminQueryBuilder::FILTERING_LIKE_BOTH
];
$trade_margin_filter = Tools::getValue('filter_column_trade_margin', false);
if ($trade_margin_filter && $trade_margin_filter != '')
{
$params['sql_where'][] .= "p.trade_margin = " . $trade_margin_filter;
}
// Manufacturer
$params['sql_select']['manufacturer'] = [
"table" => "m",
"field" => "name",
"filtering" => \PrestaShop\PrestaShop\Adapter\Admin\AbstractAdminQueryBuilder::FILTERING_LIKE_BOTH
];
$params['sql_table']['m'] = [
"table" => "manufacturer",
"join" => "LEFT JOIN",
'on' => "p.`id_manufacturer` = m.`id_manufacturer`"
];
$manufacturer_filter = Tools::getValue('filter_column_manufacturer', false);
if ($manufacturer_filter && $manufacturer_filter != '')
{
$params['sql_where'][] .= " p.id_manufacturer = " . $manufacturer_filter;
}
}
}