110 lines
3.0 KiB
PHP
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;
|
|
}
|
|
}
|