Do treści
~/cosnaczasie 34 wpisy ostatni: Gdańsk, PL
Menu

Aplikacje wpis #019

Aplikacje do dzielenia rachunków od środka

Na czterodniowym rejsie z ekipą z pracy wszystkie wspólne wydatki szły do aplikacji. Z ciekawości programisty sprawdziłem, jak ona liczy salda, skąd bierze tak mało przelewów i gdzie gubi grosze.

5 min czytania

Kalkulator w telefonie na stosie rachunków

Trzeci dzień rejsu, jacht stoi w porcie w Krynicy Morskiej. Paulina wpisuje do telefonu zakupy z portowego sklepiku, Szymon, nasz sternik z patentem, stawia czajnik, a Konrad patrzy w ekran i marszczy czoło. „Czemu mam oddać pieniądze Paulinie? Ja jej nic nie jestem winien. To Szymon kupował paliwo.”

Pływaliśmy we czwórkę, wszyscy z mojej firmy, cztery dni po Zalewie Wiślanym. Wspólne wydatki od początku szły do aplikacji do dzielenia rachunków: czarter, paliwo, porty, zakupy. Pytanie Konrada było dobre, a odpowiedź na nie mówi więcej o tych aplikacjach niż niejedna recenzja. Więc wieczorem, zamiast grać w karty, rozrysowałem na serwetce, co się dzieje pod spodem.

Co aplikacja trzyma w bazie

Od strony danych taka aplikacja jest prosta. Każdy wydatek to jeden rekord: kto zapłacił, ile, na kogo się dzieli i w jakich proporcjach. Nic więcej nie jest potrzebne.

Z tych rekordów aplikacja liczy dla każdej osoby jedną liczbę, saldo: ile wyłożyła z własnej kieszeni minus ile wynosi jej udział we wszystkich wydatkach. Ktoś na plusie dopłacił za innych, ktoś na minusie jest grupie winien. Suma wszystkich sald zawsze wynosi zero, bo pieniądze nie biorą się znikąd. Jeśli kiedykolwiek zobaczysz grupę, w której salda nie sumują się do zera, masz błąd w aplikacji albo wydatek podzielony na więcej niż sto procent.

To ważne, bo aplikacja w ogóle nie pamięta, kto komu jest winien. Pamięta tylko, kto ile ma na plusie albo na minusie wobec całej grupy.

Upraszczanie długów, czyli skąd pytanie Konrada

Gdyby każdy oddawał każdemu to, co mu się należy za konkretne wydatki, przy czterech osobach wyszłoby nawet sześć par do rozliczenia, a przy ośmiu dwadzieścia osiem. Dlatego większość aplikacji ma opcję upraszczania długów. Algorytm bierze salda i paruje osoby na minusie z osobami na plusie tak, żeby liczba przelewów była jak najmniejsza. Przy czterech osobach wychodzą najwyżej trzy przelewy, zwykle mniej.

Cena za tę wygodę jest taka, że przelew nie musi iść do osoby, która za ciebie płaciła. Konrad był na minusie, Paulina na plusie, więc algorytm kazał mu zapłacić jej, a nie Szymonowi. Dla grupy wychodzi na to samo. Dla człowieka wygląda to dziwnie, dopóki nie zobaczy sald.

Jeśli w twojej grupie takie skróty budzą podejrzenia, w wielu aplikacjach upraszczanie da się wyłączyć. Przelewów będzie więcej, ale każdy od razu zobaczy, za co płaci.

Grosze, które nie chcą się podzielić

Sto złotych na trzy osoby to 33,33 zł i jeden grosz, który gdzieś musi trafić. Aplikacje rozwiązują to różnie: jedna dopisuje grosz pierwszej osobie na liście, inna płacącemu, jeszcze inna losuje. Przy jednym wydatku to nic. Przy czterdziestu na tygodniowym wyjeździe robi się z tego kilkadziesiąt groszy różnicy, której nikt nie potrafi wyjaśnić.

U nas zasada była prosta: końcowe przelewy zaokrąglamy do pełnych złotych i nikt nie liczy groszy. Wystarczyło powiedzieć to na głos pierwszego dnia.

Waluty i kursy

Na rejsie płaciliśmy w złotówkach, ale tydzień wcześniej Szymon rozliczał tą samą aplikacją wyjazd do Czech. Tam wychodzi druga pułapka. Aplikacja przelicza wydatek w obcej walucie po kursie, który sama pobiera, zwykle z dnia dodania wydatku. Bank przelicza płatność kartą po swoim kursie i często dzień albo dwa później. Te dwie kwoty prawie nigdy się nie zgadzają.

Jeśli zależy ci na dokładności, wpisuj wydatek w walucie, w której go zapłaciłeś, i sprawdź w ustawieniach grupy, czy da się ręcznie poprawić kurs. Jeśli nie zależy, ustalcie z góry, że różnice kursowe nikogo nie obchodzą.

Płatność przy stoliku w restauracji

Offline na wodzie

Na środku zalewu zasięg bywa kapryśny. Dobra aplikacja zapisuje wydatek w telefonie i wysyła go na serwer, gdy wróci internet. To zwykła synchronizacja, ale ma znany problem: dwie osoby mogą wpisać ten sam wydatek, każda u siebie, bez zasięgu. Aplikacja nie ma jak się domyślić, że to ta sama opłata portowa, więc po synchronizacji jest dwa razy.

Nam przydarzyło się to dokładnie raz. Opłatę za port we Fromborku wpisali i Szymon, i Paulina, każde u siebie, choć zapłacił tylko Szymon. Paulina wpisała ją „na zapas”, bo była pewna, że on zapomni. Wyszło to dopiero wieczorem, gdy saldo Pauliny urosło o opłatę, której nie płaciła. Od tamtej pory obowiązywała zasada: wpisuje ten, kto płacił, nikt inny.

Eksport, czyli czy dane da się zabrać

Sprawdzam to w każdej aplikacji, zanim do czegokolwiek jej użyję: czy da się pobrać wszystkie wydatki grupy do pliku CSV albo arkusza. Aplikacje znikają, zmieniają cennik, przenoszą funkcje do płatnej wersji. Eksport to jedyna gwarancja, że historia wyjazdu nie zniknie razem z nimi.

Ma to też praktyczną stronę. Po powrocie wpisuję do swojego budżetu tylko jedną pozycję, mój udział w wyjeździe, a szczegóły zostają w pliku. Jak prowadzę ten budżet, opisałem w tekście o aplikacjach do budżetu domowego.

Prywatność całej grupy

Tu jako programista robię się podejrzliwy. W takiej aplikacji nie ma tylko twoich danych. Są imiona, adresy e-mail albo numery telefonów wszystkich osób z grupy i historia tego, co razem kupowaliście. Kilka rzeczy, na które patrzę:

  • Dostęp do kontaktów. Część aplikacji chce całej książki adresowej, żeby „łatwiej zaprosić znajomych”. Wystarczy dodać ludzi ręcznie albo wysłać im link do grupy.
  • Numery kont i kart. Nie wpisuję ich do aplikacji, jeśli nie muszę. Przelew na telefon przez BLIK działa bez tego.
  • Kto widzi grupę. Link zapraszający bywa ważny bez końca. Jeśli wrzucisz go na publiczny czat, grupa przestaje być prywatna.
  • Wiadomości o „zwrocie”. Jeśli dostaniesz SMS z prośbą o dopłatę „za wspólny wyjazd” z nieznanego numeru, zadzwoń do znajomego, zanim cokolwiek klikniesz. Oszuści lubią wydarzenia, o których wiadomo, że się odbyły.

Aplikację instaluj ze sklepu z aplikacjami i sprawdź wydawcę. Najbardziej znane, jak Splitwise, istnieją od lat, ale podobnych jest dużo i zakres darmowych planów zmienia się co jakiś czas.

Jak to ustawiliśmy przed wypłynięciem

Grupę założyła Paulina, jeszcze w pracy, w przerwie na kawę. Ustaliliśmy trzy rzeczy: czarter, paliwo i porty dzielimy na czterech; jedzenie też, bo gotowaliśmy razem; piwo tylko na tych, którzy piją, czyli na trzech, bo Szymon jako sternik nie pił. Każdy wydatek dostawał opis, po którym za tydzień da się go rozpoznać, na przykład „port Krynica, piątek”, a nie „opłata”.

Ostatniego dnia, jeszcze w porcie, otworzyliśmy aplikację na jednym telefonie i przejrzeliśmy listę. Poszły trzy przelewy na telefon, zaokrąglone do złotówki. Konrad zapłacił Paulinie bez dyskusji, bo widział salda czarno na białym.

Eksport z rejsu leży u mnie na dysku jako plik z trzydziestoma siedmioma wierszami. Szymon już pyta, czy w przyszłym roku płyniemy na tydzień. Przed takim wyjazdem, zwłaszcza za granicę, przejrzę jeszcze mapy offline i aplikacje na wyjazd, bo na wodzie zasięg bywa gorszy niż w porcie.

Dalej: Aplikacje

Czytaj dalej

Wszystko z tematu