Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Печать слипа сбербанка в составе чека : УКМ-4

22.11.2024 23:48


21.03.2022 13:24
Выведи переменные лог ukmclient да погляди чего там в конце.

Код:
...
text = ukm.source(ukm.mashine.handle, text)
ukm.debug("print_receipt_slip: text1=" .. text);
...
text = lines
ukm.debug("print_receipt_slip: text2=" .. text);
...
21.03.2022 14:04
Вот что в итоге в логах
16:51:46.864: 0xf5b46e00: DEBUG: luaukm: print_receipt_slip: text1=21.03.22 16:51 Т:20180969 М:451000001971
КА:209728 RRN:714964710124 ЧЕК 0017
Mastercard(E1) *0082 AID:A0000000041010
ПАО СБЕРБАНК Оплата ОДОБРЕНО
Клиент:
Сумма(Руб):2.00 Комиссия за операцию 0 Руб.
Подпись клиента не требуется
217042E2067B0110C69AAD031B4F0AAAA4CF3211
==================================================




16:51:46.866: 0xf5b46e00: DEBUG: luaukm: print_receipt_slip: text2=21.03.22 16:51 Т:20180969 М:451000001971КА:209728
RRN:714964710124 ЧЕК 0017 Mastercard(E1) *0082
AID:A0000000041010ПАО СБЕРБАНК Оплата
ОДОБРЕНО Клиент: Сумма(Руб):2.00
Комиссия за операцию 0 Руб.
Подпись клиента не требуется
217042E2067B0110C69AAD031B4F0AAAA4CF3211

А вот когда я скопировал логи в текстовый файл и открыл его в редакторе в другой кодировке, то заметил что русские буквы занимают в 2 раза больше места. и в этом случае как раз и получилось что примерно по 52 - символа в строке. Получается это изза того что сбер работает в другой кодировке?
21.03.2022 14:23
В luaukm кодировка utf-8, для строк с русскими символами нельзя использовать # как длину строки в символах.
Правильно ukm.str_len()
Но к "проблеме" пустой строки в конце это наверно не относится.
22.03.2022 05:43
Да, действительно, это помогло. Вот итоговая функция с автоматическим определением длины строки которые позволяет печатать принтер.
Еще вопрос, не понятно для чего нужен последний блок: if not __is_last

function print_receipt_slip(__payment, __is_last, __print_data)
local text = 'return "' .. __payment.slip .. '"'
text = ukm.source(ukm.mashine.handle, text)
local print = ukm.get_printer(ukm.printer_type_master());
local width = print:get_width();

text = text:gsub("\x0D", " ")
text = text:gsub("\x0A", " ")
text = text:gsub("\n", " ")
text = text:gsub("\r", " ")

local line = ""
local lines = ""
for word in (text .. " "):gmatch("(.-) ") do
if ukm.str_len(line) + ukm.str_len(word) < width then
line = line .. " " .. word
else
lines = lines .. line .. '\n'
line = word
end
line = line:match("^%s*(.-)%s*$")
end
lines = lines:match('^\n*(.-)\n*$')
text = lines

if not __is_last then
local printer = ukm.get_printer(ukm.printer_type_master())
text = text .. '\n' .. string.rep('-', printer:get_width())
end
__print_data:add(text, ukm.printer_type_master())
end
24.03.2022 12:55
Второй слип печатается? Второй слип отрезается?
В профиле банковском сколько стоит печать скольких слипов?

Я тоже хотел перейти на печать слипа в составе чека, но по моему у меня печаталось два слипа в составе и один отрезался. Нужно в банке в их тех карте менять
24.03.2022 14:24
Цитата:
Chebure Второй слип печатается? Второй слип отрезается?
В профиле банковском сколько стоит печать скольких слипов?

Я тоже хотел перейти на печать слипа в составе чека, но по моему у меня печаталось два слипа в составе и один отрезался. Нужно в банке в их тех карте менять
Так в чем проблема ? сделай заявку в техподдержку Сбера. при летит обновление и все ок.
25.03.2022 05:40
У нас выставлено печать одного слипа. Но в настройках магазина есть два пункта: печать слипа отдельным документом и печать слипа в составе чека. У кого печатается 2 слипа - можно проверить: отключить первый пункт и включить второй. Есть вероятность что будет в составе чека только один печататься.
25.03.2022 07:41
Проверил на тестовом стенде. Будет печататься 2 слипа в составе чека. Так что только через сбер решить вопрос. Или вручную перенастраивать каждый терминал - но тут до первой удаленной загрузки от сбера.
Часовой пояс GMT +3, время: 23:48.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.