0% ont trouvé ce document utile (0 vote)
10 vues91 pages

Rerer

Le projet ExpedPro vise à optimiser la gestion des commandes et des expéditions en remplaçant les méthodes traditionnelles par une solution informatisée intégrée. Cette application offre des fonctionnalités avancées pour le suivi des livraisons, la traçabilité des expéditions et la gestion centralisée des opérations logistiques. Grâce à son intégration avec SAP, ExpedPro améliore l'efficacité et la précision des processus d'expédition au sein de l'entreprise GMD.

Transféré par

anouareloddy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
10 vues91 pages

Rerer

Le projet ExpedPro vise à optimiser la gestion des commandes et des expéditions en remplaçant les méthodes traditionnelles par une solution informatisée intégrée. Cette application offre des fonctionnalités avancées pour le suivi des livraisons, la traçabilité des expéditions et la gestion centralisée des opérations logistiques. Grâce à son intégration avec SAP, ExpedPro améliore l'efficacité et la précision des processus d'expédition au sein de l'entreprise GMD.

Transféré par

anouareloddy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ecole Marocaine des Sciences de l’Ingénieur de Tanger

PROJET DE FIN D’ETUDE


Filière
Ingénierie Informatique et Réseaux

Intitulé du Projet

Intitulé Conception et Mise en Place


d'une Plateforme Intégrée
d'Orchestration des Workflows
Logistiques avec Optimisation des
Processus d'Expédition Multi-Référentiels
au sein GMD
Réalisé par
El Oddy Anouar
Tuteur pédagogique Tuteur dans l’entreprise
Mme. Oumaima ZINE M. Hicham SAIDI
EMSI GMD METAL

Membres de jury
M. Ahmed RABHI
Mme. Khaoula AJBAL
Mme. Oumaima ZINE

Juillet 2025
Année Universitaire 2024-2025
3ème Année Cycle d’Ingénieur
I
I
Dédicaces
À mes très chers parents,

Je tiens à vous exprimer ma profonde gratitude pour le soutien constant que vous m'avez apporté
tout au long de ces années d'études. Votre amour, votre bienveillance et votre appui
inconditionnel ont été des piliers essentiels dans mon parcours, et je suis sincèrement
reconnaissant pour tout ce que vous avez fait.

Je souhaite également exprimer toute ma reconnaissance envers mes proches pour leurs
encouragements constants tout au long de mon cheminement. Votre présence et votre soutien
ont été des facteurs déterminants dans mes réussites.

À mes amis les plus chers, je tiens à exprimer toute ma gratitude et ma reconnaissance. Votre
amitié précieuse a rendu chaque moment de cette aventure mémorable et significatif.

À toute l'équipe de l'EMSI et GMD, qui m'ont offert l'opportunité d'acquérir une expérience
précieuse en conciliant théorie et pratique, je vous adresse un sincère merci.

Enfin, à tous ceux qui m'aiment et à tous ceux que j'aime, je dédie ce travail. Votre amour et
votre soutien inconditionnels sont une source d'inspiration et de motivation pour moi, et je suis
profondément reconnaissant d'avoir des personnes aussi merveilleuses dans ma vie.

EL ODDY ANOUAR

I
Remerciements
Au terme de ce travail, je tiens à exprimer mes profonds et sincères remerciements à Monsieur
Hicham SAIDI, l'encadrant de mon projet de fin d'études. Sa disponibilité, ses conseils
généreux et la qualité de son encadrement, tant sur le plan technique que moral, ont été d'une
valeur inestimable.

Je tiens également à exprimer ma gratitude à Monsieur JABIR Abdelkrim pour sa présence, le


temps qu'il a consacré au bon déroulement du projet, ainsi que pour son partage d’expérience.

J'adresse également mes remerciements les plus sincères aux membres du jury pour avoir
accepté de juger mon travail. Leur engagement et leur évaluation seront précieux pour mon
développement académique et professionnel.

Je ne saurais oublier de remercier chaleureusement l'ensemble du corps professoral de l'EMSI,


en particulier Madame Oumaima ZINE, mon encadrante pédagogique, pour la formation
prodigieuse qu'ils m'ont offerte. Ses connaissances approfondies, son expertise et son
dévouement constant ont grandement contribué à mon parcours d'apprentissage. Son soutien
inestimable et ses précieux conseils ont été des éléments clés dans la réalisation de ce travail.
Je lui exprime mes remerciements les plus sincères et ma gratitude pour son investissement
dans ma réussite académique.

Enfin, je tiens à exprimer ma gratitude envers tous ceux et celles qui ont contribué, de près ou
de loin, à l'accomplissement de ce travail. Leurs efforts et leur soutien ont été d'une importance
capitale, et je leur adresse mes remerciements les plus chaleureux. Votre présence et votre aide
ont été essentielles dans la concrétisation de ce projet.

II
Résumé
Le projet de développement et de mise en œuvre de l'application ExpedPro vise à révolutionner
la gestion des commandes et des processus d'expédition. En remplaçant les méthodes
traditionnelles par une solution informatisée intégrée, cette application permet une gestion plus
efficace et optimisée de toute la chaîne logistique d'expédition.

ExpedPro offre des fonctionnalités avancées qui couvrent l'ensemble du processus d'expédition.
L'application gère intelligemment les états de livraison avec son système innovant de faux
camions, permettant une pré-organisation optimale des chargements. Elle assure également le
suivi complet des préparations de commandes, la traçabilité des expéditions, et propose un
tableau de bord intuitif avec un système de notifications en temps réel. La gestion des véhicules
et des quais est centralisée, facilitant ainsi la coordination de toutes les opérations logistiques.

L'absence d'un système unifié pour gérer efficacement les expéditions représentait un défi
majeur, entraînant des processus chronophages et des risques d'erreurs dans l'organisation des
chargements. Grâce à son intégration directe avec SAP via un middleware personnalisé,
ExpedPro automatise la récupération des commandes et centralise toutes les données de
livraison. Cette solution répond aux besoins spécifiques de l'entreprise en améliorant
considérablement l'efficacité, la précision et la fluidité des processus d'expédition.

III
Abstract
The development and implementation project of the ExpedPro application aims to revolutionize
order management and shipping processes. By replacing traditional methods with an integrated
computerized solution, this application enables more efficient and optimized management of
the entire shipping logistics chain.

ExpedPro offers advanced functionalities that cover the complete shipping process. The
application intelligently manages delivery statuses with its innovative dummy truck system,
allowing optimal pre-organization of loadings. It also ensures comprehensive tracking of order
preparations, shipment traceability, and provides an intuitive dashboard with real-time
notification system. Vehicle and dock management is centralized, facilitating coordination of
all logistics operations.

The absence of a unified system to efficiently manage shipments represented a major challenge,
leading to time-consuming processes and risks of errors in loading organization. Thanks to its
direct integration with SAP through a custom middleware, ExpedPro automates order retrieval
and centralizes all delivery data. This solution addresses the company's specific needs by
significantly improving efficiency, accuracy, and fluidity of shipping processes.

IV
Table des matières
Dédicaces ................................................................................................................................................. I
Remerciements ........................................................................................................................................ II
Résumé .................................................................................................................................................. III
Abstract ................................................................................................................................................. IV
Table des matières .................................................................................................................................. V
Liste des figures.................................................................................................................................... VII
Liste des tableaux .................................................................................................................................. IX
Tableau de listings .................................................................................................................................. X
Liste des abréviations ............................................................................................................................ XI
Liste des Annexes................................................................................................................................. XII
Introduction Générale .............................................................................................................................. 1
Chapitre 1 : Contexte Général Du Projet ................................................................................................. 3
1.1 Introduction .......................................................................................................................................... 4
1.2 Présentation de l’organisme d’accueil.................................................................................................. 4
1.2.1 Fiche technique de site .................................................................................................................... 5
1.2.2 Historique ........................................................................................................................................ 6
1.2.3 Secteur d’activité ............................................................................................................................. 7
1.2.4 Présentation GMD Métal de Tanger................................................................................................ 9
1.3 Périmètre du projet ............................................................................................................................. 12
1.3.1 Présentation du projet .................................................................................................................... 12
1.3.2 Etude de l’existant ......................................................................................................................... 12
1.3.3 Problématique ............................................................................................................................... 13
1.3.4 Expression du besoin ..................................................................................................................... 14
1.3.5 Contraintes techniques .................................................................................................................. 14
1.3.6 Livrables attendus ......................................................................................................................... 15
1.4 Conclusion ......................................................................................................................................... 15
Chapitre 2 : Planning et conduite du Projet ........................................................................................... 16
2.1. Introduction ........................................................................................................................................ 17
2.2. Gestion de projet ................................................................................................................................ 17
2.2.1. Méthodologie du projet ................................................................................................................. 17
2.2.2. Diagramme de Gantt ..................................................................................................................... 21
2.3. Conclusion ......................................................................................................................................... 24
Chapitre 3 : Phase d’analyse et conception ........................................................................................... 25
3.1. Introduction ........................................................................................................................................ 26
3.2. Le formalisme UML .......................................................................................................................... 26
3.3. Le choix d’UML ................................................................................................................................ 27

V
3.4. Démarche conception ......................................................................................................................... 27
3.4.1. Analyse fonctionnelle .................................................................................................................... 27
3.4.2. Modélisation des Cas d'Utilisation ................................................................................................ 28
3.4.3. Analyse dynamique ....................................................................................................................... 31
3.4.4. Diagramme de classe ..................................................................................................................... 38
3.5. Benchmark des solutions existantes ................................................................................................... 39
3.6. Conclusion ......................................................................................................................................... 39
Chapitre 4 : Architecture Technique ..................................................................................................... 40
4.1. Introduction ........................................................................................................................................ 41
4.2. Langages et technologies utilisées ..................................................................................................... 41
4.3. Outils de développement, de modélisation et de communication ...................................................... 44
4.4. Méthode de développement ............................................................................................................... 45
4.4.1. La conception axée sur le domaine DDD ...................................................................................... 45
4.4.2. Développement piloté par des tests ............................................................................................... 46
4.5. Architecture Technique ...................................................................................................................... 46
4.5.1. Architecture Global ....................................................................................................................... 46
4.5.2. Architecture Front-end .................................................................................................................. 49
4.6. Conclusion : ....................................................................................................................................... 50
Chapitre 5 : Mise En Œuvre Du Projet .................................................................................................. 51
5.1 Introduction ........................................................................................................................................ 52
5.2 Back-End............................................................................................................................................ 52
5.2.1 Architecture du back-end .............................................................................................................. 53
5.2.2 La couche Entities & Dao .............................................................................................................. 54
5.2.3 La couche controller ...................................................................................................................... 56
5.3 . Front End ......................................................................................................................................... 58
5.3.1 Architecture du Front-end ............................................................................................................. 58
5.3.2 Développement des Composants ................................................................................................... 58
5.4 Architecture du Module d'Automatisation SAP GUI ......................................................................... 61
5.5 Les interfaces de l'application ............................................................................................................ 63
5.4.1 Page Login .................................................................................................................................... 63
5.4.2 Page de gestion .............................................................................................................................. 64
5.4.3 Page d’état de livraison ................................................................................................................. 65
5.4.4 Page de chargement de livraison ................................................................................................... 67
5.4.5 Page de de gestion des véhicules ................................................................................................... 68
Conclusion générale .............................................................................................................................. 70
Références Bibliographiques ................................................................................................................. 71
Annexes ................................................................................................................................................. 72

VI
Liste des figures
Figure 1 : Notre Empreinte Mondiale .......................................................................................................
Figure 2:GMD en chiffres clés ................................................................................................................ 5
Figure 3: exemple des pièces fonderie ......................................................................................................
Figure 4: exemple des pièces étanchéité ...................................................................................................
Figure 5: produits du pole emboutissage ...................................................................................................
Figure 6: GMD Métal de Tanger ............................................................................................................. 9
Figure 7: les 4 révolutions industrielles.....................................................................................................
Figure 8: les clients de GMD Métal ..........................................................................................................
Figure 9: Organigramme de GMD Métal de Tanger .................................................................................
Figure 10 : La Méthodologie Agile (Scrum) .............................................................................................
Figure 11 : Gantt prévisionnel ...............................................................................................................
Figure 12 : Gantt réel.................................................................................................................................
Figure 13 : Le cas d’utilisation d’administrateur ................................................................................
Figure 14:Le cas d’utilisation de cariste........................................................................................... 30
Figure 15: Le cas d’utilisation de supervision ................................................................................. 31
Figure 16: Diagramme De Séquence d'authentification ................................................................ 32
Figure 17: Diagramme d'Activités de l'authentification ........................................................................ 32
Figure 18: Diagramme d'État-Transitions de l'authentification............................................................. 33
Figure 19 : Diagramme de séquence gestion des Livraisons................................................................. 35
Figure 20 : Diagramme De Séquence Gestion De La Production ......................................................... 37
Figure 21 : Diagramme De Classe de l’application............................................................................... 38
Figure 22 : C# Logo ..................................................................................................................................
Figure 23 : SQL Server LOGO .................................................................................................................
Figure 24 : Rest Logo ................................................................................................................................
Figure 25 : .NET Framework Logo ...........................................................................................................
Figure 26 : Docker Logo ...........................................................................................................................
Figure 27 : GitHub Logo ...........................................................................................................................
Figure 28 : Git Logo ..................................................................................................................................
Figure 29 : Jwt Logo .................................................................................................................................
Figure 30 : React js LOGO........................................................................................................................
Figure 31 : JavaScript Logo ......................................................................................................................
Figure 32: Scss Logo ............................................................................................................................. 44
Figure 33 : Vs Project Logo ......................................................................................................................
Figure 34 : [Link] Logo ..........................................................................................................................
Figure 35 : Lucidchart Logo ......................................................................................................................
Figure 36 : DDD Architecture ............................................................................................................... 45
Figure 37 : TDD Logo ...............................................................................................................................
Figure 38 : Architecture Technique Global ...............................................................................................
Figure 39 : Architecture Front-End ....................................................................................................... 49
Figure 40: Architecture du back-end ..................................................................................................... 53
Figure 41: Couche Entities & Dao ........................................................................................................ 54
Figure 42: Couche Controller ................................................................................................................ 56
Figure 43: Test Backend........................................................................................................................ 57
Figure 44: Architecture du front-end..................................................................................................... 58

VII
Figure 45 : Architecture Fonctionnelle du Middleware ........................................................................ 62
Figure 46: Page login ............................................................................................................................ 63
Figure 47: Page de gestion de Faux camion .......................................................................................... 64
Figure 48: Page de gestion de client ...................................................................................................... 64
Figure 49: Page d’état de livraison ........................................................................................................ 65
Figure 50 : Page de détail état de livraison............................................................................................ 66
Figure 51: Page de chargement de livraison.......................................................................................... 67
Figure 52 : Page d’détails de livraison .................................................................................................. 67
Figure 53: Page de gestion des véhicules .............................................................................................. 68

VIII
Liste des tableaux
Tableau 1:Fiche technique de site ........................................................................................................... 5
Tableau 2:Historique du groupe GMD Métal ......................................................................................... 6
Tableau 3 : Comparaison Entre Les Méthodologies De Gestion Du Projet .......................................... 18
Tableau 4: Matrice des cas de tests fonctionnels réalisés sur l'application ExpedPro ......................... 57

IX
Tableau de listings
Listing 1: Client Entity .......................................................................................................................... 55
Listing 2 : Composant Client JS ............................................................................................................ 60
Listing 3: Exemple de Controller Delivres ............................................................................................ 73
Listing 4: Exemple de Controller de Middleware ................................................................................. 77

X
Liste des abréviations

ABRÉVIATIONS SIGNIFICATION

API Application Programming Interface

REST Representational State Transfer

UML Unified Modeling Language

GMD Groupe Mécanique Découpage

DDD Domain Driven Development

TDD Test Driven Development

XI
Liste des Annexes
Annexe 1: Exemple d'implémentation de Controller ........................................................................... 72
Annexe 2: Implémentation de Middleware : ........................................................................................ 74

XII
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Introduction Générale
Le présent rapport décrit mon expérience de stage réalisée au sein de l'entreprise GMD, où j'ai
eu l'opportunité de travailler sur le développement et la mise en œuvre d'ExpedPro, une
application dédiée à la gestion des commandes dans le cadre des processus d'expédition.
L'objectif principal de ce projet était de créer un outil robuste et convivial permettant
d'automatiser et de centraliser la gestion de toute la chaîne logistique d'expédition au sein de
l'entreprise.

Le projet s'inscrit dans une démarche d'innovation technologique, utilisant des technologies
modernes telles que .NET Core pour la gestion du backend et React pour l'interface utilisateur.
En remplaçant les méthodes traditionnelles et manuelles de gestion des expéditions par une
solution numérique intégrée, nous visions à améliorer l'efficacité et la précision des processus
logistiques.

L'application que nous avons développée offre des fonctionnalités avancées, parmi lesquelles
la gestion des états de livraison avec le système innovant de faux camions, la gestion du
chargement des véhicules, le suivi des préparations et la traçabilité complète des expéditions.
De plus, elle comprend des modules spécifiques pour la gestion des quais, la validation des
chargements et l'amélioration de la gestion globale des véhicules.

Pour optimiser la communication et la transparence au sein de l'entreprise, ExpedPro intègre


également un tableau de bord complet avec un système de notifications en temps réel. Ces outils
permettent de créer des alertes pour les événements critiques du processus d'expédition et
d'assurer un suivi constant de l'avancement des livraisons, améliorant ainsi la fluidité des
opérations logistiques.

Un aspect particulièrement intéressant de ce projet a été le développement d'un middleware


personnalisé qui assure l'intégration directe avec SAP. Ce composant lit automatiquement les
commandes depuis SAP et les transfère vers ExpedPro, garantissant une synchronisation
parfaite des données et éliminant les saisies manuelles.

Ce stage m'a offert une expérience pratique enrichissante dans la conception et le déploiement
d'une solution technologique complète pour la gestion des expéditions. J'ai pu mettre en
pratique mes compétences en développement logiciel et en gestion de projet, tout en travaillant
avec des technologies de pointe et en résolvant des défis logistiques complexes.

Ce rapport est structuré en cinq chapitres distincts :

Le premier chapitre présente l'organisme d'accueil, ainsi que ses domaines d'expertise et ses
réalisations dans le secteur logistique. Il délimite le périmètre du projet en identifiant ses
objectifs, sa portée et les contraintes spécifiques aux processus d'expédition. L'étude de
l'existant et la problématique à résoudre, ainsi que les besoins exprimés par l'organisme en
matière de gestion logistique, orientent la suite du projet.

1
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Le deuxième chapitre se concentre sur la planification rigoureuse et la gestion efficace du projet


ExpedPro. J'y détaille la méthodologie de travail adoptée, en mettant en avant les pratiques de
gestion de projet utilisées pour assurer la coordination entre les équipes de développement et
logistiques, ainsi que la planification par étapes pour atteindre les objectifs d'automatisation
fixés.

Le troisième chapitre approfondit la phase d'analyse et de conception du projet. J'y détaille la


méthodologie utilisée pour analyser les besoins fonctionnels et non fonctionnels liés aux
processus d'expédition, définir les spécifications du système à développer, et l'importance de
l'approche itérative pour valider les choix de conception adaptés aux contraintes logistiques.

Le quatrième chapitre explore en profondeur l'architecture technique du projet ExpedPro. J'y


présente les outils de développement, de modélisation et de communication utilisés pour
faciliter la conception, ainsi que les détails de l'intégration avec SAP via le middleware
développé.

Le dernier chapitre met l'accent sur la concrétisation du projet. Nous y présentons les différentes
étapes de mise en œuvre d'ExpedPro, en détaillant les efforts de développement, de test et de
déploiement du système dans l'environnement de production. Nous mettons en avant les défis
techniques et logistiques rencontrés et les solutions innovantes mises en place pour les
surmonter. Enfin, nous évaluons les résultats obtenus par rapport aux objectifs initialement
fixés, en soulignant les améliorations apportées aux processus d'expédition et les leçons
apprises tout au long de la réalisation de ce projet.

2
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Chapitre 1 : Contexte
Général Du Projet

3
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

1
Contexte Général Du Projet
Résumé :

Le premier chapitre de ce rapport se concentre sur l'établissement d'accueil et le contexte global


du projet ExpedPro. Nous présenterons l'organisme d'accueil en mettant en lumière ses
domaines d'expertise dans le secteur logistique, puis nous délimiterons le périmètre du projet
en définissant ses objectifs d'automatisation des processus d'expédition et les contraintes
techniques liées à l'intégration SAP. Ce chapitre abordera également l'étude préliminaire du
projet, examinant les méthodes actuelles de gestion des expéditions et la problématique des
processus manuels, ainsi que les besoins spécifiques exprimés concernant l'optimisation des
chargements et la centralisation des données de livraison. Enfin, nous énumérerons les livrables
attendus, incluant l'application ExpedPro complète, le middleware d'intégration SAP et la
documentation technique.

1.1 Introduction
Pendant mon stage de fin d'études, j'ai eu l'opportunité de mettre en pratique mes compétences
en ingénierie au sein de l'entreprise. Ce stage m'a permis de comprendre l'utilité de mon
parcours universitaire et de prendre conscience de la valeur qu'un ingénieur peut apporter à une
entreprise. J'ai été ravi de réaliser ce stage où j'ai eu la chance de travailler sur un projet
passionnant et stimulant de développement et de mise en œuvre d'ExpedPro, une application
dédiée à la gestion des commandes et des processus d'expédition.

1.2 Présentation de l’organisme d’accueil


Le Groupe GMD a été créé en 1986 avec une activité principale de découpage et emboutissage.
Grâce à sa croissance régulière et maîtrisée, le Groupe GMD est aujourd’hui un partenaire
fiable, maîtrisant la transformation des métaux à plat par découpage, emboutissage, la tôlerie,
la fabrication de pièces plastiques en injection et thermoformage, la fonderie d'aluminium, et
autres procédés connexes. Le groupe GMD est présent en France, Hongrie, Chine, Mexique,
Roumanie, Algérie, Tunisie, Portugal, Pologne, Slovaquie, Allemagne, Russie, Corée du Sud
et le Maroc (Figure 1).

4
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 1 : Notre Empreinte Mondiale

Le Groupe GMD est organisé autour de quatre métiers principaux :


• L’emboutissage
• La fonderie d’aluminium sous pression
• La plasturgie
• L’étanchéité
Voici quelques chiffres clés à propos du groupe GMD (Figure 2) :

Figure 2:GMD en chiffres clés

1.2.1 Fiche technique de site


Tableau 1:Fiche technique de site

Raison Sociale GMD Métal Tanger


Forme juridique Société anonyme
Date de création 2011
Siège social Zone Franche de Tanger Automotive City-(tac)
Lot N° 7 – Tanger-Médina (AR)
Secteur d’activité Transformation de la tôle par découpage,
emboutissage et fabrication de pièces
métalliques.
Chiffre d’affaires De 400,000,000 à 500,000,000 DH
Effectif Entre 400 et 500
Tél/Fax +212 539 397 110 / +212 539 397 114
Directeur général Frédéric Milan
Registre de Commerce 72345

5
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

1.2.2 Historique
Le tableau 2 suivant présente l’historique des événements marquants du groupe GMD.
Tableau 2:Historique du groupe GMD Métal

Année Principaux événements

1986 Création du groupe GMD par Monsieur Alain Martineau avec la reprise de la
société VERON spécialisée dans le Découpage- Emboutissage

1987/1996 Croissance du groupe (CA multiplié par 5) par croissance interne


(développement micro-informatique) et externe (reprise de 7 sociétés de
découpage-emboutissage)

1998 Entrée au capital de GMD d’investisseurs institutionnels à hauteur de 35,15%

2002 Référencement auprès des constructeurs automobiles Français

2006 Acquisition du métier de l’injection plastique

2009 Reprise des groupes EUROSTYLE et RENCAST. GMD acquiert le métier de


la fonderie et s’organise en 8 ‘business units ’

2010 Renforcement du métier de la fonderie avec l’achat de la société FP ALU

2011 Référencement chez l’équipementier ZF et prise de commandes à hauteur de


60M€ par an. Création de GMD TANGER

2012 Décision de se recentrer exclusivement vers les constructeurs automobiles

2013 Sortie du groupe d’une trentaine de sociétés de secteurs hors automobile.


Acquisition de SEALYNX en mars 2013

2016 Organisation du groupe en 4 pôles métiers : Emboutissage, Etanchéité,


Fonderie et Plastique

2016/2018 Développement à l’International par la création de plusieurs usines : 3 usines


au Mexique, 1 usine au Mexique, 1 usine en Hongrie

2019 Acquisition de la société Schäfer Oesterle spécialisé dans les revêtements


cuirs et synthétiques pour les constructeurs Premiums au sein du Pôle
plastique qui devient Plastic & Leather

2019/2020 Construction de 2 nouvelles usines au Maroc (une au sein du Pôle Étanchéité


et une au sein du Pôle Emboutissage)

6
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

2022 Poursuite du développement à l’international (République Tchèque) et cession


du Pole Étanchéité

1.2.3 Secteur d’activité


GMD Métal, faisant partie du Groupe GMD, opère dans le secteur automobile, se spécialisant
dans la fabrication de composants métalliques de haute précision. Leurs activités principales
incluent l'emboutissage et le formage de pièces métalliques complexes, l'assemblage de sous-
ensembles via des opérations de soudage, de rivetage et de vissage, ainsi que le traitement de
surface, comme la peinture et la galvanisation, pour améliorer la résistance à la corrosion et
l'esthétique des pièces. Ils conçoivent et fabriquent également des outillages de presse, assurant
la maintenance préventive et corrective pour une production continue et efficace. GMD Métal
utilise des technologies avancées, telles que la simulation numérique, la robotique et
l'automatisation, pour améliorer la précision et l'efficacité des processus de fabrication. De plus,
ils offrent des services d'ingénierie pour le développement de nouveaux produits, la gestion de
projets et l'optimisation des processus de production, répondant ainsi aux besoins spécifiques
des constructeurs automobiles et des équipementiers avec des solutions complètes et intégrées.

• Pole Fonderie

Le pôle GMD EUROCAST, pôle Fonderie, est spécialisé dans le développement et la


fabrication de pièces obtenues par coulée sous haute pression en aluminium (Figure 3). En 2020,
le chiffred’affaires de ce pôle est de 268 millions d’euros, réalisé par 12 sites de production dans
6 [Link] les principaux produits fabriqués par GMD EUROCAST, nous citons :

Figure 3: exemple des pièces fonderie

• Pôle Plastique et Leather

Le pôle GMD PLASTIQUE et LEATHER est spécialisé dans le développement et la fabrication


de pièces obtenues par injection plastique. En 2020, le chiffre est de 343 Millions d’euros,
réalisé par 22 sites de production, dans 8 pays. Fin 2018, un nouveau site de production localisé
en Espagne et l’acquisition de la société Schäfer Oesterle, ces derniers ont complété la capacité
de production et ils ont ajouté au savoir-faire de GMD PLASTIC le revêtement cuir. Parmi les

7
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

principaux produits issus de GMD PLASTIC, il y a les panneaux de portes ainsi que les
garnitures intérieures du véhicule.

• Pôle Etanchéité
Le pôle SEALYNX est spécialisé dans le développement et fabrication de joints en caoutchouc
et en plastique (Figure 4). En 2020, le chiffre d’affaires est de 61 millions d’euros, réalisé par
3 sites de production, dans 3 pays. Avril 2018, l’extension de l’usine de Roumanie a été
inaugurée, permettant ainsi de doubler la surface du site. Le site de production du Maroc a été
transféré ennovembre 2018 dans une nouvelle usine localisée à Tanger Automotive City. Début
2019, un quatrième site de production localisé en Algérie s’ajoutera à la capacité de production
de Sealynx. Parmi les principaux produits livrés par le pôle SEALYNX, nous trouvons :

Figure 4: exemple des pièces étanchéité

• Pôle Emboutissage
Le pôle GMD STAMPING ou Métal est spécialisé dans la fabrication des pièces en acier
obtenues par emboutissage et assemblage (Figure 5). GMD Métal livre des pièces destinées à
l’automobile,ces derniers sont présentés ci-dessous :

Figure 5: produits du pole emboutissage

8
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

1.2.4 Présentation GMD Métal de Tanger


Le groupe GMD métal Tanger (groupe mécanique de découpage) est spécialisé dans la
fabrication des pièces mécaniques destinée au marché d’automobile. Cette filiale de GMD a été
créée au Maroc en 2012 pour accompagner le groupe Renault dans son projet d'usine RTE de
voitures à Tanger.
Après avoir été affecté sur plusieurs nouveaux projets en 2019, le groupe GMD a décidé de
construire une nouvelle usine sur TAC (Figure 6) avec des mesures internationales, et l’industrie
4.0, avecun investissement de 50M€ (terrain + construction + process)

Figure 6: GMD Métal de Tanger

En effet, l’industrie 4.0 Appelée aussi “industrie du futur”, est un terme utilisé pour décrire la
quatrième révolution industrielle qui se produit dans l’industrie manufacturière (Figure 7). Elle
allie objets réels et technologies numériques pour aboutir à des produits encore plusperformants,
grâce à une activité optimisée. Pour ce faire, elle fait appel aux robots, à l’impression 3D, à la
réalité augmentée et, bien sûr,à l’intelligence artificielle. Le principe est donc de réduire la
consommation d’énergie ainsi que les coûts de la maind’œuvre, tout en augmentant l’efficacité
des processus industriels

9
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 7: les 4 révolutions industrielles

➢ Clients
Le groupe mondial français GMD est parmi les leaders dans son domaine de la sous-
traitante de fabrication des composants et sous-ensembles de voitures, ses clients phares sont
représentés dans la figure ci-dessous (Figure 8) :

Figure 8: les clients de GMD Métal

10
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

➢ Organigramme de GMD Métal de Tanger


L’organigramme de GMD Métal se présente comme le montre la figure suivante (Figure 9) :

Figure 9: Organigramme de GMD Métal de Tanger

Le travail est organisé autour des différents services au sien de GMD métal de Tanger :
Service Logistique : a pour vocation de gérer les flux, tout en optimisant les coûts logistiques,
ainsi de garantir la satisfaction des clients. Ses activités principales sont l'approvisionnement
en matières premières, gestion et optimisation des stocks et la livraison des produits aux clients
finaux.
Service des ressources humaines : Ce service assure la gestion et la disponibilité du personnel,
il met en place les outils de gestion de carrières, assure les tâches administratives, organise des
formations.
Service finance : Ce service assure les procédures financières et veille à la préservation du
patrimoine financier de l’entreprise, ceci en assurant une gestion efficace des ressources
financières disponibles, ainsi d’obtenir les capitaux nécessaires pour le développement de
l’activité de l’entreprise.
Service commerce : Ce service assure le lien entre l’entreprise et sa clientèle, en intervenant
avant et après la vente, tout en restant à la disposition des clients ainsi que de leurs remarques.
Parmi ses missions est d’assurer la prospection, ceci en ramenant des nouveaux clients à
l’entreprise, ainsi que de fidéliser ces derniers en leurs proposant des offres imbattables.
Service qualité : C’est le garant du système qualité de l’entreprise à travers l’implantation d’un
système qualité fiable qui répond aux exigences des clients afin d’atteindre le niveau de qualité
escompté sur le plan du processus et des produits.
Service méthodes : est l’interface entre la ligne de production et le bureau d’études. Il est
chargé de l’industrialisation des produits, c’est-à-dire de concevoir et de fournir les outils
nécessaires à la production.
Service bureau d’études : Ce service veille à assurer la conformité des produits, ceci en
réalisant les plans 2D des pièces ainsi qu’ils établissent les plans de surveillance et les plans
d’actions.
Service production : Sa principale mission est la réalisation des programmes de production,

11
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

tout en assurant une bonne qualité du produit en respectant les délais fixés au préalable et en
optimisant les performances.
Service maintenance : Le service maintenance permet de maintenir ou rétablir les divers
équipements du parc matériel, afin d’assurer le fonctionnement des machines. Il assure la
maintenance préventive et curative de tous les équipements.
Service outillage : assure la préparation, le maintien ainsi que la disponibilité des divers outils
nécessaires à la production, les opérations effectuées dans l’atelier sont de nature préconception
des éléments dans l’outil.
1.3 Périmètre du projet
1.3.1 Présentation du projet

Le projet vise à développer et mettre en œuvre ExpedPro, une application dédiée à la gestion
des commandes dans le cadre des processus d'expédition. Cette solution informatisée
remplacera les méthodes traditionnelles de gestion logistique, permettant une centralisation et
une automatisation complète des opérations d'expédition. Elle intégrera des fonctionnalités
avancées telles que le système innovant de faux camions, la gestion intelligente des
chargements et la traçabilité en temps réel, améliorant ainsi considérablement l'efficacité et la
précision des processus logistiques.

1.3.2 Étude de l’existant


[Link] Processus actuel dans l’entreprise
Dans le contexte actuel de gestion des expéditions, plusieurs problèmes majeurs sont
observés, notamment la gestion manuelle des commandes et des chargements via des
fichiers Excel et papiers. Cette approche traditionnelle génère des erreurs, des retards de
livraison et compromet la traçabilité des expéditions. L'investissement dans ExpedPro
permettrait d'automatiser ces processus, d'optimiser l'organisation des chargements
grâce au système de faux camions et d'assurer un suivi en temps réel, améliorant ainsi
l'efficacité opérationnelle et la satisfaction client.
[Link] Solutions existantes sur le marché (benchmark fonctionnel et/ou
technique)
Avant de développer EXPED PRO, il était essentiel d’examiner brièvement
les solutions de gestion logistique déjà disponibles sur le marché afin de
situer notre projet dans un contexte industriel plus large. Parmi les solutions
couramment utilisées, on retrouve SAP EWM (Extended Warehouse
Management), Oracle SCM Cloud, ou encore Infor WMS. Ces systèmes sont
très complets, intégrant des fonctionnalités avancées de traçabilité, de
gestion des stocks en temps réel et d’automatisation via l’IoT. Toutefois, leur
coût élevé, leur complexité d’intégration, et parfois leur manque de
flexibilité pour des besoins très spécifiques comme ceux de GMD en matière
de suivi sur-mesure des expéditions, ont motivé le développement d’une
solution plus légère, ciblée et adaptée aux contraintes internes.

EXPED PRO se positionne donc comme une alternative plus agile,


personnalisée et économique, capable de s’interfacer directement avec les
modules de production et les robots, tout en répondant précisément aux
attentes des opérateurs sur le terrain. Là où les grandes plateformes imposent
souvent une adaptation des processus à l’outil, EXPED PRO fait l’inverse :

12
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

il s’adapte au terrain, en s’alignant parfaitement avec les réalités


opérationnelles de l’usine.
1.3.3 Problématique

L'entreprise fait actuellement face à des limitations importantes dans la gestion de ses processus
d'expédition et de ses commandes. Les méthodes manuelles basées sur des fichiers Excel et
papiers sont sources d'erreurs de chargement, de perte de traçabilité et rendent difficile l'accès
aux informations critiques sur l'état des livraisons. L'absence d'automatisation entraîne une
perte de temps considérable lors de l'organisation des chargements et compromet la réactivité
face aux demandes clients.

Cette problématique se traduit par des processus logistiques inefficaces, une augmentation des
risques d'erreurs dans les expéditions et une difficulté à suivre en temps réel l'avancement des
livraisons. Il est donc crucial de mettre en place ExpedPro, une solution informatisée répondant
aux besoins spécifiques de gestion des expéditions, tout en améliorant l'efficacité
opérationnelle, la précision des chargements et l'accessibilité des données logistique.

13
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

1.3.4 Expression du besoin

L'entreprise a exprimé le besoin de mettre en place ExpedPro, une application complète de


gestion des commandes et des processus d'expédition, répondant à ses exigences spécifiques.
Voici les principales fonctionnalités que l'application devra offrir :

a Gestion des état de livraison et faux camions


• Visualiser l'état des commandes en cours d'expédition.
• Gérer le système de faux camions pour optimiser l'organisation des chargements.
• Pré-organiser les commandes selon l’ordre de chargement optimal.

b Gestion des préparations et traçabilité


• Suivre la préparation des commandes en temps réel.
• Assurer la traçabilité complète des produits depuis la réception jusqu'à l'expédition.
• Enregistrer toutes les étapes du processus pour un suivi détaillé

c Tableau de bord et système de notification


• Afficher un tableau de bord centralisé avec les indicateurs clés.
• Envoyer des notifications automatiques sur l'avancement des expéditions.
• Alerter en cas de retards ou d’anomalies dans le processus

d Gestion quais
• Organiser l'occupation des quais de chargement/déchargement.
• Planifier les créneaux horaires pour optimiser les flux.
• Eviter les conflits et les temps d’attente.

e Système de connexion avec niveaux d’accès


• Accès sécurisé avec différents profils utilisateurs selon les responsabilités.
• Gestion des privilèges : Administrateurs (accès complet), Superviseurs (gestion et
supervision des opérations), Caristes (visualisation des produits, emplacements et
placement dans les faux camions).

f Integration SAP via middleware


• Récupération automatique des commandes depuis SAP.
• Synchronisation en temps réel des données de commandes.
• Elimination des saisies manuelles et réduction des erreurs
Ces fonctionnalités permettront d'améliorer considérablement l'efficacité, la précision et
l'accessibilité des processus d'expédition, tout en offrant une solution moderne et adaptée aux
besoins spécifiques de la gestion logistique.

1.3.5 Contraintes techniques


Lors du développement d'ExpedPro, plusieurs contraintes techniques doivent être prises en
compte pour garantir son bon fonctionnement et son efficacité dans un environnement
logistique exigeant. Voici quelques contraintes à considérer :

14
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

• Sécurité des données : L'application doit mettre en place des mesures de sécurité
robustes pour protéger les données sensibles des commandes, des livraisons et des
informations clients.
• Scalabilité : Il est crucial de concevoir l'application pour qu'elle puisse s'adapter à
l'augmentation du volume des commandes et à la croissance future des opérations
d'expédition.
• Intégration SAP : L'application doit assurer une intégration transparente avec le
système SAP existant via le middleware développé, garantissant une synchronisation
fiable des données de commandes.
• Convivialité de l'interface utilisateur : L'application doit offrir une interface intuitive
adaptée aux différents profils (administrateurs, superviseurs, caristes) pour faciliter
les opérations logistiques quotidiennes.
• Performances en temps réel : L'application doit être conçue pour offrir des
performances élevées et des temps de réponse rapides, particulièrement critiques lors
des pics d'activité d'expédition et pour le suivi en temps réel des commandes.

1.3.6 Livrables attendus

Les livrables attendus pour le projet EXPEDPRO pour GMD incluent :

1. Application ExpedPro fonctionnels : L'application doit être conviviale, stable et


répondre aux exigences fonctionnelles définies, incluant la gestion des faux camions, le
suivi des expéditions et l'intégration SAP via le middleware développé.
2. Documentation technique détaillée : Fournir une documentation complète décrivant
l'architecture de l'application, les fonctionnalités logistiques, les spécifications
techniques du middleware SAP, les dépendances, ainsi que les processus d'installation,
de configuration et de déploiement. Cette documentation facilitera la maintenance
future et permettra aux développeurs de comprendre le fonctionnement du système
d'expédition.
3. Code source versionné sur un système de contrôle de version : Fournir l'ensemble
du code source de l'application ExpedPro et du middleware d'intégration SAP,
correctement organisé et versionné à l'aide d'un système de contrôle de version tel que
Git.
4. Manuels d'utilisation pour les différents utilisateurs de l'application : Fournir des
manuels d'utilisation détaillés pour les différents profils d'utilisateurs : administrateurs,
superviseurs et caristes, adaptés à leurs rôles spécifiques dans les processus
d'expédition.
1.4 Conclusion
En conclusion, le premier chapitre de ce rapport établit le contexte global du projet ExpedPro.
Il présente l'organisme d'accueil en mettant en évidence son expertise dans le domaine
logistique et ses réalisations dans la gestion des processus d'expédition. Le périmètre du projet
est délimité, en identifiant les objectifs d'automatisation des expéditions, les contraintes
techniques liées à l'intégration SAP et les livrables attendus incluant l'application complète et
son middleware. L'étude préliminaire révèle les limitations des méthodes manuelles actuelles
et la problématique des processus d'expédition inefficaces, en prenant en compte les besoins
spécifiques exprimés concernant l'optimisation des chargements et la traçabilité

15
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Chapitre 2 : Planning
et conduite du Projet

16
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Planning et conduite Du Projet


2
Résumé :
Le deuxième chapitre se concentre sur la planification et la gestion du projet, des éléments
essentiels pour son succès. Je détaillerai la méthodologie de travail adoptée, permettant une
collaboration efficace entre l’équipe. De plus, j'expliquerai comment le Diagramme de Gantt a
été élaboré pour assurer une vision claire des différentes étapes du projet et garantir un suivi
rigoureux des jalons clés. Enfin, ce chapitre abordera la planification du projet par sprint, en
présentant les objectifs spécifiques assignés à chaque itération, ce qui me permettra d'atteindre
les résultats attendus de manière progressive.

2.1. Introduction
La gestion et la planification du projet ExpedPro constituent une étape primordiale pour la
réalisation et le succès de cette solution logistique, tout en respectant les délais de
développement et de déploiement dans l'environnement opérationnel. L'entreprise, en tant
qu'organisation agile, excelle dans l'adaptation rapide aux changements imprévus des processus
d'expédition, dans la maîtrise complète des flux logistiques et, en fin de compte, dans
l'amélioration de la satisfaction client grâce à des livraisons plus efficaces et fiables.

2.2. Gestion de projet


La gestion de projet est une démarche visant à organiser de bout en bout le bon déroulement
d’un projet. Lorsque la gestion de projet porte sur un ensemble de projets concourant au même
objectif, on parle alors de la gestion de programme.
2.2.1. Méthodologie du projet
[Link]. Comparaison entre les processus de développement

Le choix entre un modèle de processus de développement et un autre, dépend de la nature du


projet et de sa taille. Le tableau suivant représente une comparaison entre les différents
processus de développement.

17
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Tableau 3 : Comparaison Entre Les Méthodologies De Gestion Du Projet

Cycle de Forces Faiblesses Cas d’utilisation


vie

En •Facile à comprendre et à •Donne une fausse •La phase de


Cascade utiliser. impression sur spécification bien
•Adapté pour une équipe l’avancement des faite
inexpérimentée travaux •La définition du
•Les limites de chaque étape •Pas d’interaction entre produit est stable
sont visibles les phases du •Il s’agit d’une
•Facilite un management du développement nouvelle version
Projet •N’accepte pas les d’un produit
changements et les existant
imprévus •L’implémentation
•Le client peut se d’un produit
retrouver non satisfait existant dans une
nouvelle plate-
forme.
En V •Facile à utiliser •Une mauvaise prise en •Les spécifications
•Les tests sont effectués en compte des événements de besoins doivent
parallèle avec le concurrents être bien faites
développement. •Le processus n’est pas •La solution à
•Le contrôle se fait itératif développer et la
progressivement à chaque •Ne prévoit pas de technologie à
étape. nouvelles décisions lors utiliser, doivent être
•Les phases de validation d’un cycle parfaitement
sont prises en main très tôt • N’est pas adaptée aux connues •Les
dans le processus de changements. changements
développement doivent être faits
avant l’analyse
En spirale •Sans coût élevé, donne des •Facilite la gestion des •Les coûts et
indications sur les risques risques. l’évaluation des
Majeurs •Adaptabilité aux risques est
•Les fonctions critiques à changements. important
haut risque sont développées •Ce modèle est complexe •Pour des projets à
en premier lieu risque au moins
•La conception ne doit pas moyennement élevé
forcément être terminée •Pour des projets à
long terme dont les
financements
peuvent varier
Agile •Centrée sur le produit •Peu ou pas de •Pour les
•Progrès incrémental, documentation écrite, ce organisations
facilement mesurable et qui pose un problème orientées produit.
clairement visible pour les majeur lors du •Pour augmenter la
acteurs économiques. changement de l’équipe productivité.
•Les développeurs fixeront du développement. •Scrum dispose du
le rythme, ne sont pas •Cette méthode progrès tangible
demandera un client réalisés par le biais

18
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

surchargés de travail, et toujours disponible et fréquents, les


bénéficient d'un rôle accru prêt à s’impliquer à tout versions de
•La charge du travail est moment. production
réglable, basé sur la capacité •Si l’équipe n’est pas incrémentales
de l’équipe et la priorité des homogène, le projet ne (Sprints).
tâches à réaliser. finira jamais.
Lorsqu’il s’agit d’un projet où les données ne sont pas réunies dès le départ, où les besoins sont
incomplets, il est recommandé de s’orienter vers une méthode itérative ou orientée prototypes.
En se basant sur ce tableau comparatif, et en faisant liaison avec le projet de gestion ExpedPro,
nous avons adopté la méthode agile comme méthodologie de gestion du projet pour :
• Plus de souplesse et de réactivité.
• La grande capacité d’adaptation au changement grâce à des itérations.
• Les besoins du projet sont bien définis dès le départ
• S’adapter à la méthodologie du travail de l’organisme d’accueil.
• La nature de cette méthode est bien organisée et permet de tester et valider chaque
partie du projet avant de passer à une autre.

[Link]. La méthode SCRUM


Une méthode AGILE est menée dans un esprit collaboratif et s’adapte aux approches
incrémentales. Elle engendre des produits de haute qualité tout en tenant compte de l’évolution
des besoins du client. Elle permet aussi de gérer la qualité en continu et de détecter des
problèmes le plus tôt au fur et à mesure, permettant ainsi d’entreprendre des actions correctrices
sans trop de pénalités dans les coûts et les délais.
Sous cette bannière se regroupent plusieurs méthodes basées sur un développement itératif et
incrémental. Pour notre projet, nous nous sommes orientés vers la méthode Scrum, tout
simplement parce que Scrum est, de très loin, la méthodologie la plus utilisée parmi les
méthodes Agile existantes. Elle est donc la plus éprouvée, documentée et supportée.
Livres, blogs, formations, vidéos, associations, conférences traitant de Scrum ne manquent pas,
et la majorité de ces ressources sont accessibles gratuitement. On pourrait pratiquement parler
d’un standard Agile. De plus, Scrum est simple à comprendre. Or, sa maîtrise est en revanche
difficile. Les experts de Scrum, même ses fondateurs, le décrivent comme un « cadre de travail
permettant de répondre à des problèmes complexes et changeants tout en livrant de manière
productive et créative des produits de la plus grande valeur possible »

• Le principe :
Selon Claude Aubry, auteur du plus célèbre guide sur Scrum, une pratique est « une approche
concrète et éprouvée qui permet de résoudre un ou plusieurs problèmes courants ou d’améliorer
la façon de travailler lors d’un développement. [...] La notion de pratique prend toute son
importance avec l’utilisation des méthodes agiles. À côté des valeurs et des principes qui sont
universels, les pratiques sont le reflet de la mise en œuvre sur le terrain ». Le principe de base
de la méthodologie Scrum est le suivant :

• Dégager dans un premier lieu le maximum des fonctionnalités à réaliser pour former le
backlog du produit.
• En second lieu, définir les priorités des fonctionnalités et choisir lesquelles seront
réalisé dans chaque itération

19
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

• Par la suite, focaliser l'équipe, de façon itérative, sur l’ensemble de fonctionnalités à


réaliser dans des itérations appelées Sprints.
• Un Sprint aboutit toujours sur la livraison d’un produit partiel fonctionnel appelé
incrément.

• Les rôles dans la méthodologie Scrum :

La méthodologie SCRUM fait intervenir trois rôles principaux qui sont :

Product Owner : Dans la majorité des projets, le responsable produit (Product Owner) est le
responsable de l’équipe projet client. C’est lui qui va définir et prioriser la liste des
fonctionnalités du produit et choisir la date et le contenu de chaque sprint sur la base des valeurs
(charges) qui lui sont communiquées par l’équipe.

Scrum master : Véritable facilitateur sur le projet, il veille à ce que chacun puisse travailler au
maximum de ses capacités en éliminant les obstacles et en protégeant l’équipe des perturbations
extérieures.

Equipe de Développement : L’équipe s’organise elle-même et elle reste inchangée pendant


toute la durée d’un sprint. Elle doit tout faire pour délivrer le produit.

• Sprint :

Le sprint agile représente le cœur de la méthode Scrum. Cette qualification lui correspond plutôt
bien, puisque tous les développements incrémentaux menant petit à petit au produit final du
projet sont réalisés au sein des sprints. Un périmètre de développement est défini au début d’un
sprint et doit être entièrement réalisé lorsqu’il se termine. Chaque sprint doit apporter des
fonctionnalités supplémentaires à l’application en cours de développement qui doivent être
livrées lorsqu’il se termine.

La figure 4 suivante explique le fonctionnement de cette méthodologie :

Figure 10 : La Méthodologie Agile (Scrum)

20
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

• Les cérémonies :

L’ensemble d’événements séquentiels, de cérémonies ou de réunions que les équipes Scrum


effectuent régulièrement constituent des composantes mieux connues du Framework.

• Organisation du backlog : Aussi connue sous le nom de préparation du backlog, cette


étape est de la responsabilité du Product Owner. Il a deux tâches principales :
concrétiser la vision du produit et rester constamment aligné avec le marché et les
clients.
• Planification du Sprint (Sprint = itération) : Lors de cette réunion, l’équipe de
d'enveloppement sélectionne les éléments prioritaires du ”Product Backlog” (une liste
ordonnancée des exigences fonctionnelles et non fonctionnelles du projet) qu’elle
estime pouvoir réaliser pendant le sprint, en collaboration avec le Product Owner.
• Sprint : Un sprint désigne la durée réelle dont l’équipe Scrum a besoin pour terminer
un incrément. La durée classique d’un sprint est de deux semaines, mais certaines
équipes préfèrent une semaine ou un mois pour livrer un incrément de valeur plus
facilement.
• Mêlée ou stand-up quotidien(ne) : Une mini-réunion quotidienne qui se tient à la
même heure et au même endroit pour faciliter les échanges. Bien que la durée de 15
minutes soit couramment visée, ce n’est qu’une indication.
• Revue de Sprint : Lors de cette réunion qui a lieu à la fin du sprint, l’équipe de
développement présente les fonctionnalités terminées pendant le sprint et recueille les
retours du Product Owner et des utilisateurs finaux.
• Rétrospective de Sprint : La rétrospective, qui a généralement lieu après la revue de
sprint, offre l’opportunité de s’améliorer (productivité, qualité, efficacité, conditions de
travail, etc.) en se basant sur l’expérience du sprint écoulé, selon le principe de
l’amélioration continue.
2.2.2. Diagramme de Gantt

Le diagramme de Gantt, largement utilisé en gestion du projet, est un outil extrêmement efficace
pour représenter visuellement l’état d’avancement des activités qui composent un projet. Il offre
une vue d’ensemble en un coup d’œil, permettant de :

• Identifier les différentes tâches à prendre en compte ;


• Visualiser les dates de début et de fin de chaque tâche ;
• Estimer la durée prévue pour chaque tâche ;
• Repérer les éventuels chevauchements de tâches et leur durée ;
• Déterminer les dates de début et de fin du projet dans son ensemble.

Grâce à sa représentation graphique claire, le diagramme de Gantt facilite la planification, la


coordination et le suivi des projets, offrant ainsi un moyen pratique de gestion pour les équipes
et les parties prenantes. Son utilisation permet de visualiser rapidement l’état d’avancement
global du projet et de prendre des décisions éclairées pour optimiser la progression.

Les figures 11 et 12 suivantes présentent les plannings prévisionnel et réel du déroulement du


projet :

21
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 11 : Gantt prévisionnel

22
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 12 : Gantt réel

L'analyse comparative entre le planning prévisionnel et le planning réel d'ExpedPro révèle une
gestion de projet globalement maîtrisée avec quelques ajustements nécessaires. Les phases
initiales du projet (étude préliminaire, cahier de charge, objectif du projet) ont été respectées
selon les délais initialement prévus, témoignant d'une bonne planification en amont.

23
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Cependant, des écarts significatifs apparaissent dans les phases de développement technique.
L'étude technique s'est prolongée jusqu'à la semaine 22 au lieu de la semaine 20 prévue,
entraînant un décalage des phases de développement [Link] et React. Cette extension
s'explique par la complexité inattendue de l'intégration SAP qui a nécessité des investigations
techniques approfondies.
Le middleware a également subi un retard, sa réalisation s'étendant jusqu'à la semaine 24 contre
la semaine 23 initialement planifiée. En revanche, les modules de gestion (base de données,
faux camion & client, livraisons, véhicules, voiture) ont conservé leur planning d'origine,
démontrant l'efficacité de la méthodologie adoptée pour ces composants.
La phase de réalisation des interfaces Front-End présente un léger retard mais reste dans des
proportions acceptables. Finalement, la rédaction du rapport a été maintenue selon le planning
initial, permettant de respecter l'échéance finale du projet malgré les ajustements techniques
intermédiaires.

2.3. Conclusion
En conclusion, le deuxième chapitre met en évidence l'importance cruciale de la planification
et de la gestion du projet pour assurer son succès. La méthodologie de travail, l'utilisation de
Jira Software pour la collaboration en équipe et le Diagramme de Gantt pour le suivi des jalons
clés ont été expliqués en détail. La planification par sprint a également été présentée comme
une approche progressive et itérative pour atteindre les objectifs spécifiques du projet. Ces
éléments fournissent une base solide pour la mise en œuvre réussie des étapes à venir, en
garantissant une avancée cohérente et maîtrisée du projet tout en respectant les délais fixés.

24
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Chapitre 3 : Phase
d’analyse et
conception

25
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

3
Phase d’analyse et conception
Résumé :

Le troisième chapitre est dédié à la phase d'analyse et de conception de mon projet, un processus
fondamental pour assurer la création d'une solution cohérente et efficace. Je présenterai le choix
du formalisme UML pour représenter le système, mettant en évidence les avantages qu'il offre
pour modéliser et comprendre les différentes interactions du projet. Ce chapitre abordera
également la démarche de conception que j'ai mise en œuvre, en détaillant l'analyse
fonctionnelle réalisée pour identifier les besoins métier spécifiques. J'inclurai la description
textuelle des cas d'utilisation et l'analyse dynamique pour une vision exhaustive des interactions
utilisateur. De plus, j’expliquerai comment le diagramme de classe a été utilisé pour établir une
architecture robuste et évolutive du système à développer.
3.1. Introduction
Dans ce chapitre, je vais aborder l'analyse et la conception du système. Je vais commencer par
une analyse des besoins et des exigences pour comprendre les fonctionnalités attendues du
système. Ensuite, je vais présenter la conception du système en utilisant des diagrammes UML
pour modéliser les différents aspects du système. Cette étape est cruciale pour garantir que le
système réponde aux besoins et aux exigences identifiées lors de l'analyse.
3.2. Le formalisme UML
UML (Unified Modeling Language), que l'on peut traduire par "langage de modélisation
unifié", est une notation permettant la modélisation d'un problème. Ce langage est né de la
fusion de plusieurs méthodes existantes auparavant et est devenu la référence en termes de
modélisation orientée objet. Entre 1990 et 2000, de nombreux analystes ont développé des
approches orientées objet, ce qui a conduit à l'existence de plus de 50 méthodes objet en 1994.
Cependant, seules trois méthodes ont véritablement émergé. [1]

• La méthode OMT de Rumbaugh


• La méthode BOOCH'93 de Booch
• La méthode OOSE de Jacobson (Object-Oriented Software Engineering).

À partir de 1994, Rumbaugh et Booch (rejoints en 1995 par Jacobson) ont uni leurs efforts pour
développer une méthode unifiée incorporant les avantages de chacune des méthodes
précédentes. Cette méthode unifiée, à partir de sa version 1.0, est devenue UML, une notation
universelle pour la modélisation orientée objet. UML 1.0 a été soumise à l'OMG (Object

26
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Management Group) en janvier 1997, mais elle n'a été acceptée qu'en novembre 1997 dans sa
version 1.1, à partir de laquelle UML est devenu une norme internationale.

Cette méthode représente un moyen de spécifier, représenter et construire les composantes d'un
système informatique. En effet, la notation unifiée définit neuf diagrammes pour représenter les
différents points de vue de la modélisation. Ces diagrammes permettent de visualiser et de
manipuler les éléments de modélisation. Les diagrammes définis par UML sont les suivants :

• Les diagrammes de cas d'utilisation : ils représentent les fonctionnalités du


système du point de vue des utilisateurs.
• Les diagrammes de séquence : ils présentent de manière temporelle les objets et
leurs interactions.
• Les diagrammes d'activités : ils permettent de représenter le comportement d'une
opération en termes d'actions.
• Les diagrammes de classes : ils décrivent la structure statique du système en
termes de classes et de relations.
3.3. Le choix d’UML
Une modélisation objet est considérée comme la plus adaptée dans ce contexte. En effet,
l'approche orientée objet a prouvé son efficacité dans le développement d'applications en temps
réel. C'est pourquoi j'ai choisi d'utiliser UML comme langage de modélisation.

Ce choix peut être justifié par plusieurs raisons. La notation UML facilite la compréhension et
la communication d'une modélisation orientée objet. Elle fournit des outils visuels pour
représenter les différents aspects d'un système de manière claire et cohérente.

Pendant mon étude du système, j'ai utilisé trois diagrammes UML : le diagramme des cas
d'utilisation, les diagrammes de séquences et le diagramme de classes. Ces diagrammes m'ont
permis de modéliser les fonctionnalités, les interactions, les comportements et la structure du
système de manière précise et structurée.

3.4. Démarche conception


3.4.1. Analyse fonctionnelle

Le manque d'un système interne efficace pour gérer les processus d'expédition et les
commandes constitue un défi majeur pour l'entreprise. Les méthodes manuelles basées sur des
fichiers Excel entraînent des limitations importantes, des erreurs de chargement potentielles et
une perte de temps considérable dans l'organisation des expéditions. Afin de remédier à ces
problèmes, il est essentiel de mettre en place ExpedPro, un système intégré de gestion des
expéditions avec son middleware d'intégration SAP.

Cette solution améliorera l'efficacité opérationnelle et l'accessibilité des données logistiques,


offrant ainsi une gestion des expéditions moderne et optimisée grâce au système innovant de
faux camions et à la traçabilité en temps réel.

• Définition des acteurs :


Dans le contexte des diagrammes de cas d'utilisation d'ExpedPro, un acteur est une
entité externe qui interagit avec le système de gestion des expéditions. Ils sont

27
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

essentiels pour comprendre les différents utilisateurs et leurs interactions spécifiques


avec le système logistique, contribuant ainsi à la définition des exigences
fonctionnelles adaptées aux processus d'expédition :

Tableau 3 : Type d’utilisateur

Utilisateur Rôle

Assure la configuration complète d’ExpedPro et la gestion


Administrateur
globale des données du système d’expédition.

Assure la gestion et la supervision des opérations


d’expédition, du suivi des commandes à l’optimisation
Superviseur
des chargements, garantissant ainsi un flux logistique
efficace et harmonieux
Assure la préparation et le placement optimal des
Cariste produits dans les faux camions au sein de l’entrepôt, en
tant que responsable opérationnel de la manutention

3.4.2. Modélisation des Cas d'Utilisation


Pour rendre notre diagramme des cas d'utilisation plus lisible et afin de décrire le comportement
du système ExpedPro, les concepteurs d'UML proposent l'utilisation d'une technique nommée
la description textuelle des cas d'utilisation et découper par acteur et cas d'utilisation.
Le système ExpedPro repose sur l’interaction de plusieurs types d’utilisateurs, chacun ayant un
rôle bien défini dans le processus logistique. Les principaux acteurs identifiés sont les suivants :

[Link]. Administrateur
Dans ce diagramme de cas d'utilisation présente les fonctionnalités principales accessibles à
l'administrateur dans le module d'administration d'ExpedPro. L'administrateur, en tant qu'acteur
central du système, dispose d'un accès complet à sept fonctionnalités essentielles pour la gestion
globale des opérations d'expédition.

L'administrateur peut gérer les utilisateurs du système, leur attribuant les différents profils
(superviseur, cariste) et contrôlant leurs accès. Il a également la possibilité de consulter les
statistiques détaillées des expéditions pour analyser les performances logistiques et identifier
les axes d'amélioration. La gestion des notifications lui permet de configurer les alertes
automatiques et de suivre les communications du système.

Le module offre aussi des fonctionnalités spécifiques à la logistique avec la gestion des
véhicules, permettant de maintenir à jour la flotte et de planifier les rotations. L'administrateur
peut superviser l'état global du système ExpedPro, s'assurant de son bon fonctionnement et de
sa disponibilité. La gestion des états de chargement lui donne un contrôle sur les différentes
phases du processus d'expédition, depuis la préparation jusqu'au départ des camions.

Enfin, la consultation de l'historique permet à l'administrateur d'accéder aux données passées


des expéditions, facilitant le suivi des performances et la résolution d'éventuels problèmes.

28
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Cette architecture centralisée garantit une administration efficace et un contrôle optimal de


l'ensemble du système de gestion des expéditions.
La figure 13 ci-dessous représente les cas d’utilisation d’administrateur :

Figure 13 : Le cas d’utilisation d’administrateur


[Link]. Cariste

Ce diagramme de cas d'utilisation illustre les fonctionnalités spécifiquement dédiées au cariste


dans le module opérations d'ExpedPro. Le cariste, acteur opérationnel clé du processus
d'expédition, dispose de six fonctionnalités essentielles adaptées à ses tâches quotidiennes sur
le terrain.

Le cariste commence par consulter la liste de préparation qui lui indique précisément quels
produits prélever et leurs emplacements dans l'entrepôt. Cette fonctionnalité lui permet
d'organiser efficacement son travail de collecte. Il peut ensuite scanner les articles pour assurer
la traçabilité et vérifier la conformité des produits prélevés par rapport aux commandes.

Une fois la préparation terminée, le cariste procède au chargement du véhicule, qu'il s'agisse
d'un faux camion pour l'organisation préalable ou d'un vrai camion pour l'expédition finale. Le
système lui permet de valider une checklist pour s'assurer que toutes les étapes de préparation
et de chargement ont été respectées selon les procédures établies.

Le cariste a également accès à la consultation de l'état de livraison, lui permettant de suivre


l'avancement des expéditions et de rester informé du statut des commandes qu'il a préparées.
Enfin, il peut ajouter des commentaires pour signaler d'éventuelles anomalies, problèmes
rencontrés ou observations importantes concernant les produits ou le processus de préparation.

29
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Cette interface simplifiée et focalisée sur les tâches opérationnelles permet au cariste de
travailler efficacement tout en contribuant à la traçabilité et à la qualité du processus
d'expédition global.

La figure 14 ci-dessous représente Cas d'utilisation de cariste.

Figure 14:Le cas d’utilisation de cariste

[Link]. Superviseur
Le superviseur, acteur central de la coordination logistique, dispose de six fonctionnalités clés
pour orchestrer efficacement les opérations d'expédition.
Le superviseur peut créer des livraisons en organisant les commandes reçues via l'intégration
SAP et en définissant les paramètres d'expédition. Il a ensuite la possibilité d'attribuer un cariste
à chaque livraison, optimisant ainsi la répartition des tâches selon les compétences et la
disponibilité du personnel.
Une fonctionnalité essentielle permet au superviseur de suivre l'avancement des livraisons en
temps réel, lui offrant une vue d'ensemble sur l'état de chaque expédition et lui permettant
d'identifier rapidement les éventuels retards ou problèmes. Il peut également consulter les listes
de préparation pour vérifier le contenu des commandes et s'assurer de leur conformité.
La gestion des faux camions constitue une fonctionnalité innovante du système, permettant au
superviseur d'organiser virtuellement les chargements avant leur transfert vers les véhicules
réels, optimisant ainsi l'espace et l'ordre de chargement. Enfin, la planification des créneaux de
chargement lui permet de coordonner l'utilisation des quais et d'éviter les conflits d'occupation,
garantissant un flux logistique fluide et efficace.
Cette interface de superviseur offre au responsable logistique tous les outils nécessaires pour
coordonner, planifier et optimiser l'ensemble des opérations d'expédition de manière
centralisée.

30
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

La figure 15 ci-dessous représente Cas d'utilisation de superviseur.

Figure 15: Le cas d’utilisation de superviseur

3.4.3. Analyse dynamique


Cette partie présente les principaux diagrammes dynamiques du système ExpedPro,
notamment les diagrammes de séquence, le diagramme d’activité et le diagramme
d’état-transition, afin de modéliser le comportement du système et les interactions
entre ses acteurs dans différents scénarios clés.

[Link]. Authentification

a- Diagramme de séquence d’authentification

Le diagramme de séquence présente le déroulement du processus d'authentification dans le


système ExpedPro. L'utilisateur commence par saisir son adresse email et son mot de passe
dans l'interface de connexion. Cette dernière envoie ensuite une requête POST contenant les
identifiants au système backend. Le système vérifie d'abord si l'adresse email existe dans la
base de données, puis récupère les informations de l'utilisateur, notamment le mot de passe
haché. Une comparaison est effectuée pour valider la correspondance entre le mot de passe saisi
et celui enregistré. En cas de succès, le système enregistre un timestamp de connexion et renvoie
une réponse contenant un token ou une session, ce qui permet de rediriger l'utilisateur vers son
tableau de bord. En revanche, si le mot de passe est incorrect, un message d'erreur
"authentification échouée" est renvoyé à l'utilisateur. Ce diagramme met en évidence les
interactions entre les différents composants du système (interface, backend, base de données)
dans le cadre d’un processus de login sécurisé.La figure 16 ci-dessous représente diagramme
d'authentification :

31
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 16: Diagramme De Séquence d'authentification

b- Diagramme d'Activités

Le diagramme d'activité décrit le cheminement logique suivi par un utilisateur lorsqu'il tente de
se connecter à l'application. Le processus débute par l'affichage du formulaire de connexion,

Figure 17: Diagramme d'Activités de l'authentification

Suivi de la saisie des identifiants (email et mot de passe) par l'utilisateur. Une fois ces
informations saisies, elles sont transmises au backend. Le système vérifie ensuite si l'adresse
email existe dans la base de données. Si l’email est introuvable, une erreur indiquant "Utilisateur
non trouvé" est affichée. Si l'email est reconnu, le système vérifie alors si le mot de passe est
correct. En cas de correspondance, une session ou un token est généré, permettant la redirection

32
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

de l'utilisateur vers le tableau de bord. Si le mot de passe est incorrect, un message d'erreur
spécifique est présenté à l'utilisateur. Ce diagramme illustre donc de manière claire les décisions
conditionnelles qui orientent le flux d’exécution du processus de connexion, et permet de
comprendre les différents scénarios possibles.

c- Diagramme d'État-Transitions

Figure 18: Diagramme d'État-Transitions de l'authentification

Le diagramme d'état-transitions représente les différents états possibles du système pendant le


processus de connexion d’un utilisateur. Le cycle débute à l'état initial "Démarrage", menant à
l'affichage du formulaire de connexion. Après la soumission des identifiants, le système entre
dans l'état "En Attente De Réponse", où il traite la demande. Deux cas peuvent alors se produire
: si les identifiants sont valides, l'utilisateur passe à l'état "Connecté", indiquant une
authentification réussie ; en revanche, si les identifiants sont invalides, le système bascule vers
l'état "Erreur Authentification". À partir de cet état, l'utilisateur peut effectuer une nouvelle
tentative de connexion, ce qui ramène le système à l'état "Formulaire Connexion". Ce
diagramme permet de visualiser le comportement du système sous forme de transitions entre
états, en fonction des événements déclenchés et des réponses obtenues.

[Link]. Module de Gestion Complète d’une Livraison

Ce diagramme de séquence décrit l’ensemble du processus de gestion d’une livraison, depuis


sa création par le superviseur jusqu’à sa validation finale par le cariste. Le scénario commence
avec la connexion du superviseur à travers son interface dédiée. Une fois ses identifiants
vérifiés par le système, un jeton d’accès lui est attribué, ce qui lui permet d’effectuer des
actions sécurisées. Le superviseur procède alors à la création d’une nouvelle livraison. Le
système enregistre cette livraison dans la base de données et retourne un identifiant unique.

Ensuite, le superviseur assigne un cariste à cette livraison. Cette opération met à jour les
informations de la livraison pour y inclure la personne responsable de sa préparation. De son
côté, le cariste se connecte à l’aide de son propre espace, et une fois authentifié, il reçoit

33
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

également un jeton d’accès. Grâce à ce dernier, il peut consulter les livraisons qui lui sont
attribuées et accéder à la liste des articles à préparer.

Le cariste débute alors la phase de préparation en scannant chaque article un par un. À chaque
scan, le système vérifie l'article et confirme sa prise en compte. Ce processus se répète pour
chaque article jusqu’à ce que tous soient enregistrés comme préparés. Une fois cette étape
terminée, le cariste indique que tous les articles ont été chargés. Le système met à jour l’état
de ces articles en conséquence.

Enfin, le cariste valide la livraison après avoir vérifié la checklist finale. Le système enregistre
cette validation et marque la livraison comme complétée. Ce diagramme reflète l'organisation
rigoureuse et collaborative entre les acteurs humains (superviseur et cariste) et les composants
du système, assurant ainsi le bon déroulement de toutes les étapes de la gestion logistique.

La figure 19 ci-dessous représente diagramme de séquence gestion des Livraisons :

34
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 19 : Diagramme de séquence gestion des Livraisons

35
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

[Link]. Gestion de la Production

Ce diagramme de séquence illustre le processus global de gestion d’une mission de


production, incluant la détection et le signalement d’une anomalie de type "Faux Camion",
réalisée par le superviseur. Le scénario commence par la connexion du superviseur via son
interface. L’interface transmet les identifiants au système, qui interroge la base de données
pour vérifier la validité de l’utilisateur. Une fois authentifié, le système confirme la session
active.

Le superviseur initie ensuite une mission de production. Cette action est transmise au système
qui enregistre la mission et insère une nouvelle livraison dans la base de données. Une fois
l’opération confirmée, un accusé de réception est retourné à l’interface, confirmant la création
de la mission.

En cas d’anomalie constatée, telle qu’un faux camion, le superviseur signale immédiatement
l’incident. Le système prend en charge l’enregistrement de cette anomalie spécifique dans la
base de données et notifie l’interface que l’alerte a bien été enregistrée.

Par la suite, le superviseur peut consulter le journal des anomalies. L’interface demande au
système de charger les anomalies enregistrées, ce dernier effectue une recherche dans la base
selon la date, puis transmet la liste des anomalies à afficher.

Ce diagramme met en évidence la traçabilité des actions critiques effectuées par le superviseur,
la communication fluide entre les différentes couches du système, et l’importance du
mécanisme de signalement d’anomalies pour garantir la fiabilité et la sécurité des opérations de
production.

La figure 20 ci-dessous représente diagramme de séquence gestion de la production :

36
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 20 : Diagramme De Séquence Gestion De La Production

37
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

3.4.4. Diagramme de classe

Le diagramme de classe est un diagramme statique. Il représente la vue statique d'une


application. Il décrit les attributs et les opérations d'une classe ainsi que les contraintes imposées
au système. Les diagrammes de classes sont largement utilisés dans la modélisation des
systèmes orientés vers l'objet car ils sont les seuls diagrammes UML, qui peuvent être mappés
directement avec des langages orientés objet.

La figure 21 suivante présente le diagramme de classes :

Figure 21 : Diagramme De Classe de l’application

Ce diagramme de classes représente la modélisation générale du système de gestion des


livraisons. Il permet de visualiser l’ensemble des entités principales, leurs attributs, ainsi que
les relations qui les lient. L’élément central est la classe Deliveries, qui regroupe toutes les
informations relatives à une livraison, telles que son état, son avancement, les points de

38
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

chargement/déchargement, et le client concerné. Chaque livraison peut contenir plusieurs


articles, représentés par la classe Deliverie_items, et peut également être accompagnée de
pièces jointes via la classe Attachments. Le client, quant à lui, est lié à un pays, ce qui permet
de localiser les opérations.

Le système intègre également une gestion des notifications, où un utilisateur peut recevoir des
alertes selon des raisons précises définies dans la classe NotificationReason. Ces notifications
sont enregistrées dans la classe NotificationRecipient, qui relie un utilisateur à un motif
donné. Les utilisateurs sont définis avec leurs informations d'identification et leurs droits
d’accès.

Enfin, une partie du diagramme est consacrée à la gestion des véhicules. Chaque véhicule est
associé à un état spécifique, permettant de suivre sa disponibilité ou son statut (actif, en
panne, etc.). Ce modèle de classes permet donc de structurer de manière claire et cohérente les
données nécessaires au fonctionnement du système, en assurant une bonne organisation des
livraisons, des utilisateurs, des anomalies et des ressources logistiques.

3.5. Benchmark des solutions existantes


Avant de développer EXPED PRO, il était essentiel d’examiner brièvement les solutions de
gestion logistique déjà disponibles sur le marché afin de situer notre projet dans un contexte
industriel plus large. Parmi les solutions couramment utilisées, on retrouve SAP EWM
(Extended Warehouse Management), Oracle SCM Cloud, ou encore Infor WMS. Ces systèmes
sont très complets, intégrant des fonctionnalités avancées de traçabilité, de gestion des stocks
en temps réel et d’automatisation via l’IoT. Toutefois, leur coût élevé, leur complexité
d’intégration, et parfois leur manque de flexibilité pour des besoins très spécifiques comme
ceux de GMD en matière de suivi sur-mesure des expéditions, ont motivé le développement
d’une solution plus légère, ciblée et adaptée aux contraintes internes.

EXPED PRO se positionne donc comme une alternative plus agile, personnalisée et
économique, capable de s’interfacer directement avec les modules de production et les robots,
tout en répondant précisément aux attentes des opérateurs sur le terrain. Là où les grandes
plateformes imposent souvent une adaptation des processus à l’outil, EXPED PRO fait l’inverse
: il s’adapte au terrain, en s’alignant parfaitement avec les réalités opérationnelles de l’usine.

3.6. Conclusion
En conclusion, la phase d'analyse et de conception du projet a été abordée de manière
exhaustive. Le choix du formalisme UML a été justifié pour représenter le système de manière
claire et structurée. La démarche de conception a inclus une analyse fonctionnelle pour
identifier les besoins métier, la description textuelle des cas d'utilisation pour les interactions
utilisateur, une analyse dynamique pour comprendre le comportement du système, et le
diagramme de classe pour établir une architecture solide.

Ces éléments fournissent une base solide pour la suite du projet, guidant efficacement le
processus de développement en assurant la cohérence et l'efficacité de la solution à développer
pour GMD. La phase d'analyse et de conception est essentielle pour s'assurer que le projet
répondra aux besoins spécifiques de l'organisme d'accueil tout en respectant les objectifs définis
au préalable.

39
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Chapitre 4 : Architecture
Technique

40
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

4
Architecture Technique
Résumé :
Dans ce chapitre, j’explore en profondeur l’architecture technique du projet. J’y présente les
outils de développement, de modélisation et de communication utilisés pour faciliter la
conception. De plus, j’expose en détail les différentes architectures mises en place, telles que
l’architecture globale, l’architecture de gestion ExpedPro et l’architecture Front-end, adaptées
aux exigences spécifiques du projet. Ce chapitre met en lumière les choix stratégiques qui ont
permis de créer une structure solide et adaptée aux besoins du projet.

4.1. Introduction
Avant de modéliser l’application et l’écriture du code, il est à noter que le choix des techniques
de l’environnement du travail et des outils à utiliser a été fait via un benchmark avec les
responsables métiers ainsi que des études techniques afin de gagner en manière d’efficacité, de
maintenabilité, de rapidité et de performance. Dans ce chapitre, nous allons mettre en exergue
les architectures techniques et applicatives, les langages, les logiciels et les outils utilisés dans
notre projet.
4.2. Langages et technologies utilisées

4.2.1. C#

C# (Figure 22) est un langage de programmation orienté objet développé par


Microsoft, principalement utilisé sur l’écosystème .NET. Il est apprécié pour sa
robustesse, ses hautes performances et sa fiabilité dans les applications
d’entreprise. Les programmes C# sont compilés en CIL (Common Intermediate
Language) et exécutés sur le CLR (Common Language Runtime), assurant ainsi
une bonne portabilité entre plateformes grâce à .NET Core et .NET 5+. [2]
Figure 22 : C# Logo
4.2.2. SQLServer

41
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

SQL Server (Figure 23) est un système de gestion de base de données


relationnelle développé par Microsoft, reconnu pour sa robustesse, sa sécurité
et ses performances. Il prend en charge le langage SQL et offre des
fonctionnalités avancées comme les index optimisés, les vues
matérialisées, les procédures stockées, ainsi que des outils d’analyse et
de reporting via SSRS. [3]
Figure 23 : SQL Server LOGO

4.2.3. REST

Représentationnel State Transfer (REST) (figure 24) est un style architectural qui permet
d’établir des normes de communication entre des systèmes informatiques sur le Web, facilitant
ainsi les échanges entre ces systèmes. Dans ce style,
l’implémentation du client et l’implémentation du serveur
peuvent être réalisées indépendamment, sans qu’ils aient
besoin de se connaître mutuellement.
Figure 24 : Rest Logo

4.2.4. .NET Framework

.NET Framework (Figure 25) est une plateforme de


développement de Microsoft qui fournit un environnement
d'exécution (CLR) et une large bibliothèque de classes pour
créer des applications Windows robustes et sécurisées. Il
supporte la gestion automatique de la mémoire,
l’interopérabilité entre langages, et inclut des frameworks
intégrés comme [Link] (web), WPF (interface Figure 25 : .NET Framework Logo
utilisateur) et [Link] (accès aux données).

4.2.5. Docker
Docker (Figure 26) est une plateforme open-source qui permet de créer,
déployer et exécuter des applications isolées dans des conteneurs. Ces
conteneurs emballent l’application avec toutes ses dépendances,
assurant portabilité, flexibilité et une gestion optimisée des ressources
système.
Figure 26 : Docker Logo

42
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

4.2.6. Github
GitHub (Figure 27) est une plateforme collaborative basée sur Git,
permettant de centraliser la gestion du code source et le suivi des
modifications. Elle facilite le travail en équipe grâce aux branches, pull
requests et issues, et propose des outils intégrés pour l’intégration
continue et le déploiement. Sa popularité et son écosystème en font un
outil incontournable pour les développeurs.
Figure 27 : GitHub Logo

4.2.7. Git
Git (figure 28) est un système de contrôle de version décentralisé
conçu pour suivre les modifications apportées aux fichiers d'un
projet. Il permet aux développeurs de collaborer efficacement en
gérant différentes versions de leur code source. Git enregistre
l'historique des modifications, permettant de revenir à des versions
précédentes et de comparer les changements. Figure 28 : Git Logo

4.2.8. JWT
JWT (JSON Web Token) (figure 29) est un format de jeton
sécurisé et compact utilisé pour échanger des informations entre
un client et un serveur de manière sécurisée. Chaque JWT est
constitué de trois parties encodées en Base64 : l'en-tête, la
charge utile (ou payload), et la signature. [4]
Figure 29 : Jwt Logo

4.2.9. React js
[Link] (Figure 30) est une bibliothèque JavaScript développée
par Facebook, utilisée pour créer des interfaces utilisateur
dynamiques et modulaires. Basée sur une architecture de
composants et un DOM virtuel, elle offre de hautes
performances et une syntaxe déclarative avec JSX. Grâce à des Figure 30 : React js LOGO
outils comme Redux, les hooks et une large communauté,
React est très utilisé pour développer des applications web
interactives et évolutives..

4.2.10. JavaScript
JavaScript (Figure 31)est un langage de programmation interprété et
dynamique, utilisé à la fois côté client et serveur. Conçu pour rendre les
pages web interactives, il permet de créer des interfaces réactives, de gérer
les événements et de manipuler le DOM. Grâce à des environnements
comme [Link], il est devenu un langage polyvalent et essentiel dans le
développement web moderne.
Figure 31
32 : JavaScript Logo

43
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

4.2.11. SASS
Sass (Syntactically awesome stylesheets) (figure 32) est un langage
de préprocesseur qui génère du CSS. Il existe en deux syntaxes : la
syntaxe indentée (.sass) et la syntaxe SCSS (.scss), cette dernière
étant plus proche du CSS classique. Sass facilite l’écriture de styles
structurés et maintenables..

Figure 33: Scss Logo

4.3. Outils de développement, de modélisation et de communication

4.3.1. Visual Studio Project

Visual Studio (Figure 33) est un IDE complet développé par Microsoft,
principalement utilisé pour le développement .NET. Il prend en charge
plusieurs langages comme C#, C++, et JavaScript, et offre des outils
avancés de productivité, de débogage, ainsi qu’une intégration native avec
Git et Azure DevOps.
Figure 34 : Vs Project Logo

4.3.2. [Link]

[Link] est une application en ligne gratuite permettant de créer


facilement divers types de diagrammes (UML, organigrammes,
flux, réseaux, etc.) grâce à une interface intuitive et des outils
variés de modélisation,

Figure 35 : [Link] Logo

44
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

4.3.3. Lucidchart

Lucidchart est une plateforme en ligne intuitive permettant de


créer facilement des diagrammes professionnels, comme des
organigrammes ou des cartes conceptuelles. Elle est largement
utilisée en gestion de projet, architecture informatique et
planification stratégique grâce à ses outils de conception Figure 36 : Lucidchart Logo
variés et son interface conviviale.

4.4. Méthode de développement


Dans cette partie, je vais présenter et définir les méthodes de développement adoptées pour la
réalisation citée auparavant.

4.4.1. La conception axée sur le domaine DDD


Dans l'architecture DDD (Domain-Driven Design), les dix²fférentes couches sont organisées de
manière à isoler et à hiérarchiser les responsabilités du système. La figure 33 ci-dessous
représente une explication de chaque couche :

Figure 37 : DDD Architecture

Dans un micro-service Spring Boot basé sur le Domain-Driven Design (DDD), les couches sont
organisées de la manière suivante :

• Couche de l'application : Gère la coordination des actions, expose les points de


terminaison de l'API et effectue la validation des données, l'authentification et
l'autorisation. Elle interagit avec la couche du domaine pour exécuter les actions métier.
• Couche du domaine : Contient la logique métier principale de l'application, avec les
entités, les agrégats, les valeurs d'objet, les services du domaine et les interfaces de
repository. Elle encapsule les concepts du domaine et les règles métier.
• Couche de l'infrastructure : Fournit les détails techniques et les implémentations
spécifiques de l'infrastructure nécessaire au fonctionnement du micro-service, tels que
les bases de données, les services externes et les clients HTTP. Elle intègre les services
externes et gère les opérations techniques.

45
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Ces couches permettent de séparer les responsabilités et de faciliter la conception modulaire et


évolutive des micro-services basés sur le DDD.
4.4.2. Développement piloté par des tests

Figure 38 : TDD Logo

Le Test-Driven Development (TDD) (figure 34) est une pratique de développement logiciel qui
consiste à écrire les tests unitaires avant même d'écrire le code de production. Le processus
TDD se déroule en trois étapes principales : écrire un test, exécuter le test (qui échoue
initialement) et écrire le code de production pour faire passer le test.

L'approche TDD encourage une réflexion approfondie sur les spécifications et les exigences du
logiciel avant de commencer à écrire le code. En écrivant d'abord les tests, les développeurs
peuvent se concentrer sur le comportement attendu du logiciel et définir les résultats attendus
dès le début du processus de développement.

L'approche TDD favorise également une meilleure conception logicielle, car elle encourage la
modularité, la réutilisabilité et la simplicité du code. En fin de compte, TDD permet d'obtenir
un code plus fiable, plus maintenable et plus évolutif.

4.5. Architecture Technique


4.5.1. Architecture Global
L'architecture de ce système ExpedPro repose sur une combinaison de technologies modernes
pour offrir une solution robuste et scalable de gestion des expéditions. La conception de ce
logiciel est basée sur les dernières technologies qui permettent la création d'une solution fiable
et évolutive.
Le frontend, développé en [Link], crée une interface utilisateur réactive et conviviale pour
les utilisateurs finaux. Le backend utilise une API REST développée avec .NET Framework
pour permettre une communication efficace entre l'interface utilisateur et les différents
services backend.
Les services incluent un service de gestion client qui traite les données des clients et leurs
informations de livraison, un service de gestion des faux camions qui s'occupe de la logistique

46
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

des véhicules fictifs ou de test, et un service de gestion des livraisons qui supervise l'ensemble
du processus d'expédition depuis la préparation jusqu'à la livraison finale.
La base de données relationnelle SQL Server assure la persistance des données pour les
clients, les livraisons, les véhicules et les informations logistiques. La sécurité est gérée par
des JSON Web Tokens (JWT) pour l'authentification et l'autorisation, sécurisant les
communications entre le frontend et le backend. Le système envoie des notifications
asynchrones pour alerter les utilisateurs des événements importants comme les mises à jour de
statut des livraisons, les confirmations de chargement ou les changements dans les plannings
d'expédition.
La conteneurisation est gérée via Docker, avec un registre privé Docker pour stocker et gérer
les images des différents services, facilitant le déploiement et la gestion des applications dans
des environnements isolés et reproductibles. Le flux de travail commence avec l'utilisateur
interagissant avec l'interface web [Link]. Les demandes sont envoyées à l'API REST .NET,
qui distribue les requêtes aux différents services (gestion client, faux camions, livraisons).
Chaque service traite les requêtes et communique avec la base de données SQL Server pour
stocker ou récupérer les informations nécessaires. Les notifications sont envoyées de manière
asynchrone pour tenir les utilisateurs informés des mises à jour et événements critiques du
processus d'expédition. Les services sont conteneurisés et gérés via Docker, avec les images
stockées dans un registre privé Docker pour une gestion efficace des déploiements.
La figure 38 ci-dessous représente architecture globale de projet :

47
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 39 : Architecture Technique Global

48
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

4.5.2. Architecture Front-end

L'architecture L'architecture Front-end de ce projet ExpedPro s'appuie sur une approche


moderne et modulaire pour fournir une expérience utilisateur fluide et réactive dans la gestion
des opérations d'expédition. Voici les principaux éléments de cette architecture :

• Le composant Sidebar représente la navigation principale de l'application, permettant aux


utilisateurs d'accéder aux différentes fonctionnalités du système ExpedPro selon leurs
rôles (Administrateur, Superviseur, Cariste).
• Le Header Component contient les éléments de navigation supérieure et les informations
de session utilisateur, offrant un accès rapide aux fonctionnalités principales.
• Les composants métier (Component) correspondent aux composants React qui sont
responsables de la logique de l'interface utilisateur spécifique à chaque module (gestion
des livraisons, scan des articles, validation des checklists). Ils contiennent les données,
les méthodes et la communication avec les services.
• Le modèle (Model) représente la structure des données et la logique métier de
l'application ExpedPro. Il gère la manipulation des données relatives aux livraisons, aux
articles, aux caristes et aux notifications de manière organisée.
• Le service (Service) gère les données et les appels API vers le backend .NET. Il est
responsable des requêtes HTTP vers le serveur, en utilisant Axios pour communiquer
avec les contrôleurs du serveur et gérer les opérations CRUD.
• L'API Gateway centralise les communications entre le frontend React et les microservices
backend, gérant l'authentification via JWT et la validation des tokens pour sécuriser les
échanges de données dans le système d'expédition.
Axios est utilisé comme client HTTP pour effectuer des requêtes vers le backend .NET. Il
facilite l'envoi et la réception de données relatives aux expéditions tout en gérant les erreurs de
manière efficace et en maintenant la session d'authentification.
La figure 39 ci-dessous représente architecture front-end :

Figure 40 : Architecture Front-End

49
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

4.6. Conclusion :
En conclusion, l'architecture technique du projet a été étudiée en profondeur, mettant en avant
les choix stratégiques et les outils utilisés pour la conception. Les langages et technologies ont
été sélectionnés pour répondre aux besoins spécifiques du projet, tandis que les différentes
architectures mises en place, telles que l'architecture globale, l'architecture services et
l'architecture front-end, ont été adaptés pour assurer une structure solide et flexible. Ce chapitre
démontre l'attention portée aux détails techniques et la recherche d'une architecture bien pensée
pour garantir le succès du projet et répondre aux besoins de GMD.

50
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Chapitre 5 : Mise En
Œuvre Du Projet

51
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5
Mise en œuvre du projet
Résumé :
Dans ce chapitre, je plonge au cœur de la mise en œuvre effective du projet. J'y aborde les
étapes concrètes, depuis l'initialisation jusqu'au déploiement final. J'explore les défis
rencontrés, les solutions adoptées et les leçons tirées de chaque phase. Je détaille également les
méthodologies et approches adoptées pour assurer une réalisation fluide, que ce soit en matière
de gestion de projet, d'intégration continue ou de tests. De plus, je mets en avant les
collaborations et interactions entre les différentes équipes, démontrant comment leur synergie
a été essentielle pour atteindre les objectifs du projet. Ce chapitre est une immersion dans le
parcours pratique et opérationnel, offrant une perspective transparente sur la transformation
d'une vision en une solution fonctionnelle.

5.1Introduction
La réalisation d'un projet, quel que soit son envergure, est un voyage qui requiert non seulement
une planification rigoureuse, mais également une exécution méthodique. La transition de la
théorie à la pratique est souvent semée d'embûches, et c'est dans l'art de la mise en œuvre que
réside la véritable maîtrise.

5.2 Back-End

52
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.2.1 Architecture du back-end

Figure 41: Architecture du back-end

Comme illustré dans la Figure 40, l'architecture du back-end de l'application ExpedPro est
soigneusement structurée en plusieurs dossiers fonctionnels distincts. Chaque dossier joue un
rôle prédéfini, ce qui permet une organisation claire et une gestion efficace des différentes
fonctionnalités. Le dossier "Controllers" gère les interactions avec les utilisateurs et les requêtes
HTTP, tandis que les dossiers "Services" et "Models" traitent respectivement la logique métier
et la définition des structures de données. Le dossier "wwwroot" contient les ressources
statiques de l'application. Cette structure modulaire .NET facilite non seulement le
développement et la maintenance, mais aussi l'extensibilité de l'application ExpedPro à long
terme [5].

53
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.2.2 La couche Entities & Dao

Figure 42: Couche Entities & Dao

La Figure 41 illustre la structure de la 'couche Models & Entities' de notre application


ExpedPro. Cette couche est cruciale car elle contient les entités qui représentent les
informations spécifiques au domaine de la gestion d'expédition, agissant comme une
représentation des données essentielles du système. Les entités sont implémentées comme des
classes C# avec des propriétés définies, incluant les modèles métier tels que Client, Delivery,
Vehicles, FakeTrucks, Notification, Planning, et les entités de gestion des utilisateurs comme
User, Role, et leurs relations. Par ailleurs, les dossiers Dto (Data Transfer Objects), Request et
Response jouent un rôle vital en isolant la logique de présentation des entités métier. Cela est
réalisé à travers une API structurée qui permet une flexibilité dans les échanges de données
entre les couches, facilitant la sérialisation JSON et optimisant les performances de
communication. Cette organisation modulaire des modèles illustre comment ces composants
sont structurés pour optimiser l'accès et la gestion des données dans le système d'expédition
ExpedPro. [6]

54
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

• Exemple de modèle (Entité) :

using System;
using [Link];

namespace [Link];

public partial class Client


{
public string ClientId { get; set; } = null!;
public string? ClientName { get; set; }
public string? ClientLogo { get; set; }
public int? CountryId { get; set; }
public bool? Archived { get; set; }
public int? CreatedBy { get; set; }
public DateTime? CreatedAt { get; set; }
public virtual Country? Country { get; set; }
public virtual User? CreatedByNavigation { get; set; }
public virtual ICollection<Delivery> Deliveries { get;
set; } = new List<Delivery>();
public virtual ICollection<FakeTruck> FakeTrucks { get;
set; } = new List<FakeTruck>();
}

Listing 1: Client Entity

Cet exemple montre comment définir une entité Client en utilisant Entity Framework Core dans
.NET. L'entité représente la structure de la table Client dans la base de données SQL Server
avec ses propriétés essentielles (ClientId, ClientName, ClientLogo, CountryId) et ses relations
avec d'autres entités comme Country, Delivery et FakeTruck. Cette classe utilise les annotations
Entity Framework pour mapper les propriétés vers les colonnes de la base de données et définit
les relations de navigation virtuelles pour permettre le chargement paresseux des données
associées.

55
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.2.3 La couche controller

Figure 43: Couche Controller

La Figure 42 illustre la couche Controllers de l'application ExpedPro qui constitue la couche


supérieure de l'architecture Web. Cette couche est responsable du traitement des requêtes HTTP
des utilisateurs et du retour des réponses appropriées via l'API REST. Les contrôleurs tels que
ClientController, DeliveriesController, FakeTrucksController, et NotificationController gèrent
les opérations CRUD spécifiques à chaque module métier du système d'expédition. La couche
Controller doit également gérer les exceptions levées par les couches Services et Models sous-
jacentes. Cette couche étant le point d'entrée de l'application ExpedPro, elle prend en charge
l'authentification JWT et agit comme première ligne de défense contre les utilisateurs non
autorisés, en validant les tokens d'accès avant de traiter les requêtes. Pour un exemple concret
d'implémentation, veuillez consulter le controller présenté en Annexe 1.

5.2.4 Scénarios et matrice de tests

Afin de garantir le bon fonctionnement de la solution ExpedPro, plusieurs tests ont été réalisés
sur les différents modules développés. Ces tests avaient pour objectif de vérifier la conformité
des fonctionnalités par rapport aux exigences initiales, d’évaluer la robustesse du système, et
de détecter d’éventuels bugs avant le déploiement. La matrice ci-dessous présente un
échantillon représentatif des cas de test effectués.

56
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Tableau 4: Matrice des cas de tests fonctionnels réalisés sur l'application ExpedPro

ID Cas de test Résultat Environnement Statut


attendu
TC01 Connexion Redirection vers Windows 10, Réussi
utilisateur avec l’interface de .NET 6
identifiants gestion
valides
TC02 Connexion avec Message Windows 10, Réussi
mot de passe d’erreur .NET 6
incorrect "Identifiants
invalides"
TC03 Chargement de la Affichage des Poste opérateur + Réussi
liste des livraisons livraisons du tablette
jour avec statut
TC04 Ajout manuel Nouvelle ligne Serveur local + Réussi
d’un véhicule créée dans la interface
base
TC05 Test d’accès Réponse Environnement Réussi
concurrent à SAP correcte sans connecté à SAP
GUI conflit test
TC06 Mauvaise saisie Message App tablette + Réussi
d’un champ vide d’erreur + .NET 6
(ex: numéro blocage de
livraison) validation

5.2.5 Test backend

Figure 44: Test Backend

Cette figure 43 présente la documentation API du module "Preparation" du système


ExpedPro, exposant l'ensemble des endpoints REST disponibles pour la gestion des

57
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

opérations de préparation des expéditions. Le contrôleur Preparation offre une interface


complète avec 15 endpoints distincts utilisant les méthodes HTTP GET et POST.

Les endpoints GET permettent la consultation des données, notamment la récupération des
listes de préparation par avion (PreparationListPerPlane), des livraisons par conducteur
(DeliveriesPerDriver), des éléments de réconciliation (RecondItemList), et des informations
spécifiques aux conducteurs (driverInfo). L'endpoint paramétré AssignedItems/{UserId}
permet d'obtenir les éléments assignés à un utilisateur spécifique.

Les endpoints POST gèrent les opérations de modification et de traitement, incluant


l'enregistrement de l'historique de préparation (PreparationHistory), la planification des
éléments de livraison (DeliveryItemForPlaning), l'assignation de planning (AssignPlanning),
la validation des checklists (CheckPicklist), et la gestion des conducteurs (assignation,
suppression, mise à jour). L'endpoint ExportData permet l'exportation des données de
préparation.

Cette API REST structure les fonctionnalités essentielles du processus de préparation des
expéditions, offrant une interface standardisée pour les opérations CRUD et les traitements
métier spécifiques au module de préparation d'ExpedPro..

5.3. Front End


5.3.1 Architecture du Front-end

La Figure 44 incluez un diagramme visuel pour montrer l'organisation globale de votre projet.
Cela peut inclure les composants principaux, les services, et la manière dont ils interagissent.
[7].

Figure 45: Architecture du front-end

5.3.2 Développement des Composants

58
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Pour obtenir un aperçu détaillé de la structure des composants de l'application cet exemple vous
fournira une idée claire de l'exemple client JS [8].

• Composant Clients JS :

Description : Le composant Client gère l'affichage et la gestion des clients.

59
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Code :

import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'


import { paginateArray } from '@src/views/utils'
import {EXPED_PRO_API_SERVER} from "@configs/constant"
import axios from 'axios'
import { config } from '@fortawesome/fontawesome-svg-core'
export const fetchFakeTrucksOfSelectedClient = createAsyncThunk(
'fakeTrucks/fetchFakeTrucksOfSelectedClient',
async ({ id, params }, { rejectWithValue }) => {
try {
const response = await GetFiltredData({ params });
[Link]("hellllo",response)
const fakeTrucks = response[1].fakeTrucks;

[Link]("Fetched Fake Trucks:", fakeTrucks);

const filteredData = [Link](


(item) => [Link] && [Link] === id
);

[Link]("Filtered Data:111", filteredData);


const total = [Link]

return {
total: total,
params: response[1].[Link],
allData:fakeTrucks,
data: filteredData
}

} catch (error) {
return rejectWithValue([Link]);
}
}
);
const excludeArchivedOnes = [Link](d => ![Link])
[Link]("api/Clients", [Link])

let countriesOptions = [Link]((item) => ({


value: [Link],
label: [Link],
avatar: [Link],
country: [Link],
clientId: [Link],
}));

Listingwith
// Create a map of countries 2 : Composant Client JS
unique IDs
let countries = excludeArchivedOnes
60
.map((item) => ({
value: [Link],
label: [Link],
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.4 Architecture du Module d'Automatisation SAP GUI


Ce code implémente un système d'extraction automatisée de données de picking
(préparation de commandes) depuis une interface SAP GUI. Il se compose de deux
méthodes principales qui travaillent ensemble pour récupérer et traiter les informations de
stock.
➢ Méthode Go to Picking Item Page
Cette méthode sert de point d'entrée et d'orchestrateur du processus :
Navigation et découverte : Elle parcourt l'interface SAP pour identifier tous les éléments de
stock disponibles en recherchant les labels "Available Stock" et en construisant
dynamiquement les identifiants des éléments associés.
Traitement séquentiel : Pour chaque élément trouvé, elle simule des interactions utilisateur
(focus sur l'élément, envoi de touches virtuelles) pour naviguer vers les détails de chaque
item de stock.
Agrégation des résultats : Elle collecte toutes les données récupérées et applique une logique
de tri sophistiquée basée sur la date de réception (GR Date), le type d'article, et la proximité
entre le stock disponible et la quantité requise.
➢ Méthode Get Picking list Item
Cette méthode effectue l'extraction détaillée des données :
Gestion de la pagination : Elle calcule automatiquement le nombre de pages à parcourir en
utilisant les propriétés de la scrollbar verticale de l'interface SAP.
Extraction des en-têtes : Lors du premier passage, elle identifie et mappe les colonnes de
données (Storage Unit, Total Stock, Available stock, etc.).
Collecte des données : Elle lit systématiquement chaque ligne de données, en gérant les
conversions de types appropriées et en filtrant les éléments selon des critères métier
(exclusion de certains emplacements comme "PREP1" ou "RECOND").
Logique de sélection : Elle implémente un algorithme de sélection qui accumule les
quantités disponibles jusqu'à atteindre la quantité cible requise.
Fonctionnalités clés
• Interaction SAP automatisée via les composants GUI
• Gestion robuste de la pagination et du scrolling
• Validation métier avec vérification de l'existence des palettes Galia
• Algorithme d'optimisation pour la sélection des items de stock
• Gestion d'erreurs complète avec logging détaillé

61
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 46 : Architecture Fonctionnelle du Middleware

Ce code représente une solution d'automatisation sophistiquée pour les processus de


préparation de commandes dans un environnement SAP, optimisant la sélection des articles
selon des critères logistiques précis. Veuillez-vous référer à l'Annexe 2 qui présente le code
source détaillé du middleware d'extraction SAP.

62
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.5 Les interfaces de l'application


5.4.1 Page Login
La figure 46 ci-dessous représente page login :

Figure 47: Page login

L'interface de connexion de l'application GMD présente un design moderne et professionnel


avec une approche visuelle équilibrée. La page est divisée en deux sections principales : une
zone illustrative à gauche et un formulaire de connexion épuré à droite.
La partie gauche met en avant une illustration vectorielle représentant un environnement de
travail collaboratif avec un présentateur devant un tableau de bord analytique et une équipe de
collaborateurs assis autour d'une table de réunion. Cette représentation visuelle renforce l'aspect
professionnel et collaboratif de l'application GMD, suggérant un outil orienté vers la gestion et
l'analyse de données.

63
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.4.2 Page de gestion


La figure 47 et 48 ci-dessous représente gestion de faux camion & Client :

Figure 48: Page de gestion de Faux camion

Figure 49: Page de gestion de client

64
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Ces deux interfaces illustrent les modules de gestion centralisés d'ExpedPro pour
l'administration des entités critiques du système logistique.
Le Centre de Gestion des Clients présente un tableau complet des clients internationaux avec
leurs numéros d'identification, dénominations sociales, pays d'origine (visualisés par drapeaux),
et actions de gestion. L'interface révèle la portée internationale d'ExpedPro avec des clients
diversifiés allant d'entreprises individuelles aux groupes industriels multinationaux répartis
géographiquement.
Le Centre de Gestion des Faux Camions constitue un module spécialisé pour la gestion des
véhicules virtuels utilisés dans les simulations système. L'interface permet de créer et assigner
des camions fictifs numérotés séquentiellement, avec un statut "Not Assigned" indiquant leur
disponibilité pour de futures affectations opérationnelles.
Ces modules démontrent l'approche modulaire d'ExpedPro, offrant des interfaces de gestion
dédiées tout en maintenant une cohérence ergonomique à travers l'application.

5.4.3 Page d’état de livraison


La figure 49 et 50 ci-dessous représente page d’état de livraison :

Figure 50: Page d’état de livraison

65
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Figure 51 : Page de détail état de livraison

Cette interface présente le tableau de bord des états de livraison d'ExpedPro, offrant une vue
d'ensemble complète et en temps réel du statut des expéditions.
La section supérieure affiche des indicateurs de performance clés avec 2 livraisons effectuées
aujourd'hui, 7 en cours de préparation, 0 en chargement et 13 livraisons en retard, permettant
un suivi immédiat des performances opérationnelles. Le système de filtrage avancé permet de
segmenter les données par état d'assignation, plage de dates et statut de livraison pour une
analyse ciblée.
Le tableau principal détaille chaque expédition avec les informations essentielles : numéro de
suivi, client (principalement RENAULT TANGER EXPLOITATION), date et heure de
livraison, nombre d'éléments manquants, et état d'avancement. Les indicateurs visuels colorés
facilitent l'identification rapide des statuts : vert pour "All ready" (prêt), orange pour les alertes,
et barres de progression pour visualiser l'avancement de chaque livraison. Cette interface
permet aux équipes logistiques de gérer efficacement les flux de livraison et d'identifier
rapidement les expéditions nécessitant une attention particulière.

66
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.4.4 Page de chargement de livraison


La figure 51 et 52 ci-dessous représente page de chargement de livraison :

Figure 52: Page de chargement de livraison

Figure 53 : Page d’détails de livraison

Ces interfaces présentent le module de gestion du chargement et de la conformité


d'ExpedPro, essentiel pour assurer la traçabilité et le contrôle qualité des expéditions.

67
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

La première interface affiche la Control Sheet ZE31 & Compliance qui constitue une fiche
de contrôle détaillée pour la livraison 10936482 destinée à RENAULT TANGER
EXPLOITATION. Le diagramme circulaire indique un statut de chargement à 100%,
confirmant que tous les éléments requis sont présents. Le tableau de vérification liste les articles
avec leurs numéros de ticket (8924940, 8924946, 8924947), références produits
(M0000501703), types UMS et quantités respectives, permettant un contrôle unitaire précis de
chaque composant.
La seconde interface présente le module de sélection des livraisons pour la génération des
listes de chargement. Elle permet de sélectionner des livraisons spécifiques (RENAULT
TANGER EXPLOITATION) et d'assigner les ressources logistiques appropriées via les menus
déroulants "Fork-lift" et "Fork-lift Driver". Le bouton "Generate Loading list" automatise la
création des documents de chargement. Le tableau inférieur affiche l'état d'avancement des
livraisons sélectionnées avec leurs dates de programmation et leurs pourcentages de
progression, facilitant la planification et l'optimisation des opérations de chargement.

5.4.5 Page de de gestion des véhicules


La figure 53 ci-dessous représente page de gestion des véhicules :

Figure 54: Page de gestion des véhicules

L'interface de gestion des véhicules d'ExpedPro offre une administration complète et structurée
du parc automobile de l'entreprise. La section principale présente un tableau détaillé répertoriant
les informations essentielles des véhicules, incluant la plaque d'immatriculation, le modèle, la
marque, le type de véhicule, l'année de mise en service, le kilométrage, le statut opérationnel et
les actions disponibles.
Des fonctionnalités de recherche et de filtrage intégrées permettent de localiser rapidement les
véhicules selon différents critères (statut, type, marque). Les boutons "Importer" et "Ajouter"
facilitent l'enrichissement de la base de données véhicules, soit par saisie manuelle pour les
nouvelles acquisitions, soit par importation massive depuis un fichier Excel pour les mises à
jour de flotte.

68
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

5.6 Évaluation des performances et résultats obtenus


5.6.1. Analyse comparative avant / après déploiement
Avant la mise en place de la solution EXPED PRO, la gestion des expéditions chez GMD se
faisait principalement de manière manuelle, à l’aide de fichiers Excel, d’échanges verbaux entre
les équipes, et de suivis peu centralisés. Ce mode de fonctionnement engendrait régulièrement
des retards, des erreurs de saisie, une traçabilité limitée, ainsi qu’un manque de visibilité en
temps réel sur l’état des livraisons.

Depuis le déploiement progressif d’EXPED PRO, un changement notable s’est opéré.


L’ensemble des processus logistiques liés aux expéditions est désormais centralisé dans une
interface unique, avec un accès instantané aux informations critiques comme les statuts de
livraison, la gestion des véhicules ou les données de chargement. Cela a permis de réduire
considérablement le temps de traitement, d’améliorer la coordination entre les opérateurs, et de
minimiser les erreurs humaines. De plus, l’automatisation de certaines tâches via l’intégration
avec SAP GUI et les modules de production a apporté un gain de fluidité opérationnelle évident.
En résumé, EXPED PRO a transformé un processus lourd et fragmenté en un flux digitalisé,
réactif et maîtrisé.

5.6.2. Indicateurs de performance (temps de réponse, taux d’erreur...)


Afin de mesurer concrètement l’impact d’EXPED PRO sur la chaîne logistique, plusieurs
indicateurs de performance ont été suivis dès la phase de mise en production. Le temps de
réponse moyen de l’API, mesuré sur différents modules (login, gestion des livraisons,
véhicules, etc.), est estimé à 250 ms, ce qui garantit une navigation fluide et une réactivité
immédiate pour les utilisateurs en atelier. Le taux d’erreur de saisie, qui dépassait auparavant
12 % dans les anciens fichiers Excel, a été réduit à moins de 2 % grâce à l’automatisation des
contrôles et à l’interface intuitive.

Du côté des opérations, le temps moyen de traitement d’une livraison complète est passé de 17
minutes à environ 9 minutes, représentant un gain de temps de plus de 45 %. Par ailleurs, le
système permet de traiter en moyenne 40 à 50 livraisons par jour, avec une traçabilité complète
et un meilleur suivi des statuts. Ces résultats ont été appuyés par les retours d’utilisateurs
internes, dont plus de 85 % se sont déclarés satisfaits ou très satisfaits de la solution, soulignant
surtout sa simplicité, sa rapidité, et le gain de visibilité qu’elle procure.

Ce gain de temps opérationnel se traduit également sur le plan économique, avec une réduction
estimée des coûts de traitement logistique de plus de 2 heures par jour, soit environ 5 000 à
6 000 DH d’économie mensuelle en charges internes et temps opérateur.

5.7 Conclusion
En conclusion, La mise en œuvre d'un projet n'est pas seulement un enchaînement de tâches,
mais un art nécessitant une parfaite harmonie entre la planification, la coordination et
l'exécution. Ce chapitre a plongé au cœur de cette dynamique, révélant les intrications des
différentes phases, des premières ébauches à l'aboutissement concret. Il en ressort que chaque
étape, minutieusement détaillée, est le fruit d'une réflexion profonde et d'un travail collaboratif
intense.

69
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Conclusion générale
Au terme de ma période de stage chez GMD, je garde en mémoire une expérience
profondément formatrice, à la fois sur le plan humain et technique. Ce stage m’a permis de
m’immerger dans un environnement industriel exigeant, où l’innovation logistique et la
rigueur opérationnelle occupent une place centrale. Le développement de la solution
ExpedPro a constitué un défi stimulant, m’offrant l’opportunité de consolider mes
compétences en développement logiciel C# avec WPF, tout en découvrant la complexité de
l’intégration avec les systèmes ERP SAP. J’ai pu ainsi contribuer à la digitalisation d’un
processus critique : la gestion des expéditions, auparavant traitée de manière manuelle et
dispersée. L’automatisation de ce flux via une interface centralisée a non seulement apporté
un gain de temps significatif, mais également une meilleure traçabilité et une réduction
sensible des erreurs de traitement.

Cette solution s’inscrit pleinement dans les tendances de l’industrie 4.0, qui visent à
automatiser et à digitaliser les processus industriels grâce à des technologies intelligentes et
interconnectées. L’architecture d’ExpedPro, conçue autour d’un modèle modulaire et évolutif,
permet une intégration fluide avec les équipements de production et une connexion directe
aux données du système SAP, renforçant ainsi l'interopérabilité des systèmes. D’un point de
vue méthodologique, le projet suit également les principes DevOps, avec une approche de
développement favorisant les tests automatisés, le déploiement itératif, et la maintenabilité
continue de l’application via une séparation claire entre les couches métier, interface et
infrastructure. Cette organisation rend la solution facilement scalable vers de nouveaux
modules, tels que des tableaux de bord analytiques, des notifications en temps réel, ou encore
des interfaces mobiles dédiées aux opérateurs terrain. En s’insérant dans cette dynamique,
ExpedPro ouvre la voie à une transformation plus large des pratiques logistiques et
numériques du groupe GMD.

D’un point de vue économique, le budget initial estimé à environ 500 000 DH (principalement
investi dans l’achat de tablettes industrielles et la mise en place du serveur applicatif) se
justifie pleinement au regard des bénéfices constatés. Le système permet de gagner jusqu’à 2
heures de travail par jour, soit une économie mensuelle estimée entre 5 000 et 6 000 DH, ce
qui rend le retour sur investissement atteignable en moins de 18 mois. Au-delà des gains
financiers, c’est surtout l’impact organisationnel et humain du projet qui en fait une réussite.
En participant activement à cette évolution, j’ai pris conscience du rôle que peuvent jouer les
technologies dans la modernisation des chaînes logistiques. Ce stage m’a ainsi conforté dans
mon orientation professionnelle vers le développement de solutions métiers à forte valeur
ajoutée, et m’a donné les outils nécessaires pour affronter avec confiance mes prochains défis
d’ingénieur.

70
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Références Bibliographiques
[1] [Link] [En ligne].
[2] [Link] [En ligne].
[3] [Link] [En ligne].
[4] [Link] [En ligne].
[5] [Link] [En ligne].
[6] [Link] [En ligne].
[7] C. Walls, Spring Boot in Action. Manning Publications, (2016).
[8] [Link] [En ligne].
[9] [Link]
[10] [Link]
[11] [Link]

71
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Annexes
Annexe 1: Exemple d'implémentation de Controller

[HttpGet("PreparationList/{delivery}")]
public async Task<ActionResult<PreparationResponse>>
GetPreparationList(string delivery)
{
try
{

var prepalist = await [Link]


.Include(p => [Link])
.ThenInclude(u => [Link])
.Include(p => [Link])
.ThenInclude(u => [Link])
.Where(D => [Link] == delivery)
.Select(p => new PreparationResponse
{
Id = [Link],
Item = [Link],
Matetial = [Link],
MatirialDesc = [Link],
CustomerMatetial = [Link],
Required = [Link],
Picked = [Link],
Missing = [Link] - ([Link](p => [Link]) +
[Link]),
Security = [Link],
QualityInsp = [Link],
Restrict = [Link],
Relabel = [Link],
Loaded = [Link],
Delivery = [Link],
PhysiclyPicked = [Link],
DoneAt = [Link],
Prepared = [Link],
Recond= [Link],
PickLists = [Link](pick => new PickListResponse

{
Id = [Link],
StoreType = [Link],
PhysiclyPicked = [Link],
Available = [Link], 72
DeliverieItem = [Link],
DoneAt = [Link],
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

{
Id = [Link],
StoreType = [Link],
PhysiclyPicked = [Link],
Available = [Link],
DeliverieItem = [Link],
DoneAt = [Link],
GrDate = [Link],
Galia = [Link],
LastMvmnt = [Link],
ToCollect = [Link],
Status = [Link],
Location = [Link],
ForkliftDriverId = [Link],
ForkliftDriverName = [Link] + " " +
[Link],
Vehicle = [Link],
Security= [Link],

}).ToList()
})
.ToListAsync();
var del = [Link](d => d.Delivery1 == delivery).FirstOrDefault();
var items = [Link](d => [Link] == delivery).FirstOrDefault();
var galia = await [Link]
.Include(p => [Link])
.ThenInclude(di => [Link])
.Where(p => [Link] != null &&
[Link] != null &&
[Link].Delivery1 == delivery &&
[Link] == true &&
[Link] == false &&
[Link] == false)
.Select(p => new {
store = [Link],
galia = [Link],
emplacement = [Link]
})
.ToListAsync();

int[] NotifReasons = [Link]?.Split(',').Select([Link]).ToArray() ??


new int[0]; Listing 3: Exemple de Controller Delivres
var reason = [Link](r => [Link] ==
"SecurityItem").FirstOrDefault();

if (reason != null && ![Link]([Link]) && [Link]() )


{
var Recepcients =[Link](u => [Link] ==
[Link] && ![Link]).Select(u => [Link]).ToList();
var galiaListHtml = [Link]("", [Link](p =>
73
$"<tr><td>{[Link]}</td><td>{[Link]}</td><td>{[Link]}</td></tr>"));
var emailBody = $@"
<h2 style='color: #2c3e50;'>🔒 Nouveaux articles en sécurité</h2>
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

Annexe 2: Implémentation de Middleware :


public List<Dictionary<string, object>> GetPickinglistItem(int toPick, bool ssValue,
string del)
{

Dictionary<int, string> header = new Dictionary<int, string>();


Dictionary<string, object> pickingItem = new Dictionary<string, object>();
List<Dictionary<string, object>> pickingItemList = new List<Dictionary<string,
object>>();

Dictionary<string, string> sapHeader = new Dictionary<string, string>();

Dictionary<string, string> apiHeader = new Dictionary<string, string>();

string hh = "";

List<String> toStringItems = new List<String>


{
//"SUT",
"Storage Unit",
//"Total Stock",
" Total Stock",
"Available stock",
//"Stock for putaway",
" Stock for putaway",
//"Pick quantity",
" Pick quantity",
//"SUT",
//"StorageBin",
"GR Date",
"Last mvmnt"
};

GuiComponentCollection guiCompColl;
GuiLabel guiLabel;
int total;
int boucle;
int row = 0;
int oldTop;
int hiddenElementSize;
int range;
int boucleScroll;
int nombreScroll;
int startPosition = 32;

GuiUserArea guiUserArea = (GuiUserArea)[Link]("wnd[0]/usr");


hiddenElementSize = [Link];
range = [Link];
74
nombreScroll = hiddenElementSize == 0 ? 1 : (hiddenElementSize % range) == 0 ?
(hiddenElementSize / range) + 1 : (hiddenElementSize / range) + 2;
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

GuiUserArea guiUserArea = (GuiUserArea)[Link]("wnd[0]/usr");


hiddenElementSize = [Link];
range = [Link];

nombreScroll = hiddenElementSize == 0 ? 1 : (hiddenElementSize % range) == 0 ?


(hiddenElementSize / range) + 1 : (hiddenElementSize / range) + 2;
GuiLabel guiLabel2 = (GuiLabel)[Link]("wnd[0]/usr/lbl[90,6]");
if ([Link] == "GR Date")
{
[Link]();
[Link] = 3;

GuiMainWindow mainUserWin2 = (GuiMainWindow)[Link]("wnd[0]");


[Link](2);

((GuiButton)[Link]("wnd[0]/tbar[1]/btn[41]")).Press();

}
for (boucleScroll = 1; boucleScroll <= nombreScroll; boucleScroll++)
{
var c = 0;
if (boucleScroll > 1)
{
[Link] = range * (boucleScroll - 1);

}
guiCompColl = ((GuiUserArea)[Link]("wnd[0]/usr")).Children;
total = [Link];
startPosition = 0;
guiLabel = (GuiLabel)[Link](startPosition);
oldTop = [Link];

[Link]();

if (boucleScroll > 1)
{
startPosition = 31;
guiLabel = (GuiLabel)[Link](startPosition);
oldTop = [Link];
}

guiLabel = (GuiLabel)[Link](boucle);
[Link]();
}
75
// Check if the iteration is for a new line
if ([Link] > oldTop || boucle == total)
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

for (boucle = startPosition; boucle <= total; boucle++)


{
if (boucle < total)
{
guiLabel = (GuiLabel)[Link](boucle);
[Link]();
}

// Check if the iteration is for a new line


if ([Link] > oldTop || boucle == total)
{
oldTop = [Link];
row++;
c = 0;
if (row > 1 && boucle <= total && [Link] != 0)
{

if ([Link]("Storage_Unit") &&
pickingItem["Storage_Unit"] != null && [Link]("StorageBin") &&
pickingItem["StorageBin"] != null)
{
[Link](new Dictionary<string,
object>(pickingItem));

int totalToPick = 0;
foreach (Dictionary<string, object> item in pickingItemList)
{

if ([Link](sapHeader["Available stock"], out


object availableAtStock))
{
//totalToPick += toInt(availableAtStock);

int available = toInt(availableAtStock);


int rest = toPick - totalToPick;
item["security"] = ssValue;

if (rest <= available)


{
//item["canBePicked"] = rest;
totalToPick += rest;
}
else
{

76
}
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.

totalToPick += available;
}
}
if (totalToPick >= toPick)
{
GuiMainWindow mainUserWin =
(GuiMainWindow)[Link]("wnd[0]");
[Link](3);
//[Link](3);

return pickingItemList;
}
}
}
pickingItem = new Dictionary<string, object>();
}
}
if (row == 5 && ![Link]([Link]))
{
[Link]();
header[[Link]] = [Link];
sapHeader[[Link]] = AattributeAdjustment([Link]);
apiHeader[AattributeAdjustment([Link])] = [Link];
hh += AattributeAdjustment([Link]) + "|";
}

if (row > 5 && boucle < total)


{
[Link]();

if ([Link] == "*")
{
break;
}

if ([Link]([Link], out string objKey))


{

if (objKey == apiHeader["Typ"] && [Link] == "*")


{
break;
}
if (objKey == apiHeader["StorageBin"] && ([Link] ==
"PREP1" || [Link] == "RECOND"))
{
c = 1;
continue;
}
object finalValue
Listing = Controller
4: Exemple de [Link];
de Middleware
77
if ([Link](objKey))
{
string value = [Link]().Replace(" ",

Vous aimerez peut-être aussi