BTS SIO Services Informatiques aux Organisations Session 2013 2015 Collé Maxime Année 2013-2014 Option : SLAM Activité professionnelle N 1 NATURE DE L'ACTIVITE : DÉVELOPPEMENT DE L APPLICATION WEB «GESTION DE CERTIFICATS» CONTEXTE La société Yad Informatique est une PME dans le secteur de l informatique située à Villeurbanne, elle fournit essentiellement des prestations informatiques tel que la vente de produits, de services de migrations (matériels / logiciels réseau) et l installation d infrastructures réseaux. Cette entreprise ne possède pas de pôle de développement d application, ce projet est donc une demande spécifique. L entreprise développe depuis quelques années une activité de vente de produits informatiques notamment dans le cadre de ses services d installations d infrastructures. C est dans ce contexte que les clients ont parfois besoin de certificats liés à certains produits dans un cadre législatif. Actuellement, ces demandes ne sont pas automatisées, et sont effectuées par appels téléphoniques : Un client muni de son bon de livraison ou facture appel la structure, la standardiste, après consultation de la facture, envoi les différents certificats des produits sous format PDF par mail au client. Ma mission est d automatiser cette tâche par le biais d une application web construite en PHP. Les besoins étant clairs et non évolutifs, une analyse des besoins (Annexe 1) m a permis de rapidement construire un dossier d analyse (Annexe 2) afin de répondre au mieux aux contraintes de la mission. LES ACTEURS Ma collaboration liée au projet s est essentiellement fait avec Mr Yves Semhoun, gérant de la société. LES OBJECTIFS Yad Informatique souhaite donc automatiser l envoi de certificats de produits achetés par le client sur la demande de celui-ci. Les objectifs principaux sont : - Création d une application web où le client peux se connecter (identifiant / mot de passe). - Cette application doit recenser son historique de commande. - Le client peut, en choisissant une commande, s envoyer automatiquement les pièces justificatives. - Mise à jour de la base de données et des certificats stockés automatiquement. P a g e 1 24
SOLUTIONS ENVISAGEABLES 1) Garder l ancien mode de fonctionnement. 2) Créer une application web répondant à ces objectifs. DESCRIPTION DE LA SOLUTION RETENUE La solution retenue fut la création d une application web, en effet pour le client comme pour l entreprise, le fait d appeler pour chaque demande de certification d un ou plusieurs produits est une perte de temps et donc une perte financière. Conditions initiales : Légères pistes de mon tuteur sur la structure de la base de données. Conditions finales : Application fonctionnelle et conforme aux besoins exprimés. Outils utilisés : - Support de travail: Ordinateur fournit par l entreprise - Logiciels liés au développement : Sublime Text 2, WampServer, FileZila, WinSCP Dans le cadre d une description synthétique, vous pouvez également vous rendre au www.collemaxime.fr/modules.php et afficher les détails du projet. CONDITIONS DE REALISATIONS Matériels Ordinateur fournit par l entreprise Logiciels Sublime Text 2, WampServer, WinSCP Durée de réalisation Une durée totale de 2 mois, mais non exclusive à cette application. Contraintes - La base de données doit contenir un certains nombres de contraintes d intégrités. - L application doit être réalisée en PHP/MYSQL P a g e 2 24
COMPETENCES MISES EN ŒUVRE POUR CETTE ACTIVITE PROFESSIONNELLE A1.1.1 ANALYSE DU CAHIER DES CHARGES D'UN SERVICE À PRODUIRE Définition de la mission au début du stage. Participation à une réunion en fin de stage afin d'expliquer la conception et les aboutissants du stage. A1.1.3 ÉTUDE DES EXIGENCES LIÉES À LA QUALITÉ ATTENDUE D'UN SERVICE Exigence technique: solution web. Nécessiter de mise en place de login pour la confidentialité et le bon fonctionnement de l application web. A1.3.4 DÉPLOIEMENT D'UN SERVICE Passage du local à la mise en ligne. A4.1.1 PROPOSITION D'UNE SOLUTION APPLICATIVE Proposition de la solution en tenant compte de contraintes demandées. A4.1.3 CONCEPTION OU ADAPTATION D'UNE BASE DE DONNÉES Création d'une base de données, manipulation et exploitation des données dans l'application. A4.1.4 RECENSER ET CARACTÉRISER LES COMPOSANTS EXISTANTS OU À DÉVELOPPER Rédaction d un cahier d'analyse ou sont recensé les solutions. A4.1.6 GESTION D'ENVIRONNEMENTS DE DÉVELOPPEMENT ET DE TEST Développement sous serveur local permettant le développement et les tests sont les contraintes réelles. A4.1.7 DÉVELOPPEMENT, UTILISATION OU ADAPTATION DE COMPOSANTS LOGICIELS Développement et création de l'application, mise en place d'un système de sécurité dans le cadre de l'accès aux données. A5.1.4 RENSEIGNER LES ÉLÉMENTS PERMETTANT D ESTIMER LA VALEUR DU SERVICE Rédaction d'un cahier d'analyse définissant les degrés d'importances des fonctionnalités. A5.2.3 REPÉRAGE DES COMPLÉMENTS DE FORMATION OU D'AUTO-FORMATION... Auto-formation sur le langage PHP. A5.2.4 ÉTUDE D UNE TECHNOLOGIE, D'UN COMPOSANT, D'UN OUTIL OU D'UNE MÉTHODE A nécessité une documentation importante liée au PHP P a g e 3 24
DEROULEMENTS DE L'ACTIVITES 1) DIAGRAMME DE CAS D UTILISATION 2) PLAN DE L APPLICATION CHRONOLOGIE APPLICATIVE LIÉE À UNE DEMANDE STANDARD. Connexion Affichage des différents articles de la commande Affiche des commandes via une facture un bon de livraison Envoi d'un mail comprenant les certifications sous forme de pièces jointes format pdf P a g e 4 24
3) CONCEPTION ET MODELISATION DE LA BASE DE DONNEES Dans un premier temps il a été nécessaire de concevoir une base de données cohérente avec les besoins : Des contraintes d intégrités sont nécessaires. Aucun attribut ne peut être null Pour une meilleure compréhension voir le schéma de la base de données ci-dessous : Voir sa structure afin d en comprendre plus en détail le fonctionnement (ANNEXE 4) 4) DEVELOPPEMENT DE L APPLICATION Pour avoir les détails techniques liés au codage de l application, consultez l annexe 3 «Développement de l application». P a g e 5 24
5) IMPLEMENTATION DE L APPLICATION Étape 1 : Le visiteur se connecte grâce à son login / mot de passe. Etape 2 : Le visiteur a 3 possibilités, afficher ces articles via une facture, VIA un bon de livraison ou il a également la possibilité de modifier son mot de passe. P a g e 6 24
Etape 3 : Le visiteur vérifie les articles, numéro de lots et quantité, grâce à l affichage de ceux-ci. NB : Un bon de livraison ou une facture peut concerner plusieurs articles mais également aussi plusieurs lots. P a g e 7 24
Etape 4 : Le visiteur clique sur générer, cette action lui affichera un message si l opération s effectue correctement. Cette action déclenche l envoi d un email avec l ensemble des certificats pour chaque article sous forme de PDF en pièce jointe. Etape 5 : Réception de l email P a g e 8 24
6) LA MISE À JOUR DES DONNÉES ET DES FICHIERS PDF Pour la mise à jour des données, le choix technologique s est porté sur la solution logicielle WINSCP couplée à un fichier BAT ainsi que des requêtes SQL avec des tâches planifiées sur celles-ci. 1) Upload des fichiers Les PDF, avant d être supprimés de l ordinateur local, sont copiés vers un dossier archives. Appel du script ftpscript.txt 2) Exécution du fichier SQL Pour les données, des requêtes SQL d insertions sont créées et importées dans BDD_SYNC (voir image) par l administrateur puis une tache planifié sur un script PHP les exécute.. P a g e 9 24
CONCLUSION Pour conclure, je pense avoir mené à bien cette mission dans la mesure où l application est fonctionnelle et conforme aux contraintes du cahier des charges. Ce projet m a permis d avoir une première approche du travail en entreprise, de la programmation en entreprise (trouver des solutions en ayant des contraintes à respecter). En tant que premier projet en développement web, le fait d avoir une technologie imposée m a confronté à de sérieuses difficultés au premier abord, ne pas avoir de pôle dans le développement web dans l entreprise m a obligé à trouver des solutions par moi-même et de façon autonome. Grace à cette expérience, je pense avoir gagné en savoir-faire et en autonomie. EVOLUTION POSSIBLE - Évolution de l application afin de pouvoir éventuellement passer les commandes directement en ligne et donc automatiser une partie du domaine d activité. - Permettre à l utilisateur la modification de son mot de passe. - Développer l aspect sécurité de l application qui est très limité à l état actuel. - Le projet a été mis en production après mon stage et l entreprise recherche de nouveaux stagiaires afin d agrandir ces fonctionnalités et pour accomplir d autres projets en parallèle. P a g e 10 24
ANNEXES ANALYSE DES BESOINS PAGE 12 DOSSIER D ANALYSE PAGES 13-16 DEVELOPPEMENT DE L APPLICATION PAGES 17-21 DETAILS DE LA STRUCUTRE DE LA BASE DE DONNEES PAGES 22-23 P a g e 11 24
ANNEXE 1 : ANALYSE DES BESOINS Client : YAD informatique Prestataire : COLLE Maxime (statut : stagiaire) PROBLÈME ÉMIS PAR LE CLIENT L entreprise a développé depuis quelques années une activité en dehors de son cœur de métier, la vente de produits de type matériaux. Ses clients ont besoin de certificats du matériel dans un cadre législatif. Actuellement ces demandes ne sont pas automatisées, et sont effectuées par appels téléphoniques. Ma mission est d automatiser cette tâche par le biais d une application web construite en PHP. Les besoins étant clairs et non évolutifs, l analyse suivante va permettre de définir les exigences du projet. EXIGENCES FONCTIONNELLES Exigences importance qualité Demande la mise en place d un module de type application web qui sera intégré au site actuel. Mise en place d une base de données répondant aux besoins de la mission Importation des données (requêtes SQL et PDF) vers la solution applicative. Aucune perte ou altération de donnée n est admissible Automatisation des importations La sécurisation des données et des accès Moyenne Moyenne L interface utilisateur L utilisateur doit avoir la possibilité d afficher une commande soit par bon de livraison, soit par numéro de facture Une commande doit afficher la liste des articles, leurs numéros de lot et leurs quantités respectives. Moyenne La validation du choix d une commande doit envoyer un email au client contenant les justificatifs concernant les articles de la commande en pièces jointes. L utilisateur doit être avertit de l envoi correct de l email lors de la validation du choix d une commande Moyenne Moyenne L utilisateur doit avoir la possibilité de modifier son adresse email. Moyenne EXIGENCES ANNEXES L interface utilisateur doit être au plus simple. Charte graphique libre Codage principalement en PHP Utilisation d une base de données MYSQL Choix libre dans la solution afin de récupéré les données. NOTE La réalisation des exigences ayant une priorité haute sont définies comme les objectifs principaux de la mission. P a g e 12 24
ANNEXE 2 : DOSSIER D ANALYSE Client : Yad Informatique Prestataire : Collé Maxime (statut : stagiaire) La fonctionnalité est conforme aux exigences. VALIDE VALIDE (sous conditions ) La fonctionnalité est conforme aux exigences, mais n est pas finalisé sur l ensemble de la solution applicative. La fonctionnalité ne répond pas aux exigences en l état. NON VALIDE On notera que l ensemble des exigences ayant une importance forte sont respectés et qu ainsi les besoins vitaux de l application sont respectés. P a g e 13 24
EXIGENCES GENERALES EXIGENCE 1 Demande la mise en place d un module de type application web qui sera intégré au site actuel. Développement de l application en local sous WampServer Migration ultérieur VALIDE EXIGENCE 2 Mise en place d une base de données répondant aux besoins de la mission Création de la base de données et des relations correspondantes (cf. MCD base de données) VALIDE EXIGENCE 3 Importation des données (requêtes SQL et PDF) vers la solution applicative. Aucune perte ou altération de donnée n est admissible Création de requêtes SQL et des dossiers liés aux PDF à uploader Utilisation de la solution logiciel WINSCP Utilisation de fichier.bat qui appelle un script pour l upload VALIDE P a g e 14 24
EXIGENCE 4 Automatisation des importations Utilisation d une tache planifiée effectué sur le fichier.bat Utilisation du service de tache planifié d OVH afin d exécuter la requête SQL VALIDE EXIGENCE 5 La sécurisation des données et des accès Moyenne Moyenne Authentification d accès à l application et utilisation de session sur l ensemble de l application VALIDE EXIGENCES POUR L INTERFACE UTILISATEUR EXIGENCE 6 L utilisateur doit avoir la possibilité d afficher une commande soit par bon de livraison, soit par numéro de facture Mise en place de deux listes déroulantes : - La première concerne l ensemble des bons de livraisons répertoriés pour le client - La deuxième concerne l ensemble des factures répertoriées pour le client VALIDE EXIGENCE 7 Une commande doit afficher la liste des articles, leurs numéros de lot et leurs quantités respectives. Moyenne Récupération des données et affichage de celle-ci VALIDE P a g e 15 24
EXIGENCE 8 La validation du choix d une commande doit envoyer un email au client contenant les justificatifs concernant les articles de la commande en pièces jointes. Envoi de l email au client lors de la validation Ajouts des PDF correspondant aux articles en pièces jointes VALIDE EXIGENCE 9 L utilisateur doit être avertit de l envoi correct de l email lors de la validation du choix d une commande Moyenne Moyenne Affichage d un message d erreur ou de réussite suite à l envoi de l email VALIDE EXIGENCE 10 L utilisateur doit avoir la possibilité de modifier son adresse email. Moyenne Ajout d un formulaire afin de permettre à l utilisateur de modifier son mot de passe en base de données. VALIDE P a g e 16 24
ANNEXE 3 : DEVELOPPEMENT DE L APPLICATION 1) PAGE INDEX.PHP - CODE PHP Dans un premier temps, il est nécessaire de se connecter à la base de données Suite à cela, une vérification sur le formulaire de connexion sera nécessaire afin de garantir que les champs ne sont pas nuls. Ensuite il est nécessaire de comparé les champs saisies à ceux de la base de données. Mise en session de l utilisateur et redirection sur «recuperation.php». P a g e 17 24
2) PAGE INDEX.PHP - CODE HTML Import du Template Bootstrap. Mise en place du formulaire de connexion. P a g e 18 24
3) PAGE RÉCUPERATION.PHP En premier lieu, grâce à «session_start()» on ouvre la session de l utilisateur. Affichage de l entête de la page. Création d une méthode pour vérifier la syntaxe de l adresse mail grâce à une expression régulière. Connexion à la base de données avec pdo. Affichage de deux listes déroulantes : - La première permet d afficher le résultat par facture. - La deuxième permet d afficher le résultat de bon de livraison. L affichage des listes déroulantes est réalisé avec des boucles while permettant de parcourir le résultat des requêtes. P a g e 19 24
La récupération des éléments se fait avec POST. On parcourt avec une boucle while le résultat de la requête (qui va chercher les lignes d un id facture ou bon de livraison) et on l affiche dans un tableau (table). Cette partie concerne le traitement du formulaire de modification d adresse email de l utilisateur. On récupère l adresse mail, on vérifie qu elle n est pas vide et vérifie sa syntaxe grâce à notre méthode VerifierAdresseMail. On met à jour l adresse mail grâce à une requête update, puis on actualise la page. P a g e 20 24
Cette partie gère le traitement dans le cadre d une validation de l envoi des certificats par l utilisateur. On vérifie que le formulaire est posté et on sélectionne l adresse mail du destinataire. Appel de la bibliothèque phpmaileur et on attribue les différents champs liés aux arguments phpmaileur pour l envoi du mail. Mise en place d une condition dans le cadre soit d un bon de livraison, soit d une facture. Récupération des données avec une requête et grâce à une jointure. Vérification de l envoi du mail Inclusion des scripts JavaScript P a g e 21 24
ANNEXE 4 : DETAILS DE LA STRUCTURE DE LA BDD SET FOREIGN_KEY_CHECKS = 0; -- Structure de la table `CERTIF` CREATE TABLE IF NOT EXISTS `CERTIF` ( `id` int(255) NOT NULL AUTO_INCREMENT, `NUM_LOT` int(55) NOT NULL, `AR_REF` varchar(255) NOT NULL, `LIEN_PDF` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `AR_REF` (`AR_REF`), KEY `NUM_LOT` (`NUM_LOT`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; -- -------------------------------------------------------- -- Structure de la table `CLIENTS` CREATE TABLE IF NOT EXISTS `CLIENTS` ( `CT_NUM` varchar(255) NOT NULL, `CT_EMAIL` varchar(255) NOT NULL, `CT_PASSWORD` varchar(255) NOT NULL, PRIMARY KEY (`CT_NUM`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- Structure de la table `ENTETES` CREATE TABLE IF NOT EXISTS `ENTETES` ( `CT_NUM` varchar(255) NOT NULL, `DO_PIECE` varchar(255) NOT NULL, `DO_DATE` datetime NOT NULL, PRIMARY KEY (`DO_PIECE`), KEY `CT_NUM` (`CT_NUM`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- Structure de la table `LIGNES` CREATE TABLE IF NOT EXISTS `LIGNES` ( `id` int(255) NOT NULL AUTO_INCREMENT, `CT_NUM` varchar(255) NOT NULL, `DO_PIECE` varchar(255) NOT NULL, `AR_REF` varchar(255) NOT NULL, P a g e 22 24
`NUM_LOT` int(255) NOT NULL, `DL_QTE` int(55) NOT NULL, `DO_PIECEBL` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `DO_PIECE` (`DO_PIECE`), KEY `NUM_LOT` (`NUM_LOT`), KEY `AR_REF` (`AR_REF`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; -- Contraintes pour la table `CERTIF` -- ALTER TABLE `CERTIF` ADD CONSTRAINT `CERTIF_ibfk_1` FOREIGN KEY (`NUM_LOT`) REFERENCES `LIGNES` (`NUM_LOT`); -- Contraintes pour la table `CLIENTS` -- ALTER TABLE `CLIENTS` ADD CONSTRAINT `CLIENTS_ibfk_1` FOREIGN KEY (`CT_NUM`) REFERENCES `ENTETES` (`CT_NUM`); -- Contraintes pour la table `ENTETES` -- ALTER TABLE `ENTETES` ADD CONSTRAINT `ENTETES_ibfk_2` FOREIGN KEY (`DO_PIECE`) REFERENCES `LIGNES` (`DO_PIECE`), ADD CONSTRAINT `ENTETES_ibfk_1` FOREIGN KEY (`CT_NUM`) REFERENCES `CLIENTS` (`CT_NUM`); -- Contraintes pour la table `LIGNES` -- ALTER TABLE `LIGNES` ADD CONSTRAINT `LIGNES_ibfk_3` FOREIGN KEY (`AR_REF`) REFERENCES `CERTIF` (`AR_REF`), ADD CONSTRAINT `LIGNES_ibfk_1` FOREIGN KEY (`DO_PIECE`) REFERENCES `ENTETES` (`DO_PIECE`), ADD CONSTRAINT `LIGNES_ibfk_2` FOREIGN KEY (`NUM_LOT`) REFERENCES `CERTIF` (`NUM_LOT`); SET FOREIGN_KEY_CHECKS = 1; DANS CERTAINS CAS, L ORDRE D IMPORTATION PRODUISAIT DES ERREURS, L UTILISATION DE SET FOREIGN_KEY_CHECKS M A PERMIS DE MOMENTANÉMENT ANNULER LES CONTRAINTES ENTRE LES TABLES AFIN D EFFECTUER CERTAINES REQUÊTES. P a g e 23 24
SOMMAIRE NATURE DE L ACTIVITE PAGE 1 SOLUTIONS ENVISAGEABLES PAGE 2 DESCRIPTION DE LA SOLUTION RETENUE PAGE 2 CONDITIONS DE REALISATIONS PAGE 2 COMPETENCES MISES EN ŒUVRE PAGE 3 DEROULEMENT DE L ACTIVITE PAGES 5 10 1) Diagramme de cas d utilisation page 4 2) Plan de l application page 4 3) Base de données page 5 4) Architecture des ficher page 5 5) Implémentation de l application pages 6 8 6) Mise à jour des données page 9 CONCLUSION / EVOLUTIONS POSSIBLES PAGE 10 ANNEXES PAGES 11 22 1) Analyse des besoins page 12 2) Dossier d analyse pages 13-16 3) Développement de l application pages 17 21 4) Structure de la base de données pages 22-23 P a g e 24 24