Conception et réalisation d'un système d'information pour le suivi des commandes des pièces de rechange à Toyota Algérie SPA( Télécharger le fichier original )par Lamine GHEMATI Ecole supérieure d'informatique d'Alger - Ingénieur en informatique 2008 |
PARTIE 3 :RÉALISATIONEtude conceptuelle Passage au modèle relationnel Passage au modèle relationnel : 86 - FIG. 30 : Schéma relationnel de la base de données - Etude conceptuelle Passage au modèle relationnel 87 Script de la création des tables de la base: create table Piece ( Ref_Piece VARCHAR2 (50) not null, Poids NUMBER, IsSubstitut BOOLEAN, DateDebProd DATE, DateFinProd DATE, Qty_Pkg NUMBER, Pays_Origine VARCHAR2 (50), Volume NUMBER, Vor_Max NUMBER, TMC_Stock_Code VARCHAR2 (10), Danger_Code VARCHAR2 (10), PU NUMBER ) alter table Piece add constraint PK_Piece primary key (Ref_Piece); create table PieceICC ( Ref_PieceICC VARCHAR2 (50) not null, Ventes NUMBER, BackOrders NUMBER, LostSales NUMBER, SSdemand NUMBER, SSleadtime NUMBER, OrderCycle NUMBER, LeadTime NUMBER, ClassePiece CHAR, DemandeGlobale NUMBER, DemandeMoyenne NUMBER, MIP NUMBER, Ref_Piece VARCHAR2 (50) not null ) alter table PieceICC add constraint PK_PieceICC primary key (Ref_PieceICC); alter table PieceICC add constraint FK_PieceICC_Piece foreign key (Ref_Piece) references Piece (Ref_Piece); Etude conceptuelle Passage au modèle relationnel 88 create table PieceCMD ( Ref_PieceCMD VARCHAR2 (50) not null, MIP NUMBER, ClassePiece CHAR, OnHand NUMBER, OnOrder NUMBER, BackOrder NUMBER, SOQ NUMBER, Ref_Piece VARCHAR2 (50) not null ) alter table PieceCMD add constraint PK_PieceCMD primary key (Ref_PieceCMD); alter table PieceCMD add constraint FK_PieceCMD_Piece foreign key (Ref_Piece) references Piece (Ref_Piece); create table PieceSUB ( Ref_PieceSUB VARCHAR2 (50) not null, Ref_Substitut CHAR, Ref_Piece VARCHAR2 (50) not null ) alter table PieceSUB add constraint PK_PieceSUB primary key (Ref_PieceSUB); alter table PieceSUB add constraint FK_PieceSUB_Piece foreign key (Ref_Piece) references Piece (Ref_Piece); create table LigneCommande ( Num_Ligne_Commande VARCHAR2 (50) not null, Num_Commande VARCHAR2 (50) not null, Ref_Piece VARCHAR2 (50) not null, Qty_Commandee NUMBER, PUC NUMBER, Total_Ligne NUMBER, Etat_Ligne VARCHAR2 (100) ) alter table LigneCommande add constraint PK_LigneCommande primary key (Num_Ligne_Commande, Num_Commande ); alter table LigneCommande add constraint FK_LigneCommande_Commande foreign key (Num_Commande) references Commande(Num_Commande); alter table LigneCommande add constraint FK_LigneCommande_Piece foreign key (Ref_Piece) references Piece(Ref_Piece); Etude conceptuelle Passage au modèle relationnel 89 create table Commande ( Num_Commande VARCHAR2 (50) not null, Num_Fournisseur VARCHAR2 (50) not null, Date_Commande DATE, Nbr_Ligne_Commande NUMBER, Montant_HT NUMBER, Montant_TTC NUMBER ) alter table Commande add constraint PK_Commande primary key (Num_Commande); alter table Commande add constraint FK_Commande_Fournisseur foreign key (Num_Fournisseur) references Fournisseur(Num_Fournisseur); create table LigneFacture ( Num_Facture VARCHAR2 (50) not null, Num_Ligne_Facture VARCHAR2 (50) not null, Ref_Piece VARCHAR2 (50) not null, Qty_Facturee NUMBER, PUF NUMBER, Num_Ligne_Commande VARCHAR2 (50) not null, Num_Commande VARCHAR2 (50) not null, Num_Caisse VARCHAR2 (50) ) alter table LigneFacture add constraint PK_LigneFacture primary key (Num_Facture, Num_Ligne_Facture); alter table LigneFacture add constraint FK_LigneFacture_LigneCommande foreign key (Num_Ligne_Commande, Num_Commande) references LigneCommande(Num_Ligne_Commande, Num_Commande); alter table LigneFacture add constraint FK_LigneFacture_Commande foreign key (Num_Commande) references Commande(Num_Commande); alter table LigneFacture add constraint FK_LigneFacture_Facture foreign key (Num_Facture) references Facture(Num_Facture); Etude conceptuelle Passage au modèle relationnel 90 create table Expedition ( Num_Expedition VARCHAR2 (50) not null, Somme_Qty NUMBER, Nbr_Caisse_E NUMBER, Date_Facture_Système DATE, Date_Facture_Origine DATE, Date_Rec_Connaissement DATE, Num_Connaissement VARCHAR2 (50), Date_Connaissement DATE, Date_Deb_Domiciliation DATE, Date_Fin_Domiciliation DATE, Date_Declaration DATE, Num_Remeorque VARCHAR2 (50), Poids_Marchandise NUMBER, Volume_Marchandise NUMBER, Embarquement DATE, Accostage DATE, Debarquement DATE, Dem_Cheque_Transitaire DATE, Dem_Cheque_Interne DATE, Remise_Cheque_Interne DATE, Remise_Cheque_Transitaire DATE, Remise_Bon_Enlevé DATE, Date_Livraison DATE, Debut_Reception DATE, Fin_Reception DATE, Lead_Time NUMBER, Dossier_Complet DATE, Remise_Comptabilite DATE, Observations VARCHAR2(2000) ) alter table Expedition add constraint PK_Expedition primary key (Num_Expedition); create table Facture ( Num_Facture VARCHAR2 (50) not null, Date_Facture DATE, Montant_Facture_HT NUMBER, Montant_Facture_TTC NUMBER, Nbr_Ligne_Facture NUMBER, Nbr_Caisse NUMBER, Num_Expedition VARCHAR2 (50) ) alter table Facture add constraint PK_Facture primary key (Num_Facture); alter table Facture add constraint FK_Facture_Expedition foreign key (Num_Expedition) references Expedition(Num_Expedition); Etude conceptuelle Passage au modèle relationnel 91 create table EtatComptable ( Num_EtatComptable VARCHAR2 (50) not null, Num_Expedition VARCHAR2 (50) not null, Type_Shipment VARCHAR2 (50), Type_Container VARCHAR2 (50), Taux_Change NUMBER, Montant_FOB NUMBER, Montant_Fret_Loading NUMBER, Montant_Assurance NUMBER, Droit_Douane NUMBER, Montant_Transit NUMBER, Montant_SDV NUMBER, Cout_Revient NUMBER, LC_Factor VARCHAR2 (30) ) alter table EtatComptable add constraint PK_EtatComptable primary key (Num_EtatComptable); alter table EtatComptable add constraint FK_Etatcomptable_Expedition foreign key (Num_Expedition) references Expedition (Num_Expedition); create table Reception ( Num_Reception VARCHAR2 (50) not null, Num_Expedition VARCHAR2 (50) not null, Nbr_Caisse_R NUMBER, Num_Container VARCHAR2 (50), Date_Arrivee DATE, Start_Time DATE, End_Time DATE, IsError BOOLEAN, Qty_Recue NUMBER, Qty_Manque NUMBER, Qty_Exces NUMBER, Qty_Endommagee NUMBER, Code_Erreur VARCHAR2 (30), Code_CPD VARCHAR2 (30), Code_Paker_Picker VARCHAR2 (30), Remarques VARCHAR2(2000) ) alter table Reception add constraint PK_Reception primary key (Num_Reception); alter table Reception add constraint FK_Reception_Expedition foreign key (Num_Expedition) references Expedition (Num_Expedition); Etude conceptuelle Passage au modèle relationnel 92 create table Fournisseur ( Num_Fournisseur VARCHAR2 (50) not null, Nom_Fournisseur VARCHAR2 (100), Adr_Fournisseur VARCHAR2(200), Tel_Fournisseur NUMBER, Fax_Fournisseur NUMBER, Mail_Fournisseur VARCHAR2 (100), Web_Fournisseur VARCHAR2 (100) ) alter table Fournisseur add constraint PK_Fournisseur primary key (Num_Fournisseur); create sequence SEQ_lignefacture minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 nocache; create sequence SEQ_lignecommande minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 nocache; create sequence SEQ_fournisseur minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 nocache; create sequence SEQ_expedition minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 nocache; Etude conceptuelle Passage au modèle relationnel 93 create sequence SEQ_reception minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 nocache; create sequence SEQ_comptabilite minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 nocache; Il faut toutefois commencer par créer un schéma de base de données sous Oracle comme suit : SQL> CONN SYSTEM/MANAGER; SQL> Create User «user-name« identified by «mot-de-passé« ; SQL> Grant connect, DBA, resource to «user-name« ; // Allouer les privileges au user SQL> Conn user-name/mot-de-passe SQL> Create table.....etc Réalisation de la nouvelle application Architecture 94 Architecture globale de la nouvelle application : En ce qui concerne la structure globale de notre application, nous avons opté pour un schéma simple comportant un serveur de données centralisé permettant ainsi de conserver l'intégrité des données relié aux différents postes du domaine, suivant ainsi le modèle d'architecture réseau clients/serveur. Notons aussi que nous prévoyons de mettre en place une version mobile du module réception afin de pouvoir mettre à jour des données au niveau du magasin lors des livraisons sans faire d'aller-retour, et ceci soit en reliant directement les appareils mobiles au serveur, ou en les synchronisant avec le poste concerné avant d'effectuer une mise à jour ultérieure. Une telle solution mobile pour les réceptions serait, selon nous, profitable si elle était accompagnée de la mise en place d'un nouveau dispositif d'étiquetage que nous allons introduire comme suit : La marchandise reçue doit être étiquetée à la livraison, or on dispose de toutes les données requises au préalable (référence, quantité commandée, localisation de la pièce en stock, numéro de la facture correspondante, numéro de la caisse contenant la pièce), sauf la quantité reçue qui sera enregistrée sur place, à la vérification. A partir de là se justifie l'emploi de la technologie mobile, qui contiendra les données citées précédemment, auxquelles on rajoutera les données manquantes au fur et à mesure du déroulement de la réception. Et on imprimera sur place les étiquettes, que nous prévoyons aussi de remplacer par un codage en deux dimensions utilisé couramment au japon : le QR Code. Le QR Code est un code-barres en 2 dimensions (code matrice) pouvant stocker jusqu'à 7089 caractères numériques, 4296 caractères alphanumériques (contrairement au code barre "traditionnel" qui lui ne peut stocker que de 10 à 13 caractères) ou 2953 octets . Il a l'avantage de pouvoir stocker beaucoup d'informations tout en étant petit et rapide à scanner. Ainsi, le sigle « QR » dérive de « Quick Response » car le contenu peut être décodé rapidement. (Source Wikipédia). Ce dispositif permettrait d'apporter de l'aide aussi à la gestion du stock et de l'inventaire en mettant par exemple dans chaque rayon des QR codes contenant les quantités présentes en stock mises à jour régulièrement dans le système. L'avantage du QR Code réside aussi qu'il n'a pas besoin de lecteur spécifique pour le décoder, une simple application installée sur un smart phone ou n'importe quel appareil mobile permet de le faire. Une autre technologie existe dans ce sens : La RFID (Identification par radio fréquence) et dont on pourrait faire usage à l'avenir. Il s'agit d'une minuscule puce reliée à une antenne qui permet d'identifier un objet, d'en suivre le cheminement et d'en connaître les caractéristiques à distance grâce à une étiquette émettant des ondes, attachée ou incorporée à l'objet. La technologie RFID permet la lecture des étiquettes même sans ligne de vue directe, ce qui permettrait par la suite de faciliter la traçabilité et la localisation de n'importe quel pièce en stock. Réalisation de la nouvelle application Architecture Serveurs Team Leader Chef de département Données Service réception Reports Shipment ICC - FIG. 31 : Architecture de la nouvelle application - 95 - FIG. 32 Un exemple de code QR - Réalisation de la nouvelle application Outils de développement 96 Présentation des outils de développement : Choix du langage : Le choix s'est porté sur le C#.NET. Une des grandes forces de ce langage réside dans le fait qu'il supporte de nombreuses variétés de bases de données, ainsi que l'accessibilité et la fiabilité. C#.NET est probablement aussi l'un des meilleurs langages pour écrire des applications clientes graphiques. L'environnement de travail qui l'accompagne « Microsoft Visual Studio 2005 » est considéré comme la plate forme de développement la plus complète qui existe, notamment grâce au FRAMEWORK.NET qui fournit un accès à des technologies clés simplifiant le développement d'applications Web ASP et de Services Web XML et aux multiples langages et outils qui l'accompagnent. Choix du SGBD: D'autre part, l'implémentation de la partie données se fera sous Oracle en utilisant la version ORACLE 10g afin de permettre principalement l'exploitation de cette partie une fois le passage à l'ERP Oracle Business Suite effectué. Mais cette « obligation » ne diminue en rien les performances d'Oracle qui est l'un des SGBD les plus puissants qui existent. Il se caractérise principalement par : - Fonctionne sur de nombreuse plate forme. - PL/SQL, langage de programmation propre à Oracle, utilisé pour créer des triggers lors de l'insertion, la modification ou l'effacement d'éléments - Gestion de très grands volumes de données, taille maxi de 65 536 fichiers de 128 To chacun en utilisant les BigFiles de la version 10gR2 ou 10.2. - Gestion centralisée de plusieurs instances - Accès aux données système via des vues, bien plus aisément manipulable que des procédures stockées. - Un système de droits et de mots de passe très souples et sécurisés, qui vérifie aussi les hôtes se connectant. Les mots de passe sont bien protégés, car tous les échanges de mot de passe sont chiffrés, même lors des connexions. Réalisation de la nouvelle application Sécurité 97 SECURITE : La sécurité des systèmes d'information (SSI) est l'ensemble des moyens techniques, organisationnels, juridiques et humains nécessaires et mis en place pour conserver, rétablir, et garantir la sécurité de l'information et du système d'information. (Source : WIKIPEDIA) Partant de cette définition qui nous a paru la plus juste, nous préconisons de déployer un ensemble de mesures relatives à la sécurisation qui ont pour objectifs de :
Nous résumons ces mesures à travers ce tableau bidimensionnel : Réalisation de la nouvelle application Sécurité 98
- TAB. 14 : Mesures sécuritaires à entreprendre - Réalisation de la nouvelle application Aperçu 99 Aperçu de la nouvelle application : Identification : |
|