Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


RedBaron

Recommended Posts

  • 2 months later...

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

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

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

Надіслати
Поділитися на інших сайтах


  • 1 year later...

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

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

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

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


  • 3 months later...

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

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

858a17be381c.jpg

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

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

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

image.jpg

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

image.jpg

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Посмотрел данные с файла 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 year later...

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

все обновлялось пока 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 months later...

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

Версии: OpenCart 1.5.x

 

Скачать

 

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

 

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

 

bdDa00A6.jpg

Надіслати
Поділитися на інших сайтах

  • 1 month later...

Просчет цен на сайте по курсу доллара для украинской гривны 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 year later...
  • 10 months later...

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

 

Курс доллара в 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 year later...

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
Надіслати
Поділитися на інших сайтах


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

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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.