Scroll
Мультивалютность
Мультивалютность
Здравствуйте. Прошу Вашей помощи. Уже третий день ломаю голову.
Не могу сконвертировать 2 валюты для USD (доллар США) и UZS (Узбекский сум)
Использую модуль "Сommerce multicurrency" при конвертировании валюты обновляются только Российский рубль и другие некоторые ... Установил модуль "Сurrency" так как в UZS в Commerce не было данной валюты т. е. Узбекского сома.
При конвертировании UZS И USD цена товара не изменяется. 100$ и 100 Сум хотя выстовляю в конвертере по курсу.
Прошу Вашей помощи.
1 answer
votes: 1114
Answer
Здравствуйте, вот пример кода для 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);
}
?>
$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);
}
?>