Étude de cas
IOI-TECH – intégration POS et ERP pour le retail
IOI-TECH est un prestataire de services technologiques dont le siège se trouve à Riyad, en Arabie saoudite, avec un second bureau à Djeddah. Depuis sa création en 2018, l'entreprise a mené des projets de transformation numérique en Arabie saoudite et dans l'ensemble du Moyen-Orient, au service de start-up, de PME et de grands groupes internationaux dans plus de 20 secteurs - du commerce de détail, de la banque et des télécommunications au pétrole et gaz, à la santé et au secteur public.
Son portefeuille couvre la planification des ressources d'entreprise (SAP S/4HANA, SAP Business One, Oracle Fusion, Odoo), la gestion des ressources humaines, l'hébergement cloud, le développement web et de portails, l'analyse de données et l'IA, la cybersécurité, le développement mobile et l'automatisation des ventes - ainsi que les services de mise en œuvre, de formation et de support qui les accompagnent.
L'ERP est le cœur de métier d'IOI-TECH, et ses clients du commerce de détail font tourner leur activité sur SAP. Ce qui leur manquait, c'était une couche commerce et point de vente qui parle le même langage que l'ERP. IOI-TECH a choisi nopCommerce comme socle et s'est associé à nous pour la construire.
Le projet
Le défi
Les clients du commerce de détail d'IOI-TECH en Arabie saoudite et au Moyen-Orient gèrent leurs finances, leurs stocks et leurs données de référence dans SAP Business One, tout en vendant à la fois via une boutique en ligne et des magasins physiques : plusieurs succursales, caisses et caissiers, des tiroirs-caisses qui doivent être comptés et rapprochés, des stocks par succursale, des listes de prix négociées par client, et des produits vendus simultanément dans plusieurs unités de mesure - pièce, carton, palette.
nopCommerce standard ne couvre rien de tout cela, et greffer un produit POS distinct sur la boutique en ligne aurait produit le résultat classique : trois systèmes, trois versions de la vérité, et du personnel ressaisissant les produits, les clients et les commandes entre le magasin, le site et l'ERP.
La solution
Nous avons conçu et développé une suite de huit plugins nopCommerce 4.50 intégrés, sur .NET 6, qui transforment une installation nopCommerce standard en une plateforme de vente omnicanale complète, reliée directement à SAP Business One. Toute la logique métier réside dans le back-office de la boutique ; les terminaux POS communiquent avec lui via une couche d'API REST dédiée, et la boutique communique avec SAP via la Service Layer. Une vente enregistrée en caisse, une commande passée sur le site et un document comptabilisé dans l'ERP décrivent tous la même transaction. Tout est livré sous forme de plugins - le cœur de nopCommerce n'est jamais forké, de sorte que le client reste sur le chemin des mises à jour.
Intégration SAP Business One
Le module d'intégration relie nopCommerce à la Service Layer de SAP Business One au moyen d'un client HTTP authentifié conçu sur mesure, et couvre les partenaires commerciaux et leurs groupes, les articles et groupes d'articles, les commandes, les factures, les bons de livraison, les avoirs, les encaissements, les listes de prix, les entrepôts, les groupes de TVA, les devises, les centres de coûts, les dimensions, les commerciaux et les séries de documents.
- Bidirectionnel, avec un contrôle par entité. Les produits, les clients, les fournisseurs, les commandes, les livraisons et les groupes de TVA disposent chacun de leur propre commutateur de synchronisation et de leur propre sens - de SAP vers nopCommerce, de nopCommerce vers SAP, ou les deux - afin que chaque client décide quel système détient quelles données.
- Temps réel et planifié. Un consommateur d'événements pousse les changements vers SAP dès qu'ils se produisent - commande passée, commande payée, commande annulée ou remboursée, expédition livrée, produit, client ou fournisseur créé, mis à jour ou supprimé - tandis qu'une tâche planifiée effectue le rapprochement complet périodique.
- Des correspondances plutôt que des valeurs codées en dur. Des correspondances gérées depuis l'administration relient les catégories nopCommerce, les rôles clients, les rôles fournisseurs, les catégories de taxe et les entrepôts à leurs équivalents SAP, avec des codes de fiche partenaire commercial et des dimensions client tenus à jour pour chaque enregistrement. Les commandes peuvent être transmises à SAP automatiquement ou libérées manuellement, et la numérotation des documents suit les séries SAP du client.
- Exploitable en production. Chaque échange est journalisé et consultable depuis une grille d'administration, avec une purge automatique des données, de sorte qu'un document en échec se diagnostique depuis le back-office de la boutique plutôt que depuis l'ERP.
Modules commerce de détail et POS
- Point Of Sale - le module central de la vente en magasin. Succursales et affectation des produits aux succursales, appareils POS et types d'appareils, caisses avec flux d'ouverture et de fermeture et comptage des espèces, mouvements de tiroir-caisse avec motifs configurables, gestion de la date d'exploitation, recherche par code-barres, points de retrait en magasin, moteur d'impression de tickets à jetons avec QR codes, activation par clé de licence pour chaque appareil, et un jeu d'autorisations POS dédié avec une sécurité d'API limitée à l'appareil et au caissier.
- Inventory - transferts de stock entre succursales et entrepôts, pour que l'inventaire des succursales reste exact au fil des mouvements de marchandises.
- Price List - plusieurs listes de prix avec des valeurs par produit, associées à des clients individuels et exposées via l'API, pour la vente en gros et les prix B2B négociés en parallèle du prix de détail.
- Product Unit Conversion - unités de mesure et facteurs de conversion par produit synchronisés entre les systèmes connectés, pour qu'un même produit puisse être commandé, préparé et vendu dans des unités différentes.
- Split Payment - une commande unique réglée avec plusieurs moyens de paiement à la fois, chaque transaction étant enregistrée séparément pour le rapprochement de fin de journée.
- Pay In Cash - règlement en espèces au comptoir, relié au flux de caisse et de tiroir-caisse.
- Delivery Shipping - frais de port calculés selon le poids et le montant de la commande pour les marchandises vendues en magasin mais livrées au client.
Approche technique
- Architecture de plugins propre - entités du domaine, services, fabriques et DTO séparés par module ; migrations FluentMigrator pour le schéma, afin que l'installation et les mises à jour soient reproductibles.
- Interface d'administration construite avec les vues Razor et les view components natifs de nopCommerce, pour que les gestionnaires de boutique travaillent dans l'interface qu'ils connaissent déjà.
- Une couche d'API REST pour l'application du terminal POS, sécurisée par une authentification par jeton et par des attributs d'autorisation personnalisés qui limitent chaque requête à un appareil sous licence et à un caissier authentifié.
- Livraison modulaire : chaque plugin s'installe séparément et la suite se compose en une solution complète, de sorte qu'un client peut commencer par la boutique en ligne et le lien avec l'ERP, puis ajouter la couche POS plus tard.
Le résultat
IOI-TECH dispose désormais d'une plateforme de vente reproductible qu'elle configure pour chaque client au lieu de la construire sur mesure à chaque fois. Le magasin, le web et l'ERP partagent un seul catalogue, un seul chiffre de stock et un seul historique client ; les commandes et les paiements arrivent dans SAP sans que personne ne les ressaisisse ; les caissiers ouvrent et ferment les caisses avec une piste d'audit complète de chaque mouvement de tiroir ; et les clients B2B sont servis avec leurs propres listes de prix et unités de mesure - le tout au sein d'une installation nopCommerce qui reste actualisable.
Technologies
.NET
C#- ASP.NET Core MVC
- nopCommerce 4.50
Entity Framework Core- LinqToDB
SQL Server- FluentMigrator
- AutoMapper
- Razor Views
REST API- JWT
- FluentValidation
- QRCoder