Kenya-West
@Kenya-West
Обычный Кеня

Хочу реализовать проект калькулятора подписок в валюте, с конвертацией валют из одной в другую; есть подводный камень. Как его решить?

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

Для этого мне надо знать курсы валют, верно? Исторически. Есть публичные API курсов валют вплоть до 1970 года, но оно стоит дорого.

Вопросы:
1. Где взять бесплатный источник курсов валют от 2000 года, скажем? С отношением "много-ко-многим"? Это будет едрить какая большая CSV'шка, но она мне нужна;
2. Надо как-то эти курсы валют хранить в базе. Умею только в MongoDB, но при желании научусь и в любую простую реляционную СУБД. Какие поля там должны быть для выборки данных? Плохо представляю себе это;
3. Храним значения курсов валют в int? Чтобы не пролететь с плавающей точкой?
4. Допустим, у меня есть подписка Xbox Game Pass в турецкой лире до 2025 года. Я должен научить приложение конвертировать сумму, потраченную за каждый день подписки, по курсу валют из лиры (TRY) в рубли (RUB). Итогом в колонке "потрачено за весь период" должна быть сумма в рублях. Это должно считаться сервером как-то фоном или только при REST/GraphQL-запросе данных?
4.1. А если таких подписок 500 и для каждой из них прошло 150 дней? Это сколько считать-то надо, а? Сколько запросов к базе? Жесть же.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
1) https://www.cbr.ru/currency_base/
2) учись , можешь ORM в помощь (это в Питоне), но можно и на сырую (RAW Data)
поля там должны быть Decimal или Finance - не Float ни в коему случае, а лучше вообще INT и потом менять разряд
3) опа! да ты и сам волокешь , я за Decimal
4) ты не представляешь глубину и сложность вопроса, поверь ... бухгалтера засовывают язык в жопу при попытке конкретики. Ну что тебе скажу - один из бух метдов по GAAP / МФСО - тупо курс на 31.12. года и учет остатков в нем...
как сделаешь так сделаешь - считай на конец периода, или на максимуме. Короче , повторю, проблема непроста:
можешь считать каждый день, но по итогу сумма у тебя не будет равная сумме в другой с каким-то коэффициентом. )))
Если же это не касается бухучета - то есть строгости - можно счиатть как угодно )))
5) запросы к базе фигня в сравнении с методолгией, повторюсь - единой нет, спроси целевого буха и делай как он скажет

короче - начни считать каждый день - как ЦБРФ ставит курс на СЕГОДНЯ основываясь на ВЧЕРА, а там как пойдет...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
newross
@newross
Product owner
Боюсь что ты решаешь задачу с не того конца.
Курс ЦБРФ может быть один, но реальный курс зависит от банка и способа оплаты. Разница может доходить до 10%. Если включить случаи double-conversion, то ошибка может быть еще больше.

Приходилось решать подобные задачи, когда простейшим случаем была покупка контента за AED, оплата его кэшем в EUR, с полседующей перепродажей через AmericanExpress в USD. Сумма с точностью до цента получается только постфактум. И далеко не всегда платежная система дает тебе полную раскладку по комиссиям и курсам.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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