Мультивалютность

Раздел форума: 

         Здравствуйте. Прошу Вашей помощи. Уже третий день ломаю голову. 

Не могу сконвертировать 2 валюты для USD (доллар США) и UZS (Узбекский сум)

     Использую модуль "Сommerce multicurrency" при конвертировании валюты обновляются только Российский рубль и другие некоторые ... Установил модуль "Сurrency" так как в UZS в Commerce не было данной валюты т. е. Узбекского сома.

При конвертировании UZS И USD цена товара не изменяется.   100$ и 100 Сум   хотя выстовляю в конвертере по курсу.

      Прошу Вашей помощи.

 

 

Добавить комментарий

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
Прикрепить
Максимальный размер файла: 128 МБ.
Разрешённые типы файлов: txt doc docx rar zip xls xlsx pdf odf odt jpg jpeg gif png psd rtf.

Здравствуйте, вот пример кода

Здравствуйте, вот пример кода для commerce multicurrency, для перевода одной валюты в другую, у меня это из евро в рубли:

<?php
function custom_cron(){


  $euro = db_query('SELECT * FROM {field_data_commerce_price_eur}', array());
 // dsm($euro);
  $rub = db_query('SELECT * FROM {field_data_commerce_price}', array());
  $rub_prices = array();
  foreach($rub as $money){
    $rub_prices[] = $money->entity_id;
  }





  foreach($euro as $one){
    $commerce_multicurrency = variable_get('commerce_multicurrency_conversion_settings');
    $sum = $one->commerce_price_eur_amount * $commerce_multicurrency['EUR']['rates']['RUB']['rate'];
    $sum = round($sum);
    if(in_array($one->entity_id,$rub_prices)){
      $query = db_update('field_data_commerce_price')
        ->fields(array(
          'entity_type' => 'commerce_product',
          'bundle' => $one->bundle,
          'deleted' => $one->deleted,
          'entity_id' => $one->entity_id,
          'revision_id' => $one->revision_id,
          'language' => $one->language,
          'delta' => $one->delta,
          'commerce_price_amount' => $sum,
          'commerce_price_currency_code' => 'RUB',
          'commerce_price_data' => $one->commerce_price_eur_data,
        ))
        ->condition('entity_id', $one->entity_id)
        ->execute();
    }else{
      $query = db_insert('field_data_commerce_price')
        ->fields(array(
          'entity_type' => 'commerce_product',
          'bundle' => $one->bundle,
          'deleted' => $one->deleted,
          'entity_id' => $one->entity_id,
          'revision_id' => $one->revision_id,
          'language' => $one->language,
          'delta' => $one->delta,
          'commerce_price_amount' => $sum,
          'commerce_price_currency_code' => 'RUB',
          'commerce_price_data' => $one->commerce_price_eur_data,
        ))
        ->execute();
    }
  }


  /*
  $query = db_update('field_data_commerce_price_rub')
    ->join('field_data_commerce_price', 'price', 'field_data_commerce_price_rub.entity_id = price.entity_id');
  $query = $query ->fields(array(
    'field_data_commerce_price_rub.commerce_price_rub_amount' => 'rub.commerce_price_rub_amount',
  ));
  $query->execute();
  */
}
?>

Также возможно придется брать

Также возможно придется брать курс валют из Российского центробанка:

<?php
    $url = 'http://www.cbr.ru/scripts/XML_daily.asp';
    $curr_name = array('LTL', 'LVL', 'EEK', 'EUR', 'PLN');
    $reader = New XMLReader();
    $reader->open($url);
    $i = 0;
    $output = array();
    while ($reader->read()) {
        if ($reader->nodeType == XMLReader::ELEMENT) {
            if ($reader->localName == 'CharCode') {
                $reader->read();
                $name = $reader->value;
            }
            if (in_array($name, $curr_name) && $reader->localName == 'Value') {
                $reader->read();
                $output[$name] = str_replace(",", ".", $reader->value);
            }
        }
    }
    foreach ($output as $key => $value) {
        variable_set($key, $value);
    }
?>