Добавить переменные в уведомления


#1

На старой версии администратору приходило письмо с банковскими данными, которые указывал клиент при оформлении заказа. Сделано это было примерно так:

{if $order_info}

{assign var="order_header" value=__("invoice")}

{if $status_settings.appearance_type == "I" && $order_info.doc_ids[$status_settings.appearance_type]}
    {assign var="doc_id_text" value="{__("invoice")} #`$order_info.doc_ids[$status_settings.appearance_type]`"}
{elseif $status_settings.appearance_type == "C" && $order_info.doc_ids[$status_settings.appearance_type]}
    {assign var="doc_id_text" value="{__("credit_memo")} #`$order_info.doc_ids[$status_settings.appearance_type]`"}
    {assign var="order_header" value=__("credit_memo")}
{elseif $status_settings.appearance_type == "O"}
    {assign var="order_header" value=__("order_details")}
{/if}

<table cellpadding="0" cellspacing="0" border="0" width="100%" class="main-table" style="direction: {$language_direction}; height: 100%; background-color: #f4f6f8; font-size: 12px; font-family: verdana, helvetica, arial, sans-serif;">
<tr>
    <td align="center" style="width: 100%; height: 100%;">
    <table cellpadding="0" cellspacing="0" border="0" style="direction: {$language_direction}; width: 602px; table-layout: fixed; margin: 24px 0 24px 0;">
    <tr>
        <td style="background-color: #ffffff; border: 1px solid #e6e6e6; margin: 0px auto 0px auto; padding: 0px 44px 0px 46px; text-align: left;">
{if $order_info.payment_info.company_payment_details  || $order_info.payment_info.inn_customer}
        <p>• Реквизиты для выставления счета <br></p><p style="font-size: 10px; font-family: verdana, helvetica, arial, sans-serif;">
            {if $order_info.payment_info.company_payment_details}{$order_info.payment_info.company_payment_details|nl2br nofilter}{/if}
            {if $order_info.payment_info.organization_customer}{$order_info.payment_info.organization_customer|nl2br nofilter}<br>{/if}
            {if $order_info.payment_info.inn_customer}{$order_info.payment_info.inn_customer|nl2br nofilter}<br>{/if}
            {if $order_info.payment_info.address}{$order_info.payment_info.address|nl2br nofilter}<br>{/if}
            {if $order_info.payment_info.zip_postal_code}{$order_info.payment_info.zip_postal_code|nl2br nofilter}<br>{/if}
            {if $order_info.payment_info.phone}{$order_info.payment_info.phone|nl2br nofilter}<br>{/if}
            {if $order_info.payment_info.bank_details}{$order_info.payment_info.bank_details|nl2br nofilter}{/if}

</p><p>•</p>
{/if}

А выглядело в письме так:

Screenshot_154

В новой версии, если использовать новый режим редактирования уведомлений, нужных полей у заказа не вижу. Переходить на старый способ редактирования шаблонов не очень хочется. Лежит то, что нужно, как я понимаю, в таблице cscart_order_data в записи с типом P в закодированном вид:

Подскажите, люди добрые, как это вытащить в переменные, чтоб вставить в письмо.


#2

В уведомлении есть переменная order_info. Просто почему-то она не указана в списке переменных слева.


#3

Вставьте в шаблон уведомления следующий код и посмотрите, есть ли нужные вам данные с реквизитами:

{% for key, value in order_info.payment_info %}
 {{ key }}: {{ value }}
{% endfor %}

#4

Спасибо, добрый человек! Есть кое-что :slight_smile: В документ почему-то не подтягивается, а просто в уведомлении видно то, что нужно :ok_hand:


#5

А вложенных массивов там нет?


#6

Если значение какого-то элемента массива тоже массив, то будет написано Array. Значения элементов такого вложенного массива тоже можно просмотреть циклом for


#7

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


#8

Я не знаю, как это сделать в TWIG, который используется в уведомлениях. На PHP это просто делается функцией print_r().


#9

Вставил код в шаблон в разных местах - не могу найти “новые переменные”, ни в тестовом письме, ни в боевом, ни в просмотре кода, сбрасывал даже кеш сайта…

Я что-то делаю не так?


#10

Видимо, да. Покажите скриншот, куда вы вставили код.


#11

Статус заказа: Обработка, уведомление отправляемое администратору (пользователю тоже пробовал)

В детали заказа, через Html редактор:


#12
{% for key, value in order_info %}
 {{ key }}: {{ value }}
{% endfor %}

А если так?


#13

Тоже самое…( Что в теле, что там, ни в предпросмотре ни в письме нет


#14

Вставил в уведомления администратору, статус заказа «Отправлен»

Получаю вот такое

Screenshot_164

У меня там некоторые блоки еще переделаны, собственно таблица вот:

<table>
  <tr>
    <td style="padding:0; font-weight:600;">
      {{ __("organization_customer") }}
    </td>
    <td style="padding:0;">
      {{ order_info.payment_info.organization_customer }}
    </td>
  </tr>
  <tr>
    <td style="padding:0; font-weight:600;">
      {{ __("address") }}
    </td>
    <td style="padding:0;">
      {{ order_info.payment_info.zip_postal_code }}, {{ order_info.payment_info.address }}
    </td>
  </tr>
  <tr>
    <td style="padding:0; font-weight:600;">
      {{ __("phone") }}
    </td>
    <td style="padding:0;">
      {{ order_info.payment_info.phone }}
    </td>
  </tr>
  <tr>
    <td style="padding:0; font-weight:600;">
      {{ __("inn_customer") }}
    </td>
    <td style="padding:0;">
      {{ order_info.payment_info.inn_customer }}
    </td>
  </tr>
  <tr>
    <td style="padding:0; font-weight:600;">
      {{ __("bank_details") }}
    </td>
    <td style="padding:0;">
      {{ order_info.payment_info.bank_details }}
    </td>
  </tr>  
</table>

#15

После нескольких сбросов кеша письмо с переменными пришло, но проблема теперь новая - туда не передаются данные плательщика…) Только основные данные из заказа


#16

Вы что и откуда хотите передать? У меня была задача передать то, что заполняет юрик при выписке счета в заказе, это не данные заказчика, а то, что обведено красным :slight_smile:


#17

Вроде как тоже самое, при заказе галочка “я оформляю как юр лицо” и новые поля из стандартного модуля




#18

А теперь сделайте первоначальный вариант с payment_info и очистите кэш (его лучше вообще отключить на тестовом сайте)


#19

Пустота… может у меня другой массив используется тут?

Класс в редакторе кода называется так: block-header-icon bmicon-lite-checkout-customer-billing

А заполненные данные в профиле отображаются как “адрес плательщика”


#20

Похоже, не то же самое :slight_smile:

У меня эти поля заполняются только при выборе способа оплаты по счету. И это не адрес плательщика и все такое.