план действий:
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";