Documentation Technique
Projet SuppWayy Vente
Auteur : Jawad El Ibrahimi
Encadrant : [Nom du gérant]
19 août 2025
Table des matières
I Gestion des Bons de Commande (SaleOrder) 3
1 Introduction 4
2 Objectifs 5
3 Architecture générale 6
3.1 Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Structure du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Dépendances entre modules . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Fonctionnalités développées 7
5 API REST - SaleOrder 8
6 Fonctionnalités - SaleOrder 13
II Gestion des Livraisons (Delivery) 15
7 Introduction 16
8 Périmètre implémenté 17
9 API REST - Delivery 18
10 Fonctionnalités - Delivery 20
11 Partie 3 : Dépendances entre modules 21
12 Authentication et gestion des rôles 23
13 États et cycles de vie 24
14 Outils et technologies utilisées 25
1
Table des gures
5.1 Schéma général des commandes (SaleOrder) . . . . . . . . . . . . . . . . . 9
5.2 Exemple PUT /api/sale/orders/{id} . . . . . . . . . . . . . . . . . . . . . 9
5.3 Exemple POST /api/sale/orders . . . . . . . . . . . . . . . . . . . . . . . . 10
5.4 Mise à jour ligne optionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.5 Export PDF de la commande . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.6 Diagramme séquence commande client . . . . . . . . . . . . . . . . . . . . 11
5.7 Envoi de la commande par e-mail . . . . . . . . . . . . . . . . . . . . . . . 11
5.8 Exemple réception e-mail côté partenaire . . . . . . . . . . . . . . . . . . . 12
6.1 Vue d'ensemble des fonctionnalités SaleOrder . . . . . . . . . . . . . . . . . 13
9.1 Exemple POST /api/sale/deliveries . . . . . . . . . . . . . . . . . . . . . . 18
9.2 Exemple PUT /api/sale/deliveries/{id} . . . . . . . . . . . . . . . . . . . . 19
9.3 Exemple POST /api/sale/deliveries/{id}/line . . . . . . . . . . . . . . . . 19
9.4 Exemple DELETE /api/sale/deliveries/{id} . . . . . . . . . . . . . . . . . 19
10.1 Vue d'ensemble des fonctionnalités Delivery . . . . . . . . . . . . . . . . . 20
11.1 Relations entre les modules du projet SuppWayy . . . . . . . . . . . . . . . 21
11.2 Relations entités : Partner, Orders, Products, Lot, Delivery et Address . . 22
2
Première partie
Gestion des Bons de Commande
(SaleOrder)
3
Chapitre 1
Introduction
Cette première partie documente le module SaleOrder (gestion des bons de com-
mande).
4
Chapitre 2
Objectifs
Décrire l'architecture technique du module Vente.
Présenter les fonctionnalités réalisées et les intégrations.
Fournir un guide d'installation et de test.
Documenter les endpoints REST exposés.
Dénir les rôles et permissions associés.
5
Chapitre 3
Architecture générale
3.1 Technologies
Backend : Spring Boot, Spring Security, JPA/Hibernate, PostgreSQL.
Frontend : Thymeleaf, Bootstrap, JavaScript.
Intégrations : Génération PDF, envoi e-mail SMTP, modules Core.
3.2 Structure du domaine
L'entité principale est SaleOrder (commande client) reliée à :
Partner (client),
Location (lieu de livraison),
SaleOrderLine (lignes produits),
OptionalSaleOrderLine (lignes optionnelles).
3.3 Dépendances entre modules
mod-core utilisé par : mod-sale, mod-partner, mod-location
mod-partner utilisé dans : mod-sale, mod-app-shop
mod-location utilisé dans : mod-sale, mod-trace
mod-product utilisé dans : mod-sale, mod-trace
mod-trace utilisé dans : mod-sale, mod-product
app-shop interagit avec : mod-sale, mod-partner
6
Chapitre 4
Fonctionnalités développées
CRUD commande : créer, consulter, mettre à jour, supprimer.
Gestion des lignes : produits + lignes optionnelles.
États de commande : DRAFT, CONFIRMED, CANCEL.
Export PDF : génération automatique de la commande.
Envoi par e-mail : avec le chier PDF en pièce jointe.
7
Chapitre 5
API REST - SaleOrder
Exemple JSON (GET commande)
{
"id": 1,
"name": "SO2500001",
"comment": "string",
"date": "2025-08-17T21:38:56.144",
"partnerId": 1,
"deliveryLocationId": 1,
"lines": [
{
"id": 3,
"productId": 1,
"quantity": 3,
"price": 150,
"discount": 0,
"taxe": 20
},
{
"id": 5,
"productId": 2,
"quantity": 3,
"price": 150,
"discount": 10,
"taxe": 20
},
{
"id": 6,
"productId": 1,
"quantity": 3,
"price": 150,
"discount": 10,
"taxe": 20
}
],
8
Documentation du Projet CHAPITRE 5. API REST - SALEORDER
"optionalLines": [
{
"id": 2,
"productId": 2,
"discount": 10
}
]
}
Illustrations API SaleOrder
Figure 5.1 Schéma général des commandes (SaleOrder)
Figure 5.2 Exemple PUT /api/sale/orders/{id}
9
Documentation du Projet CHAPITRE 5. API REST - SALEORDER
Figure 5.3 Exemple POST /api/sale/orders
Figure 5.4 Mise à jour ligne optionnelle
Figure 5.5 Export PDF de la commande
10
Documentation du Projet CHAPITRE 5. API REST - SALEORDER
Figure 5.6 Diagramme séquence commande client
Figure 5.7 Envoi de la commande par e-mail
11
Documentation du Projet CHAPITRE 5. API REST - SALEORDER
Figure 5.8 Exemple réception e-mail côté partenaire
12
Chapitre 6
Fonctionnalités - SaleOrder
Figure 6.1 Vue d'ensemble des fonctionnalités SaleOrder
Description rapide
Lister commandes : récupérer toutes les commandes.
Détails commande : acher les infos d'un bon de commande.
Créer commande : ajout d'une nouvelle commande.
Mettre à jour commande : modication des champs.
Supprimer commande : suppression dénitive.
Gérer lignes : ajout, modication, suppression.
Lignes optionnelles : ajout, modication, suppression.
Export PDF : génération d'un bon de commande au format PDF.
Envoi e-mail : envoyer la commande PDF au partenaire.
13
Deuxième partie
Gestion des Livraisons (Delivery)
15
Chapitre 7
Introduction
Cette deuxième partie documente le module Delivery.
16
Chapitre 8
Périmètre implémenté
États de livraison : PENDING, PREPARED, SHIPPED, DELIVERED, CANCELED.
Méthodes de signature : NONE, SMS_OTP, PIN_PAD, PAPER.
Entités : SaleDelivery, SaleDeliveryLine.
Auto-génération des lignes si non fournies.
CRUD + PATCH état et quantité.
17
Chapitre 9
API REST - Delivery
Exemple DTO
{
"date": "2025-08-19T15:35:26.266Z",
"state": "NOT_READY",
"signatureMethod": "TEXT_MESSAGE",
"signed": false,
"addressId": 5,
"orderId": 1,
"lines": [
{
"state": "NOT_DELIVERED",
"comment": "Livraison en attente",
"lotId": 10
}
]
}
Illustrations API Delivery
Figure 9.1 Exemple POST /api/sale/deliveries
18
Documentation du Projet CHAPITRE 9. API REST - DELIVERY
Figure 9.2 Exemple PUT /api/sale/deliveries/{id}
Figure 9.3 Exemple POST /api/sale/deliveries/{id}/line
Figure 9.4 Exemple DELETE /api/sale/deliveries/{id}
19
Chapitre 10
Fonctionnalités - Delivery
Figure 10.1 Vue d'ensemble des fonctionnalités Delivery
Description rapide
Lister livraisons : récupérer toutes les livraisons.
Lister par commande : voir les livraisons associées à un bon.
Créer livraison : création à partir d'une commande.
Mettre à jour livraison : modication d'état ou quantité.
Supprimer livraison : suppression avec cascade des lignes.
Gérer lignes : ajout, mise à jour quantité.
Signature : valider via méthode dénie (SMS, papier, etc.).
Auto-génération lignes : si non fournies, créées depuis la commande.
20
Chapitre 11
Partie 3 : Dépendances entre modules
Schéma global
app-shop
(Application mobile)
mod-partner
(Clients)
mod-core mod-sale mod-product m
(PDF, email, sécurité) (SaleOrder, Delivery) (Produits) (Lot
mod-location
(Adresses)
Figure 11.1 Relations entre les modules du projet SuppWayy
Schéma entités détaillées
21
Documentation du CHAPITRE
Projet 11. PARTIE 3 : DÉPENDANCES ENTRE MODULES
Partner SaleOrder SaleOrderLine Product
PurchaseOrder PurchaseOrderLine Lot
DeliveryNote
Address
Figure 11.2 Relations entités : Partner, Orders, Products, Lot, Delivery et Address
22
Chapitre 12
Authentication et gestion des rôles
Le module Vente intègre une sécurité basée sur Spring Security. Chaque utilisateur
se voit attribuer un rôle, lequel détermine les actions accessibles via les endpoints REST.
Rôles disponibles et permissions associées
Rôle Permissions associées
ADMIN Toutes les permissions, accès complet à tous les
endpoints (gestion des commandes, lignes, options,
PDF, e-mails, livraison).
GESTIONNAIRE_VENTE CONSULTER_COMMANDES,
CREER_COMMANDE, MODI-
FIER_COMMANDE, SUPPRI-
MER_COMMANDE, AJOUTER_LIGNE,
MODIFIER_LIGNE, SUPPRIMER_LIGNE,
GERER_LIGNES_OPTIONNELLES, EXPOR-
TER_PDF, ENVOYER_EMAIL.
VENDEUR_SUP CONSULTER_COMMANDES,
CREER_COMMANDE, MO-
DIFIER_COMMANDE, AJOU-
TER_LIGNE, MODIFIER_LIGNE, GE-
RER_LIGNES_OPTIONNELLES, EXPOR-
TER_PDF.
CONSULTANT_VENTE CONSULTER_COMMANDES uniquement (droits
en lecture seule).
Principes d'authentication
Authentication basée sur JWT (JSON Web Token) : le client reçoit un token
après login, qu'il doit envoyer dans chaque requête (header Authorization: Bearer
...).
Les rôles sont stockés en base et chargés via UserDetailsService.
Les contrôleurs REST sont protégés avec des annotations @PreAuthorize("hasRole('...')").
Exemple : seul un utilisateur avec rôle GESTIONNAIRE_VENTE ou ADMIN peut appeler
POST /api/sale/orders.
23
Chapitre 13
États et cycles de vie
Cette section décrit les diérents états utilisés dans le projet, aussi bien pour les
commandes (SaleOrder) que pour les livraisons (Delivery).
États d'une commande (SaleOrderState)
État Description
DRAFT Commande en brouillon, pas encore validée.
CONFIRMED Commande conrmée et prête à être traitée.
CANCEL Commande annulée par le client ou le gestionnaire.
États d'une livraison (DeliveryState)
État Description
NOT_READY Livraison créée mais pas encore prête.
READY Livraison prête à être expédiée.
IN_PROGRESS Livraison en cours de transport.
DELIVERED Livraison terminée avec succès.
États d'une ligne de livraison (DeliveryLineState)
État Description
NOT_DELIVERED Ligne non livrée.
INVALID Ligne annulée / invalide.
VALID Ligne livrée correctement.
Méthodes de signature (SignatureMethod)
Méthode Description
TEXT_MESSAGE Signature validée par SMS ou OTP.
EMAIL Signature validée par conrmation e-mail.
HANDWRITTEN Signature manuscrite (papier ou pad).
24
Chapitre 14
Outils et technologies utilisées
Cette section décrit les principaux outils, frameworks et composants techniques inté-
grés dans le projet SuppWayy Vente.
Frameworks Backend
Spring Boot : framework principal pour le développement du backend.
Spring Data JPA (Hibernate) : gestion de la persistance des données.
Spring Security : gestion de l'authentication et des rôles.
Base de données
PostgreSQL : base relationnelle utilisée pour stocker les entités.
JPA Repositories : simplication des requêtes SQL.
Documentation et tests
Swagger UI : documentation interactive des endpoints REST.
JUnit / Postman : tests unitaires et d'intégration.
Communication réseau
API REST (JSON) : échanges entre modules et applications clientes.
SMTP : protocole utilisé pour l'envoi d'e-mails.
Validation e-mail : conrmation via lien ou OTP.
Génération et envoi de documents
PDF Export : génération automatique de bons de commande.
Email SMTP : envoi automatique des PDF en pièce jointe.
25
Documentation du Projet CHAPITRE 14. OUTILS ET TECHNOLOGIES UTILISÉES
Interface utilisateur
Thymeleaf : moteur de templates pour générer les pages HTML.
Bootstrap / CSS / JS : mise en forme et ergonomie de l'interface.
Principes clés d'utilisation
Architecture modulaire : séparation en modules (sale, delivery, core...).
DTO vs Entités JPA : séparation claire pour éviter les fuites de données.
Transitions d'états : contrôlées dans les services.
Sécurité par rôles : ADMIN, GESTIONNAIRE_VENTE, VENDEURSUP, CONSUL-
TANT_VENTE.
26