Число знаков после запятой в e-mail (пропали копейки)

Здравствуйте.

Появилась проблема после последнего обновления 3.10.3 > 3.10.4 > 3.11.1

Модулем перекрывается стандартный invoice.tpl. Чтобы убедиться, что он подхватывается верно даже вставил в него строку “bbb”, тут все нормально.

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


Как вернуть копейки и валюту обратно? Вообще почему это происходит?

Upd: убрал свой модуль вообще. Со стандартным шаблоном письма та же самая петрушка. Дело не в модуле.

Upd2: как удалось выяснить проблема кроется где-то около функции fn_format_rate_value или другой, которая вызывает ее. Пока удалось решить только “в лоб” - в хуке format_rate_value этой функции жестко прописать для $decimals = 2. Не думаю, что это правильно, но пока нет ответа от техподдержки это работает.

Похожая ситуация только не с копейками (они у меня отключены в настройках валюты), а с Тысячным разделителем - у меня время от времени появляется запятая после тысячи хотя в настройках валюты это поле пустое, чтобы убрать разделитель приходится его с начало ставить, потом убирать.

На буржуйском форуме про похожую ошибку написали. Видимо, все-таки баг

Вы используете старые шаблоны писем?

Да, старые

Разработчики уже работают над решением. Отдадим патч в этой теме, когда будет готово.

Спасибо. Техподдержка уже прислала diff.

diff --git a/app/Tygh/Notifications/DataProviders/OrderDataProvider.php b/app/Tygh/Notifications/DataProviders/OrderDataProvider.php
index 40fa8b7e68..14e5e8bfe3 100644
--- a/app/Tygh/Notifications/DataProviders/OrderDataProvider.php
+++ b/app/Tygh/Notifications/DataProviders/OrderDataProvider.php
@@ -265,8 +265,8 @@ protected function getSecondaryCurrency()
     {
         $secondary_currency = '';
 
-        if (!empty($order_info['secondary_currency']) && isset($currencies[$order_info['secondary_currency']])) {
-            $secondary_currency = $order_info['secondary_currency'];
+        if (!empty($this->order['secondary_currency']) && isset($this->currencies[$this->order['secondary_currency']])) {
+            $secondary_currency = $this->order['secondary_currency'];
         }
 
         return $secondary_currency;
1 лайк