Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

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

Мультивалютность в Drupal Commerce
, by

Добрый день. На сайте прикрутил модуль Multicurrency для коммерц. Все работаешь зашибись. Вот только стоимость доставки и сумму заказа  считает  не в текущей валюте а в валюте по умолчанию установленной в системе.  Есть у меня две валюты, баксы и еврики, вот по умолчанию стоит бакс а иногда надо посчитать в евро, а этого не делается. Может правило необходимо какое создать илиу словие? но какое...

1 answer
votes: 713
Answer

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

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();
    }
  }
}