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, время: 11:11.

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