Files
kupshop/admin/export/orders.php
2025-08-02 16:30:27 +02:00

110 lines
3.0 KiB
PHP

<?php
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
function ordersOutputBuffer($buffer, $phase)
{
return iconv('utf-8', getVal('coding', null, 'utf-8').'//TRANSLIT', $buffer);
}
class ExportOrders
{
/** @var KupShop\OrderingBundle\Util\Order\DeliveryInfo */
protected $deliveryInfoService;
protected $orderIds;
protected function setHeader($params)
{
if (!empty($params['dateFrom']) && !empty($params['dateTo'])) {
$filename = 'objednavky_'.$params['dateFrom'].'-'.$params['dateTo'];
} else {
$filename = 'objednavky_'.date('Y-m-d_H-i');
}
$filename .= '.'.$params['file_ext'];
header("Content-type: {$params['content_type']}");
header("Content-Disposition: attachment; filename=\"{$filename}\"");
}
public function setOrderIds($orderIds)
{
$this->orderIds = $orderIds;
return $this;
}
public function getOrderIds()
{
return $this->orderIds;
}
protected function prepdate($date)
{
if (empty($date)) {
return '';
}
$date = new DateTime($date);
return $date->format('Y-m-d');
}
public function exportData($params)
{
$this->setHeader($params);
/* @var KupShop\OrderingBundle\Util\Order\DeliveryInfo deliveryInfoService */
$this->deliveryInfoService = ServiceContainer::getService('KupShop\OrderingBundle\Util\Order\DeliveryInfo');
$where = 'o.id IN ('.(!empty($this->orderIds) ? join(',', $this->orderIds) : '0').')';
$orders = sqlQuery("SELECT o.id FROM orders o WHERE {$where}");
// Select all vats
$vats = sqlFetchAll(sqlQuery('SELECT vat, 0 tmp FROM vats ORDER BY vat'), ['vat' => 'tmp']);
// Append non-existent vats from orders
$vats_order = sqlQuery("SELECT distinct COALESCE(tax, 0) vat, 0 tmp
FROM orders as o
LEFT JOIN order_items oi on oi.id_order=o.id
WHERE {$where}
ORDER BY vat");
foreach ($vats_order as $row) {
if (!isset($vats[$row['vat']])) {
$vats[$row['vat']] = 0;
}
}
$smarty = createSmarty(true, true);
$smarty->assign([
'orders' => $orders,
'vats' => $vats,
'this' => $this,
]);
ob_start('ordersOutputBuffer', 4096);
$template = getVal('format', $params, $params['file_ext']);
$smarty->display("export/orders_{$template}.tpl");
}
public function getOrder($id_order)
{
$orderObj = new \Order($id_order);
$orderObj->createFromDB($id_order);
$orderObj->fetchItems();
$orderObj->fetchDates();
$orderObj->deliveryItemId = $this->deliveryInfoService->getDeliveryItem($orderObj);
if (is_null($orderObj->date_handle)) {
$orderObj->date_handle = $orderObj->date_created;
}
return $orderObj;
}
}