<?php
class ControllerCheckoutKkm extends Controller {
private $allow_status = '15';//Указать через запятую статусы при которых печаетается чек продажи
private $return = -1; //Статус возврата при котором печатается чек возврата
public function index() {
$sql = "SELECT * FROM `" . DB_PREFIX . "order`
WHERE 1 ";
$sql .= " AND order_status_id in (" . $this->allow_status . ") ";
if (!isset($this->request->get['debug'])) {
$sql .= "AND check_prop <> 1";
}
$sql .= " AND payment_code = 'tcsacquiringpay' "; //код платежной системы для которой пробивается чек
$sql .= " LIMIT 1";
$query = $this->db->query($sql);
$json = array();
if ($query->num_rows) {
foreach ($query->rows as $order) {
$type_check = 0;
if ($order['order_satus_id'] == $this->return) {
$type_check = 1;
}
$sql = "SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = " . (int)$order['order_id'];
$query_product = $this->db->query($sql);
$register = array();
$sum = 0;
if ($query_product->num_rows) {
foreach ($query_product->rows as $product) {
$register[] = array(
'Register' => array(
'Name' => $product['name'], // наименование товара в чеке
'Quantity' => $product['quantity'], // кол-во товара в чеке
'Price' => round($product['price'],2), // цена товара
'Amount' => round($product['total'],2), //итого по чеку
'Department' => 1, // отдел по умолчанию 1
'Tax' => -1, // налоговая ставка
)
);
$sum = $sum + $product['total'];
}
}
$sum_ship = $order['total'] - $sum;
if ($sum_ship) {
$register[] = array(
'Register' => array(
'Name' => 'Доставка', // наименование в чеке
'Quantity' => 1, // кол-во по умолчанию 1
'Price' => $sum_ship, // стоимость доставки
'Amount' => $sum_ship, //итого по доставке
'Department' => 1, // отдел по умолчанию 1
'Tax' => -1, // налоговая ставка доставки
)
);
}
if (isset($this->request->get['debug'])) {
print_r($register);
}
$json['ListCommand'] = array(
array(
'Command' => "RegisterCheck",
'NumDevice' => 1, // номер кассы
'InnKkm' => "", // не обязательно
'KktNumber' => "", // не обязательно
'Timeout' => 30,
'IdCommand' => $order['order_id'] . '-' . date('Y-m-d-H-i', strtotime($order['date_modified'])), // уникальный номер команды
'IsFiscalCheck' => true, // фискальный или не фискальный чек
'TypeCheck' => $type_check, // продажа 0 отмена 1
'CancelOpenedCheck' => true, //закрыть открытый ранее чек
'NotPrint' => true, // не печатать бумажный чек
'NumberCopies' => 0, // кол-во копий
'CashierName' => "Иванов И.И.", // кассир
'ClientAddress' => $order['email'], // e-mail или телефон покупателя
'TaxVariant' => "1", // тип налогового учета компании
'CashLessType1' => round($order['total'],2), // способ оплаты из настроек сервера
'CheckStrings' => $register, // данные по заказу
)
);
$sql = "UPDATE `" . DB_PREFIX . "order` SET check_prop = 1 WHERE order_id = " .(int)$order['order_id'];
if (!isset($this->request->get['debug'])) {
$this->db->query($sql);
}
}
// $this->response->setOutput(print_r($json, true));
$this->response->setOutput(json_encode($json, JSON_UNESCAPED_UNICODE));
}
}
}