Оптовая выгрузка: валюты и курс именно на дату операции
Каждое движение сохраняет исходную валюту, дату и использованный расчетный курс.
Задача и принятое решение
В журнале есть RUB, EUR, корректировка прежней операции и строка без курса. Подстановка среднего курса скрыла бы пропуск и изменила итог.
Я присоединяю курс по паре валюта+дата. Для корректировки сохраняется собственная дата события и ссылка на прежний документ. Неполная строка видна в отчете, но не попадает в рублевую сумму.
Курсы 90 и 92 ₽ за EUR — явно заданные расчетные допущения, не рыночные котировки.
Проверить решение
Измените исходные строки или параметры и пересчитайте результат. Данные остаются в этой странице.
| Операция | Дата | Валюта | Исходная сумма | Курс | Сумма RUB | Корректирует | Статус |
|---|---|---|---|---|---|---|---|
| OP1 | 2026-10-01 | RUB | 100000 | 1 | 100000 | Рассчитано | |
| OP2 | 2026-10-01 | EUR | 2000 | 90 | 180000 | Рассчитано | |
| OP3 | 2026-10-02 | EUR | 500 | 92 | 46000 | Рассчитано | |
| ADJ1 | 2026-10-02 | EUR | -100 | 92 | -9200 | OP2 | Рассчитано |
| OP4 | 2026-10-03 | EUR | 300 | Нет курса | |||
| OP5 | 2026-10-02 | RUB | 15000 | 1 | 15000 | Рассчитано |
Исходный набор
Авторский контрольный набор; не клиентские документы и не результаты внешней модели.
Изменить входные строки
Посмотреть исходные строки
| Операция | Дата | Валюта | Сумма | Корректирует |
|---|---|---|---|---|
| OP1 | 2026-10-01 | RUB | 100000 | |
| OP2 | 2026-10-01 | EUR | 2000 | |
| OP3 | 2026-10-02 | EUR | 500 | |
| ADJ1 | 2026-10-02 | EUR | -100 | OP2 |
| OP4 | 2026-10-03 | EUR | 300 | |
| OP5 | 2026-10-02 | RUB | 15000 |
Что получилось
При исходных курсах рассчитано 331800 ₽; 300 EUR за 3 октября остаются вне рублевого итога. После явного добавления курса 93 эта строка дает 27900 ₽ и итог 359700 ₽. Корректировка OP2 на −100 EUR рассчитана по своей дате.
Выполненная проверка
| Проверка | Результат |
|---|---|
| Рублевый итог 331800 не включает 300EUR без курса | Пройдена |
| Корректировка использует свою дату и сохраняет OP2 | Пройдена |
| Добавление явного курса 93 включает недостающую строку | Пройдена |
Это воспроизводимый расчет с авторскими курсами. Учетная политика пересчета и официальные курсы должны задаваться отдельно.
Скачать материалы и повторить проверку
source.json · source.csv · result.json · result.csv · engine.js · verify.cjs · checks.json · style.css
Локальная проверка: node verify.cjs. Нужен Node.js; сетевые обращения не выполняются.