Jump to content

Обновление курса валют по курсу нац. банка, обновление цен


Go to solution Solved by Kasha,

Recommended Posts

Может, кому надо будет такое решение..

На днях реализовал для заказчика такую задачу. У него в 1С товары заведены в евро, гривнах и долларах. А продает в гривнах. Написал скрипт, который каждую ночь берет официальные курсы валют, берет все цены из 1С и пересчитывает по обновленному курсу + % за конвертацию. И еще обновляет в курсы валют в админке.
Каждое утро на сайте цены корректируются по изменению курса валют. Сейчас, когда в евро есть нестабильность, это актуально.

Если кому нужна будет такая схема - обращайтесь.

Link to post
Share on other sites
  • 1 year later...

Может, кому надо будет такое решение..

 

На днях реализовал для заказчика такую задачу. У него в 1С товары заведены в евро, гривнах и долларах. А продает в гривнах. Написал скрипт, который каждую ночь берет официальные курсы валют, берет все цены из 1С и пересчитывает по обновленному курсу + % за конвертацию. И еще обновляет в курсы валют в админке.

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

 

Если кому нужна будет такая схема - обращайтесь.

нужен модуль чтоб по курсу доллара ЦБ банка России плясать)напишите мне

Link to post
Share on other sites
  • 2 weeks later...

Смысл создавать тему в готовых решениях ? 

Если вы не хотите делится с остальными, а хотите заняться Фрилансом... создайте тему в "Платные модули и услуги"

Link to post
Share on other sites

нужен модуль чтоб по курсу доллара ЦБ банка России плясать)напишите мне

 

Реализовывал такой модуль, он весьма прост, и по сути никак не связан с симплой. ЦБ отдает каждый день инфу в xml, дальше кроном просто тырим эту инфу и вносим в базу в текущую валюту, и у всё :) делов на 20 минут ;)

Link to post
Share on other sites

Реализовывал такой модуль, он весьма прост, и по сути никак не связан с симплой. ЦБ отдает каждый день инфу в xml, дальше кроном просто тырим эту инфу и вносим в базу в текущую валюту, и у всё :) делов на 20 минут ;)

Покажешь мастер класс ?

Link to post
Share on other sites
  • Solution
<?php

class ExchangeRatesCBRF
{
	var $rates;
	function __construct($date = null)
	//В PHP версии ниже 5 это метод объекта следует переименовать в ExchangeRatesCBRF
	{
		$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); 
		if (!isset($date)) $date = date("Y-m-d"); 
		$curs = $client->GetCursOnDate(array("On_date" => $date));
		$this->rates = new SimpleXMLElement($curs->GetCursOnDateResult->any);
	}

	function GetRate ($code)
	{
	//Этот метод получает в качестве параметра цифровой или буквенный код валюты и возвращает ее курс
		$code1 = (int)$code;
		if ($code1!=0) 
		{
			$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/Vcode[.='.$code.']/parent::*');
		}
		else
		{
			$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/VchCode[.="'.$code.'"]/parent::*');
		}
		if (!$result)
		{
			return false; 
		}
		else 
		{
			$vc = (float)$result[0]->Vcurs;
			$vn = (int)$result[0]->Vnom;
			return ($vc/$vn);
		}

	}
}
//Тут небольшой пример того как использовать этот класс для получения курса на текущую дату
	$rates = new ExchangeRatesCBRF();
	$usd = $rates->GetRate("USD");
        echo "Курс доллара на сегодня: " . $usd;
?>

Дальше догадаешься как сделать?

Вызов курса для записи в переменную, запись из переменной в базу, всё это обернуть и в крон... Ну в общем сами знаете ;)

 

Заменив переменную можно получить курс любой пары от ЦБ

$usd = $rates->GetRate("USD");
Link to post
Share on other sites
  • 3 months later...

 

<?php

class ExchangeRatesCBRF
{
	var $rates;
	function __construct($date = null)
	//В PHP версии ниже 5 это метод объекта следует переименовать в ExchangeRatesCBRF
	{
		$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); 
		if (!isset($date)) $date = date("Y-m-d"); 
		$curs = $client->GetCursOnDate(array("On_date" => $date));
		$this->rates = new SimpleXMLElement($curs->GetCursOnDateResult->any);
	}

	function GetRate ($code)
	{
	//Этот метод получает в качестве параметра цифровой или буквенный код валюты и возвращает ее курс
		$code1 = (int)$code;
		if ($code1!=0) 
		{
			$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/Vcode[.='.$code.']/parent::*');
		}
		else
		{
			$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/VchCode[.="'.$code.'"]/parent::*');
		}
		if (!$result)
		{
			return false; 
		}
		else 
		{
			$vc = (float)$result[0]->Vcurs;
			$vn = (int)$result[0]->Vnom;
			return ($vc/$vn);
		}

	}
}
//Тут небольшой пример того как использовать этот класс для получения курса на текущую дату
	$rates = new ExchangeRatesCBRF();
	$usd = $rates->GetRate("USD");
        echo "Курс доллара на сегодня: " . $uds;
?>

Дальше догадаешься как сделать?

Вызов курса для записи в переменную, запись из переменной в базу, всё это обернуть и в крон... Ну в общем сами знаете ;)

 

Sheeft можно подробнее
Link to post
Share on other sites

а не проще через крон установить, чтоб курс доллара обновлялся хотя бы раз в день например в 00 01 каждого дня 01 00 * * *

Вот те и пляски под ЦБ, тока беда что клиент сделал заказ по одной цене, завтра оплатит по другой

Link to post
Share on other sites
  • 8 months later...

Sheeft, спасибо, пригодилось.

Только в конце кода маленькую ошибочку исправить бы - в последних строках переменная пишется по-разному - $usd и $uds.

Link to post
Share on other sites
  • 6 months later...
  • 1 year later...

Кто сделает мануал для новичков, за символическую плату?

Откровенно говоря, программисты никаких мануалов не пишут, и все же если вы его получите не надейтесь на 100% работоспособность (конечно же если у вас руки прямые, а не растут из пятой точки).
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...