22.03.2016 12:29
cb
 
Здравствуйте. Необходимо вывести некоторую информацию в чек из кассовой бд Мysql.
В доке нашел встроенный класс connection, но использовать его в конструкции um.query(cl_connection, text_sql) не получается. Также падает с ошибкой если передавать напрямую параметры соединения с базой. Есть вариант подключить длл в луа и через нее ходить к бд.
Кто-нибудь подключался из Lua к кассовой бд?
22.03.2016 23:26
Павел Сосновских
 
не раз обсуждалось, запросы в бд можно строить только в отчете по внешним скриптам и больше нигде
есть довольно много информации, которую можно вытаскивать в чек
не вся она документирована
что именно нужно?
23.03.2016 08:35
paradox
 
Пришлось заново регистроваться из-за низкой кармы.

Нужно вывести 2 текста в чек receipt.lua.
1 произвольный текст из таблицы из бд mysql
2 применную скидку (%), а не расчитанную скидку которая была получилась в чеке. Эта скидка которая грузиться в "Персональная скидка на классикатор УКМ 2,0", вот этот фактический процент и надо вывести в чеке.

Я нашел отчет в котором написаны селекты к базе через класс вот такой конструкцией ukm.query(__rep:get_conn(), text_select).
Нашел Класс connection – класс соединение с базой данных. Но так как методы класса не документированны, дальше дело не пошло.
23.03.2016 15:55
Павел Сосновских
 
классы query, connection и прочие подобные работают только в reports_ext.lua и больше нигде.
в receipt.lua они не работают
произвольный текст можно, но не из таблицы.
что-то можно сделать с помощью скидок, если в "результат работы" скидки сделать "Вывести сообщение в чек"
можно подробней? текст разный на разных кассах/в разных магазинах?
в чеке по-умолчанию выводится и процент из настроек с указанием, что он "возможный", и фактически рассчитанный
возможно не влезает в чек или что-то изменено
какая версия укм?
24.03.2016 08:44
paradox
 
По тексту. То есть в receipt.lua я не смогу писать селекты к мускл, чтобы потом вывести результаты запроса в чек?

По скидке. Есть группа скидок "Персональная скидка на классикатор УКМ 2,0", в эту группу грузяться дисконтные карты из Супермага, у этих диск/карт есть фактический процент скидки. При печати чека выводиться расчитанная скидка, а нужно выводить фактическую скидку.

63 сп 10
Миниатюры
Нажмите на изображение для увеличения
Название: ukm.JPG
Просмотров: 357
Размер:	241.0 Кб
ID:	7139  
24.03.2016 16:46
Павел Сосновских
 
да, селекты писать в чеке не получится. я уже 2 раза об этом сказал.

про процент. чтобы устранить недопонимание.
допустим, в чеке 2 товара, оба по 50р., но один из них акционный и на него скидка не распространяется
сумма чека без скидок 100р.
карта на 7% - запрошенная скидка - 7% - 7р
реально из-за наличия мин. цены скидка составит 3,5% - 3,5р - реальная скидка

вам надо вывести 7% или 3.5%?
25.03.2016 11:31
Павел Сосновских
 
так по-умолчанию он должен выводиться
1ая строка с картинки:
Код:
text = text .. ukm.adjustment("Скидка: " .. ukm.rightpad(ukm.left(discount.name, width-28),width-28,".") .. " " .. ukm.dbl2str(__hard_subtotal.receipt.items:getrealpercent_dbl(discount),0,"",2,"0") .. "% ", tostring(__hard_subtotal.receipt.items:getdiscount(discount)), width-1, ".") .. "\n";
слово "Скидка: ", потом название скидки, запрошенный процент, фактическая сумма скидки

2ая:
Код:
text = text .. ukm.rightpad(ukm.left(properties_iterator:at(ukm.core.field_discount_client_name), width - ukm.str_len(human_modificator) - 2) .. ", " .. human_modificator, width, " ") .. "\n";
то, что написано в колонке имя в скидке, склеенные: слова "Возможная скидка", запрошенный процент, символ "%"
Миниатюры
Нажмите на изображение для увеличения
Название: disc.jpg
Просмотров: 344
Размер:	62.5 Кб
ID:	7149   Нажмите на изображение для увеличения
Название: receipt.jpg
Просмотров: 361
Размер:	57.7 Кб
ID:	7150  
Вложения
Тип файла: 7z receipt.lua.7z (7.0 Кб, 60 просмотров)
25.03.2016 14:14
paradox
 
Понял. В понедельник попробую, но когда я работал с модификатором он падал в ошибку
28.03.2016 12:52
paradox
 
Благодарю за наводку. Вот, если кто-нибудь тоже будет искать

local properties_iterator = ukm.map.int.string.iterator(discount.properties);
if properties_iterator:at(ukm.core.field_discount_modificator) ~= "" then
local modificator = properties_iterator:at(ukm.core.field_discount_modificator);
text = text .. ukm.adjustment(modificator, " ", width, " ") .. "\n";
end
Часовой пояс GMT +3, время: 23:47.

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