Таможенная квитанция¶
В POS есть два типа чеков:
- `` PosTicket`` - отображается на экране после оплаты;
- `` XmlReceipt`` - печатает в PosBox после нажатия кнопки Распечатать квитанцию на экране оплаты, если PosBox подключен к принтеру ESC POC.
Эти два чека реализованы в `` Qweb`` и генерируются после заказа на покупку. Если `` PosTicket`` разрешает любой дизайн в `` Qweb``, то для `` XmlReceipt`` вы можете использовать только строго определенные теги, которые поддерживаются принтером ESC POC.
Используя механизм `` t-extend``, который принимает имя шаблона для изменения в качестве параметра, вы можете расширить существующие шаблоны `` Qweb`` для получения. После этого может быть выполнена модификация с любым количеством поддиректив t-jquery.
Директивы `` t-jquery`` используют селектор CSS. Этот селектор используется в расширенном шаблоне для выбора узлов контекста, для которых может быть применена `` t-операция``. Если вы хотите добавить, например, другой заголовок для продукта в `` XmlReceipt``, вам нужно создать `` Qweb`` со следующим содержимым:
<t t-extend="XmlReceipt">
<t t-jquery="t[t-if='simple'] line" t-operation="after">
<t t-set="second_product_name" t-value="line.second_product_name"/>
<t t-if="pos.config.show_second_product_name_in_receipt and second_product_name">
<line>
<left>(<t t-esc='second_product_name' />)</left>
</line>
</t>
</t>
</t>
</t>
Для того же действия для PosTicket:
<t t-extend="PosTicket">
<t t-jquery=".receipt-orderlines tr[t-foreach='orderlines']" t-operation="append">
<t t-set="second_product_name" t-value="orderline.get_product().second_product_name"/>
</t>
</t>
Одним из сложных, но в то же время гибких методов создания квитанции Клиента является загрузка поля с Сервера, где в текстовой форме описан шаблон `` Qweb``. После загрузки и перед печатью этот текстовый шаблон необходимо преобразовать в «формат XML» и получить данные на основе этого шаблона.
template_receipt_qweb = fields.Text(string="Custom Receipt Qweb")
В POS вам нужно преобразовать этот текстовый формат в `` XML`` и сгенерировать квитанцию, используя этот шаблон:
convert_to_xml: function (template) {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(template, "text/xml");
return xmlDoc.documentElement;
},
Использование этого шаблона вместо стандартных требует генерации полученного `` XML``, для этого вам необходимо подключить `` Qweb``:
var core = require('web.core');
var Qweb = core.qweb;
Чтобы определить пользовательскую функцию, которая будет генерировать `` Qweb`` пользователя следующим образом:
custom_qweb_render: function (template, options) {
var template_name = $(template).attr('t-name');
Qweb.templates[template_name] = template;
return Qweb._render(template_name, options);
},
Эту функцию необходимо вызывать каждый раз, когда генерируется квитанция.