Case study · Dystrybucja wina i żywności, grupa kapitałowa
Jedna liczba sprzedaży zamiast trzech.
Połączyliśmy dwie bazy Comarch ERP XL, Logifact WMS, Symfonię i base.com w jedną hurtownię danych. Grupa MJG ma ok. 80 raportów w Metabase, odświeżanych co godzinę i zgodnych z ERP co do grosza.
- Klient
- Grupa MJG
- Zakres
- ERP

Pytanie klienta
Ile naprawdę sprzedaliśmy w zeszłym miesiącu i dlaczego każdy raport mówi co innego?
Grupa MJG to dystrybutor wina i żywności. Vininova importuje wino i sprzedaje je hurtowo do restauracji i sklepów, ma sieć sklepów stacjonarnych i klub lojalnościowy. Index Food dostarcza żywność do sieci handlowych i sklepów tradycyjnych, prowadzi też sklep internetowy i delikatesy. Spółki mają osobne bazy Comarch ERP XL i wspólny magazyn z Logifact WMS.
Raporty powstawały latami w kilku miejscach: w Comarch BI Point (kilkaset raportów), w zapytaniach SQL wysyłanych mailem przez n8n i w arkuszach. Za ten sam miesiąc trzy narzędzia pokazywały trzy różne sumy sprzedaży, a różnica sięgała prawie 2%. Nikt nie wiedział, która jest prawdziwa. Handlowcy byli rozliczani z kwot, których nie dało się odtworzyć.
Cały projekt w półtorej minuty
Skąd brały się trzy różne liczby, jak z nich powstała jedna i jakie raporty dostali zarząd, handlowcy, zakupy i sklepy.
Dane na zrzutach w filmie są zanonimizowane.
Jak to zrobiliśmy
Najpierw liczby, potem wykresy
Pierwszy wykres powstał dopiero wtedy, gdy wiedzieliśmy, skąd biorą się różnice między narzędziami.
01 Audyt liczb, zanim powstał pierwszy wykres
Policzyliśmy sprzedaż za jeden zamknięty miesiąc bezpośrednio w ERP i porównaliśmy ją z wynikami BI Point i raportów z n8n. Wszystkie różnice rozpisaliśmy na składniki: faktury wystawiane z WZ, usługi, gratisy, eksport, korekty kosztu, daty dokumentów. Różnice wynikały z definicji, a nie z błędów w danych.
02 Karta decyzji zamiast domysłów
Każdą różnicę pokazaliśmy na prawdziwych dokumentach z ERP, z kwotą, której dotyczy. Klient zdecydował o 13 punktach, na przykład czy sprzedaż liczymy po dacie sprzedaży czy wystawienia, do którego handlowca przypisujemy klienta i co robimy z gratisami. Te decyzje są zapisane w kodzie hurtowni i w pomocy dla użytkowników.
03 Hurtownia danych z regułami w jednym miejscu
Dane z obu baz Comarch ERP XL, Logifact WMS, Symfonii (sklep internetowy) i base.com (zamówienia z Allegro i sklepów) trafiają co godzinę do hurtowni PostgreSQL. Reguły biznesowe są w modelach dbt i nigdzie więcej: kanał sprzedaży, handlowiec, marża, rotacja zapasu, należności. Z systemami źródłowymi łączymy się tylko do odczytu.
04 Raporty dla każdego działu w Metabase
Na hurtowni zbudowaliśmy ok. 80 dashboardów: dla zarządu grupy, dyrektora handlowego, handlowców, działu zakupów, sklepów, magazynu i marketingu. Każdy widzi tylko swoją spółkę i swój zakres. Raporty są zapisane w kodzie, więc zmiana definicji wskaźnika trafia wszędzie naraz.
Co połączyliśmy
Sześć źródeł, jedna hurtownia, raporty dla każdego działu
Każde źródło ma swój folder na każdym etapie: pobranie danych, reguły w hurtowni, raporty. Raporty łączące obie spółki mają osobny schemat grupy, w którym sprzedaż wewnątrzgrupowa jest liczona osobno.
Plan sprzedaży dział handlowy wgrywa sam, jako plik CSV prosto w Metabase.
- Comarch ERP XL Vininova
- Comarch ERP XL Index Food
- Logifact WMS
- Symfonia Handel
- base.com
- Plan sprzedaży w CSV

- 6
- systemów źródłowych
- Dwie bazy Comarch ERP XL, Logifact WMS, Symfonia Handel, base.com i pliki CSV z planem sprzedaży.
- ok. 80
- dashboardów
- Ponad 1 200 pytań (kafelków) w Metabase, dla dwóch spółek i zarządu grupy.
- 185
- modeli dbt
- Reguły biznesowe zapisane raz, z testami i opisem każdego pola.
- 10 dni
- do pierwszego kompletu
- Od pierwszego commita do raportów sprzedaży, zakupów, magazynu i kokpitu zarządu grupy. Potem raporty rozwijamy razem z działami.
Handlowcy
Do kogo należy sprzedaż, gdy klient zmienia opiekuna?
Stare raporty przypisywały sprzedaż do dzisiejszego opiekuna klienta. Po przepięciu klientów historia przeskakiwała: jeden handlowiec miał w przeszłości zero, inny kilkadziesiąt procent więcej.
Teraz handlowiec to opiekun zapisany na dokumencie w chwili sprzedaży. Historia się nie zmienia, a wyniki zespołu da się porównać rok do roku. Dane na zrzucie są zanonimizowane.

Raport, który przychodzi sam
W poniedziałek o 8:00 każdy handlowiec dostaje swój region
Sprzedaż miesiąca do dziś, porównanie rok do roku, klienci do odzyskania i struktura portfela. Tylko dla jego regionu, mailem, czytelnie na telefonie.
Handlowiec nie potrzebuje do tego konta w systemie. Dane na zrzucie są zanonimizowane.

Zarząd
Zarząd grupy widzi gotówkę, nie tylko sprzedaż
Kokpit grupy łączy sprzedaż obu spółek (bez sprzedaży wewnątrzgrupowej), należności, zobowiązania, zapas i przepływy gotówki na najbliższe 7, 30, 60 i 90 dni.
Obok kapitał obrotowy z rotacją należności, zapasu i zobowiązań. Dane na zrzucie są zanonimizowane.

Co zmieniło się w firmie
Każdy dział ma swoje raporty, liczone tak samo
Jedna definicja sprzedaży
Raport zarządu, raport handlowca i wynik sklepu liczą to samo i tak samo. Gdy definicja się zmienia, zmienia się w jednym miejscu.
Zakupy widzą rotację i ryzyko
Dni zapasu per towar, alerty niskiego zapasu i nadmiaru, wiek partii, ryzyko przeterminowania i terminowość dostaw u dostawców.
Sklepy i Klub
Każdy sklep widzi swój wynik dzień po dniu, zaopatrzenie z centrali i aktywność klubowiczów. Zarząd widzi wynik sklepów z kosztami z księgi.
Własne pytania bez SQL
Pracownicy budują własne zestawienia w kreatorze Metabase, na tych samych, sprawdzonych tabelach. Każde pole ma opis w pomocy.
Uprawnienia per spółka i dział
24 konta w 18 grupach uprawnień. Zarząd jednej spółki nie widzi drugiej, a raporty zarządu są w osobnych kolekcjach.
Godzina danych na każdym raporcie
Każdy dashboard ma kafelek „Dane z” z godziną ostatniego pobrania. Odświeżanie co godzinę od 7:00 do 22:00, pełne przeliczenie o 6:00.
Zakupy
Czy ten towar zejdzie przed terminem?
Index Food widzi partie z datą ważności i prognozę zejścia przy obecnym tempie sprzedaży. Partie zagrożone przeterminowaniem trafiają na listę do działania, zanim staną się stratą.
Dane na zrzucie są zanonimizowane.

Sklepy
Wynik każdego sklepu dzień po dniu
Sprzedaż sklepów stacjonarnych Vininovy, średni paragon, klubowicze kupujący w sklepie i rozkład tygodnia. Zarząd ma obok wynik sklepów z kosztami z księgi (MPK).
Dane na zrzucie są zanonimizowane.

co do groszazgodność z ERP
Każdą zmianę definicji sprawdzamy zapytaniem wprost do Comarch ERP XL za wybrany miesiąc. Należności Vininovy i zobowiązania obu spółek, także z fakturami importowymi w walucie, zgadzają się co do grosza. Sprzedaż za trzy pełne lata różni się najwyżej o kilka złotych rocznie, z zaokrągleń przy podziale na magazyny.
Wynik każdego uzgodnienia (okres, kwoty, różnica) zapisujemy w dokumentacji projektu. Po każdym odświeżeniu automat otwiera wszystkie kafelki wszystkich dashboardów, więc niedziałający raport widzimy przed użytkownikami.
Samodzielność
Pracownicy zadają własne pytania
Kreator Metabase działa bez SQL: tabela, filtr, podsumowanie, wykres. Każdy kafelek dashboardu można otworzyć i rozwinąć, a wynik zapisać jako własne pytanie.
Kreator pracuje na tych samych tabelach co gotowe raporty, więc własne zestawienie pokazuje te same liczby.

Stan wdrożenia, 7 listopada 2026
Działa, w toku, następne kroki
Działa
Hurtownia i ok. 80 dashboardów
Sześć źródeł, 24 konta w 18 grupach uprawnień, 40 subskrypcji mailowych, raporty tygodniowe handlowców i pomoc z opisem każdego wskaźnika.
W toku
Plan sprzedaży i jego wykonanie
Plan hurtu na 2026 rok jest wgrany, plan sklepów w przygotowaniu. Do tego ostrzeżenie o nieaktualnych danych na dashboardach.
Następne kroki
Rabaty, portfel z CRM, nowe źródła
Rabat od cennika kanału, portfel handlowców z CRM i kolejne źródła w miarę zmian systemów w grupie.
Raportowanie i BI

