Помощь Как отредактировать delivery_address

sergiykhd

Prestashop Expert
Регистрация
17 Апр 2013
Сообщения
1.230
Реакции
1.150
Не могу найти, где редактируется форма адреса доставки и инвойса, которая передается в PDF

{$delivery_address} и {$invoice_address}
 
внутри классов /classe/pdf/*
вызывается функция AddressFormat::generateAddress, она собирает в строку из отдельных полей

Кстати, там есть функция
PHP:
public static function generateAddressSmarty($params, &$smarty)
{
    return AddressFormat::generateAddress(
        $params['address'],
        (isset($params['patternRules']) ? $params['patternRules'] : array()),
        (isset($params['newLine']) ? $params['newLine'] : "\r\n"),
        (isset($params['separator']) ? $params['separator'] : ' '),
        (isset($params['style']) ? $params['style'] : array())
    );
}
её можно прямо в шаблоне вызывать и отдавать ей нужные параметры для форматирования
 
В нем нужно что-то типа такого вписать?

Код:
// Send an e-mail to customer (one order = one email)
                    if ($id_order_state != Configuration::get('PS_OS_ERROR') && $id_order_state != Configuration::get('PS_OS_CANCELED') && $this->context->customer->id) {
                        $invoice = new Address((int)$order->id_address_invoice);
                        $delivery = new Address((int)$order->id_address_delivery);
                        $delivery_state = $delivery->id_state ? new State((int)$delivery->id_state) : false;
                        $invoice_state = $invoice->id_state ? new State((int)$invoice->id_state) : false;

                        $data = array(
                        '{firstname}' => $this->context->customer->firstname,
                        '{lastname}' => $this->context->customer->lastname,
                        '{email}' => $this->context->customer->email,
                        '{delivery_block_txt}' => $this->_getFormatedAddress($delivery, "\n"),
                        '{invoice_block_txt}' => $this->_getFormatedAddress($invoice, "\n"),
                        '{delivery_block_html}' => $this->_getFormatedAddress($delivery, '<br />', array(
                            'firstname'    => '<span style="font-weight:bold;">%s</span>',
                            'lastname'    => '<span style="font-weight:bold;">%s</span>'
                        )),
                        '{invoice_block_html}' => $this->_getFormatedAddress($invoice, '<br />', array(
                                'firstname'    => '<span style="font-weight:bold;">%s</span>',
                                'lastname'    => '<span style="font-weight:bold;">%s</span>'
                        )),
                        '{delivery_company}' => $delivery->company,
                        '{delivery_firstname}' => $delivery->firstname,
                        '{delivery_lastname}' => $delivery->lastname,
                        '{delivery_address1}' => $delivery->address1,
                        '{delivery_address2}' => $delivery->address2,
                        '{delivery_city}' => $delivery->city,
                        '{delivery_postal_code}' => $delivery->postcode,
                        '{delivery_country}' => $delivery->country,
                        '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '',
                        //'{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile,
                        '{delivery_other}' => $delivery->other,
                        '{invoice_company}' => $invoice->company,
                        '{invoice_vat_number}' => $invoice->vat_number,
                        '{invoice_firstname}' => $invoice->firstname,
                        '{invoice_lastname}' => $invoice->lastname,
                        '{invoice_address2}' => $invoice->address2,
                        '{invoice_address1}' => $invoice->address1,
                        '{invoice_city}' => $invoice->city,
                        '{invoice_postal_code}' => $invoice->postcode,
                        '{invoice_country}' => $invoice->country,
                        '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '',
                        //'{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile,
                        '{invoice_other}' => $invoice->other,
                        '{order_name}' => $order->getUniqReference(),
                        '{date}' => Tools::displayDate(date('Y-m-d H:i:s'), null, 1),
                        '{carrier}' => ($virtual_product || !isset($carrier->name)) ? Tools::displayError('No carrier') : $carrier->name,
                        '{payment}' => Tools::substr($order->payment, 0, 32),
                        '{products}' => $product_list_html,
                        '{products_txt}' => $product_list_txt,
                        '{discounts}' => $cart_rules_list_html,
                        '{discounts_txt}' => $cart_rules_list_txt,
                        '{total_paid}' => Tools::displayPrice($order->total_paid, $this->context->currency, false),
                        '{total_products}' => Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? $order->total_products : $order->total_products_wt, $this->context->currency, false),
                        '{total_discounts}' => Tools::displayPrice($order->total_discounts, $this->context->currency, false),
                        '{total_shipping}' => Tools::displayPrice($order->total_shipping, $this->context->currency, false),
                        '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $this->context->currency, false),
                        '{total_tax_paid}' => Tools::displayPrice(($order->total_products_wt - $order->total_products) + ($order->total_shipping_tax_incl - $order->total_shipping_tax_excl), $this->context->currency, false));
 
не понял?
 
мне нужно убрать в pdf (инвойсе и тр.накладной) поле с телефоном.
в самом шаблоне стоит {$invoice_address} и {$delivery_address}
 
Если только в pdf, то можно так:
в таблицу ps_configuration добавить параметр
PS_INVCE_INVOICE_ADDR_RULES и PS_INVCE_DELIVERY_ADDR_RULES
со значением {"avoid":["phone","phone_mobile"]}
потом обязательно очистить кеш в админке и попробовать, должно сработать
 
Спасибо, решение сработало! Не подскажешь еще, как в шаблоне письма order_conf.html тоже убрать телефон?
В шаблоне письма стоит переменная : {delivery_block_html} и {invoice_block_html} - где они редактируются?
 
Это в classes/PaymentModule.php внутри функции validateOrder править
PHP:
'{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile,
'{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile,
на
PHP:
'{delivery_phone}' => '',
'{invoice_phone}' => '',
но правильней делать это через overrides
 
Это в classes/PaymentModule.php внутри функции validateOrder править
PHP:
'{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile,
'{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile,
на
PHP:
'{delivery_phone}' => '',
'{invoice_phone}' => '',
но правильней делать это через overrides
я их комментировал - чего-то не сработало.
 
А внутри {delivery_block_html} тогда что в этой функции validateOrder?
 
Назад
Сверху