Komponenty Symfony: czym są i do czego służą w aplikacjach PHP?
Symfony często opisuje się jako framework PHP, ale jego fundament stanowi około pięćdziesięciu niezależnych bibliotek. K...
Czytaj więcej →Zanim zaczęliśmy pisać kod modułu finansowego Open Mercato, spędziliśmy cały dzień przy ścianie pełnej karteczek. W jednym miejscu spotkali się deweloperzy, core team platformy i ekspert, który zna prowadzenie ksiąg rachunkowych od podszewki.
Efekt tego spotkania nas zaskoczył. Dopiero kiedy zapisaliśmy cały proces, zrozumieliśmy, jak wiele jego elementów jest ze sobą powiązanych. To druga część cyklu o module finansowym Open Mercato – w pierwszej wyjaśniliśmy, dlaczego zaczynamy od planu kont i księgi głównej.
Spotkaliśmy się z dwóch powodów. Chcieliśmy, żeby cały zespół miał wspólny obraz procesów księgowych, zamiast kilku różnych wyobrażeń o tym, jak działają. Zależało nam też na tym, żeby wiedza domenowa nie pozostawała wyłącznie u jednej osoby.
Warsztat nie służył przygotowaniu dokumentacji, ustaleniu budżetu ani wycenie prac. Najpierw musieliśmy zrozumieć, jak operacje finansowe przebiegają w rzeczywistości i jakie zależności trzeba uwzględnić przy rozwoju Open Mercato.
Zamiast prezentacji i diagramów architektury mieliśmy ścianę oraz karteczki. Układaliśmy zdarzenia biznesowe w kolejności, w jakiej rzeczywiście występują. Obok zapisywaliśmy reguły określające, co musi być spełnione, aby dane zdarzenie mogło nastąpić, oraz pytania, na które nie znaliśmy jeszcze odpowiedzi lub co do których mieliśmy różne zdania. Tak w praktyce wygląda Big Picture Event Storming.
Dzięki temu wszyscy patrzyliśmy na ten sam przebieg procesu. Nie próbowaliśmy jeszcze dopasowywać go do architektury systemu.
Przeczytaj pierwszą część cyklu: Tworzymy moduł finansowy Open Mercato – zaczynamy od planu kont i księgi głównej.
Warsztat odbył się 5 września 2026 r. w Katowicach, a prowadził go Mariusz Gil. Ekspertem domenowym był Mateusz Duda, kontroler finansowy z incro, który wcześniej pracował jako księgowy i ma praktyczne doświadczenie w zamykaniu ksiąg rachunkowych.
Nad technologią czuwali deweloperzy Commerce Weavers oraz core team Open Mercato.
Obecność osób rozwijających platformę pozwalała na bieżąco wyjaśniać, które mechanizmy już w niej istnieją. Gdy pojawiało się pytanie o możliwości Open Mercato, odpowiedź mogliśmy uzyskać tego samego dnia, bez odkładania rozmowy na później.
Najważniejszym odkryciem warsztatu była rzeczywista skala procesów finansowych.
Zaczęliśmy od konfiguracji danych firmy, a zakończyliśmy na zamknięciu roku i przygotowaniu kolejnego okresu. Na ścianie powstało siedem powiązanych etapów:
Konfiguracja: dane firmy, rok obrotowy, plan kont i bilans otwarcia.
Księgowanie: dekretacja dokumentów i zapisy księgowe.
Zakupy i zobowiązania: operacje zakupowe oraz wynikające z nich zobowiązania.
Sprzedaż i należności: procesy sprzedażowe i rozliczanie należności.
Bank: operacje bankowe, uzgadnianie wyciągów i windykacja.
Raportowanie i zamknięcie miesiąca: raporty, zamknięcie okresu i podatki.
Zamknięcie roku: zakończenie roku obrotowego i złożenie sprawozdania finansowego do KRS.
Ostatni etap prowadził z powrotem do bilansu otwarcia nowego roku. Zobaczyliśmy więc nie zestaw osobnych funkcji, ale pełny cykl powiązanych procesów.
Myśleliśmy, że wiemy, jak duży jest ten moduł. Nie wiedzieliśmy.
Ta mapa nie jest listą funkcji dostępnych już w Open Mercato ani zakresem jednej iteracji. Pokazuje procesy i zależności, które poznawaliśmy podczas warsztatu.
Drugim rezultatem był polsko-angielski słownik pojęć księgowych, zweryfikowany i poprawiony przez eksperta domenowego.
Dobrym przykładem znaczenia precyzyjnej terminologii jest różnica między stornem czerwonym a czarnym. Storno czerwone odwraca zapis kwotami ujemnymi po tych samych stronach konta. Storno czarne zapisuje te same kwoty dodatnio, ale po przeciwnych stronach (Winien zamiast Ma i odwrotnie).
Oba sposoby są poprawne, ale dają inne obroty na kontach. Jeśli model danych obsłuży tylko jeden z nich albo potraktuje je zamiennie, zestawienie obrotów i sald przestanie się zgadzać z oczekiwaniami księgowego, a odtworzenie i audyt operacji staną się trudniejsze.
Dlatego wspólny słownik nie był formalnością. Pomógł nam ustalić, że osoby odpowiedzialne za księgowość i rozwój Open Mercato używają tych samych pojęć w tym samym znaczeniu.
Trzecim rezultatem warsztatu była lista kwestii wymagających dalszego wyjaśnienia.
W niektórych miejscach brakowało nam informacji, w innych różniliśmy się w interpretacji procesu. Zamiast przyjmować niezweryfikowane założenia, zapisywaliśmy pytania do dalszych ustaleń.
Niejasność odkrytą przed implementacją można rozstrzygnąć podczas projektowania. Ta sama niepewność odkryta w gotowym rozwiązaniu może wymagać przebudowy jego części.
Nie musieliśmy więc kończyć dnia z odpowiedzią na wszystko. Ważne było to, że wiedzieliśmy, co jeszcze wymaga sprawdzenia.
Zanim zaczniemy projektować złożony obszar systemu, warto zobaczyć cały proces oczami osób, które pracują z nim na co dzień, i zestawić tę wiedzę z możliwościami technicznymi platformy. Event Storming, technika wywodząca się z Domain-Driven Design, dobrze się do tego nadaje, bo zmusza do opisania procesu zdarzeniami, a nie funkcjami.
Nie dotyczy to wyłącznie księgowości w Open Mercato. Podobny warsztat można przeprowadzić przed rozpoczęciem prac nad obsługą zamówień, zwrotów czy innym rozbudowanym procesem biznesowym.
Event Storming to warsztatowa metoda modelowania procesów biznesowych. Uczestnicy układają na ścianie zdarzenia w kolejności, w jakiej zachodzą, a obok zapisują reguły i pytania bez odpowiedzi. W wariancie Big Picture celem jest wspólny obraz całego procesu, zanim zespół zacznie projektować system.
Na warsztacie zmapowaliśmy siedem powiązanych etapów: konfigurację, księgowanie, zakupy i zobowiązania, sprzedaż i należności, bank, raportowanie z zamknięciem miesiąca oraz zamknięcie roku. To mapa procesów, a nie lista funkcji dostępnych już w Open Mercato.
Symfony często opisuje się jako framework PHP, ale jego fundament stanowi około pięćdziesięciu niezależnych bibliotek. K...
Czytaj więcej →
Commerce Weavers bierze na siebie budowę modułu finansowego Open Mercato. Pierwsza iteracja obejmuje plan kont i księgę ...
Czytaj więcej →
Wybór frameworka może wyglądać jak decyzja czysto techniczna. W praktyce wpływa jednak na znacznie więcej niż sposób, w ...
Czytaj więcej →