Конвертация и автоконвертация обменного курса валют в JoomShopping в соответствии с текущим курсом Ц

  • 91 Ответов
  • 10486 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн FIORD_CMS

Может быть кому-то будет полезно.

Конвертация и автоконвертация обменного курса валют в JoomShopping в соответствии с текущим курсом ЦБ РФ
1.   Основная валюта (по умолчанию) – рубль. Курс устанавливается для 38 валют (USD, EURO, GBP,….).
2.   Данные о текущем курсе берутся с сайта ЦБРФ: http://www.cbr.ru/scripts/XML_daily.asp
3.   Сделаны (на основе addons JoomShopping-import-currency-1.0) два php-скрипта:
a.   JoomShopping-update-currency-1.0.zip
b.   Update.php
4.   JoomShopping-update-currency-1.0.zip – это addons и должен выполняться вручную администратором сайта из компоненты JoomShopping («Установка и Обновление») каждый раз, когда он хочет изменить обменный курс на своем сайте по текущему курсу ЦБ РФ.
5.   Update.php – это скрипт, который должен запускаться автоматически через cron. Он должен быть в корне сайта с аттрибутами 755. Не забудьте файл update.php (предварительно распаковав из архива update.zip) записать на сайт в формате UNIX. Для этого можно обработать файл утилитой dos2unix.  Каждый раз, когда он выполняется, на email администратора сайта посылается извещение об изменении курса и об установленных значениях валют. Пример:

Information for site administrator: currency exchange have been made according to CBRF data. Date and time: Tue, 26 Mar 2013 12:46:02 +0400
Спойлер
[свернуть]





[вложение удалено Администратором]
« Последнее редактирование: 24.04.2013, 21:10:27 от nevigen »

*

Оффлайн x1

Цитировать
JoomShopping-update-currency-1.0.zip – это addons и должен выполняться вручную администратором сайта из компоненты JoomShopping («Установка и Обновление») каждый раз, когда он хочет изменить обменный курс на своем сайте по текущему курсу ЦБ РФ.

Опробовал вашу разработку. После выполнения кроном файла Update.php курсы валют обновились и на сайте при смене валюты, цена отображается корректно, как и требовалось. Все чудесно работает, вам - плюсик. Только один вопрос, зачем нужен первый файлик, если  и так все работает?

*

Оффлайн FIORD_CMS

Вы имеете ввиду файл JoomShopping-update-currency-1.0.zip ? Представьте себе ситуацию, когда на сайте принят фиксированный обменный курс ЦБ РФ на какой-то определенный день и он не меняется долгое время. Но в какой-то момент администратор решил  поменять его на новый фиксированный курс для определенного дня. Вот для такого сценария и нужен этот файл.   

*

Оффлайн mocart

Попробовал у себя update.php и столкнулся с проблемой - валюты не обновляются, а пересоздаются с новым currency_id, отсюда всем товарам после исполнения скрипта назначается одна валюта, та что по умолчанию

Дополню:
PHP    5.3.18
Joomla! 2.5.7
JoomShopping 3.11

И также получаемая ошибка
PHP Warning:  Invalid argument supplied for foreach() in .../public_html/libraries/joomla/string/string.php on line 970
« Последнее редактирование: 05.04.2013, 16:44:34 от mocart »

*

Оффлайн FIORD_CMS

Вы совершенно правы. Для простоты я реализовал самый простой алгоритм: при запуске update.php сначала удаляются все валюты, а потом заново создаются с новым курсом. Ввиду того, что поле currency_id определено с автоинкрементом, то currency_id при таком алгоритме увеличивается, начиная с максимального значения перед удалением. Но у меня это нигде не вызвало содержательных нестыковок и я пользуюсь этим вариантом. Если вас не страивает этот алгоритм и возникают коллизии, то есть исходный текст - можете модифицировать.  При случае я тоже попробую доработать update.php.

А где у вас идет привязка к currency_id ?
« Последнее редактирование: 05.04.2013, 16:49:39 от FIORD_CMS »

*

Оффлайн mocart

А где у вас идет привязка к currency_id ?
Дык, каждому товару задается currency_id.
Раньше рубль имел currency_id =1 (он по умолчанию), USD currency_id =2, EUR currency_id = 3
Соотвественно всем товарам задан свой currency_id, например 2 (USD), но так как теперь нет currency_id=2 то этот товар просто берет валюту по-умолчанию (рубль)
Вот и представьте - загружали майку по цене 5евро, после апдейта она стала стоить 5рублей :)

*

Оффлайн FIORD_CMS

Поправил. Сейчас протестирую и выложу.

[вложение удалено Администратором]
« Последнее редактирование: 05.04.2013, 18:06:07 от FIORD_CMS »

*

Оффлайн FIORD_CMS

Вот новый вариант

[вложение удалено Администратором]

*

Оффлайн x1

Вот новый вариант
Не, так не пойдет... у меня рубль почему то не первый, а второй по id. Вот поля в настройках валюты магазина:
Название*
Код*
Код (ISO)*
Код (Числовой)

Какие значения должны быть для Русского например? У меня:
currence_name: Рубль
currence_code: RUB
currence_iso: 421
currence_num: 643

Это правильно?

Название, как вы пгонимаете, может быть произвольным. Вот вы обозвали рубль "RUB", а у меня на сайте "Рубль". Мне кажется удалять в базе все значения и потом переписывать заново - как то Неправильный подход.
Я бы при обновлении курса в вашем update.php в цикле задал бы поис "Код (ISO)*"  - это константа и менял только обменный курс currency_value, взятый вами с ЦентроБанка.    Остальное - название, публикацию - оставлял бы нетронутыми.

И наконец - Я бы убрал Вьетнам, Турцию... и оставил бы Россия-Казахстан-Украина... с кем реально торгуем.

*

Оффлайн FIORD_CMS

Я поправил вариант для крона (чтобы не путаться - теперь называется update1.php). В этом варианте изменен алгоритм модификации (соответсвует вашему предложению): В списке валют на вашем сайте изменяется только текущий обменный курс в соответствии со значением ЦБ РФ. В качестве ключа беретеся код ISO - трехбуквенный код российского рубля в соответствии с ISO 4217 — RUB. Все остальные поля - без изменений.
По-прежнему, устанавливается валюта по-умолчанию - рубль (RUB).



[вложение удалено Администратором]
« Последнее редактирование: 08.04.2013, 17:02:55 от FIORD_CMS »

*

Оффлайн buto

Для РБ бы такой конвектор, чтобы +2% к курсу Национального Банка Республики Беларусь считал

*

Оффлайн FIORD_CMS

Вот еще небольшая примочка (каа вы понимаете, имеет смысл использовать в связке с ранее описанным в этой теме аддоном или программой для CRON, тогда все будет идентично - значения в back end и во front end): модуль вывода во front end текущего курса ЦБ РФ. Модуль выводит текущий курс ЦБ РФ, взятый с сайта ЦБ РФ http://www.cbr.ru .
Выводится дата и время (на случай, если курс может меняться несколько раз в день) и обменные курсы для EURO и USD.
На некоторых сайтах принят курс ЦБ РФ плюс несколько процентов. Для это случая надо поправить одну строку в файле tmpl/default.php этого модуля (полный путь modules/mod_show_currency/tmpl/default.php ).
Например, Если у вас на сайте курс ЦБ РФ+2%, то вместо строки

$currency_el['currency_value']=((float)str_replace(',','.',$valute->Value)*1.00); //Plus 0%

надо сделать:

$currency_el['currency_value']=((float)str_replace(',','.',$valute->Value)*1.02); //Plus 2%

« Последнее редактирование: 21.04.2013, 21:25:20 от FIORD_CMS »

*

Оффлайн buto

Вот еще небольшая примочка (каа вы понимаете, имеет смысл использовать в связке с ранее описанным в этой теме аддоном или программой для CRON, тогда все будет идентично - значения в back end и во front end): модуль вывода во front end текущего курса ЦБ РФ. Модуль выводит текущий курс ЦБ РФ, взятый с сайта ЦБ РФ http://www.cbr.ru .
Выводится дата и время (на случай, если курс может меняться несколько раз в день) и обменные курсы для EURO и USD.
На некоторых сайтах принят курс ЦБ РФ плюс несколько процентов. Для это случая надо поправить одну строку в файле tmpl/default.php этого модуля (полный путь modules/mod_show_currency/tmpl/default.php ).
Например, Если у вас на сайте курс ЦБ РФ+2%, то вместо строки

$currency_el['currency_value']=((float)str_replace(',','.',$valute->Value)*1.00); //Plus 0%

надо сделать:

$currency_el['currency_value']=((float)str_replace(',','.',$valute->Value)*1.02); //Plus 2%


О клево спасибо. Так оперативно. Но проблема в том что живу в Беларуси. Есть вероятность привязать это все дело к Национальному Банку Республики Беларусь?)

*

Оффлайн FIORD_CMS

Вот еще немного доработал. Теперь процент, который добавляется к обменному курсу ЦБ РФ, задается в основных параметрах (настройках) модуля. По-умолчанию - 0. И кроме того при отображении добавлены пиктограммы валют (EUR, USD). При отображении для каждой валюты показывается курс магазина, а в скобках курс ЦБ РФ для каждой валюты.

Ну и наконец - плагин, который дает возможность вставить значения обменного курса EUR и USD в материал. Значение добавляемого процента сайта к курсуЦБРФ - также в настройках плагина.
Для добавления значений в контекст материала введены следующие теги:

{showcurrency-eur-my} - обменный курс евро в магазине
{showcurrency-eur-cbrf} - обменный курс евро ЦБРФ
{showcurrency-usd-my} - обменный курс доллара в магазине
{showcurrency-usd-cbrf} - обменный курс доллара ЦБРФ
{showcurrency-addvalue} - добавленный процент к курсу ЦБРФ

Ну и совсем последнее - даже написал для себя плагин кнопки для редактора, чтобы по нажатию вставлял нужный тэг в статью.
« Последнее редактирование: 24.04.2013, 18:38:52 от FIORD_CMS »

*

Оффлайн x1

Я поправил вариант для крона (чтобы не путаться - теперь называется update1.php). В этом варианте изменен алгоритм модификации (соответсвует вашему предложению): В списке валют на вашем сайте изменяется только текущий обменный курс в соответствии со значением ЦБ РФ. В качестве ключа беретеся код ISO - трехбуквенный код российского рубля в соответствии с ISO 4217 — RUB. Все остальные поля - без изменений. По-прежнему, устанавливается валюта по-умолчанию - рубль (RUB).

Спасибо, но проверить смогу через пару дней и отпишу.

*

Оффлайн FIORD_CMS

Вот еще "проба пера" - AJAX версия. Буду признателен за советы и замечания.
« Последнее редактирование: 01.10.2013, 23:11:38 от FIORD_CMS »

*

Онлайн dmitry_stas

Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций


*

Онлайн dmitry_stas

ну хорошо, раз в личку, то покажу тогда только картинку, что можно сделать :) я не задавался целью, но можно я так думаю и что то другое написать  ;) понятно, что безобидные шутки... но кому они нужны?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн FIORD_CMS

Хотелось бы узнать, как это сделано и рекомендацию (если она есть), как исправить.
Этот ajax-вариант модуля - первая моя попытка освоить технологию, поэтому ваши замечания - это даже хорошо (позволяет глубже понять метод).

*

Онлайн dmitry_stas

это - последствие не фильтрации $_GET. $add_val_text=$_GET["add_value_text"] - ну аж никак нельзя. почитайте про фильтрацию данных $_GET и $_POST. плюс про обязательное использование defined( '_JEXEC' ) or die. просто как я уже сказал в данном случае это безобидно, и по сути вреда принести не может. но такой подход может обернуться гораздо более плачевными последствиями...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн FIORD_CMS

Спасибо. Поправил (перезалил архив). Если у вас есть желание, то посмотрите, пожалуйста, новый вариант.

*

Оффлайн sergey44

Я поправил вариант для крона (чтобы не путаться - теперь называется update1.php). В этом варианте изменен алгоритм модификации (соответсвует вашему предложению): В списке валют на вашем сайте изменяется только текущий обменный курс в соответствии со значением ЦБ РФ. В качестве ключа беретеся код ISO - трехбуквенный код российского рубля в соответствии с ISO 4217 — RUB. Все остальные поля - без изменений.
По-прежнему, устанавливается валюта по-умолчанию - рубль (RUB).


Скажите,  как сделать чтобы к текущему курсу также автоматом прибавлялся заданный процент (2%). Я в php ноль, не знаю как. 

*

Оффлайн FIORD_CMS

В модуле update1.php это уже сделано (например, для 2%) в строке
   $currency_el['currency_value']=1.0/((float)str_replace(',','.',$valute->Value)*1.02); //Plus 2%
Если надо другой процент, то вместо 1.02 ставите нужное число.


*

Оффлайн brood

А как мне сделать если к примеру сайт в рублях но перед тем как клиент подтвердит заказ валюта изменилась автомотически в евро!?

*

Оффлайн St@lker

А кто знает где можно брать для Украины курсы в таком же формате? Или может у кого-то есть уже готовый вариант для Украины?

Спасибо!

*

Оффлайн nevigen

  • *****
  • 8831
  • [+]771 / [-]17
  • http://n*****n.com
    • Просмотр профиля
    • Nevigen.com -разработки для Joomla
Или может у кого-то есть уже готовый вариант для Украины?

глобальное решение включая Украину.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

Оффлайн FIORD_CMS

Я не проверял, но предполагаю, что надо просто заменить в файле update1.php ссылку с курсом валют в xml-формате: вместо ссылки на ЦБ РФ
http://www.cbr.ru/scripts/XML_daily.aspдать ссылку на Нац. банк Украины
http://bank-ua.com/export/currrate.xml
Для Белоруссии, видимо, надо взять курс отсюда:
http://www.nbrb.by/Services/XmlExRatesRef.aspx
« Последнее редактирование: 20.02.2014, 18:18:02 от FIORD_CMS »

*

Оффлайн prizrakx

поставил update1.php на выполнение в крон, смотрю сейчас курс доллара к рублю 0.028, странно. Что не так сделал? разжуйте пжлста.