Commerce Email разделители сотен и тысяч. Кам изменить?

Главные вкладки

Аватар пользователя gleb13 gleb13 8 октября 2014 в 20:59

Подскажите как изменить разделители сотен и тысяч. В рассылке осуществляемой модулем Commerce Email

 

Товар                                                                                Количество    Цена (UAH)
Барвник харчовий "Червоний" 5г                                         113.00          0.75
RANSAR "GP1" особливий зелений чай в банці 400г                20.00      108.00

 

                                                                                      В общем:    2,244.75
                                                                                           Всего:    2,244.75

 

В самом модуле Drupal Commerce есть возможность настраивать разделители тысяч и целых чисел, там все настроил в файле commerce.currency.inc

 

вот кусок кода:

<?php
      
'UAH' => array(
      
'code' => 'UAH',
      
'symbol' => 'грн.',
      
'name' => t('Ukrainian Hryvnia'),
      
'numeric_code' => '980',
      
'thousands_separator' => ' ',
      
'decimal_separator' => ',',
      
'symbol_placement' => 'after',
      
'code_placement' => 'hidden',
      
'minor_unit' => t('Kopiyka'),
      
'major_unit' => t('Hryvnia'),
    ),
?>

А в модуле Сommerce Email нет такой функции, да и количество выводится дробным числом.

Подскажите что изменить в приведенном ниже коде, чтобы нормально выводились поля: количество и стоимость.

Вот кусок этого кода из файла commerce_email.module:

<?php
function commerce_email_prepare_table($wrapper) {
  
$currency_code $wrapper->commerce_order_total->currency_code->value();
  
$amount number_format(commerce_currency_amount_to_decimal($wrapper->commerce_order_total->amount->value(), $currency_code), 2);

  
$header = array(
    array(
'data' => t('Product'), 'style' => array('text-align: left;')),
    array(
'data' => t('Qty'), 'style' => array('text-align: left;')),
    array(
'data' => t('Price ([user=currency_code]currency_code[/user])', array('[user=currency_code]currency_code[/user]' => $currency_code)), 'style' => array('text-align: left;'))
  );

  
$rows = array();
  foreach (
$wrapper->commerce_line_items as $delta => $line_item_wrapper) {
    
    switch (
$line_item_wrapper->type->value()) {
      case 
'product':
        
// Special treatment for a product, since we want to get the title from
        // from the product entity instead of the line item.
        
$title htmlentities($line_item_wrapper->commerce_product->title->value(), ENT_QUOTES"UTF-8");
        
$title .= commerce_email_order_item_attributes($line_item_wrapper->commerce_product->product_id->value());
        
        
$rows[] = array(
          
'data' => array(
            array(
'data' => $title'style' => array('text-align: left;')),
            array(
'data' => $line_item_wrapper->quantity->value(), 'style' => array('text-align: left;')),
            array(
'data' => number_format(commerce_currency_amount_to_decimal($line_item_wrapper->commerce_unit_price->amount->value(), $currency_code), 2), 'style' => array('text-align: left;')),
          )
        );
        break;
      default:
        
// Use this for any other line item.
        
$rows[] = array(
          
'data' => array(
            array(
'data' => htmlentities($line_item_wrapper->line_item_label->value(), ENT_QUOTES"UTF-8"), 'style' => array('text-align: left;')),
            array(
'data' => 1'style' => array('text-align: left;')),
            array(
'data' => number_format(commerce_currency_amount_to_decimal($line_item_wrapper->commerce_unit_price->amount->value(), $currency_code), 2), 'style' => array('text-align: left;')),
          )
        );
        break;
    }
  }
  
  
$data $wrapper->commerce_order_total->data->value();
  if (!empty(
$data['components'])) {
    
    foreach (
$data['components'] as $key => &$component) {
      
      if (
$data['components'][$key]['name'] == 'base_price') {
        
$rows[] = array(
          
'data' => array(
            
' ',
            array(
'data' => t('Subtotal:'), 'style' => array('font-weight: bold; text-align: right;')),
            array(
'data' => number_format(commerce_currency_amount_to_decimal($data['components'][$key]['price']['amount'], $currency_code), 2), 'style' => array('font-weight: bold; text-align: left;')),
          )
        );
      }
      elseif (
preg_match('/^tax\|/'$data['components'][$key]['name'])) {
        
$rows[] = array(
          
'data' => array(
            
' ',
            array(
'data' => $data['components'][$key]['price']['data']['tax_rate']['display_title'] . ':''style' => array('font-weight: bold; text-align: right;')),
            array(
'data' => number_format(commerce_currency_amount_to_decimal($data['components'][$key]['price']['amount'], $currency_code), 2), 'style' => array('font-weight: bold; text-align: left;')),
          )
        ); 
      }
    }
  }

  
$rows[] = array(
    
'data' => array(
      
' ',
      array(
'data' => t('Total:'), 'style' => array('font-weight: bold; text-align: right;')),
      array(
'data' => $amount'style' => array('font-weight: bold; text-align: left;')),
    )
  );

  return array(
'header' => $header'rows' => $rows'attributes' => array('style' => array('width: 50%; border: 1px solid #ddd;')));
}

?>

Комментарии

Аватар пользователя gleb13 gleb13 8 октября 2014 в 23:03

Другого разработчика в наличии нет). Если не файл commerce_email.module отвечает за отображение числовых форматов в письмах отправленных с использованием Commerce Email? Тогда дайте подсказку где, это настраивать.

Аватар пользователя gleb13 gleb13 8 октября 2014 в 22:54

Это к тому что не файл commerce_email.module отвечает за отображение числовых форматов в письмах отправленых с использованием Commerce Email? ТОгда дайте подсказку где, это настраивать.

Аватар пользователя gleb13 gleb13 10 октября 2014 в 2:42

к сожалению ваш совет никуда меня не привел. На самом сайте все отображается нормально, Drupal Commerce тоже все настройки покрутил везде выставил разделители на копейки ',' на тысячи - пробел, количество-> целые числа. И везде при заказе в отчете о заказе на сайте все нормально, А Commerce Email лепит в почтовую рассылку цены типа 1,1242.00 а количество, например 15.00. Откуда это берется не могу понять. С Drupal работаю пару месяцев, магазин вообще первый, остальное в принципе готово вот с рассылкой проблемы. Подскажите может у кого идеи есть что там нужно настраивать, чтобы в рассылке все отражалось как настроено в магазине.