1 Отредактировано Sergey T. (17.04.2015 15:25:39)

Тема: Как подложить вместо квитанции ПД-4 свой документ

Собственно вопрос в заголовке. При клике на "квитанцию" выводится форма ПД-4, могу ли я вместо нее сделать ссылку на pdf документ например?

http://i48.fastpic.ru/big/2015/0417/fe/83e9fef4e2c3c50aa0452983bef735fe.jpg

2 Отредактировано Александр (17.04.2015 15:28:54)

Re: Как подложить вместо квитанции ПД-4 свой документ

Можно, это же простой шаблон, но вопрос в другом. А вы как PDF документ делать будете? Сами сканировать?

3 Отредактировано Sergey T. (17.04.2015 15:33:03)

Re: Как подложить вместо квитанции ПД-4 свой документ

У нас просто информация об оплате постоянная и изложена на 1 страничке pdf. Его не нужно сканировать. Не могу найти место в шаблоне где по клику на "квитанцию" вставить ссылку на pdf.

4 Отредактировано Александр (17.04.2015 16:45:10)

Re: Как подложить вместо квитанции ПД-4 свой документ

Всё просто. Судя по всему у Вас молодёжная тема оформления и это шаблон со списком заказов. Если да, то тогда смотрим в файл:

/templates/fashion ну или Ваша тема/moduleview/shop/myorders.tpl

Ищем в коде строку:

{if $order->getPayment()->hasDocs()}
     {assign var=type_object value=$order->getPayment()->getTypeObject()}
     {foreach $type_object->getDocsName() as $key=>$doc}
     <a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
     {/foreach}            
{/if}

Здесь перебираются документы, которые служат для вывода на печать.

Поэтому ставим проверку на имя документа и вставляем свой код:

{foreach $type_object->getDocsName() as $key=>$doc}
     <pre>
      {var_dump($doc)}
     </pre>
     {if $doc.title!="квитанция"}
     <a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
     {else}
          Сюда вставляем свой код
     {/if}
{/foreach}    

5

Re: Как подложить вместо квитанции ПД-4 свой документ

Тема у меня классическая, но как я понимаю, все по аналогии. Попробую, отпишусь. Спасибо!

Re: Как подложить вместо квитанции ПД-4 свой документ

Да, всё по аналогии.

7

Re: Как подложить вместо квитанции ПД-4 свой документ

Воевал, воевал и что-то не выходит никак, на странице со списком заказов следующая ошибка.

Fatal error: Call to a member function getDocsName() on a non-object in C:\OpenServer\domains\testingtesting2.test\core\smarty\sysplugins\smarty_internal_templatebase.php(165) : eval()'d code on line 168

брал вот этот кусок:

  {if $order->getPayment()->hasDocs()}
                {assign var=type_object value=$order->getPayment()->getTypeObject()}
                {foreach from=$type_object->getDocsName() key=key item=doc}
                <a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
                {/foreach}            
            {/if}

и заменял его на этот:

{foreach $type_object->getDocsName() as $key=>$doc}
     <pre>
      {var_dump($doc)}
     </pre>
     {if $doc.title!="квитанция"}
     <a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
     {else}
          Сюда вставляем свой код
     {/if}
{/foreach}    

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

8 Отредактировано Александр (23.04.2015 12:56:54)

Re: Как подложить вместо квитанции ПД-4 свой документ

Вы взяли весь кусок, но забыли о проверках:

{if $order->getPayment()->hasDocs()} //Проверяет наличие прикреплённых к заказу документов
  
{/if}

Ваша ошибка говорит о том, что для данного документа не было прикреплено ни одного документа и вы пытаетесь перебрать обратиться к переменной как к объекту коим он не является.

Т.е. забыли:

//Строка присваивает переменной объект класса типа оплаты
{assign var=type_object value=$order->getPayment()->getTypeObject()}

Поэтому ругалось, что типа переменная не объект, а просто null (Посмотреть можно с помощью {var_dump($type_object)}).

Полный код будет выглядеть так:

{if $order->getPayment()->hasDocs()} //Проверяем, есть ли прикреплённые документы у заказа. В нашем случае это ПД-4
     {assign var=type_object value=$order->getPayment()->getTypeObject()} //Подгружам объект типа оплаты (ПД-4 в нашем случае или другой тип оплаты, в зависимости от того что выбрал пользователь)
     {foreach $type_object->getDocsName() as $key=>$doc} //Получаем с помощью метода ->getDocsName() документы  и перебираем массив
        <pre>
        {var_dump($doc)}
        </pre>
        {if $doc.title!="квитанция"}
            <a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
        {else}
            Сюда вставляем свой код
        {/if}
     {/foreach}   
{/if}

Ввел Вас немного в заблуждением отсутствием в коде данных строк.

Если хотите лучше разбираться в синтаксисе Smarty, то вот документация

9

Re: Как подложить вместо квитанции ПД-4 свой документ

Большое спасибо за развернутый ответ!

Re: Как подложить вместо квитанции ПД-4 свой документ

Не за что