Управление валютами на сайте

Модуль управления валютами mod_currency.

Главное предназначение данного модуля – вести список валют на сайте и их курсы на определенные даты. Данный модуль является больше промежуточным, который используют другие модули. Но для сайтов банков, например, данный модуль может быть основным, когда он показывает курсы покупки и продажи валют в банке.

В настройках модуля указывается валюта по-умолчанию, часто это рубль, и все курсы должны считаться по отношению к этой валюте. Не нужно вычислять никаких кросс-курсов, нужно - узнать, сколько в рублях стоит доллар, сколько в рублях стоит в евро. Модуль сам пересчитает кросс-курсы, можно узнать курс доллара к евро, зная курсы евро и доллара в рублях. Одним из полей записи валюты является флажок, что эта валюта является валютой на сайте по-умолчанию. Когда мы устанавливаем валютой по умолчанию, например, рубль, то остальные валюты по умолчанию, по курсам, введенным администратором.
Каждая валюта содержит поля:

  • Id – уникальный идентификатор валюты.
  • Несколько названий валют (one, three, ten). Иногда на сайте нужно писать сумму валюты прописью (1 рубль, 3 рубля, 10 рублей); каждая валюта имеет поля – наименование 1 единицы, 3 единиц, 10 единиц.
  • male – какой род у этой валюты (мужской или женский). Например, 3 японских йены, 10 японских йен.
  • penny – копейки, т.е. доли валют, целой ее части.
  • briefly – краткое обозначение валюты. Это может быть внутреннее обозначение, например, руб, у.е., евро;
  • code – международный код валюты, например, доллар – USD, евро – EUR, рубль – RUR.
  • is_default – является ли эта валюта, валютой по умолчанию
  • official_rate – официальный курс валюты
  • ask – курс покупки валюты
  • bid – курс продажи валюты
  • nominal – номинал валюты. Бывают валюты, курсы которых тяжело сопоставлять с другими, сравнивая ее, по одной единице друг с другом. Например, курс японской йены обычно говорят за 100 йен. Иначе пришлось бы оперировать многими знаками после запятой в дробной части.
  • rate_last_date – дата последнего изменения курса валюты.



 

Список валют на сайте выглядит так:

При добавлении валюты появляется интерфейс добавления валюты:


Здесь поля:

  • Название валюты в сумме один (на);
  • Название валюты в сумме три;
  • Название валюты в сумме десять;
  • Род – мужской/женский
  • Копейки – дробная часть валюты (в других валютах не копейки! Может как-то переозаглавить?)
  • Код валюты – обычно, международный код валюты;
  • Кратко – краткое название валюты, может совпадать с кодом.

(Я думаю, все эти определения должны быть и в интерфейсе модуля)
При редактировании валюты изменять можно те же поля, что и при добавлении новой валюты.


 

Ведение журнала курсов валют.

Перейти к журналу курсов валюты можно, кликнув в названии валюты из списка валют.
 

 

Здесь выводится краткая информация о валюте, а также таблица курсов. Нажав кнопку «Нов.» можно добавить курс. Можно «мышью» кликнуть по курсу и нажав кнопки «Ред.» или «Уд.» отредактировать или удалить выбранный курс:


 

У администратора сайта есть возможность ввести на эту дату номинал валюты, за который рассчитывается курс (иногда бывают такие валюты, например, японская йена, у которой ввести курс за номинал за 100 йен удобнее, чем за 1, когда нужно будет помнить много знаков после запятой), официальный курс центрального банка, курс покупки валюты, курс продажи.
(т.е. администратор должен вводить все значения по валютам каждый день? Автоматически подтягивать данные с какого-нибудь официального ресурса было бы очень удобно.)

Применение модуля на сайте.

Плагины

Модуль чаще используется не конечными пользователями сайта, а больше администраторами и программистами, как служебный модуль для других модулей. Основу для верстальщиков сайта составляют плагины модуля mod_currency.
Полезный плагин –currency_list, который выводит список валют на сайте.
Параметры плагина:

  • tpl – шаблон вывода формы, должен лежать в etc/templates/plugins/,
  • assign – имя переменной вывода, если не задана, вывод в шаблон плагина,
  • resource_id – идентификатор ресурса типа mod_currency (для ссылок),
  • admin_mode – "yes" - режим администрирования.

Иногда бывает, что нужно, например, заполнить сумму и указать валюту, а через currency_list можно получить список валют на сайте.
Плагин currency_info служит для вывода информации о валюте.
Его параметры:

  • id – идентификаторы валюты, если не задан – выводит валюту по умолчанию,
  • tpl – шаблон вывода формы, должен лежать в etc/templates/plugins/,
  • assign – имя переменной вывода, если не задана, вывод в шаблон плагина.

Еще один плагин currency_rate выдает курс валюты с идентификатором id относительно валюты по умолчанию на сайте.
Его параметры:

  • tpl – шаблон вывода формы, должен лежать в etc/templates/plugins/,
  • assign – имя переменной вывода, если не задана, вывод в шаблон плагина,
  • id – идентификаторы валют в списке,
  • show_nominal – показывать номинал, если yes. По умолчанию стоит no. Если стоит yes, например, 108 рублей за 100 йен, а не за 1 доллар. Чаще это не нужно, поэтому по дефолту стоит no.

Плагин currency_convert_value позволяет конвертировать сумму value с валютой from в сумму с валютой to. Параметры:

  • value – значение цены (float),
  • from – id валюты исходной цены (int),
  • to – значение валюты конечной цены (по умолчанию - дефолтная),
  • assign – имя переменной вывода. Если не задана, вывод на экран (echo).

Например, нужно узнать, сколько в рублях будет 200 долларов, пишем value=200, from идентификатор валюты «доллар», to – задаем, если хотим перевести сумму в валюту, отличную от валюты по умолчанию.

Методы API модуля

Для программистов очень важны методы API модуля mod_currency:

  • function ConvertValue($value, $from, $to = false, $date = null). Пересчет значения (стоимости/цены) из одной валюты в другую по основному курсу (official_rate). Параметры: value – сумма для пересчета, from – из какой валюты, to – в какую валюту, date – (его можно не указывать, если не указывается, то берется самый свежий курс) выдать значение суммы на определенную дату. Самый распространенный способ вызова, когда указывается сумма value и идентификатор валюты from – функция выдает сумму по отношению к дефолтной валюте.
  • function GetCurrencyList($params = array()) – если нужно получить список валют.
  • function GetCurrencyInfo($id) – выводит информацию о валюте.
  • function GetDefaultCurrencyId() – выдает идентификатор валют по умолчанию.
  • function GetDefaultCurrency() – выдает запись (массив) валюты по умолчанию.

Управление валютами

  • Добавление узла Currency

Узел Currency (Управление валютами) должен находиться в администраторской части сайта. Поэтому заходим в раздел Admin, в меню управления выберите пункт «Add» (Добавить новый узел)

В открывшемся окне добавления нового узла выберите ресурс Currency и нажмите кнопку «Добавить».

Далее откроется страница редактирования узла. Отредактируйте, если есть необходимость, и нажмите «Сохранить».
Теперь у Вас есть узел управления валютами.

По умолчанию уже задано несколько валют. Вы можете воспользоваться уже существующими или создать новую валюту.

  • Редактировать валюту

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

Откроется страница редактирования валюты

Здесь настраиваются основные параметры валюты.
После всех изменений нажмите кнопку «Сохранить»

  • Удалить валюту

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

  • Назначить курс валюты

Для назначения курса валюты нажмите напротив нужной

Откроется окно, в котором можно задать курсы валюты.

Номинал – количество единиц валюты, для которого назначен данный курс
Курс ЦБ – Ваш внутренний базовый курс. Если не заданы курсы покупки и продажи, что все расчеты ведутся с использованием значения этого курса
Курс покупки – Ваш курс покупки
Курс продажи – Ваш курс продажи
После заполнения нужных полей нажмите «Сохранить»

  • Добавить новую валюту

Нажмите
Заполните форму по аналогии с существующими валютами