Jak liczą się liczby
Waluty i kursy
Aplikacja prowadzi wszystko w złotówkach. Wiersz, który przyszedł w euro albo w funtach, dostaje kwotę w złotych już przy imporcie, a to, co stało w pliku, zostaje przy nim.
Po kursy aplikacja idzie do internetu i jest to jedyna rzecz, jaką robi przez sieć. Zapytanie wychodzi dopiero wtedy, gdy klikniesz przycisk. Zobacz jedyne połączenie z siecią.
Kurs z dnia poprzedniego#
Wiersz w obcej walucie dostaje kurs średni NBP z tabeli A: ten z ostatniego dnia roboczego przed datą transakcji. Tak samo przelicza Twój bank, a fachowo mówi się na to kurs D-1.
- Liczy się ostatni kurs sprzed tej daty. Zakup zrobiony w sobotę przeliczy się po kursie z piątku. Aplikacja cofa się najwyżej o dziesięć dni, więc święta i długi weekend przeskoczy bez problemu. Gdy w tabeli brakuje więcej dni, nie weźmie kursu sprzed miesiąca, tylko napisze, że kursu nie ma.
- Połówkę grosza aplikacja zaokrągla zawsze w górę co do wartości bezwzględnej. 2,345 zł zapisze się jako 2,35 zł, a −2,345 zł jako −2,35 zł. Dzięki temu zakup i jego zwrot znoszą się grosz w grosz.
- Kursy leżą w bazie jako liczby całkowite. Kurs 4,3125 zapisuje się jako 43125, czyli z dokładnością tabeli NBP, do czterech miejsc po przecinku. Pieniędzy aplikacja nigdy nie trzyma w ułamku, bo na ułamkach komputer gubi grosze.
Co widać przy takim wierszu#
Na wierszu stoi kwota w złotych, a obok dokładnie to, co przyszło w pliku: pierwotna kwota z walutą, użyty kurs i dzień, z którego ten kurs pochodzi. Wszystko to pokazuje ▸ Rekord na pasku pod tabelą, więc konto wciąż zgadza się z wyciągiem z banku.
Sygnaturę aplikacja liczy z pierwotnej kwoty, a nie z przeliczonej. Dzięki temu duplikat zostaje duplikatem, a wiersz, który duplikatem nie jest, nie zacznie za niego uchodzić.
Skąd aplikacja wie, w jakiej walucie jest wiersz? Jeśli szablon ma kolumnę waluty, bierze ją stamtąd. Jeśli nie ma, przyjmuje walutę konta i takie wiersze zaznacza na ekranie przeglądu, zanim cokolwiek trafi do bazy.
Bez kursu nie ma importu#
Jeśli choć jednemu zapisywanemu wierszowi w obcej walucie brakuje kursu, aplikacja nie pozwoli zatwierdzić importu. Taki wiersz wszedłby do bazy bez kwoty w złotych i wypadłby z każdej sumy.
Pasek u góry wypisze, czego brakuje, co do dnia: EUR: 2026-03-22 … 2026-06-30. Przycisk obok pobierze dokładnie ten zakres, z niewielkim zapasem wstecz, bo kurs bierze się z dnia poprzedniego. Gdy brakuje kilku walut, jedno kliknięcie pobierze je wszystkie, jedną po drugiej. Potem aplikacja przygotuje plik jeszcze raz, a wiersze dostaną swoje kwoty w złotych.
Liczą się tylko te wiersze, które naprawdę mają trafić do bazy. Duplikat albo wiersz, który pomijasz, nie wstrzyma reszty, choćby jego data nie miała pokrycia.
Zakładka Kursy#
Waluty. Aplikacja podpowiada waluty, które wynikają z Twojego pliku: waluty kont, waluty transakcji i te, których kursy już masz. Zaznacz te do pobrania, a gdy potrzebujesz innej, dopisz jej trzyliterowy kod. EUR i USD pobierzesz za jednym razem.
Wybierz zakres dat i naciśnij Pobierz kursy. Koszt zobaczysz jeszcze przed kliknięciem: 8 zapytań do api.nbp.pl (4 na walutę). Aplikacja nie przyjmie ani zbyt długiego zakresu dla jednej waluty, ani zbyt dużej paczki naraz. Waluty idą jedna po drugiej, z przerwami, nigdy wszystkie razem, a zaraz po pobraniu przyciski w aplikacji są przez chwilę nieaktywne.
Gdy jedna waluta zawiedzie w połowie paczki, kursy pobrane wcześniej zostają w bazie, a komunikat powie, co ją zatrzymało.
Pokrycie. Jeden wiersz na walutę: jaki zakres dat masz w bazie, ile jest kursów, który z nich jest najnowszy i kiedy aplikacja pobierała ostatni raz. aktualizuj dociąga kursy z dni, których jeszcze nie masz, aż do dzisiaj, a Zaktualizuj wszystkie robi to samo dla każdej waluty, która została w tyle. Kursów, które już masz, aplikacja nie pobiera drugi raz, więc powtórne kliknięcie nic nie kosztuje.
Pusty wynik to normalna odpowiedź, a nie błąd. W weekendy i święta NBP nie publikuje nic, a walut spoza tabeli A nie publikuje w ogóle.
Czekają na przeliczenie. Tu leżą transakcje z czasów, gdy aplikacja jeszcze nie umiała przeliczać walut. Grupuje je po walucie i obok każdej grupy stawia Przelicz na PLN. Wiersze, których dat tabela kursów nie pokrywa, zostają bez zmian i aplikacja je wypisze. Nie zostawia wiersza przeliczonego w połowie.
Kurs w zapisach majątku#
Zapis majątku dostaje kurs z tego samego dnia, którego dotyczy wycena. Jeśli w ten dzień tabeli nie było, aplikacja weźmie ostatnią wcześniejszą. Nie jest to więc kurs z dnia poprzedniego.
Reguły są dwie, bo i sytuacje są dwie. Transakcję przeliczył bank po starszym kursie, bo w chwili płatności NBP nie ogłosił jeszcze tabeli na ten dzień. Zapis majątku wpisujesz kilka dni później, dla dnia, który już minął, a tabela z tamtego dnia po prostu jest. Dlatego wycena bierze kurs właśnie z niej.
Kurs możesz też wpisać ręcznie, w każdym zapisie osobno i osobno dla każdej waluty, a aplikacja odnotuje, że pochodzi od Ciebie. W odróżnieniu od importu nie musisz niczego pobierać wcześniej. Ale zapisu nie zatwierdzisz, dopóki każda waluta w nim nie ma kursu: z tabeli NBP albo od Ciebie.
Jeśli masz tylko złotówki#
Nic z tego Cię nie dotyczy. Żaden kurs nie jest potrzebny, a aplikacja nie wysyła w świat ani jednego zapytania.