Prestashop 1.7 добавляет новые переменные в электронную почту total_shipping_tax_excl - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно указать стоимость доставки без учета налогов в электронном подтверждении. Я внес изменения:

  1. в переводе электронной почты order_conf Я положил {total_shipping_tax_excl}

  2. Я сделал переопределение в /override/classes/order/OrderHistory.php

    class OrderHistory extends OrderHistoryCore
    {   
        public function sendEmail($order, $template_vars = false)
        {
            $data = array(
                    '{total_shipping_tax_excl}' => Tools::displayPrice($order->total_shipping_tax_excl, $this->context->currency, false)
                );
            //die (print_r($data,true));    
            if ($template_vars) {
                    $data = array_merge($data, $template_vars);
                }
    
            return parent::sendEmail($order, $data);
        }
    }
    

Переопределение работает - если я сделаю die (print_r ($ data, true)); Я вижу, что правильное значение находится в ключе total_shipping_tax_excl. Электронный перевод работает - я вижу новую строку. Но когда электронное письмо отправлено, у меня есть просто строка {total_shipping_tax_excl}.

Что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Энту был прав. Первая проблема заключалась в том, что электронное письмо с подтверждением генерируется в классах / PaymentModule.php, а не в /classes/order/OrderHistory.php. Решение - переопределить оригинальный файл или подождать. Я сделал запрос на извлечение: https://github.com/PrestaShop/PrestaShop/issues/11396, и chage был принят, поэтому {total_shipping_tax_excl} и {total_shipping_tax_incl} будут в 1.7.6

0 голосов
/ 29 ноября 2018

Я также редактировал шаблон электронной почты для подтверждения заказа.Вам нужно отредактировать PaymentModule.php, чтобы он работал.Вы также можете установить тему письма прямо из этого файла.

Вокруг строки 756

// 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);
...