Все цены на сайте забиваются в долларах. Выводить их необходимо в другой валюте умножением на курс. Создал модуль примерно такого содержания:
<?phpfunction uc_multi_currency_menu() {
$items['admin/content/multi_currency'] = array(
'title' => 'Курс валюты',
'description' => 'Ручное изменение курса валюты',
'page callback' => 'drupal_get_form',
'page arguments' => array('uc_multi_currency_form'),
'access callback' => 'user_access',
'access arguments' => array('change currency'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
/**
* Implementation of hook_perm().
*/
function uc_multi_currency_perm() {
return array('change currency');
}
/**
* Define the form.
*/
function uc_multi_currency_form($form_state) {
$form['currency_rate'] = array(
'#type' => 'textfield',
'#title' => t('Курс валюты'),
'#default_value' => variable_get('currency_rate', 8),
'#description' => t('Существующий курс для доллара США.')
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Установить'),
);
return $form;
}
/**
* Handle submission of the form and saving
* of the data to the database.
*/
function uc_multi_currency_form_submit($form, $form_state) {
$currency_rate = $form_state['values']['currency_rate'];
variable_set('currency_rate', $currency_rate);
}
/**
* Implementation of hook_uc_price_handler().
*/
function uc_multi_currency_uc_price_handler() {
return array(
'alter' => array(
'title' => t('Мульти валюта'),
'description' => t('Изменение цены товара в зависимости от валюты'),
'callback' => 'uc_multi_currency_price_handler_alter',
),
);
}
function uc_multi_currency_order($op, &$arg1, $arg2)
{
// on the final update do the work we want
if ($op == 'update' &&
$arg1->order_status == "payment_received" &&
$arg2 == "completed")
{
$arg1[order_total] *= variable_get('currency_rate', $currency_rate);
$arg1[products][0][price] *= variable_get('currency_rate', $currency_rate);
$arg1[line_items][0][amount] *= variable_get('currency_rate', $currency_rate);
}
}
/**
* Изменение цены товара в зависимости от валюты
*
*/
function uc_multi_currency_price_handler_alter(&$price, &$context, &$options) {
/*if ($context['subject']['node']->field_currency[0]['value'] == "usd") {*/
$price['price'] *= variable_get('currency_rate', $currency_rate);
/*} */
}
?>
Этот код создает поле для ввода курса доллара по отношению к выводимой валюте и почти все прекрасно работает. За исключением того, что неверно подсчитывается сумма Подитога и Итога при оформлении платежа и неверно подсчитывается стоимость доставки.
Подскажите как решить указанные проблемы.
Сейчас модуль работает на сайте www.chajnaja.com
Комментарии
На всякий случай!
Уже готовый и рабочий модуль!
http://www.drupal.ru/node/55680
Премного благодарен за помощь, действительно то что надо!