[ТЕМА ЗАКРЫТА]
Опции темы
29.05.2014 15:59  
vdm
У меня в виндовом веб-интерфейсе на старой версии укм, "15.20" нормально преобразуется в число, nil получается от строки с запятой. Или на кассе по-другому, или в твоей версии поменялось.

Насчет замены в gsub, там точка - это спецсимвол regexp, в lua ее процентом экранировать нужно.

Код:
string.gsub(property.value, "%.", ",");
 
"Спасибо" vdm от:
29.05.2014 17:39  
Tiger
Завтра попробую оба вариант! А как на крайний случай перебрать по символьно строку в цикле и склеить уже строку с запятой вместо точки?
 
30.05.2014 05:56  
Tiger
Всё получилось действительно нужно было поставить % перед точкой
Цитата:
string.gsub(property.value, "%.", ",");
Ну а дальше уже формула рассчитала комиссию!
 
30.05.2014 06:42  
Mtirt
Насколько я помню, в УКМ4 надо не в число это всё переводить а в currency.
Т.е. tocurrency использовать. Причем, это лучше сделать с 0.04. Её привести и умножить...
 
30.05.2014 18:12  
Павел Сосновских
tocurrency не нашел
точно есть ukm.currency()

например, есть такой код в receipt.lua:
Код:
text = text .. ukm.adjustment(" " .. discount.name, tostring(discount.increment*ukm.currency(-1)) .. " ", width, " ") .. "\n";
так что надо:
Код:
commission = tostring(ukm.currency(property.value) - ukm.currency(property.value)*ukm.currency(0.04));
 
"Спасибо" Павел Сосновских от:
02.06.2014 07:10  
Mtirt
Да, конечно ukm.currency().
 
05.06.2014 19:12  
Tiger
Цитата:
for i = 0, __item.properties:size() - 1 do
local property = __item.properties:at(i);
if (ukm.binary(property.flags) *
ukm.binary(ukm.item_property.flgprint)):get() ~= 0 then
local property_name = property.code;
if property.name ~= nil then
property_name = property.name:get();
end
text = text .. ukm.adjustment(" " .. property_name, property.value .. " ", width, ".") .. "\n";
if property_name == 'Сумма' then
commission = string.gsub(property.value, "%.", ",")-string.gsub(property.value, "%.", ",")*0.04;
end
if property_name == 'Номер телефона' then
text = text .. ukm.adjustment("Сумма с комиссией (4%)",round(commission,2) .. " ", width, ".") .. "\n";
end
end
end
На толкнулся еще на одну проблему почему-то в чеке не печатается строка property.name равна Сумма! Из какой таблицы берутся property.value и property.name? Вследствие чего получаю ошибку так ка comission равна null!
 
05.06.2014 19:13  
Tiger
Цитата:
Сообщение от Mtirt
Да, конечно ukm.currency().
Ошибка:

Цитата:
16:45:01: 0x00004000: WARNING: debug#/usr/local/storage/home/ukm/build-br-59-2014_05_29_15_43_01/ukm/libukm/ccore.cpp(3275) ReceiptAppendPayment: No matching overload found, candidates:
void __init(luabind::argument const&,quantity const&)
void __init(luabind::argument const&,currency const&)
void __init(luabind::argument const&,custom [d])
 
06.06.2014 06:58  
Mtirt
Объясни мне, как я по сообщению об ошибке должна угадать, что ты там такого понаписал?
 
06.06.2014 07:38  
Tiger
Цитата:
Сообщение от Mtirt
Объясни мне, как я по сообщению об ошибке должна угадать, что ты там такого понаписал?
commission = tostring(ukm.currency(property.value) - ukm.currency(property.value)*ukm.currency(0.04));
 
 


Опции темы



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

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