System magazynowo-sprzedażowy dla sieci sklepów

background
Dedykowany system magazynowo-sprzedażowy dla sieci sklepów odzieżowych – web, mobile i desktop na jednym API

Technologie: Laravel 12, React, React Native (Expo), Electron, PostgreSQL, Docker

Wdrożenie dedykowanego systemu magazynowo-sprzedażowego, który zastąpił Excele i ręczne przepisywanie stanów – jedno źródło prawdy dla magazynu centralnego i wszystkich punktów sprzedaży, z aplikacją webową, mobilną i desktopową działającą na tym samym API.

Liczby projektu

  • 3 platformy – web, mobile (iOS/Android), desktop (Windows/macOS) w pełnym parytecie
  • 1 API – jedno REST API /api/v1 obsługuje wszystkie trzy aplikacje
  • 100% operacji punktu sprzedaży objętych systemem – od przyjęcia dostawy po paragon
  • Offline – sprzedaż działa bez internetu, dane synchronizują się po powrocie sieci

Wyzwanie

Firma odzieżowa prowadząca magazyn centralny i sieć punktów sprzedaży zarządzała towarem w arkuszach kalkulacyjnych i papierowych zestawieniach. Stany magazynowe w punktach rozjeżdżały się ze stanem faktycznym, zamówienia towaru z punktów do magazynu chodziły telefonicznie i mailowo, a sprzedaż internetowa (PrestaShop) była osobnym, ręcznie aktualizowanym światem.

Problemy, które klient zgłosił na starcie:

  • Rozjazd stanów – ten sam towar „istniał" w Excelu i nie istniał na półce; brak kontroli nad tym, kto i kiedy zmienił stan.
  • Zamówienia towaru bez obiegu – punkt prosił o towar telefonicznie, magazyn nie miał kolejki ani historii decyzji.
  • Podwójna praca przy e-commerce – każdą zmianę ceny i stanu trzeba było wprowadzić drugi raz w sklepie internetowym.
  • Dokumenty poza systemem – faktury VAT i etykiety kurierskie wystawiane ręcznie, w oderwaniu od sprzedaży.
  • Brak ograniczeń per punkt – każdy widział wszystko, nie było ról ani zakresu danych.
  • Zero danych do decyzji – żadnego raportu dziennego, żadnej analizy sprzedaży.

Przed i po

PrzedPo
Excel i papierowe zestawieniaJedno źródło prawdy dla wszystkich punktów
Ręczne przepisywanie stanówStany schodzą automatycznie przy sprzedaży
Zamówienia towaru telefonicznieObieg punkt → magazyn ze statusami i historią
PrestaShop aktualizowany osobnoAutomatyczna synchronizacja katalogu i stanów
Faktury i etykiety wystawiane ręcznieFaktura VAT i przesyłka InPost z poziomu sprzedaży
Każdy widzi wszystkoRole hierarchiczne + zakres danych per punkt
Brak raportówRaport dzienny, kasa i analityka z wykresami
Praca tylko przy komputerzeWeb, telefon i stanowisko desktopowe – ten sam zakres

Rozwiązanie

Zbudowaliśmy dedykowany system w architekturze Laravel + React, gdzie backend od pierwszego dnia jest czystym REST API. Dzięki temu ta sama logika biznesowa obsługuje aplikację webową, mobilną i desktopową – bez duplikowania kodu i bez rozjazdu zachowań między platformami.

Architektura systemu

  1. Warstwa API (Laravel 12, PostgreSQL) – logika biznesowa w serwisach domenowych, operacje na stanach wyłącznie przez lockowany StockService (brak oversell, brak stanu ujemnego), soft delete i audit log na każdej istotnej operacji.
  2. Warstwa operacyjna (web, React + TypeScript) – katalog, magazyn, zamówienia towaru, sprzedaż ze skanerem, kasa, dokumenty i raporty.
  3. Warstwa mobilna (React Native / Expo) – pełny parytet z webem plus tryb offline: kolejka operacji w lokalnej bazie SQLite i synchronizacja po odzyskaniu sieci.
  4. Warstwa stanowiska (Electron) – ta sama aplikacja web jako renderer, plus obsługa sprzętu (skaner kodów jako HID, drukarka etykiet), tryb offline i wymuszona aktualizacja.
  5. Warstwa integracji – PrestaShop, Fakturownia, InPost, GUS/VIES i kursy NBP, z logiem każdego wywołania i testem połączenia w panelu administratora.

Bezpieczeństwo jako fundament, nie dodatek

Model uprawnień był projektowany razem ze schematem bazy, a nie doklejany później:

  • Role hierarchiczne – administrator, kierownik magazynu, kierownik punktu, kasjer, obsługa; każda wyższa rola zawiera uprawnienia niższych.
  • Scoping danych per punkt egzekwowany po stronie serwera – punkt nie widzi i nie może zmienić danych innego punktu, niezależnie od tego, co wyśle klient.
  • Audit log i soft delete – każde usunięcie jest odwracalne i wiadomo, kto je wykonał.
  • Pieniądze liczone wyłącznie na serwerze – ceny, rabaty i VAT nigdy nie pochodzą z aplikacji klienckiej.

Jedno API, trzy aplikacje. Każda reguła biznesowa – od blokady oversellu po naliczanie VAT – istnieje w kodzie dokładnie raz. Aplikacje web, mobilna i desktopowa są tylko różnymi interfejsami do tej samej logiki, więc nie ma sytuacji, w której „na telefonie liczy inaczej niż na komputerze".

Proces wdrożenia

Projekt realizowany przyrostowo, w 6 etapach – każdy kończył się działającą, demonstrowalną wersją i tygodniem testów po stronie klienta.

  1. Etap 1 – fundament operacyjny. Role i uprawnienia, magazyn centralny i magazyny punktów, katalog (kategorie, atrybuty, cechy, warianty), stany, zamówienia towaru, sprzedaż ze skanowaniem kodów, raport dzienny.
  2. Etap 2 – rozszerzenia. Import OCR dokumentów, obsługa skaz i reklamacji ze zdjęciami, druk etykiet z kodami kreskowymi, kasa dzienna, waluty wg kursu NBP.
  3. Etap 3 – integracje. PrestaShop (katalog, ceny, stany, kategorie, rozmiary), Fakturownia (faktury VAT), InPost (przesyłki i etykiety), GUS (dane kontrahenta).
  4. Etap 4 – aplikacja mobilna. Skanowanie, stany, odbiór zamówień, zgłoszenia skaz; UI zaprojektowane pod obsługę jedną ręką.
  5. Etap 5 – pełny parytet mobilny. Sprzedaż, faktury, raporty i tryb offline.
  6. Etap 6 – aplikacja desktopowa. Electron, obsługa sprzętu stanowiska, tryb offline i wymuszona aktualizacja wersji.

Wyzwania przed wdrożeniem systemu magazynowo-sprzedażowego

W sieci sklepów odzieżowych koszt braku danych jest natychmiastowy: towar, którego „nie ma w systemie", nie sprzedaje się, a towar, który jest w systemie, ale nie na półce, generuje anulowane zamówienia internetowe. Arkusze kalkulacyjne radzą sobie do momentu, w którym punktów jest więcej niż jeden, a asortyment ma warianty rozmiarowe i kolorystyczne – wtedy liczba kombinacji rośnie szybciej niż zdolność do ręcznego ich pilnowania.

Drugim progiem jest sprzedaż wielokanałowa. Dopóki sklep internetowy jest utrzymywany osobno, każda operacja wykonywana jest dwa razy – i prędzej czy później jedna z nich zostaje pominięta.

Szybki test: jeśli ta sama zmiana stanu albo ceny musi być wpisana w więcej niż jednym miejscu, masz już rozjazd danych – tylko jeszcze o tym nie wiesz. Więcej o tym, kiedy arkusze przestają wystarczać, piszemy w artykule Kiedy Excel przestaje wystarczać.

Jak działa dedykowany system do zarządzania magazynem i sprzedażą

  • Kasjer – skanuje kod, dodaje do koszyka, wybiera walutę i formę płatności (również płatność dzielona: gotówka + karta + przelew), wystawia paragon albo fakturę VAT i – jeśli to wysyłka – od razu tworzy przesyłkę InPost z etykietą.
  • Kierownik punktu – otwiera i zamyka zmianę kasową, pilnuje bilansu i różnicy, zamawia towar z magazynu centralnego, zgłasza skazy i reklamacje ze zdjęciami.
  • Kierownik magazynu – obsługuje kolejkę zamówień z punktów, przyjmuje dostawy, prowadzi katalog i zarządza stanami magazynu centralnego.
  • Administrator – konfiguruje integracje, role, punkty i ustawienia obiegu akceptacji, ma wgląd w audit log i logi wywołań integracji.

Pełna kontrola nad towarem i sprzedażą bez dzwonienia po punktach.

Zakres wdrożenia i integracje

  • PrestaShop – synchronizacja produktów, cen, stanów, kategorii i rozmiarów; aplikacja jest źródłem prawdy, sklep internetowy miejscem sprzedaży.
  • Fakturownia – automatyczne faktury VAT, korekty, serie numeracji per punkt.
  • InPost – przesyłki paczkomatowe i kurierskie z etykietą generowaną z poziomu sprzedaży.
  • GUS / VIES – pobieranie i weryfikacja danych kontrahenta po NIP.
  • NBP – kursy walut dla sprzedaży w EUR i USD.
  • Sprzęt stanowiska – skaner kodów kreskowych i drukarka etykiet (konfiguracja per punkt).

Efekty biznesowe po wdrożeniu

Eliminacja podwójnego wprowadzania danych zdjęła z pracowników godziny pracy tygodniowo i usunęła całą klasę błędów wynikających z przepisywania. Stany są spójne między punktami, magazynem centralnym i sklepem internetowym, bo zmienia je jeden mechanizm. Dokumenty sprzedażowe powstają w tym samym kroku co sprzedaż, więc nie ma zaległości na koniec dnia. Kierownictwo dostało raport dzienny i analitykę (trend sprzedaży, dni tygodnia, top produkty) zamiast zbierania danych na żądanie.

Dlaczego firma wybrała dedykowane oprogramowanie zamiast gotowego systemu

  • Specyfika procesu – obieg towaru między magazynem centralnym a punktami, skazy, reklamacje B2B i przyjęcia dostaw działają u tego klienta inaczej niż w gotowych ERP; dopasowanie systemu do procesu było tańsze niż dopasowanie firmy do systemu.
  • Jedno API, trzy aplikacje – gotowe rozwiązania rzadko dają spójny parytet weba, aplikacji mobilnej i stanowiska desktopowego z trybem offline.
  • Pełna kontrola nad rozwojem – kolejne etapy powstają w tempie klienta, bez czekania na roadmapę dostawcy i bez opłat za użytkownika.

Rezultaty

  • Jedno źródło prawdy o stanach dla magazynu centralnego, wszystkich punktów i sklepu internetowego
  • Eliminacja podwójnego wprowadzania danych i całej klasy błędów z przepisywania
  • Sprzedaż i dokumenty (paragon, faktura VAT, etykieta przesyłki) w jednym kroku
  • Pełna kontrola dostępu – role hierarchiczne i zakres danych per punkt sprzedaży
  • Praca bez przerw także przy utracie internetu dzięki trybowi offline
  • Raport dzienny, rozliczenie kasy i analityka sprzedaży dostępne od ręki
  • Odwracalność i rozliczalność operacji – soft delete oraz audit log

Funkcjonalności

  • Katalog produktów z wariantami, atrybutami, cechami i kodami kreskowymi
  • Magazyn centralny i magazyny punktów – korekty, transfery, przyjęcia dostaw
  • Zamówienia towaru w obiegu punkt → magazyn lub zakup od producenta
  • Sprzedaż ze skanerem: koszyk, paragony, płatność dzielona, waluty PLN/EUR/USD
  • Faktury VAT (Fakturownia + lookup GUS) i przesyłki InPost z etykietą
  • Kasa dzienna per punkt – otwarcie, zamknięcie, wpłaty i wypłaty, bilans i różnica
  • Skazy i reklamacje B2B ze zdjęciami i kolejką akceptacji
  • Import OCR – dodanie produktów lub zamówienia ze zdjęcia dokumentu
  • Druk etykiet z kodami kreskowymi (drukarka konfigurowana per punkt)
  • Raport dzienny i analityka z wykresami
  • Integracje z PrestaShop, Fakturownią, InPost i GUS z logiem wywołań
  • Aplikacja mobilna i desktopowa z trybem offline i synchronizacją
  • Pełna dwujęzyczność interfejsu i komunikatów API (PL/EN), gotowa na kolejne języki

Potrzebujesz podobnego rozwiązania?

Jeśli Twoja firma prowadzi magazyn i sprzedaż w wielu punktach, a dane nadal żyją w arkuszach – opowiedz nam o swoim procesie. Zaprojektujemy system pod niego, a nie odwrotnie.

Pełny opis wdrożenia wraz z architekturą i etapami znajdziesz w case study systemu magazynowo-sprzedażowego. Zobacz też, jak wyglądał dedykowany system do zarządzania produkcją oraz inne nasze realizacje.

Jakub Przepióra

O autorze

Jakub Przepióra

CEO Nice Code sp. z o.o.

Programista z 10-letnim doświadczeniem, założyciel i właściciel software house Nice Code oraz twórca OpenMES — autorskiego systemu do zarządzania produkcją. Specjalista ds. cyberbezpieczeństwa. Buduje sklepy Prestashop i aplikacje webowe na bazie Laravel oraz Symfony, wspierając firmy w digitalizacji procesów i sprzedaży online.

Wycena sklepu, aplikacji webowej lub mobilnej - bezpłatnie w 24h

Opisz nam swój projekt, a my przygotujemy wstępną wycenę bez zobowiązań. Sklepy internetowe, aplikacje dedykowane, aplikacje mobilne.

Bezpłatna wycena

arrow right
contact us background