Облік витрат у різних валютах

Чому кожна транзакція в обліку витрат у різних валютах зберігає дві суми, що дає збереження обох і звідки беруться курси обміну.

У кожної транзакції дві суми

Транзакція записує дві суми, а не одну. Перша показує, скільки коштувала річ, у валюті, в якій її продавали: це цифра з чека. Друга показує, скільки насправді пішло з гаманця, у валюті самого гаманця.

Здебільшого ці валюти збігаються, тоді суми просто однакові, і ви про них не думаєте. Коли валюти різні, це два справді різні числа, і застосунок зберігає обидва замість того, щоб вибрати одне.

Навіщо зберігати обидві

Ця пара і є записом курсу, який справді застосували. Він зберігається в самій транзакції, а не обчислюється дорогою до екрана, тож ніхто не перераховує каву з минулого березня за сьогоднішнім курсом.

Поки ви вводите суму, застосунок звертається до сервісу курсів, але тільки щоб запропонувати число. Введіть або відредагуйте транзакцію у валюті, що відрізняється від валюти гаманця, і застосунок підтягне курс на цю дату й покаже його сірим у полі суми з гаманця: це підказка, а не введене значення. Надрукуєте власну цифру, збережеться ваша. Лишите поле порожнім, підставиться запропонована.

Різниця суттєва, бо цифра, яку провів ваш банк, рідко збігається з тією, що дала б таблиця курсів: усередині сидить банківська націнка. Коли виписка показує, скільки списано з рахунку, імпорт зберігає саме це число, а не переконвертовує ціну, бо жоден курс, знайдений пізніше, його не відтворить.

Сума з гаманця ще й рухає ваш баланс, тому вона має бути точною, а не перерахованою. Збережіть лише ціну, і баланс стане приблизним; збережіть лише те, що пішло з гаманця, і ви втратите, скільки річ коштувала насправді.

Звідки беруться курси

Курс шукають лише там, де конвертація справді потрібна: наприклад, коли місяць витрат у різних валютах зводиться в одну цифру. Курси зберігаються за базовою валютою, цільовою валютою і датою, тож кожен прив’язаний до свого дня, а не до сьогоднішнього.

Вони надходять із зовнішнього сервісу курсів, і запит іде на вимогу, а не за розкладом: коли пара валют і дата потрібні вперше, курс отримують і зберігають, а кожне наступне звернення читає збережений. У фоні їх ніхто не оновлює, тож курс із сьогоднішньою датою лишається таким, яким сервіс віддав його вперше за сьогодні.

Якщо курсу немає взагалі, застосунок його не вгадує: суму переносять як є, ніби обидві валюти були однакові. В імпорті вам про це скажуть, бо в коментарі чернетки з’явиться примітка, що суму з гаманця треба перевірити. Усередині підсумку, зібраного пізніше, примітки немає: цифра просто виходить трохи меншою або трохи більшою, і на сторінці ніщо не пояснює чому.

Імпортовані рядки

Імпортуйте виписку в гаманець, валюта якого відрізняється від валюти виписки, і обидві суми заповняться самі. Перша бере те, що показує виписка. Друга завжди у валюті гаманця. Її ніколи не перепозначають під файл, хай у якій валюті той файл складено.

Яке число стане на бік гаманця, залежить від того, що є у виписці. Якщо там указано, скільки списано з рахунку, цю цифру беруть як є, разом із націнкою. Інакше суму конвертують за курсом на дату самого рядка, а якщо й це не вдається, переносять без змін і додають до коментаря чернетки примітку, що суму з гаманця треба перевірити. Виправте її до публікації.