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


Доработка invoice.tpl Версии для печати.


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

#1 Арти

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

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

Отправлено 07 February 2014 - 12:55 PM

Доброго времени суток задался вопросом допилить файл invoice.tpl как хотел сделать с него готовую накладную по гос-стандартам.
С таблицей разобрался путем создание отдельной под себя и внедрение в нее переменных вот пример

<!-- Тест построения накладной --->
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td><div align="Center">{$smarty.const.ADMIN_PRODUCT_CODE}</div></td>
<td><div align="Center">{$smarty.const.ADMIN_PRODUCT_NAME}</div></td>
<td><div align="Center">{$smarty.const.TABLE_PRODUCT_QUANTITY}</div></td>
<td><div align="Center">{$smarty.const.CURRENT_PRICE}за 1 ШТ</div></td>
<td><div align="Center">{$smarty.const.STRING_SUM}</div></td>
</tr>
{section name=i loop=$orderContent}
<tr>
<td align="left" style="padding-right: 6px;">{$orderContent[i].name}{if $orderContent[i].eproduct_filename}{/if}</td>
<td align="left" style="padding-right: 4px;"> {$orderContent[i].name}
{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}</td>
<td align="Center">{$orderContent[i].Quantity}</td>
<td align="Center">{$orderContent[i].PriceToShow}</td>
<td align="Center">{$orderContent[i].PriceToShow}</td>
</tr>
{/section}
</table>
<!-- конец -->
получаю вот такое построение столбцов

Теперь не могу разделить ид товара и его название как я понимаю ани идут одним запросом к базе в файле invoice.php .
И не знаю как создать запрос чтоб выводилась цена за единицу товара ?

Пожалуйста помогите доработать накладную ! заранее спасибо !

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


  • 0

#2 badisoft

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

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

Отправлено 07 February 2014 - 01:29 PM

Теперь не могу разделить ид товара и его название

В данном месте они представляют собой уже единую текстовую строку. Разделить можно либо используя регулярные выражения (наиболее простой способ, прямо в шаблоне можно сделать), либо используя не поле name из таблицы ORDERED_CARTS_TABLE (как штатно сделано), а поле itemID из этой же таблицы для связи через таблицу SHOPPING_CART_ITEMS_TABLE с таблицей PRODUCTS_TABLE, откуда уже и брать раздельно имя товара (name) и код товара (product_code).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 Арти

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

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

Отправлено 07 February 2014 - 02:46 PM

Теперь не могу разделить ид товара и его название

В данном месте они представляют собой уже единую текстовую строку. Разделить можно либо используя регулярные выражения (наиболее простой способ, прямо в шаблоне можно сделать), либо используя не поле name из таблицы ORDERED_CARTS_TABLE (как штатно сделано), а поле itemID из этой же таблицы для связи через таблицу SHOPPING_CART_ITEMS_TABLE с таблицей PRODUCTS_TABLE, откуда уже и брать раздельно имя товара (name) и код товара (product_code).

Спасибо за отклик ) :) Вы не могли бы чуток по подробней помочь мне в решении данной задачи . и там нуждаюсь в выводе в столбце цена- за штуку значение в 1 экз его стоимость не зависимо сколько купили .
  • 0

#4 badisoft

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

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

Отправлено 07 February 2014 - 06:07 PM

Спасибо за отклик ) :) Вы не могли бы чуток по подробней помочь мне в решении данной задачи\

Чуток я уже помог. Дальше, уж извините, будет не помощь, а написание желаемого за Вас. Увы, я не настолько бескорыстен.

Задавайте вопросы. Если ответ для меня будет прост, как было выше, то я обязательно отвечу. Но не просите сделать что-то за Вас.

PS. Попробуйте таки что-то почитать по Смарти, по PHP, по HTML, по JS - даже я неоднократно давал ссылки на русскозычную документацию. Чудес не бывает. Первоклассник не сможет правильно сложить 2+2 если на разберется сначала со счетными палочками. Вы не сможете написать модуль вывода накладной на товар, если хотя бы чуть чуть... ээээ... тоже не разберетесь со счетными палочками :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 Арти

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

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

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

Спасибо за отклик ) :) Вы не могли бы чуток по подробней помочь мне в решении данной задачи\

Чуток я уже помог. Дальше, уж извините, будет не помощь, а написание желаемого за Вас. Увы, я не настолько бескорыстен.

Задавайте вопросы. Если ответ для меня будет прост, как было выше, то я обязательно отвечу. Но не просите сделать что-то за Вас.

PS. Попробуйте таки что-то почитать по Смарти, по PHP, по HTML, по JS - даже я неоднократно давал ссылки на русскозычную документацию. Чудес не бывает. Первоклассник не сможет правильно сложить 2+2 если на разберется сначала со счетными палочками. Вы не сможете написать модуль вывода накладной на товар, если хотя бы чуть чуть... ээээ... тоже не разберетесь со счетными палочками :).

Если я вас правильно понимаю то запрос нужно прописать в файле invoice.php ?
  • 0

#6 badisoft

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

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

Отправлено 09 February 2014 - 04:36 PM

Если я вас правильно понимаю то запрос нужно прописать в файле invoice.php ?

Нет, не правильно. Запрос вовсе не обязан быть именно в invoice.php, а может быть в вызываемой из него функции. В данном случае это функция ordGetOrderContent, где надо изменить запрос

$q = db_query( "select name, Price, Quantity, tax, load_counter, itemID from ".ORDERED_CARTS_TABLE." where orderID=".(int)$orderID );

на описанный мной выше, т.е. добавить два JOIN - к кросс-таблице itemID<->productID и, через нее, к таблице товаров.

PS. Повторюсь - это не самый простой способ. И не самый правильный, т.к. более сложный SQL-запрос в этой функции нужен только в одном месте, а используется она и в других местах, где усложненный запрос не нужен. Если есть уверенность, что код товара есть у ВСЕХ товаров, т.е. у ВСЕХ товаров есть предваряющая название товара подстрока с его кодом, заключенная в квадратные скобки, то сам бог велел сделать желаемое на уровне шаблона используя регулярные выражения. Выделить из строки отдельно то, что внутри квадратных скобок, отдельно остальное.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 NEViL

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

  • Download User
  • PipPipPip
  • 42 сообщений
Репутация: 4
Начинающий

Отправлено 11 February 2014 - 08:53 AM

У меня есть вариант, не совсем правильный... точнее совсем не правильный, но всё же может автор дальше продвинется... С помощью регулярных выражений как говорил badisoft

Этот код уберет всё кроме цифр... Если вы на 100% уверены что в названии товаров нет цифр, а в коде букв, то он вам подойдёт :D

{$orderContent[i].name|regex_replace:"/[^\d]/":""}

Как вытянуть код из квадратных скобок ещё не разобрался....

И вам же ещё нужно будет НДС, сверху или в том числе, если вы хотите что бы как накладная была... Я себе сделал в отдельном файлике (invoice_n.tpl), только не заморачивался с кодом...
  • 0

#8 badisoft

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

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

Отправлено 11 February 2014 - 12:27 PM

Как вытянуть код из квадратных скобок ещё не разобрался....

{assign var=string value="[код товара] название товара (вариант1,вариант2,вариант3)"}
{$string}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\\1"}<br>
{$string|regex_replace:"/^\[(.+?)\](.+?)$/":"\\2"}<br>

http://www.smarty.ne...gex.replace.tpl
http://ru.wikipedia....
http://www.php.su/fu...s/?preg-replace

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 badisoft

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

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

Отправлено 15 February 2014 - 11:45 PM

Этот код уберет всё кроме цифр..

Я умозрительно даже понять не могу, какую подстроку выловит регулярное выражение [^\d]. :)
Но уж точно не "все кроме цифр".

PS. По факту оно вылавливает первый символ строки вне зависимости от набора символов в строке, но вот почему - моих знаний регулярки не хватает.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#10 NEViL

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

  • Download User
  • PipPipPip
  • 42 сообщений
Репутация: 4
Начинающий

Отправлено 16 February 2014 - 08:24 AM

PS. По факту оно вылавливает первый символ строки вне зависимости от набора символов в строке, но вот почему - моих знаний регулярки не хватает.


По факту оно убирает всё кроме цифр... Вот на локалке пробую - всё так.... Имя товара с кодом "[159] Товар Товар Товар Товар 234-6" в результате получается - "1592346", а если без "^" - [\d],то наоборот - "[] Товар Товар Товар Товар -"
  • 0

#11 badisoft

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

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

Отправлено 16 February 2014 - 11:39 AM

По факту оно убирает всё кроме цифр...

Видимо, некорректную регулярку каждый обработчик интерпретирует по своему :).
Я проверял на онлайн-тестерах. Например, тут - http://planetcalc.ru/708/
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 NEViL

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

  • Download User
  • PipPipPip
  • 42 сообщений
Репутация: 4
Начинающий

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

По факту оно убирает всё кроме цифр...

Видимо, некорректную регулярку каждый обработчик интерпретирует по своему :).
Я проверял на онлайн-тестерах. Например, тут - http://planetcalc.ru/708/


даже по поиску гугля "регулярные выражения все кроме цифр" - выдаёт либо [^0-9] либо [^\d] ....
Ладно не будем флудить тему :) ;)
  • 0

#13 badisoft

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

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

Отправлено 16 February 2014 - 04:25 PM

даже по поиску гугля "регулярные выражения все кроме цифр" - выдаёт либо [^0-9] либо [^\d] ...

Все, разобрался. Просто не попадалась такая запись. Символ ^ в этом контексте означает инверсию, а не начало строки. Т.е. если [\d] или [0-9] это "любой цифровой символ", то [^\d] или [^9-0] это "любой не цифровой символ". Хотя, конечно, куда проще [\D], это то же самое.

Ладно не будем флудить тему

Врядли в этом есть какой-то флуд, т.к. и почти по теме, и интересно-полезно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)