[ТЕМА ЗАКРЫТА]
11.10.2012 16:35
Aligator
 
Постояльцы, просьба откликнуться на вопрос:
от клиента поступило задание на изменение дизайна чека, сейчас согласовываем ТЗ, но проблема в том, что в С+ данную задачу не удастся в довольно краткие сроки разрешить.
Есть ли на форуме продвинутые с языком Lua, кто был бы готов под заказ помочь с дизайном чека?
ТЗ по необходимости отправлю.
11.10.2012 16:36
whitewizard
 
Если там нет каких-то глобальных извращений - то и проблем нет
11.10.2012 16:42
Aligator
 
Цитата:
whitewizard Если там нет каких-то глобальных извращений - то и проблем нет
В том то и дело, что с извращениями.
Вот описания всего что нужно проделать:

Цель: привести форму кассового чека, печатающегося при расчете, в соответствие с пожеланиями Заказчика.

Товарная позиция в чеке должна печататься следующим образом:

Строка №1 количество x цена
Строка №2 наименования товара составляемой из полей таблицы trm_in_items
Строка №n = name + descry (выводить текст целиком, в случае если он не
умещается на одной строке, переносить как получится и печатать на следующей строке, пока текст на закончится.
Строка №n+1 штриховой код товара (в цифровом виде), которым этот товар был добавлен в чек, сумма товарной позиции, налог.


Печать копии чека, в разделе товарных позиций – организовать аналогичным образом.
11.10.2012 16:52
whitewizard
 
всё не так уж и плохо.
бывало и хуже.
11.10.2012 17:13
Aligator
 
Цитата:
whitewizard всё не так уж и плохо.
бывало и хуже.
Можно рассчитывать на помощь? Вроде как вопрос и не сложный, но с программированием Lua до такой степени я не дошел ещё...до сих пор только редактировал данные, без добавления своего.

Добавлено через 8 минут 42 секунды
Необходимые Lua готов предоставить...
11.10.2012 17:25
whitewizard
 
На этой неделе совсем нет желания заниматься.
Выкладывай, что есть, а там подумаем.
11.10.2012 17:34
Aligator
 
Цитата:
whitewizard На этой неделе совсем нет желания заниматься.
Выкладывай, что есть, а там подумаем.
Во вложении составил ТЗ
дизайн кассового чека (1).rar
11.10.2012 17:35
Aligator
 
Все Lua скрипты сейчас соберу и тоже выложу
11.10.2012 17:56
Aligator
 
Все Lua скрипты в архиве (понятное дело что нужен один или два, но на всяк случай сохранил все).
Версия УКМ: 49 Service Pack 9 (Украина, ФР ИКС Е260Т)
Lua.rar
11.10.2012 18:18
Aligator
 
Если есть кто-то еще, способный помочь, просьба не проходить мимо.
15.10.2012 12:08
Aligator
 
Цитата:
whitewizard На этой неделе совсем нет желания заниматься.
Выкладывай, что есть, а там подумаем.
Позвольте поинтересоваться, когда у вас найдется время (вы говорили про эту неделю), дабы помочь в моем вопросе?
17.10.2012 01:17
Onesoft
 
план действий:
1. В скрипте receipt.lua в функции print_item_to_printer найти строку:

text = text .. ukm.left(__item.item .. " " .. __item.name, width - 1) .. "\n";

И закомментировать её:

-- text = text .. ukm.left(__item.item .. " " .. __item.name, width - 1) .. "\n";

2. В этой же функции найти строки, где печатается количество товара и цена:

if ukm.str_len(" " .. __item.measurement .. "*" .. tostring(__item.totalquantity)

и закомментировать целиком весь блок от if до end:

-- if ukm.str_len(" " .. __item.measurement .. "*" .. tostring(__item.totalquantity) .. "*" .. tostring(__item.price) .. " " .. tostring(__item.total) .. itemsign) < (width + 1) then
-- text = text .. ukm.adjustment(" " .. __item.measurement .. "*" .. tostring(__item.totalquantity) .. "*" .. tostring(__item.price), tostring(__item.total) .. itemsign, width, " ") .. "\n";
-- else
-- text = text .. ukm.rightpad(" " .. __item.measurement .. "*" .. tostring(__item.totalquantity) .. "*" .. tostring(__item.price) .. " ", width-1, ".") .. "\n";
-- text = text .. ukm.leftpad(tostring(__item.total) .. itemsign, width, ".") .. "\n";
-- end


3. Печать первой строки с количеством и ценой и строк названия товара с переносом длинного текста на следующую строку, добавить сразу после закомментированного выше блока:

text = text .. ukm.leftpad(tostring(__item.totalquantity) .. " x " .. tostring(__item.price), width, " ") .. "\n";
text = text..string.gsub(ukm.slice(__item.name, width) .. "\n", "\n\n","\n");


4. Печать штрих-кода с суммой товарной позиции и имени налога, добавить следом:
local __taxname="";
if compresed_print == false then
local taxes = ukm.taxes(__item.receipt);
taxes:create(__item);
for i=0, taxes.itemtaxes:size()-1 do
local tax = taxes.itemtaxes:at(i);
__taxname = tax.name;
end
else
for key, tax in pairs(__item.tax_item) do
__taxname = tax.name;
end
end
text = text..ukm.adjustment(__item.var, tostring(__item.total).." "..__taxname, width) .. "\n";

Нерешённой осталась лишь проблема печати поля trm_in_items.description. Дело в том, что в структуре класса item_data в LUA этого поля нет:

Класс item_data – класс данных о товарной позиции
price – цена товара, currency
receipt – ссылка на receipt
stock – ссылка на отдел
item – артикул, string
name –название, string
remain – остаток товаров на складе, boost::optional<quantity_t>
var – штрих код, string
varquantity – количество по штрих коду, quantity_t
quantity – количество, quantity_t
totalquantity – общее количество, quantity_t
minprice – минимальная цена на товар, currency
total – стоимость товарной позиции , currency
measurement – наименование единицы измерения, string
measurementprecision – точность измерения товара в знаках после запятой , int
type – тип товара, int
weight – вес, int
input - тип ввода, int
position – номер чека в позиции, size_t
discountinfo – информация, которую формируют скидки, string
properties – свойства, stl_iterator
discounts – скидки, stl_iterator

По-видимому, эту проблему возможно решить только лишь выполнив доработку в УКМ (силами отдела разработки УКМ4), суть которой будет заключаться в добавлении поля description в структуру класса item_data.

Альтернативный вариант: прогружать описание товара из ТС в УКМ не в поле name, а в поле description. Побочный эффект: тогда описание товара так же будет отображаться на дисплеях кассира и покупателя (однако, не помещающийся текст будет обрезаться)..

Добавлено через 12 минут 30 секунд
Небольшое дополнение: если товар был введён не по штрих-коду, а по артикулу, то в последней строке штрих-код напечатан, естественно, не будет. Но можно настроить печать в таком случае артикула товара, тогда вместо последней строки решения надо будет добавить следующий блок:

local __var="";
if (__item.var == nil) or (__item.var == "") then
__var=__item.item;
else
__var=__item.var;
end;
text = text..ukm.adjustment(__var, tostring(__item.total).." "..__taxname, width, " ") .. "\n";
17.10.2012 16:36
Onesoft
 
Тупанул.. :l_clock:

Цитата:
Onesoft Альтернативный вариант: прогружать описание товара из ТС в УКМ не в поле name, а в поле description. Побочный эффект: тогда описание товара так же будет отображаться на дисплеях кассира и покупателя (однако, не помещающийся текст будет обрезаться)..
Наоборот: прогружать описание в name, а не в description..
19.10.2012 15:52
alexcid
 
Подправили скрипт receipt.lua, на экране при нажатии на номер чека, его дизайн изменился и появился штрихкод, а при выводе на печать на фискальном аппарате как был старый формат так и остался!? Что нужно еще указать в параметрах или подправить в скрипте чтобы изменилась печать на фискальнике?
19.10.2012 16:41
Onesoft
 
Цитата:
alexcid Подправили скрипт receipt.lua, на экране при нажатии на номер чека, его дизайн изменился и появился штрихкод, а при выводе на печать на фискальном аппарате как был старый формат так и остался!? Что нужно еще указать в параметрах или подправить в скрипте чтобы изменилась печать на фискальнике?
В аппаратной конфигурации в настройках фискальника включить параметр "Печать чека свободной строкой" (если для данного фискальника такой функционал реализован). Если параметр выключен, то на фискальник в соответствии с его протоколом отправляются команды на печать товарной позиции с "Названием", "ценой", "количеством", "скидкой" и "налогом", фискальник автоматически получает стоимость и плюсует к сумме чека. Весь текст фискальник печатает в соответствии с его прошивкой. Если же параметр установлен, то все вычисления тоимости товаров и суммы чека вычисляется в УКМ, весь текст (кроме установленных законодательством зон чека) формируется в УКМ, на фискальних лишь отправляются команды "открыть чек", "пробить вычисленную в УКМ сумму чека * 1 шт" (фискальник всё равно сам должен вычислить сумму чека), "закрыть чек".
19.10.2012 18:46
alexcid
 
У нас используются фискальники ИКС Е260Т и в сервисной утилите я к сожалению не нашел галочки и функции "Печать чека свободной строкой" (
Куда еще копать?
19.10.2012 19:39
Onesoft
 
Цитата:
alexcid У нас используются фискальники ИКС Е260Т и в сервисной утилите я к сожалению не нашел галочки и функции "Печать чека свободной строкой" (
Куда еще копать?
Не в сервисной утилите, а в УКМ: Администрирование -> Оборудование -> /параметры фискального регистратора/.
23.10.2012 04:22
alexcid
 
Да, нашел, сработало, огромное спасибо! Осталась одна проблема, тот дизайн чека, который выводился до включения галочки "печать сводной строкой" вполне устраивал, не хватало лишь штрих-кода товара, теперь же заработал скрипт reciept.lua и весь дизайн чека нужно рисовать с нуля (
Можно ли как-то вытащить дизайн чека зашитый в код УКМ, чтобы отредактировать только пару строк и заменить им receipt.lua?
23.10.2012 08:51
Onesoft
 
Цитата:
alexcid Можно ли как-то вытащить дизайн чека зашитый в код УКМ, чтобы отредактировать только пару строк и заменить им receipt.lua?
Весь дизайн чека реализован на скриптах lua, которые доступны для редактирования (за исключением тех частей чека, которые регламентированы фискальным законодательством и изменены быть не могут).
"Вытащить" дизайн можно только одним способом: сравнить два чека и разницу реализовать на lua.
Опции темы


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

 

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