Case study
IOI-TECH – integracja POS i ERP dla detalu
IOI-TECH to dostawca usług technologicznych z siedzibą w Rijadzie w Arabii Saudyjskiej i drugim biurem w Dżuddzie. Od założenia w 2018 roku firma zrealizowała projekty transformacji cyfrowej w Arabii Saudyjskiej i szerzej na Bliskim Wschodzie, obsługując startupy, małe i średnie firmy oraz globalne przedsiębiorstwa w ponad 20 branżach - od handlu detalicznego, bankowości i telekomunikacji po ropę naftową i gaz, ochronę zdrowia oraz administrację publiczną.
Jej portfolio obejmuje systemy planowania zasobów przedsiębiorstwa (SAP S/4HANA, SAP Business One, Oracle Fusion, Odoo), zarządzanie kadrami, hosting w chmurze, tworzenie stron i portali, analitykę danych i AI, cyberbezpieczeństwo, rozwój aplikacji mobilnych oraz automatyzację sprzedaży - wraz z wdrożeniami, szkoleniami i usługami wsparcia wokół nich.
ERP jest kluczową kompetencją IOI-TECH, a jej klienci detaliczni prowadzą swój biznes na SAP. Brakowało im warstwy handlowej i punktu sprzedaży, która mówi tym samym językiem co ERP. IOI-TECH wybrała nopCommerce jako fundament i nawiązała z nami współpracę, aby ją zbudować.
Projekt
Wyzwanie
Klienci detaliczni IOI-TECH w Arabii Saudyjskiej i na Bliskim Wschodzie prowadzą finanse, magazyn i dane podstawowe w SAP Business One, sprzedając jednocześnie przez sklep internetowy i sklepy stacjonarne: wiele oddziałów, kas i kasjerów, szuflady kasowe, które trzeba przeliczać i uzgadniać, stany magazynowe na poziomie oddziału, wynegocjowane cenniki dla poszczególnych klientów oraz produkty sprzedawane jednocześnie w kilku jednostkach miary - sztuka, karton, paleta.
Standardowy nopCommerce nie obsługuje nic z tego, a doczepienie osobnego produktu POS do sklepu internetowego dałoby klasyczny efekt: trzy systemy, trzy wersje prawdy i pracowników przepisujących produkty, klientów i zamówienia między salą sprzedaży, stroną i ERP.
Rozwiązanie
Zaprojektowaliśmy i zbudowaliśmy zestaw ośmiu zintegrowanych wtyczek do nopCommerce 4.50 na .NET 6, które zamieniają standardową instalację nopCommerce w pełną omnikanałową platformę detaliczną połączoną bezpośrednio z SAP Business One. Cała logika biznesowa znajduje się w zapleczu sklepu; terminale POS komunikują się z nim przez dedykowaną warstwę REST API, a sklep rozmawia z SAP przez Service Layer. Sprzedaż nabita na kasie, zamówienie złożone na stronie i dokument zaksięgowany w ERP opisują tę samą transakcję. Wszystko dostarczane jest jako wtyczki - rdzeń nopCommerce nigdy nie jest forkowany, więc klient pozostaje na ścieżce aktualizacji.
Integracja z SAP Business One
Moduł integracji łączy nopCommerce z SAP Business One Service Layer przez zbudowanego w tym celu uwierzytelnionego klienta HTTP i obejmuje partnerów biznesowych oraz ich grupy, towary i grupy towarów, zamówienia, faktury, dokumenty dostawy, noty kredytowe, płatności przychodzące, cenniki, magazyny, grupy VAT, waluty, centra kosztów, wymiary, handlowców i serie dokumentów.
- Dwukierunkowość sterowana osobno dla każdej encji. Produkty, klienci, dostawcy, zamówienia, dostawy i grupy VAT mają własny przełącznik synchronizacji i własny kierunek - z SAP do nopCommerce, z nopCommerce do SAP albo w obie strony - więc każdy klient decyduje, który system jest właścicielem których danych.
- Czas rzeczywisty plus harmonogram. Konsument zdarzeń wysyła zmiany do SAP w momencie, w którym zachodzą - złożenie zamówienia, opłacenie, anulowanie lub zwrot, doręczenie przesyłki, utworzenie, aktualizacja lub usunięcie produktu, klienta czy dostawcy - a zaplanowane zadanie przeprowadza okresowe pełne uzgodnienie.
- Mapowanie zamiast twardego kodowania. Zarządzane w panelu administracyjnym mapowania wiążą kategorie nopCommerce, role klientów, role dostawców, kategorie podatkowe i magazyny z ich odpowiednikami w SAP, a kody kartotek partnerów biznesowych i wymiary klientów utrzymywane są osobno dla każdego rekordu. Zamówienia można księgować w SAP automatycznie lub zwalniać ręcznie, a numeracja dokumentów podąża za seriami SAP klienta.
- Gotowe do pracy produkcyjnej. Każda wymiana jest logowana i przeszukiwalna z poziomu tabeli w panelu administracyjnym, z automatycznym czyszczeniem starych wpisów, więc nieudany dokument diagnozuje się w zapleczu sklepu, a nie w ERP.
Moduły detaliczne i POS
- Point Of Sale - podstawowy moduł detaliczny. Oddziały i przypisania produktów do oddziałów, urządzenia POS i ich typy, kasy z obiegiem otwarcia/zamknięcia i przeliczania gotówki, ruchy w szufladzie kasowej z konfigurowalnymi powodami, obsługa daty biznesowej, wyszukiwanie po kodzie kreskowym, punkty odbioru w sklepie, oparty na tokenach silnik drukowania paragonów z kodami QR, aktywacja kluczem licencyjnym dla każdego urządzenia oraz osobny zestaw uprawnień POS z zabezpieczeniem API w zakresie urządzenia i kasjera.
- Inventory - przesunięcia towaru między oddziałami i magazynami, dzięki czemu stany w oddziałach pozostają dokładne w miarę przemieszczania się towaru.
- Price List - wiele cenników z wartościami dla poszczególnych produktów, przypisanych do konkretnych klientów i udostępnianych przez API, na potrzeby cen hurtowych i negocjowanych B2B obok ceny detalicznej.
- Product Unit Conversion - jednostki miary i przeliczniki dla poszczególnych produktów synchronizowane między połączonymi systemami, dzięki czemu ten sam produkt można zamawiać, kompletować i sprzedawać w różnych jednostkach.
- Split Payment - jedno zamówienie rozliczane kilkoma metodami płatności naraz, z każdą transakcją zapisywaną osobno na potrzeby uzgodnienia na koniec dnia.
- Pay In Cash - rozliczenie gotówkowe przy ladzie, wpięte w obieg kasy i szuflady kasowej.
- Delivery Shipping - stawki wysyłki według wagi i wartości zamówienia dla towarów sprzedanych w sklepie, ale dostarczanych do klienta.
Podejście inżynierskie
- Czysta architektura wtyczek - encje domenowe, serwisy, fabryki i DTO rozdzielone dla każdego modułu; migracje FluentMigrator dla schematu, dzięki czemu instalacja i aktualizacje są powtarzalne.
- Interfejs administracyjny zbudowany na natywnych widokach Razor i komponentach widoku nopCommerce, więc menedżerowie sklepu pracują w interfejsie, który już znają.
- Warstwa REST API dla aplikacji terminala POS, zabezpieczona uwierzytelnianiem tokenowym oraz własnymi atrybutami autoryzacji, które ograniczają każde żądanie do licencjonowanego urządzenia i uwierzytelnionego kasjera.
- Modułowe dostarczanie: każda wtyczka instaluje się samodzielnie, a zestaw składa się w kompletne rozwiązanie, więc klient może zacząć od sklepu internetowego i połączenia z ERP, a warstwę POS dodać później.
Rezultat
IOI-TECH ma teraz powtarzalną platformę detaliczną, którą konfiguruje dla każdego klienta, zamiast budować za każdym razem od zera. Sklep, strona i ERP współdzielą jeden katalog, jeden stan magazynowy i jedną historię klienta; zamówienia i płatności trafiają do SAP bez przepisywania ich przez kogokolwiek; kasjerzy otwierają i zamykają kasy z pełnym śladem audytowym każdego ruchu w szufladzie; a klienci B2B obsługiwani są własnymi cennikami i jednostkami miary - wszystko wewnątrz instalacji nopCommerce, którą wciąż da się aktualizować.
Technologie
.NET
C#- ASP.NET Core MVC
- nopCommerce 4.50
Entity Framework Core- LinqToDB
SQL Server- FluentMigrator
- AutoMapper
- Razor Views
REST API- JWT
- FluentValidation
- QRCoder