fbpx

Niedawno na serwerach pojawiła się nowa wersja aplikacji Family Finance Tracker. Oprócz kilku zmian kosmetycznych, zawiera dwie główne nowe funkcje:

  1. Eksport wszystkich danych do CSV
  2. Import operacji z pliku CSV.

Nie ukrywam, że dość długo zwlekałem z ich implementacją. Czułem podświadomie, że to faktycznie ważne opcje, bo dość często o to prosiliście, ale nie miałem dobrego pomysłu jak je rozwiązać.  Zależało mi aby jak najwięcej Użytkowników było zadowolonych z tych funkcji. Każdy bank ma inny format pliku CSV, zatem stworzenie jednego wspólnego mechanizmu jest raczej trudne.

Doszedłem jednak do wniosku, że od czegoś trzeba zacząć i zaimplementowałem te opcje w sposób jak najbardziej uniwersalny. Obecnie po niewielkich obróbkach pliku, oraz dodatkowej kategoryzacji można zaimportować praktycznie każdy plik zawierający podstawowe dane operacji.

Eksport danych do CSV

Zacznijmy jednak od eksportu. Tu sprawa była zdecydowanie prostsza, ponieważ mogłem zaproponować swój format pliku w którym dane są zapisywane. Eksport można wykonać dla dowolnego pliku z budżetem z poziomu listy dostępnych plików. Po kliknięciu pokazanej poniżej ikony aplikacja zwróci plik CSV zawierający wszystkie operacje, od początku prowadzenia danego budżetu:

export csv

 

Plik po pobraniu i wczytaniu do arkusza kalkulacyjnego wygląda następująco:

Jeśli zatem raporty które obecnie są dostępne w aplikacji nie są wystarczające, można teraz zrzucić dane do pliku, i przeprowadzać dodatkowe analizy chociażby w arkuszu kalkulacyjnym.

Import pliku CSV

Tak jak wspomniałem wcześniej, miałem sporo wątpliwości w jaki sposób zaimplementować opcję importu. Zależało mi, żeby była jak najbardziej prosta i uniwersalna. Oczywiście podstawowym zastosowaniem wydaje się import wyciągów bankowych, jednak każdy bank ma swój dedykowany format pliku CSV, z różną zawartością i w różnej postaci. Dodatkowo problemem jest kategoryzacja operacji. Ta w większości banków jest dość uproszczona i nie odpowiada kategoryzacji w aplikacji. Tu zatem nie było możliwości uniknięcia ręcznej obróbki zaimportowanych danych.

Format Family Finance Tracker

Aby dało się zaimportować plik bez żadnej dodatkowej obróbki i ręcznej kategoryzacji po stronie aplikacji, dodałem obsługę natywnego formatu pliku. Plik powinien zawierać następujące kolumny (nazwy kolumn mają kluczowe znaczenie):

Nazwa kolumny Zawartość
operationAmount kwota operacji
operationDate data operacji
category kategoria i podkategoria
note opis operacji

 

  • operationAmount – kwota operacji powinna być podana jako liczba z kropką jako separatorem dziesiętnym. Może zawierać spacje, lub kody waluty. Te wartości w trakcie importu zostaną usunięte. Zatem poprawnymi wartościami będą przykładowo: “99.93”, “1 003.23”, “3 430.45PLN”. Kwota może być podana zarówno jako dodatnia jak i ujemna. Znak w trakcie importu jest pomijany, ponieważ o tym czy jest to przychód czy wydatek decyduje kategoria, do jakiej operacja zostanie przypisana
  • operationDate – data operacji. powinna być w formacie DD-MM-YYYY
  • category – kategoria oraz podkategoria, do jakiej operacja ma zostać przyporządkowana. Powinny tu być podane nazwy kategorii oraz podkategorii z aplikacji Family Finance Tracker. Wartości powinny być rozdzielone pionową kreską, czyli tzw. “pipe” (|). Przykładowo: jeśli w aplikacji mamy kategorię “Jedzenie”, oraz podkategorię “w domu” i w to miejsce chcemy zaimportować operację, w tej kolumnie powinna znaleźć się wartość “Jedzenie|w domu”. Jeśli aplikacja wykryje daną kategorię i podkategorię w trakcie importu, operacja zostanie przypisana do kategorii automatycznie
  • note – ta kolumna jest opcjonalna, zawiera opis operacji.

Przykładowy poprawny plik do importu CSV

operationAmount;operationDate;category;note

5400.50;01-08-2020;Przychody|Wynagrodzenie;Wynagrodzenie za lipiec

30.20;02-08-2020;Jedzenie|W pracy;Lunch

100.80;02-08-2020;Mieszkanie / dom|Prąd;Rachunek za prąd

50.23;05-08-2020;Mieszkanie / dom|Woda i kanalizacja;Rachunek za wodę

150.22;05-08-2020;Transport|Paliwo;Tankowanie Fiata

50.00;07-08-2020;Przychody|Odsetki bankowe;Odsetki z lokat

75.00;07-08-2020;Telekomunikacja|Telefon;Rachunek za komórkę

Rozpoczęcie importu

Opcja “Import” znajduje się w menu głównym. Po przejściu na ekran importu konieczne jest wybranie konta na które wszystkie operacje zostaną zaimportowane. Dodatkowo można wybrać separator (przecinek lub średnik), oraz kodowanie znaków (UTF-8, lub Windows-1250). Następnie należy wybrać plik CSV, który zostanie wczytany. Wybór pliku nie powoduje jeszcze fizycznego zapisania operacji. Wyświetla jedynie listę, którą udało się rozpoznać. Można potem dowolnie zmieniać parametry importu i zmieniać poszczególne operacje

import_screenshot

W polu “Kolumny z wczytanego pliku” pojawi się lista kolumn jakie aplikacja odnalazła w pliku. Jeśli znajdą tam się kolumny o wymienionych powyżej nazwach, zostaną one automatycznie przydzielone do kolumn z wynikiem importu.

Import dowolnego pliku CSV

W przypadku przy mamy plik z wyciągiem bankowym, mamy dwie możliwości. Można w Excelu lub chociażby w LibreOffice przerobić go do formatu Family Finance Tracker. Można również próbować zaimportować w oryginalnej formie, przeprowadzając kategoryzowanie operacji już po stronie aplikacji.

W tym przypadku, gdy kolumny mają inne nazwy, należy ręcznie “przeciągnąć” kolumny w odpowiednie miejsca. Jeśli w jakimkolwiek wierszu wystąpi błąd (np. kategoria lub kwota nie zostały poprawnie rozpoznane), wiersz jest traktowany jako błędny i nie można rozpocząć importu. Pozostaje wtedy ręczna korekta wiersza, lub usunięcie go z listy (nie musimy go usuwać z pliku). W momencie gdy na liście nie ma błędnych operacji, można zatwierdzić import i operacje zostaną wczytane do systemu.

Jeśli dane na liście rozpoznanych operacji wyświetlają się niepoprawnie, lub lista rozpoznanych kolumn jest błędna, przyczyną może być błędny separator. Jego zmiana spowoduje przeładowanie zawartości tabeli. Analogicznie z kodowaniem znaków. Jeśli w tabeli wyświetlają się “krzaczki”, przyczyną może być złe kodowanie znaków. Niektóre banki kodują pliki w formacie “UTF-8”, niektóre w “Windows-1250”. Trzeba poeskperymentować.

Pamiętać należy, że każda zmiana separatora lub kodowania, przeładuje całą tabelę, zatem wszystkie zmiany wcześniej wprowadzone zostaną nadpisane wartościami z pliku.

 

Jak cały proces wygląda w praktyce, można zobaczyć na poniższym filmie:

Import każdej operacji działa analogicznie, jak ręczne jej wprowadzenie, ze wszystkimi konsekwencjami. Aktualizowany jest stan przychodów / wydatków na miesiąc w którym operacja wystąpiła, oraz stan konta. Jeśli zatem stan konta chcemy zachować bez zmian, należy przed importem zapisać sobie aktualne saldo, a po wykonaniu importu zrobić manualną korektę na ekranie listy kont.

Podsumowanie

Stworzenie opisanej powyżej funkcjonalności zajęło mi bardzo dużo czasu. Najbardziej czasochłonne nie było samo oprogramowanie działania, ale raczej próba ułożenia sobie w głowie w jaki sposób podejść do tematu.

Jest jeszcze wiele rzeczy, które można usprawnić, ale postanowiłem wydać wersję w obecnej postaci, żeby zacząć zbierać już Wasze uwagi i pomysły, oraz sprawdzić czy takie podejście sprawdzi się w praktyce.

Czekam zatem na informacje czy funkcjonalność jest dla Was przydatna i co można jeszcze zmienić, aby aplikacja spełniała jak najwięcej Waszych potrzeb.

 

 


4 Komentarze

AndrzejN · sierpień 22, 2020 o 8:25 pm

Cześć,
właśnie zacząłem się zaznajamiać z aplikacją. Bardzo fajny pomysł i inicjatywa. Do tej pory korzystałem z kontomierza – był trochę skomplikowany w niektórych aspektach a w innych mu brakowało.
Plusem kontomierza była możliwosć importu bezpośrednio z banku.
Tutaj widzę wprowadziłeś funkcjonalność importu csv. Sprawdziłem to na podstawie pliku z mbanku. Niestety nie wychodzi to. Coś jest nie tak z odczytem dat – narzedzie miesza miesiąc z dniem – widać to również w filmiku instruktarzowym, gdzie np. wydatek z 3.08 (3 sierpnia) wskoczył jako 8 marca.
Czy może jest na to lekarstwo?

    Anatol Ogórek · sierpień 23, 2020 o 5:08 am

    Hej, sprawdzę to. Jeśli teraz nie ma możliwości, to w kolejnej wersji będzie na pewno 😉 pewnie dodam dodatkowe pole z formatem daty do wyboru.

iza · wrzesień 29, 2020 o 9:19 pm

czy pliki CSV można importować z zagranicznych banków np UK ?

    Anatol Ogórek · wrzesień 30, 2020 o 4:45 am

    Jak najbardziej, nie ma tu żadnych ograniczeń

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *