Перейти к содержимому


Доработка invoice.tpl.html нумерация позиций товара

накладная для печати

  • Вы не можете ответить в тему
Сообщений в теме: 9

#1 Арти

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 1
Начинающий

Отправлено 07 November 2014 - 03:26 PM

Доброго времени суток !

Столкнулся с такой задачкой ,отредактировал файл накладная для печати " invoice.tpl.htm l"
не могу сообразить как правильно встроить счетчик строк в описание заказа при печате накладной и как его правильно написать !

<table class="adn"><tr><td class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr><tr><td class="se5"></td></tr></table>
<table class="adn">
<tr class="lineb">
<!-- создаем столбец нумерации--->

<td align="left">№</td>


<td align="left">{$smarty.const.ADMIN_PRODUCT_NAME}</td>
<td align="left">{$smarty.const.TABLE_PRODUCT_QUANTITY}</td>
<td align="left">Цена</td>
<td align="right">{$smarty.const.TABLE_PRODUCT_COST_WITHOUT_TAX}&nbsp;</td>
</tr><tr><td height="3" colspan="3"></td></tr>
{section name=i loop=$orderContent}

<tr class="liney">

<!-- вывод нумерации ячеек по релевантности -->

<td align="left" style="padding-right: 4px;">1</td>


<td align="left" style="padding-right: 4px;">{$orderContent[i].name}

{if $orderContent[i].eproduct_filename}
{if $completed_order_status}
{if $completed_order_status == $order.statusID}
<br><a href='{$smarty.const.ADMIN_FILE}?do=get_file&amp;getFileParam={$orderContent[i].getFileParam}' class="sin">{$smarty.const.ADMIN_DOWN_LOAD} ({$orderContent[i].file_size} MB)</a>
{if $orderContent[i].day_count_remainder > 0}
- {$smarty.const.ADMIN_EPRODUCT_AVAILABLE_DAYS}
{$orderContent[i].day_count_remainder}
{$smarty.const.ADMIN_DAYS}
{if $orderContent[i].load_counter_remainder != 0}
,
{$smarty.const.ADMIN_REMANDER_EPRODUCT_DOWNLOAD_TIMES}
{$orderContent[i].load_counter_remainder}
{$smarty.const.ADMIN_DOWNLOAD_TIMES}
{/if}
{/if}
{/if}
{/if}
{/if}</td>
<td align="left" style="padding-right: 4px;">{$orderContent[i].Quantity}</td>
<td align="right" nowrap="nowrap">{$orderContent[i].PriceToShow}</td>
<td align="right" nowrap="nowrap">{$orderContent[i].PriceToShow}</td>
</tr><tr><td colspan="3" class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr>
{/section}
</table>



есть вариант

[sql]
select @v:=0;
select *, @v:=@v+1 as numb from ... ...
[/sql]


такой

<script>
var count=1
var obj=document.getElementById('tbl')
obj.innerHTML=obj.innerHTML.replace(/\n/gm,'').replace(/(<.*?tr.*?>.*?<.*?td.*?>)/ig,rpaste)
function rpaste(str)
{return str+count++}
</script>



Подскажите пожалуйста как реализовать эту идею !
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 November 2014 - 04:04 PM

http://www.smarty.ne...perty.iteration
там и пример есть.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 Арти

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 1
Начинающий

Отправлено 07 November 2014 - 04:53 PM

http://www.smarty.ne...perty.iteration
там и пример есть.


Спасибо за подсказку но я долек от смарти и php \ я с трудом хтмл знаю )
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 November 2014 - 09:09 PM

Спасибо за подсказку но я долек от смарти и php \ я с трудом хтмл знаю

Я привел ссылку на документацию по конкретному элементу {section}. Если Вы не можете понять документацию, где приведен пример вывода последовательной нумерации, то какого же тогда совета Вы ждете?

В шаблоне invoice.tpl.html есть цикл
{section name=i loop=$orderContent}.....{/section}
В любом месте этого цикла вместо {$smarty.section.i.iteration} выведется текущая итерация (номер строки с товаром начиная с единицы, если так понятнее).
  • 2
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 Арти

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 1
Начинающий

Отправлено 10 November 2014 - 10:46 AM

Спасибо за подсказку но я долек от смарти и php \ я с трудом хтмл знаю

Я привел ссылку на документацию по конкретному элементу {section}. Если Вы не можете понять документацию, где приведен пример вывода последовательной нумерации, то какого же тогда совета Вы ждете?

В шаблоне invoice.tpl.html есть цикл
{section name=i loop=$orderContent}.....{/section}
В любом месте этого цикла вместо {$smarty.section.i.iteration} выведется текущая итерация (номер строки с товаром начиная с единицы, если так понятнее).

:) Спасибо все получилось ))))
  • 0

#6 Арти

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 1
Начинающий

Отправлено 12 February 2015 - 10:53 AM

Ступенькой далее столкнулся с еще одной проблемкой ( В данном случае реализовал более менее что то похожее на накладную для печати , но вот незадача не смог отсоединить артикул от названия товара . прилагаю фото как это выглядит (

Решение где то рядом как я понимаю надо написать или взять готовую переменную смарти с прайс листа ?
Сильно не ругать я новичек в этом деле )
<table style="font-size: 12px;" border="1" cellpadding="3" cellspacing="0" width="100%">
<tr>
<td align="center"><strong>&nbsp;№&nbsp;</strong></td>
<td align="center"><strong>&nbsp;&nbsp;{$smarty.const.ADMIN_PRODUCT_NAME}&nbsp;&nbsp;</strong></td>
<td align="center"><strong>&nbsp;&nbsp;Кол-во&nbsp;&nbsp;</strong></td>
<td align="center"><strong>&nbsp;&nbsp;&nbsp;&nbsp;Цена &nbsp;&nbsp;&nbsp;&nbsp;</strong></td>
<td align="center"><strong>&nbsp;&nbsp;{$smarty.const.TABLE_PRODUCT_COST_WITHOUT_TAX}&nbsp;&nbsp;</strong></td>
</tr>
{section name=i loop=$orderContent}
<!-- считаем строчки-->
<tr>
<td align="center" width="30" height="25">{$smarty.section.i.iteration}</td>

<td align="left">
{$orderContent[i].name}

{if $orderContent[i].eproduct_filename}
{if $completed_order_status}
{if $completed_order_status == $order.statusID}
<br><a href='{$smarty.const.ADMIN_FILE}?do=get_file&amp;getFileParam={$orderContent[i].getFileParam}' class="sin">{$smarty.const.ADMIN_DOWN_LOAD} ({$orderContent[i].file_size} MB)</a>
{if $orderContent[i].day_count_remainder > 0}
- {$smarty.const.ADMIN_EPRODUCT_AVAILABLE_DAYS}
{$orderContent[i].day_count_remainder}
{$smarty.const.ADMIN_DAYS}
{if $orderContent[i].load_counter_remainder != 0}
,
{$smarty.const.ADMIN_REMANDER_EPRODUCT_DOWNLOAD_TIMES}
{$orderContent[i].load_counter_remainder}
{$smarty.const.ADMIN_DOWNLOAD_TIMES}
{/if}
{/if}
{/if}
{/if}
{/if}</td>
<td align="center">{$orderContent[i].Quantity}</td>
<td align="center">{$orderContent[i].PriceOne}</td>
<td align="center">{$orderContent[i].PriceToShow}</td>
</tr>
{/section}
</table>


Есть еще один нюанс при печати внизу накладной выходит строчка http://сайт-ваш.ру/a...std&orderID=911 как её убрать ?

Заранее спасибо !

Прикрепленные файлы


  • 0

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 February 2015 - 01:04 PM

но вот незадача не смог отсоединить артикул от названия товара

Если решать на уровне шаблона, то можно воспользоваться регулярными выражениями для выделения нужной части строки.
Пример, как это можно сделать:
{assign var=string value="[код товара] название товара (вариант1,вариант2,вариант3)"}
{$string}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\$1"}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\$2"}<br>
Также можно решить и прямо на этапе формирования этой строки.
Формируется она кодом

$productComplexName = "[".$product["product_code"]."] ".$productComplexName;

который для быстрой регистрации находится в order_functions.php, а для нормальной в cart_functions.php, т.е. одинаково исправить придется в двух местах.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 Арти

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 1
Начинающий

Отправлено 13 February 2015 - 01:08 PM

но вот незадача не смог отсоединить артикул от названия товара

Если решать на уровне шаблона, то можно воспользоваться регулярными выражениями для выделения нужной части строки.
Пример, как это можно сделать:
{assign var=string value="[код товара] название товара (вариант1,вариант2,вариант3)"}
{$string}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\$1"}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\$2"}<br>
Также можно решить и прямо на этапе формирования этой строки.
Формируется она кодом

$productComplexName = "[".$product["product_code"]."] ".$productComplexName;

который для быстрой регистрации находится в order_functions.php, а для нормальной в cart_functions.php, т.е. одинаково исправить придется в двух местах.


Благодарю за ответ будем дорабатывать !
  • 0

#9 Арти

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 1
Начинающий

Отправлено 16 February 2015 - 02:54 PM

но вот незадача не смог отсоединить артикул от названия товара

Если решать на уровне шаблона, то можно воспользоваться регулярными выражениями для выделения нужной части строки.
Пример, как это можно сделать:
{assign var=string value="[код товара] название товара (вариант1,вариант2,вариант3)"}
{$string}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\$1"}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\$2"}<br>
Также можно решить и прямо на этапе формирования этой строки.
Формируется она кодом

$productComplexName = "[".$product["product_code"]."] ".$productComplexName;

который для быстрой регистрации находится в order_functions.php, а для нормальной в cart_functions.php, т.е. одинаково исправить придется в двух местах.


Благодарю за ответ будем дорабатывать !


Что то не смог разобраться можно еще подсказку по решению данной задачи (
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 February 2015 - 09:18 PM

Что то не смог разобраться можно еще подсказку по решению данной задачи

Можно.
Берете вот тот код, где четыре строки.
Сохраняете его в подкаталог блоков (core/tpl/user/шаблон/blocks) под именем, скажем, test.tpl.html и подключаете в админке как верхний или нижний блок, без разницы. Смотрите на код (на эти четыре строки) и на результат (то, что видите при показе блока). Думаете. Если не помогает, то я уж и не знаю, что тут можно подсказать :).

PS. Третья строка этого кода выделяет из заданной в первой строке смарти-переменной $string код товара. Точнее, то, что внутри квадратных скобок. Ну и выводит его. Четвертая строка выделяет (и выводит) то, что находится после квадратных скобок. Если код есть во всех товарах, то этого достаточно для рисования "красивой" накладной с разными колонками "код" и "товар". Или, как минимум, без кодов товара.

Если даже так не понятно, то не теребите известный орган, а заказывайте переделку за деньги. :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)