23.11.2010 17:41
didinap
 
Цитата:
Павел Сосновских Вот:
*** скрытый текст ***
Никак не могу подключится к FTP.
Скинь на какой нибудь обменник пожалуйста.
17.10.2012 13:03
Eugin_S
 
Как в функции:

Код:
if core.header.__ok and core.header.client.__ok then
       local account = ukm.map.string.struct_balance_info.iterator(ukm.get_client_account_info(core.header.client).account_balance_info);
       while account:next() do
           text = text .. ukm.adjustment(account:first(), tostring(ukm.currency(account:second().balance)), __width,".") .. "\n";
       end
    end
    return text;
сделать так, чтобы выводился баланс не по всем счетам, а только по определенному?
17.10.2012 13:51
didinap
 
Ну тогда вот... То что все хотели в начале поста:)
Выводит накопления по чеку в подвале чека
На счеты было
Накоплено
Осталось
Надо просто вставить в receipt.lua в функцию function print_receipt_footer и вписать имя счета на место "Первый счет"
У нас работает на 48СП6 до 49сп9.
Если правильно помню на 47ой или даже на 48сп5 были какие то проблемы, кажется вообще не выводилось ничего на чеке по накоплениям.

Цитата:
function print_receipt_footer(__footer, __print_data)
local printer = ukm.get_printer(ukm.printer_type_master());
if printer then
local text = "";
local width = printer:get_width();
-- Начало

if __footer.receipt.header.client.__ok then
local acc_inrc = ukm.currency(0);

for i=0, __footer.receipt.discounts:size() - 1 do
local d = __footer.receipt.discounts:at(i);
local di = __footer.receipt.items:getdiscountaccount(d);

if di:is_initialized() then
acc_inrc = acc_inrc + di:get();
end
end
-- text = text .. ukm.center("-", width+8, "-") .. "\n";
text = text .. "\n" .."Ваши накопления" .. "на дату " .. ukm.ptime2str(ukm.get_sys_date(), "%H:%M %d.%m.%Y") .. "\n"
.. ukm.adjustment("Текущий", tostring(ukm.currency(-1) * acc_inrc), 48, " ") .. "\n";


local account = ukm.map.string.struct_balance_info.iterator(ukm.get_client_open_account_info(__footer.receipt.header.client).account_balance_info);

while account:next() do
if account:first() == "Первый счет" or
account:first() == "Второй счет" then

if account:second().account_type_id == -1 then
text = text .. ukm.adjustment(account:first(), " Связь отсутсвует", 48," ") .. "\n";
else

if __footer.receipt.type == ukm.core.normal or __footer.receipt.type == ukm.core.restore_ then
text = text .. ukm.adjustment("Прежний остаток на счете", tostring(account:second().balance), 23 ," ") .. " "
.. ukm.adjustment("Текущий остаток на счете", tostring(account:second().balance - acc_inrc), 24 , " ") .. "\n"

else


text = text .. ukm.adjustment("Прежний остаток на счете", tostring(account:second().balance + acc_inrc), 23 ," ").. " "
.. ukm.adjustment("Текущий остаток на счете", tostring(account:second().balance), 24 , " ") .. "\n"

end
-- text = text .. ukm.center("-", width+8, "-") .. "\n";
end
end
end
end



-- Конец
17.10.2012 14:25
Eugin_S
 
Спасибо, у меня работает на версии 49.9.

Подскажите, можно еще добавить в подвал фамилию клиента?
17.10.2012 14:31
didinap
 
Цитата:
Eugin_S Спасибо, у меня работает на версии 49.9.

Подскажите, можно еще добавить в подвал фамилию клиента?
Думаю если захотеть то можно. Правда мне это не удалось, и времени не было чтоб разбираться.
17.10.2012 16:27
Eugin_S
 
Есть ли в
Код:
__footer.receipt.header.client
имя клиента, и как можно его вывести? Где теперь можно посмотреть описания классов?
17.10.2012 23:32
vdm
 
В receipt.lua функция print_client(__header, __width).
В print_receipt_footer вызвать ее ровно также, как в print_receipt_open, только с правильным параметром:
text = text .. print_client(__footer.receipt.header, width);

Если нужно не все, а только имя - вытащить пару строк из кода print_client не проблема.

Описания lua на сервплюсе и правда не видно.
На ftp есть тут: /HELP/UKM/LUA/
Не вчерашней давности, но достаточно.
23.10.2012 01:46
Павел Сосновских
 
Вижу существенные изменения в изначально начатом.
Насколько понимаю, в футере достучаться до фамилии можно следующим образом:
if __footer.receipt.header.client.__ok then
text = text .. ukm.adjustment("Фамилия:", __footer.receipt..client.sur_name, __width, " ") .. "\n";
end

Встречный вопрос: при всем этом выше описанном, в новых версиях перестала "портиться" краткая форма чека на вебе?
24.10.2012 04:22
Eugin_S
 


Как-то вот так, если вы про это. Не отображается баланс, должны быть еще две строки: "Предыдущий баланс" и "Текущий баланс".
24.10.2012 05:25
Eugin_S
 
Вот такой код у меня получается:

Код:
--Модуль печати накоплений

	if __footer.receipt.header.client.__ok then
		local acc_inrc = ukm.currency(0);

			for i=0, __footer.receipt.discounts:size() - 1 do
				local d = __footer.receipt.discounts:at(i);
				local di = __footer.receipt.items:getdiscountaccount(d);

					if di:is_initialized() then
						acc_inrc = acc_inrc + di:get();
					end
	end

	text = text .. ukm.adjustment("Фамилия:", __footer.receipt..client.sur_name, __width, " ") .. "\n";

	text = text .. "\n" .."Накопленные баллы " .. "на " .. ukm.ptime2str(ukm.get_sys_date(), "%H:%M %d.%m.%Y") .. "\n"
	.. ukm.adjustment("Начислено:", tostring(ukm.currency(-1) * acc_inrc), 48, " ") .. "\n";

	local account = ukm.map.string.struct_balance_info.iterator(ukm.get_client_open_account_info(__footer.receipt.header .client).account_balance_info);

	while account:next() do
		if account:first() == "Накопление бонусов" or
		account:first() == "Второй счет" then

			if account:second().account_type_id == -1 then
			text = text .. ukm.adjustment(account:first(), " Связь отсутсвует", 48," ") .. "\n";
			else

				if __footer.receipt.type == ukm.core.normal or __footer.receipt.type == ukm.core.restore_ then
				text = text .. ukm.adjustment("Предыдущий баланс:", tostring(account:second().balance), 48 ," ") .. "\n"
				.. ukm.adjustment("Текущий баланс:", tostring(account:second().balance - acc_inrc), 48 , " ") .. "\n"
				else
                    
                    text = text .. ukm.adjustment("Предыдущий баланс:", tostring(account:second().balance + acc_inrc), 48 ," ").. "\n" 
					.. ukm.adjustment("Текущий баланс:", tostring(account:second().balance), 48 , " ") .. "\n"
                end
			end
		end
	end                                                                                                       	
end

--Конец модуля печати накоплений
УКМ выдает ошибку:

Код:
09:35:25: 0x00004000: WARNING: debug#/usr/local/storage/home/ukm/build-rel-49_sp9-2012_08_02_11_23_22/ukm/libukm/ccore.cpp(4618) CheckForNotEndedReceipt: п÷я─п╦ п╦я│п©п╬п╩пҐп╣пҐп╦п╦ я│п╨я─п╦п©я┌п╟ п©я─п╬п╦пЇп╬я┬п╩п╟ п╬я┬п╦п╠п╨п╟: [string "receipt.lua"]:465: attempt to index global 'client' (a nil value)
Часовой пояс GMT +3, время: 22:55.

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