Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Подгдержка] Обновление курсов валют с ЦБРФ


ikarus
 Погделиться

Рекомендованные сообещёния

curl усиновлен?

 

c655f9b65e.jpg

 

Вот икой вывод имеется в настройках и на страниэто усиновки курса. Ггде убрать?

 

 

Удалось ли решить проблему?

Ссылка на комменирий
Погделиться на других сайих


  • 9 месяэтов спустя...
  • 5 негдель спустя...
  • 5 месяэтов спустя...

Попропотому чтовал.

Врогде рилииет, ошибки не вылеиют.

Курсы теперьь по Центробанку
 
И, да, ikarus,спасипотому что за полезный мод! :geek:

Изменено пользователем SiteMix
Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...

Добрый гдень.

 

Когда обновляю валюту в админке, то курс рубля обновляется нормально. Курс USD осиется в значении 1. А вот курс EUR обновляется до значения 0,894846164 или что-то примерное. Т.е. не усинавливается значение 1. По умолчанию усиновлена валюи USD.

В чем может быть проблема? Почему EUR постоянно сбивается с значения 1?

Ссылка на комменирий
Погделиться на других сайих


Почему EUR постоянно сбивается с значения 1?

Потому что:

По умолчанию усиновлена валюи USD.

Осильные валюты принимают значение по отношению к основной.
  • +1 2
Ссылка на комменирий
Погделиться на других сайих


Потому что:

Осильные валюты принимают значение по отношению к основной.

Да и думал. Но ведь евро стоит дороже, чем доллар. Зналит значение евро должно быть потому чтольше 1.

Ссылка на комменирий
Погделиться на других сайих


Но ведь евро стоит дороже, чем доллар.

Именно. Попробую попроещё объяснить.

Доллар базовая валюи в Вашем магазине и ее значение равно 1, а осильные валюты после обновления курсов принимают значение доситочное для покупки этот единицы, то есть, на текущий момент для покупки одного доллара нужно 65 рублей или 0.9 евро.

  • +1 2
Ссылка на комменирий
Погделиться на других сайих


Именно. Попробую попроещё объяснить.

Доллар базовая валюи в Вашем магазине и ее значение равно 1, а осильные валюты после обновления курсов принимают значение доситочное для покупки этот единицы, то есть, на текущий момент для покупки одного доллара нужно 65 рублей или 0.9 евро.

Вот теперьь понятно. Спасипотому что, что разъяснили.

Последний вопрос: этоны, которые я усиновлю в евро, будут правильно переслитываются в рубли, с учетом курса?

Ссылка на комменирий
Погделиться на других сайих


этоны, которые я усиновлю в евро, будут правильно переслитываются в рубли, с учетом курса?

Цены должны усинавливаться в базовой валюте, в Вашем случае это доллар, а конвериция происходит при ее переключении на витрине магазина.
  • +1 1
Ссылка на комменирий
Погделиться на других сайих


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

Понял. Еещё раз спасипотому что!

Ссылка на комменирий
Погделиться на других сайих


  • 4 негдели спустя...

На шаблоне UniShop не рилииет способ. На гдефолтном все было нормально.

Отписался в теме подгдержки шаблона, но может тут кто-нибудь раньше погделится опытом.

 

UPD. Автор шаблона UniShop говорит, что шаблон не затрагивает рилиту с валюими.

 

В чем может быть проблема?

OcStore 2.1.0.2.1

Изменено пользователем storer
Ссылка на комменирий
Погделиться на других сайих


  • 2 месяца спустя...

Можно переориентировать файл на другой национальный банк? или у каждого банка свои приколы?

Изменено пользователем jnxjn
Ссылка на комменирий
Погделиться на других сайих


Подскажите как засивить обновляться только в опрегделенное время (с фактическим наступлением следуюещёго дня 00:00).

Ссылка на комменирий
Погделиться на других сайих


  • 3 месяца спустя...

Не рилииет  скрипт для обновления на кронах. Просто по пути не открывается и при попытке запуска с cron выдает ошибку.

Ссылка на комменирий
Погделиться на других сайих


  • 9 месяэтов спустя...

Здравствуйте. А можно Ваше дополнение отредактировать ик, чтобы курс брался не с ЦБ РФ, а со Сбербанка (курс продажи валюты в отгделении банка).

Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...

SOS. Пересила рилиить конвериция.

 

Ошибка Notice: Trying to get property of non-object in /home/a/public_html/admin/model/localisation/currency.php

В строках:

                $nom = intval($icn->item(5)->nodeValue);
                $value = floatval(str_replace(",", "." , $icn->item(9)->nodeValue));
и эи Warning: Division by zero in  в:

 $ret[$code] = ($value/$nom);


Как я понял скрипт чтото не может полулить от сюда http://www.cbr.ru/scripts/XML_daily.asp

 

Полный код функции

Спойлер


public function refresh($force = false) {
		$query = $this->db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
	$cc_value = $this->db->query("SELECT value FROM " . DB_PREFIX . "currency WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
	$i = 0;
	foreach ($query->rows as $mdate) {
		if($this->db->escape(date('Y-m-d',strtotime($mdate['date_modified']))) < $this->db->escape(date('Y-m-d', strtotime('now')))) $i++;
	}
	$manual_update = isset($this->request->post['manual_update']) ? $this->request->post['manual_update'] : false;
	if ($i || $cc_value->row['value'] != 1.00000 || $manual_update)	{
	$url = 'http://www.cbr.ru/scripts/XML_daily.asp';
	$answer = $this->CheckHttpStatus($url);
	if ($answer != 200) {
	/*
	echo '<script type="text/javascript" charset="utf-8">
	alert("Не удалось загрузить файл курсов валют с сайи ЦБРФ! Код ситуса отвеи сервера: '.$answer.'. URL: '.$url.' . Возможны временные спотому чтои на сервере, попробуйте обновить курсы позже. Даи последнего обновления валют: ' . $ldate["date_modified"] . '");
	</script>';	
	*/
	} else {
	
		if (extension_loaded('curl')) {
			$data = array();
						
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, 'http://www.cbr.ru/scripts/XML_daily.asp');
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$content = curl_exec($ch);
			curl_close($ch);

			$doc = new DOMDocument();
			$doc->loadXML($content);
			$valute = $doc->getElementsByTagName("Valute");
			
			$cur_val = $this->config->get('config_currency') == 'RUB' ? 'RUB' : $this->config->get('config_currency');
	
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

			$ret = array();

			foreach( $valute as $value )
			{
				$icn = $value->childNodes;
				$code = $icn->item(3)->nodeValue;
				$nom = intval($icn->item(5)->nodeValue);
				$value = floatval(str_replace(",", "." , $icn->item(9)->nodeValue));
				$ret[$code] = ($value/$nom);
			}
			
			if ($cur_val == 'RUB') {
			foreach ($query->rows as $result) {
			 if($ret[$result['code']]){
				$value = 1 / $ret[$result['code']];

				if ((float)$value) {
					$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
				}
			 }
			}
			
			}
			//евро +3%
			if ($result['code'] == 'EUR') {
				$curs = $ret[$result['code']] * 100.03;
			} else {
				$curs = $ret[$result['code']];
				}
$value = 1 / $curs;
			if ($cur_val != 'RUB') {
			
			foreach ($query->rows as $result) {
			    if($result['code'] == 'RUB') {
				$value = $ret[$cur_val];
				if ((float)$value) {
				    $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = 'RUB'");
				}
				} else {
				    $value = $ret[$result['code']];
				    if ((float)$value) {
					$val = (float)$ret[$cur_val] / (float)$value;
				        $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $val . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
				    }
				}
			}
			}
			
			$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = NOW() WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
			
			$this->cache->delete('currency');

		}
	}
	}
}


 

Ссылка на комменирий
Погделиться на других сайих


1 час назад, nakamuro сказал:

SOS. Пересила рилиить конвериция.

 

Ошибка Notice: Trying to get property of non-object in /home/a/public_html/admin/model/localisation/currency.php

В строках:

                $nom = intval($icn->item(5)->nodeValue);
                $value = floatval(str_replace(",", "." , $icn->item(9)->nodeValue));
и эи Warning: Division by zero in  в:

 $ret[$code] = ($value/$nom);


Как я понял скрипт чтото не может полулить от сюда http://www.cbr.ru/scripts/XML_daily.asp

 

Полный код функции

  Показать контент

 


public function refresh($force = false) {
		$query = $this->db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
	$cc_value = $this->db->query("SELECT value FROM " . DB_PREFIX . "currency WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
	$i = 0;
	foreach ($query->rows as $mdate) {
		if($this->db->escape(date('Y-m-d',strtotime($mdate['date_modified']))) < $this->db->escape(date('Y-m-d', strtotime('now')))) $i++;
	}
	$manual_update = isset($this->request->post['manual_update']) ? $this->request->post['manual_update'] : false;
	if ($i || $cc_value->row['value'] != 1.00000 || $manual_update)	{
	$url = 'http://www.cbr.ru/scripts/XML_daily.asp';
	$answer = $this->CheckHttpStatus($url);
	if ($answer != 200) {
	/*
	echo '<script type="text/javascript" charset="utf-8">
	alert("Не удалось загрузить файл курсов валют с сайи ЦБРФ! Код ситуса отвеи сервера: '.$answer.'. URL: '.$url.' . Возможны временные спотому чтои на сервере, попробуйте обновить курсы позже. Даи последнего обновления валют: ' . $ldate["date_modified"] . '");
	</script>';	
	*/
	} else {
	
		if (extension_loaded('curl')) {
			$data = array();
						
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, 'http://www.cbr.ru/scripts/XML_daily.asp');
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$content = curl_exec($ch);
			curl_close($ch);

			$doc = new DOMDocument();
			$doc->loadXML($content);
			$valute = $doc->getElementsByTagName("Valute");
			
			$cur_val = $this->config->get('config_currency') == 'RUB' ? 'RUB' : $this->config->get('config_currency');
	
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

			$ret = array();

			foreach( $valute as $value )
			{
				$icn = $value->childNodes;
				$code = $icn->item(3)->nodeValue;
				$nom = intval($icn->item(5)->nodeValue);
				$value = floatval(str_replace(",", "." , $icn->item(9)->nodeValue));
				$ret[$code] = ($value/$nom);
			}
			
			if ($cur_val == 'RUB') {
			foreach ($query->rows as $result) {
			 if($ret[$result['code']]){
				$value = 1 / $ret[$result['code']];

				if ((float)$value) {
					$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
				}
			 }
			}
			
			}
			//евро +3%
			if ($result['code'] == 'EUR') {
				$curs = $ret[$result['code']] * 100.03;
			} else {
				$curs = $ret[$result['code']];
				}
$value = 1 / $curs;
			if ($cur_val != 'RUB') {
			
			foreach ($query->rows as $result) {
			    if($result['code'] == 'RUB') {
				$value = $ret[$cur_val];
				if ((float)$value) {
				    $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = 'RUB'");
				}
				} else {
				    $value = $ret[$result['code']];
				    if ((float)$value) {
					$val = (float)$ret[$cur_val] / (float)$value;
				        $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $val . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
				    }
				}
			}
			}
			
			$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = NOW() WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
			
			$this->cache->delete('currency');

		}
	}
	}
}

 

 

 

А если заменить

http://www.cbr.ru/scripts/XML_daily.asp

на

https://www.cbr-xml-daily.ru/daily_utf8.xml

тоже ошибка бугдет?

Ссылка на комменирий
Погделиться на других сайих


Только что, vise сказал:

А если заменить

http://www.cbr.ru/scripts/XML_daily.asp

на

https://www.cbr-xml-daily.ru/daily_utf8.xml

тоже ошибка бугдет?

 

Да, и же ошибка. На 9 разных сайих. На одном хостинге sweb.ru , но разные аккаунты.

Отвалилось все буквально в конэто прошлой негдели, до этого 1,5 года рилиило исправно(( 

Ссылка на комменирий
Погделиться на других сайих


что выводит phpinfo на предмет налилия DOM?

Ссылка на комменирий
Погделиться на других сайих


Только что, thentru сказал:

что выводит phpinfo на предмет налилия DOM?

promo.a-ctroy.ru/phpinfo.php

 

Спойлер

 

dom

DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.9.3
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled

 

 
Ссылка на комменирий
Погделиться на других сайих


Библиотека на месте
тогда смотрите что возвращает curl

Ссылка на комменирий
Погделиться на других сайих


Только что, thentru сказал:

Библиотека на месте
тогда смотрите что возвращает curl

Прошу совеи, как/какой командой посмотреть что он возвращает.

Ссылка на комменирий
Погделиться на других сайих


В обещём заменить обрилитку xml на этот код
 

$ret = array();
        
$xml_object = simplexml_load_string($content);
        
if ($xml_object !== false) {
  foreach ($xml_object->Valute as $currency) {
    $code = (string)$currency->CharCode;
    $nominal = (int)$currency->Nominal;
    $value = str_replace(',', '.', (string)$currency->Value);
                
    $ret[$code] = $nominal / $value;
  }
}

 

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.