Section 2 : Architecture et sécurité de
l'application
I-Architecture de l'application
Dans ce type d'architecture, les données (tables) et
l'interface (formulaires, états, requêtes, code, macro) sont
dans le même fichier. S'il y a plusieurs utilisateurs, ils se connectent
à l'espace de partage et lance le même fichier. Mais notre
application n'est pas connectée à un
réseau, on aura donc 1 seul utilisateur
à temps réel.
1. Type d'architecture
Ainsi, du fait de la structure mono utilisateur de notre
application nous avons opté pour une
architecture à fichier
unique.
Figure 14 : Architecture de l'application
34
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
D'habitude les accès sont fortement ralentis due à
la surcharge du réseau, mais dans notre cas on n'aura pas ce
problème parce que l'application n'est pas en réseau.
2. Description de l'application
Conçue sur une plateforme Access, le système
d'Automatisation de la Gestion de la Relation Client
a pour principales fonctions l'enregistrement des
commandes et des ateliers et la gestion stratégique de ces
données.
a. Maquette de l'application
Figure 15 : Maquette de l'application
Toutes les autres pages seront calquées sur l'entite et le
pied de page de ce modèle.
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
b. Fonctionnement des principales interfaces, datamining
ou extraction des connaissances et listing des codes sources.
Notre système concerne la gestion de la relation
client, les principales interfaces concernent l'enregistrement des
données et le traitement des requêtes specifiques. La conception
du système repose tout d'abord sur le développement d'interfaces
pour l'enregistrement des donnees relatives aux commandes, clients et
ateliers. Ces donnees seront stockees dans la base de donnees pour un
datamining7 ulterieure. Cette conception s'appui egalement sur la
manipulation du jeu de donnees pour ainsi fournir un outil de gestion
strategique a la gerante. Elle est basee sur le langage de manipulation de
donnees (LMD) SQL et fournit ainsi les elements pertinents dont la direction a
besoin. C'est aussi par l'utilisation des outils graphiques et des
macros8 d'ACCESS que nous avons pu développer les interfaces
de notre application.
4 Tout d'abord le bouton Gestion des commandes
nous offre un formulaire permettant l'enregistrement, la
modification et la suppression des informations personnelles du client, de ses
produits et des ses commandes correspondantes.
4 Ensuite nous avons le bouton Gestion des ateliers
qui nous permet d'accéder au formulaire d'enregistrement,
de modification et de suppression des ateliers.
4 Nous avons le bouton RDV #177; Essayage
Dépassé qui permet à tout instant d'avoir un
aperçu de la liste des commandes en cours dont l'échéance
est dépassée. Cet état est affiché au
démarrage de l'application pour rappeler à l'utilisateur toutes
les commandes en cours non achevees et dont les dates sont non respectees.
Code SQL associé
SELECT client.code_client, client.nom, commande.essayage,
produit.etat_du_produit, atelier.[chef atelier], commande.date_commande,
commande.etat_commande, produit.image produit, client.tel1
7 Dataming signifie l'extraction des connaissances ou
d'information a partir des donnees.
8 Les macros sont des outils incorporés
d'Access qui permettent l'automatisation de certaines tkches suite à
certains evènements. Leur conception est fondee sur la programmation
evenementielle.
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
FROM (produit INNER JOIN (client INNER JOIN commande ON
client.code_client =
commande.code_client) ON produit.code_produit =
commande.code_produit) INNER JOIN atelier ON produit.code_atelier =
atelier.code_atelier
WHERE (((commande.essayage)<Date()) AND
((produit.etat_du_produit)="Non Livré"));
- Nous avons aussi un bouton pour nous
afficher les informations détaillées sur un client.
On a parmi ces informations : les informations personnelles du
client, sur les tissus déposés par celui-ci et l'historique de la
relation d'affaire avec le client (nombre de commandes passées, dates de
commande, modèles cousus, date de livraison).
Code SQL associé
SELECT client.code_client, client.nom, client.tel1, client.tel4,
client.tel2, client.tel3,
produit.libellé, produit.image_produit,
produit.etat_du_produit,
commande.etat_commande, commande.date_commande,
commande.date_sms, commande.date_livraison,
commande.quantité_commandée, commande.prix_u,
produit.code_produit, [quantité_commandée]*[prix_u] AS montant
FROM produit INNER JOIN (client INNER JOIN commande ON
client.code_client =
commande.code_client) ON produit.code_produit =
commande.code_produit WHERE (((client.tel1)=[Entrer le numéro de
téléphone])) OR (((client.code_client)=[Entrer le
code du client]));
- Il y a un bouton qui nous donne la
liste de tous les clients présents ou passés et
actifs ou passifs de l'entreprise.
Code SQL associé
SELECT client.code_client, client.nom, client.tel1, client.tel2,
client.tel3, client.tel4, client.mail, client.adresse
36
FROM client;
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
- Il y a un bouton qui nous donne un état de
tous les produits présents et non livrés
présents dans l'entreprise.
Code SQL associéSELECT
client.code_client, client.nom, produit.libellé,
commande.etat_commande,
produit.image_produit, commande.essayage
FROM produit LEFT JOIN (client RIGHT JOIN commande ON
client.code_client =
commande.code_client) ON produit.code produit =
commande.code_produit WHERE (((produit.etat_du_produit)="Non
Livré"));
- On a un bouton qui nous donne, en fonction de la date inscrit,
la liste des produits livrés.
Code SQL associéSELECT
client.code_client, client.nom, client.tel1, client.tel2, client.tel3,
client.tel4,
produit.libellé, produit.nbre_produit,
produit.image_produit, commande.etat_commande, commande.date_livraison
FROM produit INNER JOIN (client INNER JOIN commande ON
client.code_client =
commande.code_client) ON produit.code_produit =
commande.code_produit WHERE (((commande.date_livraison)=[Entrer une date])
AND
((produit.etat_du_produit)="Livré"));
40
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
4 On a également un état qui
nous donne la liste des commandes réalisées par les
ateliers. Ceci est donné à partir d'une certaine
date de commande inscrit par l'utilisateur. Ainsi pour chaque atelier, on aura
l'historique de toutes les commandes qu'il a réalisées
à partir de la date insérée.
Code SQL associé
SELECT atelier.[chef atelier], atelier.type_atelier,
client.code_client, client.nom, client.tel1,
client.tel2, client.tel3, client.tel4, produit.libellé,
produit.nbre_produit, produit.image_produit, produit.etat_du_produit,
commande.etat_commande, commande.descriptif_modele, commande.metrage,
commande.épaule, commande.poitrine, commande.tour_de_taille,
commande.ceinture, commande.long_pince, commande.long_taille,
commande.long_haut,
commande.long_dos, commande.tour_de_manche,
commande.long_de_manche, commande.tour_de_hanche, commande.long_dejupe,
commande.long_de_robe, commande.date_entrer_atelier, commande.essayage,
commande.date_sortie_atelier_r
FROM (client INNER JOIN (produit INNER JOIN commande ON
produit.code_produit = commande.code_produit) ON client.code_client =
commande.code_client) INNER JOIN atelier ON produit.code_atelier =
atelier.code_atelier
WHERE (((commande.date_commande)>=[Entrer la date la plus
ancienne]));
4 Ensuite on a un bouton qui nous donne un
état sur les informations « atelier » en fonction
de chaque client.
Par contre ici, en fonction du client, on aura
l'historique technique de ses mesures. Code SQL
associé
SELECT atelier.[chef atelier], atelier.type_atelier,
client.code_client, client.nom, client.tel1,
38
client.tel2, client.tel3, client.tel4, produit.libellé,
produit.nbre_produit, produit.image_produit, produit.etat_du_produit,
commande.etat_commande, commande.descriptif_modele, commande.metrage,
commande.épaule, commande.poitrine, commande.tour_de_taille,
commande.ceinture,
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
commande.long_pince, commande.long_taille, commande.long_haut,
commande.long_dos, commande.tour_de_manche, commande.long_de_manche,
commande.tour_de_hanche, commande.long_dejupe, commande.long_de_robe,
commande.date_entrer_atelier, commande.essayage,
commande.date_sortie_atelier_r
FROM atelier INNER JOIN (produit INNER JOIN (client INNER JOIN
commande ON
client.code_client = commande.code_client) ON
produit.code_produit = commande.code_produit) ON atelier.code_atelier =
produit.code_atelier
WHERE (((client.code_client)=[Entrer le code du client])) OR
(((client.tel1)=[OU entrer le numéro de téléphone du
client]));
- Un bouton qui nous donne la
performance horaire de chaque atelier des 12 derniers mois. En
termes du respect des horaires (date de sortie d'atelier prévue) des
différentes commandes. On a les informations sur les dates (date de
commande, entrée atelier, rendezvous essayage, sortie atelier). On a
l'estimation pour chaque commande du nombre de jour estimé en atelier.
On a l'estimation pour chaque commande du nombre de jour effectivement
passé dans un atelier.
On met en exergue l'efficacité d'un atelier et le temps
moyen qu'on peut préconiser à une commande dans cet atelier.
Code SQL associé
SELECT atelier.[chef atelier], produit.libellé,
produit.image produit,
commande.date_commande, commande.date_entrer_atelier,
commande.date_sortie_atelier_r, commande.essayage,
[essayage]-[date_entrer_atelier] AS [Date estimé],
[date_sortie_atelier_r]-[date_entrer_atelier] AS [Date effective],
([essayage]-[date_entrer_atelier]+[date_sortie_atelier_r]-[date_entrer_atelier])/2
AS [Temps moyen]
FROM atelier INNER JOIN (produit INNER JOIN (client INNER JOIN
commande ON
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
client.code_client=commande.code_client) ON
produit.code_produit=commande.code_produit) ON
atelier.code_atelier=produit.code_atelier
WHERE (((atelier.[chef atelier])=[Entrer le nom du chef atelier])
AND ((commande.date_commande)>= (Date ()-360)));
- On a un bouton qui nous donne le graphique sur
l'évolution du chiffre d'affaire à partir d'une
certaine date inséré par l'utilisateur.
Ici on a une représentation de l'évolution globale
du chiffre d'affaire de l'entreprise à partir d'une certaine date
inséré par l'utilisateur.
Code SQL associé
SELECT (Format([date_commande],"mmm"" '""yy")) AS Expr1,
Sum(ca.[montant]) AS SommeDemontant
FROM ca
GROUP BY (Format([date_commande],"mmm"" '""yy")),
(Year([date_commande])*12+Month([date_commande])-1);
Avec Eli qui est une table issue de la
requête :
SELECT [quantité_commandée]*[prix_u] AS montant,
commande.date_commande FROM produit INNER JOIN (client INNER JOIN commande ON
client.code_client =
commande.code_client) ON produit.code_produit =
commande.code_produit WHERE (((commande.date_commande)>=[Entrer la date de
départ]));
Automatisation de la Gestion de la Relation Client : Cas EMMA
STYLE Fait par : FOPOU NJOYA Youssouf Marius
4 On aura aussi le graphique sur
l'évolution du chiffre d'affaire par
client.
Ici c'est l'évolution du chiffre d'affaire par client qui
est mis en exergue par un graphique. Code SQL associé
SELECT (Format([date_commande],"Short Date")) AS Expr1,
Sum(graph_client.[montant]) AS SommeDemontant
FROM graph_client
GROUP BY (Format([date_commande],"Short Date")),
(Int([date_commande])); Avec DEDDliEffint qui est une
table issue de la requête :
SELECT client.nom, [quantité_commandée]*[prix_u] AS
montant,
commande.date_commande, client.code_client
FROM produit INNER JOIN (client INNER JOIN commande ON
client.code_client = commande.code_client) ON produit.code produit =
commande.code_produit WHERE (((client.code_client)=[Entrer le code du
client]));
Dans le prochain point, nous aborderons la
sécurité, principalement la sécurité logicielle de
MS Access 2007.
|