-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathkporderlistcarrier.php
More file actions
103 lines (87 loc) · 3.24 KB
/
kporderlistcarrier.php
File metadata and controls
103 lines (87 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
use PrestaShop\PrestaShop\Core\Grid\Column\Type\DataColumn;
use PrestaShop\PrestaShop\Core\Grid\Filter\Filter;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class KpOrderListCarrier extends Module
{
/** @var array */
public const MODULE_HOOKS = [
'actionOrderGridDefinitionModifier',
'actionOrderGridQueryBuilderModifier',
];
/** @var string */
public const CARRIER_FIELD_NAME = 'carrier_name';
public function __construct()
{
$this->name = 'kporderlistcarrier';
$this->author = 'Krystian Podemski';
$this->version = '1.0.0';
$this->ps_versions_compliancy = ['min' => '1.7.7.0', 'max' => _PS_VERSION_];
parent::__construct();
$this->displayName = $this->l('Carrier on the orders list');
$this->description = $this->l('Displays the name of the carrier on your orders list in back office');
}
/**
* Installer.
*
* @return bool
*/
public function install()
{
return parent::install()
&& $this->registerHook(static::MODULE_HOOKS);
}
/**
* Modifies Order list Grid.
*
* @return void
*/
public function hookActionOrderGridDefinitionModifier(array $params)
{
/** @var \PrestaShop\PrestaShop\Core\Grid\Definition\GridDefinitionInterface $definition */
$definition = $params['definition'];
$definition
->getColumns()
->addAfter(
'payment',
(new DataColumn(static::CARRIER_FIELD_NAME))
->setName($this->l('Carrier name'))
->setOptions([
'field' => static::CARRIER_FIELD_NAME,
])
)
;
$filters = $definition->getFilters();
$filters->add((new Filter(static::CARRIER_FIELD_NAME, TextType::class))
->setTypeOptions([
'required' => false,
])
->setAssociatedColumn(static::CARRIER_FIELD_NAME)
);
}
/**
* Handle order list queries and filters.
*
* @return void
*/
public function hookActionOrderGridQueryBuilderModifier(array $params)
{
/** @var \Doctrine\DBAL\Query\QueryBuilder $queryBuilder */
$queryBuilder = $params['search_query_builder'];
/** @var \PrestaShop\PrestaShop\Core\Grid\Search\SearchCriteriaInterface */
$searchCriteria = $params['search_criteria'];
$queryBuilder->addSelect(
'IF(carrier.name = "0", "'.Configuration::get('PS_SHOP_NAME').'", carrier.name) carrier_name'
);
$queryBuilder->leftJoin('o', _DB_PREFIX_.'carrier', 'carrier', 'o.id_carrier = carrier.id_carrier');
if (static::CARRIER_FIELD_NAME === $searchCriteria->getOrderBy()) {
$queryBuilder->orderBy(static::CARRIER_FIELD_NAME, $searchCriteria->getOrderWay());
}
foreach ($searchCriteria->getFilters() as $filterName => $filterValue) {
if (static::CARRIER_FIELD_NAME === $filterName) {
$queryBuilder->having(static::CARRIER_FIELD_NAME.' LIKE :'.static::CARRIER_FIELD_NAME);
$queryBuilder->setParameter(static::CARRIER_FIELD_NAME, '%'.$filterValue.'%');
}
}
}
}