Studiu de caz
IOI-TECH – integrare POS și ERP pentru retail
IOI-TECH este un furnizor de servicii tehnologice cu sediul central în Riad, Arabia Saudită, și cu un al doilea birou în Jeddah. De la înființarea sa, în 2018, compania a livrat proiecte de transformare digitală în Arabia Saudită și în Orientul Mijlociu extins, deservind startupuri, IMM-uri și companii globale din peste 20 de industrii - de la retail, sectorul bancar și telecomunicații până la petrol și gaze, sănătate și administrație publică.
Portofoliul său cuprinde planificarea resurselor întreprinderii (SAP S/4HANA, SAP Business One, Oracle Fusion, Odoo), managementul resurselor umane, găzduire în cloud, dezvoltare web și de portaluri, analiză de date și AI, securitate cibernetică, dezvoltare mobilă și automatizarea vânzărilor - împreună cu serviciile de implementare, instruire și suport aferente.
ERP este competența de bază a IOI-TECH, iar clienții săi din retail își conduc afacerea pe SAP. Le lipsea un strat de comerț și de punct de vânzare care să vorbească aceeași limbă ca ERP-ul. IOI-TECH a ales nopCommerce ca fundație și a colaborat cu noi pentru a-l construi.
Proiectul
Provocarea
Clienții de retail ai IOI-TECH din Arabia Saudită și din Orientul Mijlociu își țin finanțele, stocurile și datele de bază în SAP Business One, vânzând în același timp atât printr-un magazin online, cât și prin magazine fizice: mai multe filiale, case de marcat și casieri, sertare de bani care trebuie numărate și reconciliate, stoc la nivel de filială, liste de prețuri negociate pentru fiecare client și produse vândute simultan în mai multe unități de măsură - bucată, cutie, palet.
nopCommerce standard nu acoperă nimic din toate acestea, iar atașarea unui produs POS separat la magazinul web ar fi dus la rezultatul clasic: trei sisteme, trei versiuni ale adevărului și angajați care reintroduc produse, clienți și comenzi între magazin, site și ERP.
Soluția
Am proiectat și construit o suită de opt pluginuri nopCommerce 4.50 integrate, pe .NET 6, care transformă o instalare nopCommerce standard într-o platformă de retail omnichannel completă, conectată direct la SAP Business One. Toată logica de business se află în backendul magazinului; terminalele POS comunică cu el printr-un strat REST API dedicat, iar magazinul comunică cu SAP prin Service Layer. O vânzare înregistrată la casă, o comandă plasată pe site și un document înregistrat în ERP descriu toate aceeași tranzacție. Totul este livrat sub formă de pluginuri - nucleul nopCommerce nu este niciodată modificat printr-un fork, astfel încât clientul rămâne pe traseul de actualizare.
Integrarea cu SAP Business One
Modulul de integrare conectează nopCommerce la SAP Business One Service Layer printr-un client HTTP autentificat, construit special pentru acest scop, acoperind partenerii de afaceri și grupurile de parteneri, articolele și grupurile de articole, comenzile, facturile, avizele de expediție, notele de credit, încasările, listele de prețuri, depozitele, grupele de TVA, valutele, centrele de cost, dimensiunile, agenții de vânzări și seriile de documente.
- Control bidirecțional, pe fiecare entitate. Produsele, clienții, furnizorii, comenzile, livrările și grupele de TVA au fiecare propriul comutator de sincronizare și propria direcție - de la SAP la nopCommerce, de la nopCommerce la SAP sau în ambele sensuri - astfel încât fiecare client decide ce sistem deține ce date.
- În timp real și programat. Un consumator de evenimente trimite modificările către SAP în momentul în care se produc - comandă plasată, comandă plătită, comandă anulată sau rambursată, livrare efectuată, produs, client sau furnizor creat, actualizat sau șters - în timp ce o sarcină programată rulează reconcilierea completă periodică.
- Mapare în loc de valori scrise în cod. Mapările gestionate din administrare leagă categoriile nopCommerce, rolurile de client, rolurile de furnizor, categoriile de taxe și depozitele de corespondentele lor din SAP, cu coduri de card de partener de afaceri și dimensiuni de client menținute pentru fiecare înregistrare. Comenzile pot fi trimise în SAP automat sau eliberate manual, iar numerotarea documentelor urmează seriile SAP ale clientului.
- Operabil în producție. Fiecare schimb este înregistrat și poate fi căutat dintr-un tabel de administrare, cu curățare automată după perioada de păstrare, astfel încât un document eșuat este diagnosticat din backendul magazinului, nu din ERP.
Module de retail și POS
- Point Of Sale - modulul central de retail. Filiale și alocarea produselor pe filiale, dispozitive POS și tipuri de dispozitive, case cu flux de deschidere/închidere și de numărare a numerarului, mișcări ale sertarului de bani cu motive configurabile, gestionarea datei de operare, căutare după cod de bare, puncte de ridicare în magazin, un motor de tipărire a bonurilor bazat pe tokenuri, cu coduri QR, activare cu cheie de licență pentru fiecare dispozitiv și un set dedicat de permisiuni POS, cu securitate API limitată la dispozitiv și la casier.
- Inventory - transferuri de stoc între filiale și depozite, astfel încât stocul pe filiale să rămână corect pe măsură ce marfa circulă.
- Price List - liste de prețuri multiple, cu valori pentru fiecare produs, asociate clienților individuali și expuse prin API, pentru prețuri en gros și prețuri B2B negociate, alături de prețul de retail.
- Product Unit Conversion - dimensiuni de unități și factori de conversie pentru fiecare produs, sincronizați între sistemele conectate, astfel încât același produs să poată fi comandat, pregătit și vândut în unități diferite.
- Split Payment - o singură comandă achitată cu mai multe metode de plată deodată, fiecare tranzacție fiind înregistrată separat pentru reconcilierea de la sfârșitul zilei.
- Pay In Cash - plata cu numerar la casă, integrată în fluxul casei și al sertarului de bani.
- Delivery Shipping - tarife de livrare în funcție de greutate și de valoarea comenzii, pentru mărfurile vândute în magazin, dar livrate clientului.
Abordarea de inginerie
- Arhitectură curată de pluginuri - entități de domeniu, servicii, fabrici și DTO-uri separate pe module; migrări FluentMigrator pentru schemă, astfel încât instalarea și actualizările să fie repetabile.
- Interfață de administrare construită cu view-uri și view components Razor native din nopCommerce, astfel încât administratorii magazinului să lucreze în interfața pe care o cunosc deja.
- Un strat REST API pentru aplicația de terminal POS, securizat cu autentificare pe bază de token, plus atribute de autorizare personalizate care limitează fiecare cerere la un dispozitiv licențiat și la un casier autentificat.
- Livrare modulară: fiecare plugin se instalează separat, iar suita se compune într-o soluție completă, astfel încât un client poate începe cu magazinul web și cu legătura către ERP, adăugând ulterior stratul POS.
Rezultatul
IOI-TECH are acum o platformă de retail repetabilă, pe care o configurează pentru fiecare client, în loc să construiască de fiecare dată una la comandă. Magazinul, site-ul și ERP-ul folosesc un singur catalog, o singură cifră de stoc și un singur istoric al clientului; comenzile și plățile ajung în SAP fără ca cineva să le retasteze; casierii deschid și închid casele cu o pistă de audit completă a fiecărei mișcări din sertar; iar clienții B2B sunt serviți cu propriile liste de prețuri și unități de măsură - totul într-o instalare nopCommerce care poate fi în continuare actualizată.
Tehnologii
.NET
C#- ASP.NET Core MVC
- nopCommerce 4.50
Entity Framework Core- LinqToDB
SQL Server- FluentMigrator
- AutoMapper
- Razor Views
REST API- JWT
- FluentValidation
- QRCoder