[ОТВЕТИТЬ]
27.01.2010 14:03
Sergio
 
Подскажите, как можно выводить сумму нарастающего итога чека на дисплей покупателя в УКМ4?
Дисплей двустрочный, касса - pos-терминал.
27.01.2010 15:15
didinap
 
Надо кое-что подправить в ЛУА скриптах. Именно что сейчас не могу сказать, попозже вышлю когда под рукой будет УКМ.
ты напиши какая версия у тебя стоит УКМ4.
27.01.2010 16:23
didinap
 
Замени в Display.lua на это. Работает с УКМ46 до 47сп3, проверенно.
На первой строчке выводит цену товара, на второй строчке общую сумму.



-- Дисплей покупателя
function print_display_item_40_12(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
text = text .. ukm.leftpad(ukm.left(__item.name, 35), 35, " ");
text = text .. hw_goto_xy(0,1);
local itemsign = " ";
if __item.type == ukm.item.cancel then
itemsign = "X";
elseif __item.type == ukm.item.void then
itemsign = "-";
end
text = text .. ukm.adjustment(tostring(__item.quantity), tostring(__item.total) .. itemsign, 35, " ");
return text;
end

function print_display_item_20_2(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
-- text = text .. ukm.leftpad(ukm.left(__item.name, 20), 20, " ");
-- text = text .. hw_goto_xy(0,1);
local itemsign = " ";
if __item.type == ukm.item.cancel then
itemsign = "X";
elseif __item.type == ukm.item.void then
itemsign = "-";
end
text = text .. ukm.adjustment(tostring(__item.quantity), tostring(__item.total) .. itemsign, 20, " ");
text = text .. hw_goto_xy(0,1);
if __item.receipt.subtotal.__ok then
text = text .. ukm.adjustment("ИТОГО: ", tostring(__item.receipt.subtotal.amount), 20, " ");
else
text = text .. ukm.adjustment(tostring(__item.quantity), tostring(__item.total) .. itemsign, 20, " ");
end;
28.01.2010 02:55
Sergio
 
Спасибо, помогло. А можно ли где-нибудь узнать структуру элементов, используемых в скриптах - например, какие свойства есть у __item, как и где можно использовать эти свойства и прочее?
29.01.2010 10:33
Sergio
 
Спасибо! Полезная ссыль. Почему-то через гуглопоиск ее не находит.
11.05.2011 14:07
EJara
 
Подскажите, а в версии 48.4 скрипт будет таким же? Я изменил свой display.lua таким образом и получил ошибку скрипта (что про end в 17 строке).
11.05.2011 14:41
didinap
 
Не копируй весь текст.
Возьми ту строчку которая нужна тебе.
11.05.2011 14:46
Mtirt
 
Цитата:
EJara Подскажите, а в версии 48.4 скрипт будет таким же? Я изменил свой display.lua таким образом и получил ошибку скрипта (что про end в 17 строке).
Поставь там точку с запятой...
12.05.2011 04:05
EJara
 
Спасибо, разобрался! Оказалось не так сложно как я думал :)
23.01.2012 16:57
Nordik
 
Цитата:
didinap Замени в Display.lua на это. Работает с УКМ46 до 47сп3, проверенно.
На первой строчке выводит цену товара, на второй строчке общую сумму.



-- Дисплей покупателя
function print_display_item_40_12(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
text = text .. ukm.leftpad(ukm.left(__item.name, 35), 35, " ");
text = text .. hw_goto_xy(0,1);
local itemsign = " ";
if __item.type == ukm.item.cancel then
itemsign = "X";
elseif __item.type == ukm.item.void then
itemsign = "-";
end
text = text .. ukm.adjustment(tostring(__item.quantity), tostring(__item.total) .. itemsign, 35, " ");
return text;
end

function print_display_item_20_2(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
-- text = text .. ukm.leftpad(ukm.left(__item.name, 20), 20, " ");
-- text = text .. hw_goto_xy(0,1);
local itemsign = " ";
if __item.type == ukm.item.cancel then
itemsign = "X";
elseif __item.type == ukm.item.void then
itemsign = "-";
end
text = text .. ukm.adjustment(tostring(__item.quantity), tostring(__item.total) .. itemsign, 20, " ");
text = text .. hw_goto_xy(0,1);
if __item.receipt.subtotal.__ok then
text = text .. ukm.adjustment("ИТОГО: ", tostring(__item.receipt.subtotal.amount), 20, " ");
else
text = text .. ukm.adjustment(tostring(__item.quantity), tostring(__item.total) .. itemsign, 20, " ");
end;
для дисплея Birch DSP800F подойдет данный скрипт ?
25.01.2012 12:28
didinap
 
Без разницы. В луа есть два вида дисплея покупателя 2х строчный и 4х строчный.
09.02.2012 15:46
GENDALF
 
Киньте рабочий скрипт...
у меня 49.5..

вставляю строки...пишет ошибка скрипта ukm.lua
10.02.2012 14:21
didinap
 
На эту версию у меня пока нет.
После 48ой версии были внесены изменения в ЛУА.
Но там ничего особенного, надо просто разобраться.
Если в скором сделаю для 49 скину сюда.
10.02.2012 17:46
GENDALF
 
Очнь буду благодарен тебе.

Разработчику на заметку...(Покупатель должен угадывать сколько в чеке накрутило?Или кассир должен сломать палец о подытог?) :) Внесите изменение в дистрибутив и в сл.sp. И я буду благодарен вам как didinap'у :)
15.05.2012 16:42
avdeevalexey
 
Цитата:
GENDALF Очнь буду благодарен тебе.

Разработчику на заметку...(Покупатель должен угадывать сколько в чеке накрутило?Или кассир должен сломать палец о подытог?) :) Внесите изменение в дистрибутив и в сл.sp. И я буду благодарен вам как didinap'у :)
function print_display_item_20_2(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
text = text .. ukm.adjustment(ukm.left(__item.name, 20 - string.len(" " .. tostring(__item.total))), tostring(__item.total), 20, " ");
text = text .. hw_goto_xy(0,1);

local core = ukm.get_core(ukm.mashine.handle);
if core.header.__ok then
if (core:receipt_amount() - core:receipt_payed()) ~= ukm.currency(0) then
--text = text .. ukm.left(ukm.leftpad(tostring(core:receipt_amount() - core:receipt_payed()), 20, " "),20);
text = text .. ukm.adjustment("ИТОГО: ", tostring(tostring(core:receipt_amount() - core:receipt_payed())), 20, " ");

end
end

return text;
end

Добавлено через 1 минуту 17 секунд
На 2х строчном ВА-63 точно работает - проверил
05.07.2014 14:57
GENDALF
 
в версии 59 не нашел флаг "постоянный подытог" недоработка под 2х строчный с обновлением ИТОГО по сих пор актуальна... скрипты выше... не помогают :(
17.10.2015 12:05
Kryukov
 
В 66 ошибка... ну и висит касса...
11:52:55: 0x00004000: WARNING: debug#/usr/local/storage/home/ukm/build-br-66-2015_09_15_11_19_45/ukm/libtv/cdynamictext.cpp(23) draw: При исполнении скрипта 'ukm.lua' произошла ошибка: std::runtime_error: 'При исполнении скрипта 'register.lua' произошла ошибка: std::runtime_error: 'При исполнении скрипта 'display.lua' произошла ошибка: [string "display.lua"]:21: '=' expected near 'print_display_item_20_2'''
18.10.2015 21:36
Павел Сосновских
 
в 21ой строке лишний(не правильно стоящий) знак равно
можно привести используемый код?
19.10.2015 14:22
Kryukov
 
мне прислали этот:

function print_display_item_20_2(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
text = text .. ukm.adjustment(ukm.left(__item.name, 20 - string.len(" " .. tostring(__item.total))), tostring(__item.total), 20, " ");
text = text .. hw_goto_xy(0,1);

local core = ukm.get_core(ukm.mashine.handle);
if core.header.__ok then
if (core:receipt_amount() - core:receipt_payed()) ~= ukm.currency(0) then
text = text .. ukm.left(ukm.leftpad(tostring(core:receipt_amount() - core:receipt_payed()), 20, " "),20);
end
end

return text;
end
19.10.2015 14:24
Kryukov
 
Этот был ...
function print_display_item_20_2(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
text = text .. ukm.leftpad(ukm.left(__item.name, 20), 20, " ");
text = text .. hw_goto_xy(0,1);
local itemsign = " ";
local total=__item.total;
if (ukm.get_store().show_discount) then
total=total-__item:discount_amount();
end
if __item.type == ukm.item.cancel then
itemsign = "X";
elseif __item.type == ukm.item.void then
itemsign = "-";
end
text = text .. ukm.adjustment(tostring(__item.totalquantity), tostring(total) .. itemsign, 20, " ");
return text;
end
19.10.2015 17:16
Павел Сосновских
 
выглядит нормально. единственная мысль - такая функция остается одна, т.е. новый код вставляется вместо старого, не рядом?
19.10.2015 17:21
Kryukov
 
новый код вставляется вместо старого...
20.10.2015 10:35
Павел Сосновских
 
тогда можно весь display.lua?
21.10.2015 12:14
Kryukov
 
Вот текущий...
Вложения
Тип файла: zip display.lua.zip (1.5 Кб, 40 просмотров)
21.10.2015 15:56
Павел Сосновских
 
так с ним ведь работает, так? надо, который ошибку выдает.
03.12.2015 06:55
gslxxx
 
победил кто-нибудь на новых версиях вывод постоянного подитога на ДП?
ИТОГО отображается только после нажатия ПОДИТОГ на кассе, функцию в скрипте display.lua менял на эту:
Цитата:
function print_display_item_20_2(__display, __item)
local text = "";
text = text .. hw_goto_xy(0,0);
text = text .. ukm.adjustment(ukm.left(__item.name, 20 - string.len(" " .. tostring(__item.total))), tostring(__item.total), 20, " ");
text = text .. hw_goto_xy(0,1);

local core = ukm.get_core(ukm.mashine.handle);
if core.header.__ok then
if (core:receipt_amount() - core:receipt_payed()) ~= ukm.currency(0) then
text = text .. ukm.left(ukm.leftpad(tostring(core:receipt_amount() - core:receipt_payed()), 20, " "),20);
end
end

return text;
end
не помогло, ошибок нет, но и ИТОГО не выводится
04.12.2015 06:40
gslxxx
 
сам себе отвечу - может кому пригодится - оказывается бывший "постоянный подитог" теперь называется "Расчет скидок после регистрации каждого товара"
03.06.2016 19:20
Alexei
 
В настройках магазина поставил галочку "Расчет скидок после регистрации каждого товара". На мониторе кассир всегда теперь видит итоговую сумму чека. Как сделать так, чтобы на дисплее покупателя тоже постоянно показывалась итоговая сумма по чеку без нажатия подитога (как в УКМ2)?
Пример с core:receipt_amount() не работает.
УКМ 70 сп2.
04.06.2016 14:49
Alexei
 
Прислали из техподдержки для версии 70 сп2. Заработало.

Настройка магазина/Описание/Параметры
Должны быть включены слудующие параметры:
- Расчет скидок после каждого товара" (бывший постоянный подытог).
- На дисплей покупателя выводить: Неподтверждённую позицию.

Соответствующую функцию в скрипте display.lua заменить на:

SQL код:
function print_display_item_20_2(__display__item)
   
local text "";
   
text text .. hw_goto_xy(0,0);
   
text text .. ukm.adjustment(ukm.left(__item.name20 string.len("  " .. tostring(__item.total))), tostring(__item.total), 20" ");
   
text text .. hw_goto_xy(0,1);

   
local core ukm.get_core(ukm.mashine.handle);
   if 
core:header_exists() then
      
if (core:receipt_amount() - core:receipt_payed()) ~= ukm.currency(0then
         local cur_subtotal 
core:receipt_amount() - core:receipt_payed();
         
text text .. ukm.adjustment("ИТОГО: ",  tostring(cur_subtotal), 20" ");
      
end
   end

   
return text;
end 
Опции темы


Часовой пояс GMT +3, время: 20:21.

 

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