Case study
IOI-TECH – POS- en ERP-integratie voor de retail
IOI-TECH is een aanbieder van technologiediensten met het hoofdkantoor in Riyad, Saoedi-Arabië, en een tweede kantoor in Jeddah. Sinds de oprichting in 2018 heeft het bedrijf digitale-transformatieprojecten uitgevoerd in Saoedi-Arabië en het bredere Midden-Oosten, voor startups, mkb-bedrijven en wereldwijde ondernemingen in meer dan 20 branches - van retail, bankwezen en telecommunicatie tot olie & gas, zorg en overheid.
Het portfolio omvat enterprise resource planning (SAP S/4HANA, SAP Business One, Oracle Fusion, Odoo), HR-beheer, cloudhosting, web- en portaalontwikkeling, data-analyse en AI, cybersecurity, mobiele ontwikkeling en verkoopautomatisering - samen met de implementatie-, trainings- en ondersteuningsdiensten daaromheen.
ERP is de kerncompetentie van IOI-TECH en de retailklanten van het bedrijf draaien hun bedrijfsvoering op SAP. Wat zij misten, was een commerce- en point-of-sale-laag die dezelfde taal spreekt als de ERP. IOI-TECH koos nopCommerce als basis en werkte met ons samen om die te bouwen.
Het project
De uitdaging
De retailklanten van IOI-TECH in Saoedi-Arabië en het Midden-Oosten voeren hun financiën, voorraad en stamgegevens in SAP Business One, terwijl zij verkopen via zowel een webwinkel als fysieke winkels: meerdere filialen, kassa's en kassamedewerkers, kassalades die geteld en afgestemd moeten worden, voorraad op filiaalniveau, onderhandelde prijslijsten per klant, en producten die tegelijk in verschillende meeteenheden worden verkocht - stuk, doos, pallet.
Standaard nopCommerce dekt hier niets van, en een los POS-product op de webwinkel schroeven zou het klassieke resultaat hebben opgeleverd: drie systemen, drie versies van de waarheid, en medewerkers die producten, klanten en orders overtypen tussen winkelvloer, website en ERP.
De oplossing
Wij hebben een suite van acht geïntegreerde nopCommerce 4.50-plug-ins op .NET 6 ontworpen en gebouwd die van een standaardinstallatie van nopCommerce een volwaardig omnichannel-retailplatform maken dat rechtstreeks is gekoppeld aan SAP Business One. Alle bedrijfslogica zit in de backend van de winkel; POS-terminals praten daarmee via een aparte REST API-laag, en de winkel praat met SAP via de Service Layer. Een verkoop die aan de kassa wordt afgerekend, een order die op de website wordt geplaatst en een document dat in de ERP wordt geboekt, beschrijven allemaal dezelfde transactie. Alles wordt geleverd als plug-in - de kern van nopCommerce wordt nooit geforkt, zodat de klant op het upgradepad blijft.
Integratie met SAP Business One
De integratiemodule verbindt nopCommerce met de SAP Business One Service Layer via een speciaal gebouwde geauthenticeerde HTTP-client, en dekt zakenpartners en partnergroepen, artikelen en artikelgroepen, orders, facturen, pakbonnen, creditnota's, inkomende betalingen, prijslijsten, magazijnen, btw-groepen, valuta's, kostenplaatsen, dimensies, verkopers en documentreeksen.
- Bidirectioneel, per entiteit te regelen. Producten, klanten, leveranciers, orders, leveringen en btw-groepen hebben elk een eigen synchronisatieschakelaar en een eigen richting - van SAP naar nopCommerce, van nopCommerce naar SAP, of beide - zodat elke klant bepaalt welk systeem welke gegevens bezit.
- Realtime plus gepland. Een event consumer duwt wijzigingen naar SAP op het moment dat ze gebeuren - order geplaatst, order betaald, order geannuleerd of terugbetaald, zending afgeleverd, product of klant of leverancier aangemaakt, bijgewerkt of verwijderd - terwijl een geplande taak de periodieke volledige afstemming uitvoert.
- Mapping in plaats van hardcoding. Door de beheerder onderhouden mappings koppelen categorieën, klantrollen, leveranciersrollen, belastingcategorieën en magazijnen in nopCommerce aan hun SAP-tegenhangers, met per record onderhouden cardcodes van zakenpartners en klantdimensies. Orders kunnen automatisch naar SAP worden geboekt of handmatig worden vrijgegeven, en de documentnummering volgt de SAP-reeksen van de klant.
- Bruikbaar in productie. Elke uitwisseling wordt gelogd en is doorzoekbaar vanuit een beheerdersoverzicht, met automatische opschoning volgens het bewaarbeleid, zodat een mislukt document vanuit de backend van de winkel wordt gediagnosticeerd in plaats van vanuit de ERP.
Retail- en POS-modules
- Point Of Sale - de kernmodule voor retail. Filialen en producttoewijzingen per filiaal, POS-apparaten en apparaattypen, kassa's met een open- en sluitworkflow inclusief kastelling, kassaladebewegingen met configureerbare redenen, afhandeling van de boekingsdatum, barcodeopzoeking, afhaalpunten in de winkel, een tokengebaseerde bonprintengine met QR-codes, activering van een licentiesleutel per apparaat, en een eigen set POS-rechten met API-beveiliging op apparaat- en kassierniveau.
- Inventory - voorraadoverboekingen tussen filialen en magazijnen, zodat de filiaalvoorraad klopt terwijl goederen zich verplaatsen.
- Price List - meerdere prijslijsten met waarden per product, gekoppeld aan individuele klanten en ontsloten via de API, voor groothandels- en onderhandelde B2B-prijzen naast de retailprijs.
- Product Unit Conversion - eenheidsdimensies en omrekenfactoren per product, gesynchroniseerd tussen de gekoppelde systemen, zodat hetzelfde product in verschillende eenheden kan worden besteld, verzameld en verkocht.
- Split Payment - één order die met meerdere betaalmethoden tegelijk wordt afgerekend, waarbij elke transactie apart wordt vastgelegd voor de dagafsluiting.
- Pay In Cash - contante afrekening aan de balie, gekoppeld aan de kassa- en kassaladeworkflow.
- Delivery Shipping - verzendtarieven op basis van gewicht en ordertotaal voor goederen die in de winkel worden verkocht maar bij de klant worden bezorgd.
Technische aanpak
- Schone plug-inarchitectuur - domeinentiteiten, services, factories en DTO's per module gescheiden; FluentMigrator-migraties voor het schema, zodat installatie en upgrades herhaalbaar zijn.
- Beheerinterface gebouwd met native nopCommerce Razor-views en viewcomponenten, zodat winkelbeheerders werken in de interface die zij al kennen.
- Een REST API-laag voor de POS-terminalapp, beveiligd met tokenauthenticatie plus eigen autorisatieattributen die elk verzoek beperken tot een gelicentieerd apparaat en een geauthenticeerde kassier.
- Modulaire levering: elke plug-in installeert op zichzelf en de suite vormt samen een complete oplossing, zodat een klant kan beginnen met de webwinkel en de ERP-koppeling en de POS-laag later kan toevoegen.
Het resultaat
IOI-TECH heeft nu een herhaalbaar retailplatform dat het per klant configureert in plaats van elke keer maatwerk te bouwen. Winkel, web en ERP delen één catalogus, één voorraadcijfer en één klanthistorie; orders en betalingen bereiken SAP zonder dat iemand ze overtypt; kassiers openen en sluiten kassa's met een volledig auditspoor van elke kassaladebeweging; en B2B-klanten worden bediend met hun eigen prijslijsten en meeteenheden - allemaal binnen een nopCommerce-installatie die nog steeds te upgraden is.
Technologieën
.NET
C#- ASP.NET Core MVC
- nopCommerce 4.50
Entity Framework Core- LinqToDB
SQL Server- FluentMigrator
- AutoMapper
- Razor Views
REST API- JWT
- FluentValidation
- QRCoder