Current File : /var/www/vinorea/modules/ipexportimport/classes/export/EIAWarehousesExport.php |
<?php
/**
*
* NOTICE OF LICENSE
*
* @author SmartPresta <tehran.alishov@gmail.com>
* @copyright 2024 SmartPresta
* @license http://opensource.org/licenses/afl-3.0.php Commercial License!
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class EIAWarehousesExport extends EIAExport
{
protected $xmlMainTag = 'Warehouse';
protected $xmlMainTagPl = 'Warehouses';
public function __construct($module)
{
parent::__construct($module);
$this->entityNamePl = $module->l('Warehouses', 'EIAWarehousesExport');
}
protected function getDataFromDb()
{
if ($this->auto) {
$warehouses = pSQL(implode(',', $this->datatables['warehouses']['data']));
$warehousesType = $this->datatables['warehouses']['type'];
} else {
$warehouses = pSQL(Tools::getValue('warehouses_data'));
$warehousesType = Tools::getValue('warehouses_type');
}
$eIHelper = new EIAHelper($this->module);
$this->sql = '
SELECT SQL_CALC_FOUND_ROWS ';
if (in_array($this->fileType, ['xml'])) {
$fieldsInTree = $eIHelper->getFieldsInTree('warehouses');
foreach ($this->selectedColumns as $k => $col) {
$this->sql .= "
$k AS `{$fieldsInTree[$k]}`, ";
}
} else {
foreach ($this->selectedColumns as $k => $col) {
$this->sql .= "
$k `$col`, ";
}
}
$this->sql = rtrim($this->sql, ', ');
$this->sql .= '
FROM
' . _DB_PREFIX_ . 'warehouse warehouse
LEFT JOIN
' . _DB_PREFIX_ . 'warehouse_shop warehouse_shop ON warehouse.id_warehouse = warehouse_shop.id_warehouse
AND warehouse_shop.id_shop = ' . $this->shopId . '
LEFT JOIN
' . _DB_PREFIX_ . 'employee employee ON warehouse.id_employee = employee.id_employee
LEFT JOIN
' . _DB_PREFIX_ . 'currency currency ON warehouse.id_currency = currency.id_currency
LEFT JOIN
' . _DB_PREFIX_ . 'address address ON warehouse.id_address = address.id_address
LEFT JOIN
' . _DB_PREFIX_ . 'country_lang country_lang ON address.id_country = country_lang.id_country AND country_lang.id_lang = ' . $this->langId . '
LEFT JOIN
' . _DB_PREFIX_ . 'state state ON address.id_state = state.id_state
LEFT JOIN (
SELECT
warehouse_carrier.id_warehouse,
GROUP_CONCAT(carrier.id_carrier ORDER BY carrier.id_carrier SEPARATOR "' . $this->multivalueSeparator . '") ids,
GROUP_CONCAT(carrier.`name` ORDER BY carrier.id_carrier SEPARATOR "' . $this->multivalueSeparator . '") names
FROM ' . _DB_PREFIX_ . 'warehouse_carrier warehouse_carrier
JOIN ' . _DB_PREFIX_ . 'carrier carrier ON warehouse_carrier.id_carrier = carrier.id_carrier
AND carrier.deleted = 0
GROUP BY warehouse_carrier.id_warehouse
) carrier ON warehouse.id_warehouse = carrier.id_warehouse';
$this->sql .= '
WHERE warehouse.deleted = 0
';
// Filter By Warehouse
$warehouseCond = '';
if ($warehouses) {
if ($warehousesType === 'unselected') {
$warehouseCond = 'warehouse.id_warehouse NOT IN (' . $warehouses . ')';
} else {
$warehouseCond = 'warehouse.id_warehouse IN (' . $warehouses . ')';
}
}
if ($warehouseCond) {
$this->sql .= '
AND (' . $warehouseCond . ') ';
}
// Filter by fields data
$this->sql .= $eIHelper->getFieldsFilterString($this->auto, $this->inputs);
// Sort By ...
$this->sql .= ' ORDER BY ' . $this->sort . $this->sortWay;
if ($this->sort !== 'warehouse.id_warehouse') {
$this->sql .= ', warehouse.id_warehouse ASC';
}
$this->sql .= ' LIMIT ' . $this->offset . ', ' . $this->limit;
// d($this->sql);
return Db::getInstance()->executeS($this->sql);
}
}