Автор Тема: И снова к вопросу номера телефона клиента в счете  (Прочитано 1234 раз)

18 Июль 2016, 16:27:05
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Никак не могу найти решение - не подставляется номер телефона клиента в счет pdf.
Локализация и страны - там все настроено и phone и phone_mobile
В админке все работает и номера телефонов видны. но в счет они не попадают.
думал - строчек в счете не хватает - как нет пробовал текстовую строку в адресе вставить и она появляется.
поменял страну в тестовом заказе - не подставляются в счет номера телефонов.

В чем может быть проблема?
18 Июль 2016, 16:56:00
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
В стране нужно указывать шаблон полей заказа. В PDF счете вывод полей адреса по заданному шаблону
$delivery_address = new Address((int)$this->order->id_address_delivery);
$formatted_delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '<br />', ' ');
18 Июль 2016, 17:36:47
Ответ #2
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
в странах указаны поля формата включая  phone  и phone_mobile

строки в файле HTMLTemplateInvoice.php совпадают с ответом выше
18 Июль 2016, 17:54:54
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В дефолтном prestashop номер телефона виден в счетах.
У вас изменены шаблоны pdf, классы или для pdf установлен доп. модуль.
Переменная $deliveryAddressPatternRules получает данные из сохранненго формата адреса страны.
Вам нужно проверить эту переменную, какой формат адреса используется. Сделайте вывод в лог всех переменных при запуске скрипта генерации счета.
18 Июль 2016, 17:59:25
Ответ #4
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как это осуществить?
пока нашел только список измененных файлов:

classes/pdf/HTMLTemplateOrderSlip.php
pdf/footer.tpl
pdf/header.tpl
pdf/invoice.tpl
pdf/order-slip.tpl

Адрес, страна, индекс, дом, улица, получатель - все отражается правильно в pdf. Но номеров телефонов нет...
19 Июль 2016, 10:05:11
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вам нужно проверить эту переменную, какой формат адреса используется. Сделайте вывод в лог всех переменных при запуске скрипта генерации счета.
PrestaShop's developer tools
Prestashop FAQ: Как включить показ ошибок и профилирование
Цитировать
p() и d()
Разработчики PHP используются регулярно print_r($var) для того, чтобы знать, что содержит $var.
В PrestaShop созданы свои методы p() и d(), котрые являются обертками print_r ().
р () возвращает содержимое переменной, d () такой же метод с добавлением die('END').
Кроме того, в PrestaShop есть методы ppp() and ddd(), которые представляют собой соответственно псевдонимами p() и d(). Они работают точно так же. Эти методы отладки не доступны по умолчанию. Для их активации необходимо включить _PS_MODE_DEV_.
21 Июль 2016, 08:22:44
Ответ #6
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
к сожалению моих мозгов не хватает....
может кто сможет помочь?
21 Июль 2016, 09:56:51
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблоне/pdf/invoice.addresses-tab.tpl проверяте переменную $delivery_address. Можно использовать стандартные функции smarty.
Находите
{$delivery_address}Меняете
<pre>{$delivery_address|print_r}</pre>Проверяте вывод.
21 Июль 2016, 10:26:45
Ответ #8
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
не помогло.
оба телефона (обычный и домашний) в админке видны везде, а в pdf в счет передается весь адрес, кроме них.....
21 Июль 2016, 10:49:53
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
21 Июль 2016, 11:01:31
Ответ #10
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
21 Июль 2016, 11:11:46
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблоне/pdf/invoice.addresses-tab.tpl проверяте переменную $delivery_address. Можно использовать стандартные функции smarty.
Находите
{$delivery_address}Меняете
<pre>{$delivery_address|print_r}</pre>Проверяте вывод.
При таком коде вывод будет другим.
1. У вас переопределены шаблоны pdf. Посмотрите в папке /override/ есть переопределения классов и шаблонов pdf.
2. Вы смотрите старый счет. Нужно очистит кеш, удалить счета заказа, создать новый счет.
21 Июль 2016, 12:01:54
Ответ #12
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
сейчас строка такая: <pre>{$delivery_address|print_r}</pre>
кеш, естественно, был почищен. не помогло.

про переопределения шаблонов и /override/ - не понял там только index -ные файлы
21 Июль 2016, 12:12:16
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
сейчас строка такая: <pre>{$delivery_address|print_r}</pre>
кеш, естественно, был почищен. не помогло.
Это и не поможет, так как используется для отладки. Этот код нужен только для тестирования, потом его нужно удалить. Такой код выводит данные из массива delivery_address. Сразу видно что находится в массиве. Формат вывода данных будет не такой как на вашем скрине. У вас или другой шаблон для счетов, или вы смотрите старую версию счета. 
21 Июль 2016, 12:53:06
Ответ #14
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
поменял в админке тип счета с invoice на invoiceb2b - и в счете снова не появился телефон.