Sprawozdanie z KRS
czytelne w Excelu.
Konwerter zamienia e-sprawozdanie finansowe w formacie XML na arkusz Excel z bilansem i rachunkiem zysków i strat. Zamiast kodów pozycji pokazuje ich pełne, oficjalne nazwy. Działa w przeglądarce, a plik nie jest nigdzie wysyłany.
Dane są publiczne. Tylko trudno je przeczytać.
Spółki składają roczne sprawozdania finansowe do Krajowego Rejestru Sądowego jako pliki XML według wzoru Ministerstwa Finansów. Każdy może je bezpłatnie pobrać z Repozytorium Dokumentów Finansowych.
Ten format jest jednak zrobiony dla programów, nie dla ludzi. Plik ma setki zagnieżdżonych pozycji opisanych kodami, a kwoty za dwa lata są rozrzucone po całym dokumencie.
Konwerter odczytuje taki plik i układa go w arkusz, który wygląda jak bilans na papierze: z nazwami pozycji, wcięciami, kwotami za oba lata i automatyczną kontrolą poprawności.
Format dla maszyn. Nie dla analityka.
Kody zamiast nazw
Środki pieniężne to w pliku pozycja Aktywa_B_III_1_C. Żeby ją zrozumieć, trzeba sięgnąć do załącznika ustawy o rachunkowości albo do schematu XSD.
Ta sama litera, inne znaczenie
Rachunek zysków i strat ma dwa warianty: porównawczy i kalkulacyjny. Zysk netto jest w nich pod różnymi literami, a kod „A” oznacza co innego w każdej części sprawozdania.
Podpis, wersje, korekty
Pliki bywają zapakowane w podpis elektroniczny (.xml.xades), powstają w różnych wersjach schematu, a dane za poprzedni rok mogą występować w dwóch wersjach: pierwotnej i po przekształceniu.
Od pliku XML
do gotowego arkusza.
Cała konwersja odbywa się w przeglądarce użytkownika. Serwer tylko udostępnia narzędzie. Sprawozdanie nie opuszcza komputera.
Python, który działa w przeglądarce.
Logika konwersji jest napisana w Pythonie. Dzięki Pyodide, czyli Pythonowi skompilowanemu do WebAssembly, ten sam kod działa zarówno w terminalu, jak i bezpośrednio na stronie.
Nazwy 563 pozycji pochodzą z oficjalnego schematu XSD Ministerstwa Finansów. Program przypisuje je według pełnej ścieżki w strukturze dokumentu, a nie samego kodu, więc „A” w rachunku zysków i strat nie myli się z „A” w przepływach pieniężnych.
Wynikiem jest plik Excel z czterema arkuszami: informacje o spółce, aktywa, pasywa oraz rachunek zysków i strat. Zawiera kwoty za rok bieżący, poprzedni i, jeśli są, poprzedni po przekształceniu.
Wybierz plik i pobierz Excel
Przy pierwszym uruchomieniu przeglądarka ładuje Pythona, co trwa kilka sekund. Potem wystarczy wskazać e-sprawozdanie w formacie XML. Przed pobraniem widać nazwę spółki, cztery kluczowe kwoty i wynik kontroli. Kilka sekund po pobraniu wynik jest usuwany z pamięci przeglądarki.
Sprawozdanie zostaje u Ciebie.
Sprawozdania przed złożeniem bywają poufne. Dlatego narzędzie zaprojektowałam tak, żeby nie wymagało zaufania do żadnego serwera.
Plik nie opuszcza komputera
Konwersja odbywa się w pamięci przeglądarki. Kilka sekund po pobraniu Excela strona usuwa wynik z pamięci i z ekranu.
Kod tylko z jednego źródła
Pyodide i biblioteki są dołączone do projektu, z sumami kontrolnymi sprawdzonymi z npm i PyPI. Polityka Content-Security-Policy blokuje połączenia z innymi adresami.
Tekst, nie formuła
Tekst z pliku zaczynający się od „=” mógłby zostać zapisany jako formuła i wykonany przez Excela. Konwerter zapisuje każdy tekst jako zwykły tekst. Ten przypadek jest sprawdzony testem.
Złośliwy XML jest odrzucany
Próby odczytu plików z dysku przez encje XML (XXE) i „bomba XML”, która miała zawiesić program, kończą się czytelnym komunikatem zamiast awarii.
Ten sam plik z KRS.
Gotowy do analizy.
Rdzeń konwertera: odczyt drzewa XML, rekurencyjne przejście po pozycjach, kontrola poprawności. Moduł nie korzysta z dysku ani sieci, więc działa w terminalu i w przeglądarce.
Interpreter Pythona uruchamiany w przeglądarce. Ładuje się raz, a potem zostaje w pamięci podręcznej, dzięki czemu kolejne uruchomienia trwają około dwóch sekund.
Tworzenie pliku Excel w pamięci: formatowanie kwot, wcięcia według poziomu pozycji, zablokowane nagłówki i kolory zgodne z identyfikacją portfolio.
Skrypt wyciąga nazwy pozycji ze schematu Ministerstwa Finansów (730 KB) do lekkiego pliku JSON (60 KB). Przy nowej wersji schematu wystarczy uruchomić go ponownie.
Interfejs bez frameworka: wybór i przeciąganie pliku, podgląd wyniku, pobieranie i czyszczenie danych. Treść z pliku trafia na stronę wyłącznie jako tekst.
Darmowy hosting statyczny przez HTTPS. Narzędzie nie potrzebuje backendu, więc nie ma serwera, który trzeba utrzymywać ani który mógłby przechowywać pliki.
Konwerter obsługuje sprawozdania jednostek innych, czyli pełny wzór. Kolejne etapy to przykładowe sprawozdanie fikcyjnej spółki do szybkiego testu oraz obsługa wzorów dla jednostek małych i mikro. Kod na GitHubie ↗
