Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


RedBaron
 Поделиться

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

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

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

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

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

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


  • 1 год спустя...

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

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

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

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


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

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


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

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

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

858a17be381c.jpg

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


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

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

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

image.jpg

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

image.jpg

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


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

Посмотрел данные с файла 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 Кому будет не понятно - кидайте почту вышлю файл

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


  • 1 год спустя...

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

все обновлялось пока 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) . "'");
				}
			}
Ссылка на комментарий
Поделиться на других сайтах


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

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

Версии: OpenCart 1.5.x

 

Скачать

 

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

 

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

 

bdDa00A6.jpg

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

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

Просчет цен на сайте по курсу доллара для украинской гривны 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, все равно не работает, таже ошибка...

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


  • 1 год спустя...
  • 10 месяцев спустя...

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

 

Курс доллара в 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 р. (после округления).

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


  • 1 год спустя...

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.

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


Спасибо.


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

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


Пытаюсь скрестить свой старый код, когда учет цен ведется в 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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.