@formasters777

Добавление нескольких валют?

Какая общая методология добавления валют на сайт,
- например, можно сделать для документа в базе, три новых ключа на каждую валюту,
и выводить её в карточке, это удобно, меняя слово триггер в поле вывода. Но минусы, к примеру, каждую необходимо ночь обходить все позиции и синхронизировать их с новым курсом.
- можно при запросе товара для карточки отправлять тип валюты, получать в ответе мультипликатор значения, на которое можно умножить и конвертировать валюту на странице,
Как в данном случае, лучше синхронизировать прайсы к курсу валюты и их получать?
Можно ли обойтись одной ценой в базе, и далее умножая на коэффициент получать нужную валюту?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@foterio
Мне тоже нужны были исторические данные по ценам и прайслисты.
Я сделал сущность Price и таблицу к ней prices, со следующими полями
currency как ENUM("EURO","USD","CNY","RUR")
value как int, стоит заметить что мы храним деньги в копейках, центах и прочее
created_at чтобы в будущем фильтровать их по дате

Теперь везде, где мне нужна цена, я указываю price_id и все.

Все расчеты внутри компании мы проводим в Долларах США.
Там, где нужно выйти за пределы компании, можно запросить для каждой цены курс, так как дата этой цены известна в created_at.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kawabanga
@kawabanga
Можно обоими способами. Тут уже от бизнес задачи зависит.

Делал по второму способу сначала. Вручную указывали курс по отношению к валютам. Все это работало, пока не поступила задача, делать "Красивые прайсы".
И в итоге остановились на первом пункте. Чтобы делать прайсы по типу -
$99.99, RUB7.699 и тд.
Ответ написан
@alex-just01
ЦБ устанавливает курс на следующий день в 11-30 текущего дня. Соответственно на текущий день курс уже известен заранее.
В итоге для вашей задачи проще получить 1 раз в день курсы всех валют по отношению к рублю из сервиса цб:
www.cbr.ru/development/sxml
И сохранить их в БД.

Потом при обращении к карточке товара просто умножать цену на коэффициент валюты. И не нужно будет в базе хранить значения на каждую валюту.
Ответ написан
Комментировать
@formasters777 Автор вопроса
Это интересное решение, но как быть тогда с теми данными, что приходят, как оформленный заказ.
например если, в продукте, есть изначально базовая цена, в какой-либо валюте.
И человек меняет валюту, значения для UI перемножаются, и визуально мы видим новый прайс,
но если человек оформляет заказ, то в данном случае, нужно менять существующее значение в документе продукта Price: "12.99" на новую валюту?
или добавлять к объекту новые ключи с значением Price: "3.45" и Currency: "USD", и CurrencyThisDay: "1=17.43USD"
и при просмотре заказа, делать проверку на значение Currency и выводить на UI тип валюты к заказу.
В таком случае базовый документ изменится на следующий:

_id: 6420a02e44a448b197042da4
productname: "Little Spoon"
category: "hair"
subcategory: "tools"
pricen: "15.44"
priceo: "17.50"
pricep: "5.25"
stock: true
CurrencyBasic: "Euro"
CurrencyChoice: "USD"
priceChoice: "3.43"
CurrencyThisDay: "1=17.43USD"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы