Последнее не сработало. Ругалась на "правый кусь": не стал разбираться.
Главная проблема в том, что сумма получается в "хрен знает" каком формате и стандартные операции (преобразования типов, арифметика) не срабатывает (ukm.currency тоже какой-то убогий).
Пришлось в цикле урезать до точки. Тоже замучился (забыл, что в ЛУА НЕРАВНО записывается как ~=, а не <> или !=; об.....ля с функцией string.sub), но победил...
Делал так (receipt.lua) (вставленные мной куски выделены звездочками)
В начале скрипта:
Код:
-- Модуль печати чека
--переменная для сжатой печати
compresed_print = false;
--**********************************************
ITOGO=0;
--**********************************************
В функцию print_hard_subtotal (наверное, в любом месте можно)
Код:
--печать скидок чека
--*******************************************************************
ITOGO=__hard_subtotal.receipt.subtotal.amount;
--*******************************************************************
Ну и в print_receipt_footer (я захотел после СПАСИБО ЗА ПОКУПКУ):
Код:
text = text .. ukm.center("СПАСИБО ЗА ПОКУПКУ!",width," ") .. "\n";
--**************************************************************
local sss=tostring(ITOGO);
local it="";
-- получаем без копеек
local i = 1;
while string.sub(sss,i,i) ~= "." do
it=it..string.sub(sss,i,i);
i = i + 1;
end;
kolvo = math.floor(tonumber(it)/999);
text = text .. ukm.center("\n\n****************************************",width," ") .. "\n";
text = text .. ukm.center("Получите на кассе " .. tostring(kolvo) .." купона (-ов)",width, " ") .. "\n";
text = text .. ukm.center("****************************************",width," ") .. "\n\n";
--**************************************************************
З.Ы. Почитав "мурзилку" по ЛУА от С+ нашел НУ ОЧЕНЬ "ВКУСНУЮ" функцию! Все кто не пользовался (по какой-либо причине) рекомендую!!!
Вот она:
или
Код:
PEREMENNAYA=100;
ukm.debug(PEREMENNAYA);
выведет в логи сервера
ТЕКСТ
или
100
соответственно!
Ну прям в восторге!