Перейти к содержанию
RedBaron

Автоматическое обновление курса валют

Рекомендуемые сообщения

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

Поделиться сообщением


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

Админка - Система - Настройки - Размещение - Автоматическое обновление валют

Поделиться сообщением


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

Посмотрел данные с файла currency.php

берется ссылка http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv

В каком виде должны быть данные на страничке, чтобы можно было сделать ссылку на свой ресурс, где выставлять валюту можно было бы!! Валюта завышена немного, чем по курсу НБУ

Поделиться сообщением


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

После переключения дефолтной валюты с баксов на рубли, а потом обратно на баксы, курс рубля остался на 1.

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

Как заставить обновиться автоматически?

Поделиться сообщением


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

А у меня курс рубля вообще сбился! В настройках стоит обновление автоматом, но я выставил ручками. А потом в этот же день бах, и курс опять равен 1.

Поделиться сообщением


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

Зздравствуйте, прошу подсказать в чем может быть причина казуса.

По умолчанию, валютой установлен доллар, ему выставлен курс 1, для рубля вручную пока поставил курс на вчерашний день допустим. И и вот сегодня он долэжен был обновиться, но этого не произошло. Как быть? На yahoo нет данных по отношению доллара к рублю?

858a17be381c.jpg

Поделиться сообщением


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

Люди добрые подскажите. Решил поставить автоматическое обновление валюты. Сделал как описано выше, ничего не работает, это функция вообще работает.

Если я правильно все понял, то когда я выставляю обновление валюты "автоматом"

image.jpg

То после того как, я буду вручную менять валюту она должна становиться опять по курсу взятому с интернет, или я что то не так понял

image.jpg

Поделиться сообщением


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

Посмотрел данные с файла currency.php
берется ссылка http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv
В каком виде должны быть данные на страничке, чтобы можно было сделать ссылку на свой ресурс, где выставлять валюту можно было бы!! Валюта завышена немного, чем по курсу НБУ


расскажу что сделал я smile.png Может через одно место, но работает по крайней мере smile.png
в файле /admin/model/localisation/currency.php перед class ModelLocalisationCurrency extends Model { вставил класс class ExchangeRate {

// URL, файл в формате XML
public $exchange_url =
'http://bank-ua.com/export/currrate.xml';
public $xml;

function __construct(){
// интерпретируем XML-файл в объект
return $this->xml =
simplexml_load_file($this->exchange_url);
}

function getExchangeRateByChar3($char3){

if ($this->xml!==FALSE) {
// все хорошо, можно работать дальше -
// в XML-данных нет ошибки

foreach($this->xml->children() as $item){
$row = simplexml_load_string($item->asXML());
// Выполняем XPath-запрос к XML-данным
$v = $row->xpath('//char3[. ="' . $char3 . '"]');

if($v[0]){
$result = $item;
break;
}
}
}
return $result;
}
}

а вместо
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
вставил

//NBU eur
$er = new ExchangeRate();

$data = $er->getExchangeRateByChar3('EUR');

//print "За $1 дають " . ($data->rate / $data->size) . " грн.";
$grnforeur = ($data->rate / $data->size);
//

$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '".$grnforeur."', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");

Собственно говоря у меня гривна - дефолтная, а цена товара вбита в евро. Отображение в грн. Меняю вот так вот курс гривны к евро .Всего хорошего

ps Кому будет не понятно - кидайте почту вышлю файл

Поделиться сообщением


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

кто все-таки поборол это?

все обновлялось пока USD был равен 1.00000

как только сменил на рубли - обновляться перестало. уже дня 3 висит

разлогинивался. отключал автообновление, сохранялся, включал отбратно.

эффекта нет?

 

где можно форсировать старт?

 

отвечу сам - при добавлении валюты курс пересчитывается.

только один момент - курс в РБ у доллара 1/10190, у евро 1/13870. а показывает в админке одинаково для обоих - 0.00010000 

забавно, что разрядов для полного отображения хватает, но почему-то округлило очень нехорошо.

это как-то решается? надо сделать больше разрядов для результата курса, для доллара, например 0,00009814 должно быть

 

может здесь поправить надо до каких цифр округлять? но я не в курсе что тут править.

подскажите.

 

foreach ($lines as $line) {
	$currency = utf8_substr($line, 4, 3);
	$value = utf8_substr($line, 11, 6);
				
        if ((float)$value) {
	$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'");
				}
			}

Поделиться сообщением


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

Просчет цен на сайте по курсу доллара для украинской гривны Vqmod

Версии: OpenCart 1.5.x

 

Скачать

 

Использовав вышеизложенное, сконструировал файл для Vqmod. Я долго искал решение данной проблемы с выводом цены по курсу доллара, поэтому решил поделиться результатом с Вами.  8-)  Если буду полезен - уже приятно!

 

Инструкция по установке внутри архива. Читать обязательно!

 

bdDa00A6.jpg

Поделиться сообщением


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

Просчет цен на сайте по курсу доллара для украинской гривны Vqmod

Версии: OpenCart 1.5.x

 

Скачать

 

Использовав вышеизложенное, сконструировал файл для Vqmod. Я долго искал решение данной проблемы с выводом цены по курсу доллара, поэтому решил поделиться результатом с Вами.  8-)  Если буду полезен - уже приятно!

 

Инструкция по установке внутри архива. Читать обязательно!

 

bdDa00A6.jpg

 

 

 

выскакивает ошибка - ocstore 1.5.5.1.2    vqmod 2.4.1

 

post-688804-0-39412300-1415287833_thumb.png

 

если удалить строку 127 то не выводится ни надпись магазин, ни ошибка

Поделиться сообщением


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

После надписи "магазин: $" берется значение из базы данных (значение "1" - это коэффициент валюты доллара к гривне)... Я его специально вывел для проверки соотношения валют: доллар должен равняться единице, и эта единица   - соотношение к курсу доллара! Если будет другое значение, цены на сайте будут приравниваться к этому значению в соотношении, то-есть... 1 доллар приравнивается к 13.08 гривен. 13.08 делим на один и получаем 13.08... Немного коряво сделал, но мне так понятнее было для работы! Если значение будет, например 0,07: 13.08 делим на 0,07 и получаем 186,86 гривен стоимость одного доллара на сайте! Цены космические получаются!

 

Что касается ошибки, то есть несколько вариантов:

1) Вы привязываете либо к неправильной гривне (кодировка должна быть "UAH", либо к другой валюте! В данном случае сервер не знает что за такая переменная у него крутится в памяти - "UAH", и выдает ошибку!

2) Вы поставили скрипт на измененный OpenCart, а vqmod - глупый, он точно выполняет предписание по внедрению строчек кода в файлы (он должен найти строчку прописанную в файле xml для поиска и доставить после этой строчки, или перед этой строчкой, или, вообще, заменить часть кода программы... Если он не находит именно эту строчку в файле php или tpl, то мод ничего не дописывает, а значит: часть кода теряется, что может привести к ошибке!

 

Ну, как-то так!..  :twisted:

Поделиться сообщением


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

Ах, да, еще совет!  :-)

 

Notepad++ открываете файл скрипта и открываете файлы кеша vqmod-а которые прописаны в файле скрипта в позиции к примеру: <file name="admin/view/template/catalog/product_list.tpl">. Это путь к файлу в котором планируется делать изминения (их несколько таких есть...). потом сверху до низу проходитесь по строчкам поиска:  <search position="before"><![CDATA[

 
              <td align="right"><input type="text" name="filter_quantity" value="<?php echo $filter_quantity; ?>" style="text-align: right;" /></td>
 
                        ]]></search>
 
Строчка в середине сейчас - это часть кода которую будет искать мод!  "before" - ознасает что код (для примера):
<add trim="true"><![CDATA[
                     <td class="left"><?php echo $column_category; ?></td>
       ]]></add>
будет вставляться перед,  "after"- после, а "replace" - будет заменять найденую строчку! Найдите все поисковые строчки, и если фдруг в файле кеша вы не найдете таковой - значит часть кода (та что ниже) будет не прописана! Нужно подкоректировать файл скрипта!
 
Желаю удачи! :wink:

Поделиться сообщением


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

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

 

проверьте пожалуйста  на моей связке ocstore - vqmod, дело всего 5 минут. Кстати Вы на какой версии проверяли?

 

установил чистый opencart-1.5.5.1, все равно не работает, таже ошибка...

Поделиться сообщением


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

Товарищи, помогите, пожалуйста.

 

Курс доллара в OC 2.3 по автообновлению прилетает как 0.01560000 (код валюты - USD), а нужно, чтобы прилетал как 64.

Вообще выглядит как бага OC, так как 0.01560000 - это курс рубля к USD! Почему он по коду USD его засасывает, не ясно. Точнее, можно предположить, что это потому, что USD - это валюта НЕ по-умолчанию. Но все же странно, что это приводит к изменению курса валюты с USD на RUR.

post-715998-0-61270500-1474972796_thumb.png

Изменено пользователем Mysha

Поделиться сообщением


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

Подсмотрел в инете как делали другие. И сделал (комментарий - до правки, без комментария - исполняемый код).

/**		curl_setopt($curl, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv'); **/
		curl_setopt($curl, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=USDRUB=X&f=sl1&e=.csv');

/**				$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'"); **/
				$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = 'USD'");

/**		$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");  **/
		$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = 'RUB'");													

  

Теперь логика во фронте верная (автооапдейт курса работает, цены в рублях считаются верно), но в бэке логика опять странная. Валюта по-умолчанию (рубль) приняла значение 64 (это неправильно, так как курс рубля 0.0156), а USD - курс стал равен 1 (хотя на самом деле ~64).

 

Хотелось бы, чтобы во фронте все осталось как сейчас, а в админке стало USD = 64, а RUR = 1 (Валюта по-умолчанию).

Кто поможет советом? Сам не осилю.

post-715998-0-67010000-1474977062_thumb.jpg

Изменено пользователем Mysha

Поделиться сообщением


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

Из побочных эффектов прикольно, что вышеприведенный мод починил валюту подарочных сертификатов - раньше она была USD, так как я виду учет цен в USD. Сейчас минимальная цена сертификата стала не 50, а 3200 р. (после округления).

Поделиться сообщением


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

Yahoo отключили этот сервис. Уроды.

 

It has come to our attention that this service is being used in violation of the Yahoo Terms of Service. As such, the service is being discontinued. For all future markets and equities data research, please refer to finance.yahoo.com.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
30 минут назад, Mysha сказал:

Yahoo отключили этот сервис. Уроды.

тыц

Поделиться сообщением


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

Спасибо.


Как вручную пинать загрузчик курсов валют? Он меня был модифицировать под двухвалютный учет. О некорретной работе узнаю только завтра. Как пнуть его?

Поделиться сообщением


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

Пытаюсь скрестить свой старый код, когда учет цен ведется в USD, а отображение идет в RUR. Поменял функцию, выставил старые значения, модифицировал URL по образу и подобию старого Yahoo. URL  работает отлично, но где-то у меня не хватает ума, и есть ошибка. Не поможете?

	public function refresh($force = false) {
		$currency_data = array();

		if ($force) {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
		} else {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" .  $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
		}

		foreach ($query->rows as $result) {
			$response = file_get_contents('https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=USD&to_currency=RUB&apikey=P6WGY9G9LB22GMBJ');
			
			$json = json_decode($response);
			
			if (@is_null($json->{"Error Message"})) {
				$value = (float) $json->{"Realtime Currency Exchange Rate"}->{"5. Exchange Rate"};
				$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000'" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = 'USD'");
			}
		}

		$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = 'RUB'");

		$this->cache->delete('currency');
	}

	public function getTotalCurrencies() {
		$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "currency");

		return $query->row['total'];
	}
}

PHP дает вот такой выход:

Notice: Undefined variable: value in /home/public_html/admin/model/localisation/currency.php on line 128
Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/admin/controller/startup/error.php:34) in /home/public_html/system/library/response.php on line 12

Прошу помощи!

Изменено пользователем Mysha

Поделиться сообщением


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

Вопрос решен, человек chhukcha помог разобраться (уже не в первый раз). Рекомендую его в качестве саппортера сайтов на OC.

Поделиться сообщением


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

а каково решение? у меня такая же ошибка

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/admin/controller/startup/error.php:34) in /home/public_html/system/library/response.php on line 12

, но проблема совсем другая

Поделиться сообщением


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

Какая такая же?

Вы установили фикс? Или теперь весь народ ломанется получать курсы с одного аккаунта?

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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