Jump to content

Изменение PDF по Товарный чек (сумма прописью и условие атрибутов)


Recommended Posts

Добрый день,

 

Обращаюсь, уже даже, взываю к помощи опытных специалистов!

Переделал invoice.tpl под товарный чек.

Но нужно реализовать два условия:

1. Вывод полей условий и подписи в зависимости от того, есть ли у товара в заказе конкретный атрибут.

2. Вывести сумму прописью.

 

Отступление: я только учусь, поэтому не пинайте сильно...))

 

Все проверки того, что выходит в счёт, провожу админке в Инвойсах по кн.Сгенерировать PDF. 

Версия Prest'ы 1.5.6.1

1. Есть счёт, в нём позиция. На этой позиции в таблице Order_Detail лежит определённый product_attribute_id, к примеру = 67. Мне нужно в условии {IF } сравнить атрибут в заказе со значениями. Например, у меня есть атрибуты 67, 65, 11, 22, 33. Я знаю, что под атрибуты 11, 22, 33 - должны выводиться одни условия, а для 65, 67 - другие.

Условие такого: {if product_attribute_id == (набор значений), то так

                           {else} вот так.

                           {/if}

 

(набор значений) - получить нужно SELECT'ом из БД.

 

Я голову сломал в этой головоломке, мне бы понять:

а) Саму переменную нужно вносить в class HTMLTemplateInvoice.php или же можно в самом шаблоне invoice.tpl её прописать, и задать ей значения из БД?

б) Если в php, то куда, в самом начале её объявить public $attr, к примеру?

в) Если в шаблоне, то, например, через {assign} или же блок {if} в котором будет что-то типа:

$query = 'SELECT  ***  FROM  *** WHERE ***;

$result=mysql_query($query); 
while($attr=mysql_fetch_array($result));
}
{if isset(($атрибут в заказе) && $атрибут в заказе == $r.result))}
г) Атрибут заказа, как его определить в IF, например, $order_detail.product_attribute_id?
 
 
2. Есть функция PHP на перевод суммы в сумму_прописью. Куда лучше эту функцию поместить и как правильно к ней обратиться?
Например, можно её в TOOLS засунуть, а в class HTMLTemplateInvoice.php вписать переменную, которая по этой функции берёт и обрабатывает сумму заказа, а потом в шаблоне просто вывести эту переменную в нужном месте {переменная_сумма_прописью}?
 
Ребята, хотя бы направление для мыслей задайте, а то информации много, структура не до конца понятна, и реально мозг отключается от кучи инфы, в которой нужно выделить суть...
 
Заранее благодарен!
Link to comment
Share on other sites

Насколько вижу там параметры каждого товара передаются через переменную $order_detail, нужно глянуть что она вообще выводит, например в шаблоне print_r сделать ей..

 

Или в пхп в файле где идет assign этой переменной $order_details:

file_put_contents('filename.txt', print_r($order_details, true));

Путь к файлу лучше сделать относительно корня сайта, к примеру: /var/www/user/data/www/site.ru/filename.txt

 

Там выведется массив, если в нем нету нужной инфы тогда нужно будет к mysql запросу добавить left join с определенным правилом чтобы подтянуть нужную информацию.

 

Перевод суммы на пропись:

 

http://habrahabr.ru/post/53210/

Link to comment
Share on other sites

Ой, спасибо! Функцию суммы прописью, я именно эту и нашёл давно, запихнул её в class -> HTMLTemplateInvoice

Но не знал, что именно делать, она там и лежала.

А Вы меня натолкнули на то, что всё должно быть очень просто, раз дали на неё ссылку...))

 

В общем, кому интересно:

Присвоил данным двум функциям тип: 

public static function num2str($num)...

public static function morph($n, $f1, $f2, $f5)...

 

Далее в шаблоне TPL указал:

{assign var=summp value=HTMLTemplateInvoice::num2str($order_invoice->total_paid_tax_incl)}
{$summp} //вывел ИТОГОВУЮ стоимость заказа прописью (текстом)
 
 
 
По вопросу №1, могу сказать:
Вставил в шаблон {file_put_contents('file.txt', print_r($order_details, true))}
Шаблон показал сумму 24740, что это, пока понять не могу... ощущение, что результат какой-то математики в таблице...))
 
Но ещё застрял здесь:
{$link = mysql_connect('localhost', 'pandeonrf', 'tswpu8g7')}
{if (!$link)}'КАРАУЛ'{/if}
{mysql_select_db('pandeonrf', $link)}
{if (!mysql_select_db('pandeonrf'))}'БАЗА ЕПТ'{/if}
{$result=mysql_query("SELECT  67,65,86,111  FROM  dual")}
{if (!$result)}'ТАБЛИЦА'{/if}
{$attr = mysql_fetch_array($result,MYSQL_BOTH)}
 
Подскажите, как преобразовать данные, как правильно вывести в виде перечня значений (массива)?
Я смотрю, как это делается в PHP, через while, но, млин, шаблон работает несколько иначе, со своими особенностями...))
 
Я хочу этот $attr затем сравнивать в IF со значением атрибута... когда определю, как этот атрибут сюда достать...) 
Можно, к примеру, второй SELEC'т сделать из таблицы, через id_order... вот думаю...
Link to comment
Share on other sites

×
×
  • Create New...