Where Money Podręcznik

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.