System dedykowany
PlantPol — dedykowany system zamówień B2B
Zaprojektowaliśmy i wdrożyliśmy dedykowany system zamówień B2B dla PlantPol. Aplikacja porządkuje rozbudowany katalog produktów, ich stadia i dostępność w tygodniach sezonu, a następnie prowadzi użytkownika od wyboru asortymentu przez koszyk i checkout aż po dokument zamówienia. Rozwiązanie składa się z interaktywnego frontendu Blazor oraz osobnego API w ASP.NET Core. Logika biznesowa została rozdzielona zgodnie z CQRS i wykorzystuje mediator, dzięki czemu procesy katalogowe, administracyjne i zamówieniowe pozostają czytelnie odseparowane. System wymienia dane z ENOVA 365 w ściśle określonych kierunkach i wykorzystuje trwałą kolejkę do bezpiecznego przekazywania dokumentów zamówień.
Projekt we współpracy z Solvet Robert Mazurczyk — otwiera się w nowej karcie
System, który łączy katalog, zamówienia i ENOVA 365
Proces B2B zapisany w jednej aplikacji
System powstał wokół rzeczywistego procesu zamawiania roślin, w którym sama lista produktów nie wystarcza. Znaczenie mają również stadia produktu, dostępność w konkretnych tygodniach, sezon, sposób pakowania oraz zasady transportowe. Dlatego rozwiązanie prowadzi użytkownika przez cały uporządkowany scenariusz: od katalogu, przez wybór właściwego wariantu i terminu, aż po złożenie zamówienia.
Interfejs został przygotowany jako aplikacja B2B, a nie klasyczny sklep internetowy. Klient otrzymuje dostęp do funkcji potrzebnych do złożenia poprawnego zamówienia, natomiast zespół PlantPol może zarządzać ofertą, użytkownikami, ustawieniami i przebiegiem integracji z poziomu tego samego środowiska.
Blazor na froncie, osobne API i CQRS
Warstwę użytkową zbudowaliśmy w .NET 9 jako aplikację Blazor Interactive Server. Osobne API w ASP.NET Core udostępnia operacje katalogowe, zamówieniowe i administracyjne, dzięki czemu prezentacja danych pozostaje oddzielona od reguł biznesowych i dostępu do bazy.
W API zastosowaliśmy mediator oraz podział CQRS na komendy, zapytania i ich handlery. Odczyt katalogu, zmiana koszyka, złożenie zamówienia czy uruchomienie zadania integracyjnego mają własne, jasno zdefiniowane ścieżki. Taka architektura ułatwia rozwijanie systemu bez mieszania logiki różnych modułów i pozwala testować kluczowe procesy w izolacji.
Katalog produktów dopasowany do branży roślinnej
Katalog obsługuje kategorie, gatunki i warianty produktów, zdjęcia, kody, ceny oraz dostępność. Ważną częścią modelu są stadia SU, PP i FI, które pozwalają rozróżnić formę oferowanego materiału i zastosować właściwe dane handlowe oraz logistyczne.
- prezentacja produktów według kategorii i widoczności oferty,
- obsługa zdjęć, kodów, cen i cech produktu,
- dostępność określana dla tygodni i sezonów,
- uwzględnienie tygodni wykluczonych oraz finalności wybranych wariantów,
- administracyjne zarządzanie katalogiem i plikami katalogów PDF.
Dzięki temu użytkownik widzi ofertę w kontekście konkretnego sezonu i terminu, zamiast pracować na oderwanej od procesu, statycznej liście produktów.
Reguły ilościowe i logistyka przed dodaniem do koszyka
System uwzględnia sposób, w jaki produkty są faktycznie przygotowywane do sprzedaży i transportu. Mnożniki ilościowe związane z półką, wózkiem lub paletą pomagają wyznaczyć poprawną liczbę sztuk, a reguły tygodniowe ograniczają wybór do terminów dostępnych dla danego produktu i stadium.
Walidacja nie kończy się w momencie kliknięcia „dodaj”. Koszyk ponownie sprawdza cenę, dostępność i dopuszczalną ilość, aby wychwycić zmiany przed finalizacją. Dzięki temu logika handlowa działa spójnie zarówno w katalogu, jak i na dalszych etapach zamówienia.
Koszyk i checkout z kontrolą kompletności
Ścieżka zakupowa prowadzi użytkownika przez podsumowanie pozycji oraz wybór danych potrzebnych do realizacji. Checkout obejmuje sposób transportu lub odbioru z depotu, adres, notatkę do zamówienia i wymagane zgody. Przed zapisem system wykonuje końcową rewalidację koszyka.
Złożenie zamówienia odbywa się w transakcji o poziomie izolacji Serializable. System nadaje numer, zapisuje migawkę istotnych danych i — tam, gdzie wymagają tego reguły procesu — rozdziela zawartość na właściwe zamówienia. Dzięki temu późniejsza zmiana danych katalogowych nie zaciera obrazu tego, co użytkownik faktycznie zatwierdził.
Dokument PDF generowany z danych zamówienia
Po złożeniu zamówienia system generuje czytelny dokument PDF na podstawie zapisanego stanu procesu. Dokument zawiera pozycje zamówienia, tydzień realizacji, ilości i ceny, a także podsumowania logistyczne — między innymi liczbę sztuk oraz palet wynikającą z zawartości.
PDF nie jest ręcznie przygotowywanym załącznikiem. Powstaje bezpośrednio z danych zamówienia, dlatego stanowi spójne podsumowanie dla klienta i zespołu obsługującego dalszą realizację.
ENOVA 365: dwa kierunki, jasno określony zakres
Integracja z ENOVA 365 obsługuje przepływ danych w dwóch kierunkach, ale każdy z nich ma precyzyjnie zdefiniowaną odpowiedzialność. Do aplikacji trafiają dane produktów i kontrahentów potrzebne w katalogu oraz procesie zamówieniowym. W przeciwnym kierunku system przekazuje dokumenty zamówień ZO.
Wymiana jest realizowana zadaniowo i nadzorowana — nie przedstawiamy jej jako uniwersalnej synchronizacji wszystkich danych w czasie rzeczywistym. Panel integratora pokazuje postęp uruchomionych zadań z użyciem SignalR, a logi rejestrują wykonane zmiany i ewentualne problemy.
Dokumenty wychodzące trafiają do trwałej kolejki. Mechanizmy ponawiania, deduplikacji i sprawdzania numeru zewnętrznego ograniczają ryzyko podwójnego przekazania zamówienia. Niepowodzenia są widoczne w logach i mogą uruchomić alert lub powiadomienie e-mail, dzięki czemu obsługa ma możliwość bezpiecznej reakcji.
Role, uprawnienia i kontrola operacyjna
Dostęp do systemu opiera się na ASP.NET Core Identity, uwierzytelnianiu dwuskładnikowym oraz grupach i szczegółowych uprawnieniach. Pozwala to rozdzielić funkcje klienta, administratora katalogu i osób nadzorujących integrację bez udostępniania każdemu całego zaplecza.
Moduły administracyjne obejmują między innymi zarządzanie użytkownikami i grupami, ustawieniami firmy, stawkami VAT, numeracją dokumentów, tygodniami wykluczonymi oraz materiałami katalogowymi. Logi wewnętrzne i logi integratora tworzą techniczny ślad operacji potrzebny przy diagnostyce i dalszym rozwoju.
Kluczowe ścieżki systemu są objęte testami API, integracyjnymi i E2E — od pracy z katalogiem i koszykiem po checkout, kolejkę zamówień oraz zadania integracyjne.
Jeden proces zamiast rozproszonych kroków
Powstała dedykowana platforma B2B, która łączy specyfikę sezonowej oferty PlantPol z kontrolowanym procesem zamówieniowym. Katalog, terminy, reguły logistyczne, koszyk, checkout i dokument PDF pracują na wspólnym modelu danych, a obsługa otrzymuje narzędzia administracyjne oraz czytelny ślad wykonanych operacji.
Integracja z ENOVA 365 ma wyraźnie rozdzielone kierunki: dane produktów i kontrahentów zasilają system, a dokumenty ZO są przekazywane przez odporną kolejkę. To ogranicza ręczne przenoszenie informacji i daje możliwość nadzorowania procesu bez deklarowania pełnej synchronizacji w czasie rzeczywistym.
Architektura wykorzystująca Blazor, osobne API, mediator i CQRS pozostawia przestrzeń do dalszego rozwijania modułów, jednocześnie utrzymując reguły katalogowe, zamówieniowe i integracyjne w przejrzystych granicach.
Twój projekt
Chcesz podobną realizację?
Opowiedz nam o celu, zakresie i terminie. Wrócimy z dopasowaną propozycją.