Почему нельзя было в момент сдачи платежки сразу прописывать текущий курс и передавать дальше
Что проверяют
Понимаете ли вы, что в финансовом контуре дату расчёта задаёт правило, а не удобство кода. Вопрос про проект, поэтому смотрят, отличаете ли вы справочный курс, который показывают пользователю, от расчётного, по которому операция реально проводится.
Как отвечать
Скажите прямо: курс в момент сдачи платёжки и курс, по которому она будет проведена, это разные величины. Между созданием документа, согласованием, отправкой в банк и исполнением проходят часы или дни, а расчёт идёт по курсу на дату проведения. Проставленное заранее число разойдётся с выпиской, и сверка перестанет сходиться.
Дальше техническая часть:
- нужного курса в момент сдачи просто нет, котировка на дату исполнения ещё не опубликована. Записать в поле нечего, а записанное будет оценкой, которую нельзя путать с расчётной величиной;
- если протащить число дальше по цепочке, оно размножится по таблицам и логам. При отклонении и повторной отправке на следующий день пересчитывать придётся везде, и какая-то копия останется старой;
- хранить надо не только число, но и происхождение: код валюты, источник котировки, момент, на который она взята. Через год сумму нужно будет объяснить, и без этих полей объяснить её невозможно;
- деньги считаются в целых минимальных единицах или десятичным типом,
float64под суммы и курсы не годится.
Итог формулируйте так: снимок курса фиксируется там и тогда, где он становится расчётным, а до этого момента в документе живёт ссылка на источник, а не готовое число.
Где спотыкаются
Ограничиваются фразой «курс меняется, будет неточно». Это не ответ: интервьюер ждёт, что вы отделите дату котировки от даты исполнения и скажете, чем задана вторая.
Предлагают дёргать внешний источник курса прямо в момент расчёта и не думают о его недоступности и о повторных запусках. Без сохранённой котировки с меткой времени два прогона одной операции дадут разные суммы, а идемпотентность в платежах обязательна.
Считают в числах с плавающей точкой и округляют в нескольких местах по-разному. Копейки расходятся, сверка падает, и найти такое потом дороже, чем сразу договориться об одном правиле округления.