Download - easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Transcript
Page 1: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Badot Juin 2010 Xavier Esa NAMUR3ème Informatique

Promoteur : F. PARION

Remerciements      :   

Avant d’entamer ce rapport, je profite de l’occasion pour remercier tout d’abord mon promoteur Mr Parion pour son engagement en matière de formation et d’encadrement. 

Easy_ShopEnd Of Project

Page 2: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Je tiens également à remercier l’ensemble des professeurs m’ayant apporté chacun un peu de leurs expériences et leurs compétences au fil de mes longues années d’études au sein de l’ESA Namur.

Enfin je tiens également à saluer tout le personnel de chez BCMC Informatique pour son soutien et son temps accordé à l’élaboration finale du projet.

Avant Propos      :  

L’approche modulaire du système d’informations      :  

Tout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées au sein de l’entreprise, tant au niveau clientèle qu’interne, l’analyse proposée dans ce document sera faite sous forme de modules.

Pourquoi ?

Easy Shop | P. 2

Page 3: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

L’approche de l’analyse des besoins de la société et de la conception du logiciel a été réalisée de manière modulaire. Chaque cas a été étudié en profondeur afin de bien cerner les besoins un par un.

De la commande du produit chez le fournisseur en passant par le pré-encodage logiciel, à la vente voir jusqu'à la reprise d’un article en garantie.

Au vu de la taille conséquente du projet, il était plus facile pour tout le monde de travailler sous forme de USE CASE et de délimiter les différents points importants à élaborer :

1) Encodage produit repéré chez le fournisseur dans le système2) Commande de produits chez le fournisseur3) Livraison au sein de l’entreprise de la marchandise commandée4) Transfert de la commande fournisseur en Entrée de stocks (Facture Achat, Modification Stock,

Génération Numéro de série).5) Définition du prix du produit en fonction de son prix d’achat.6) La vente de l’article (Offre, Commande Client, Facture, Ticket ).7) Retour de l’article par le client (Note de Crédit)8) Renvoi fournisseur

L’ensemble des USE CASE formeront un tout dans ce projet. L’ensemble nous donnera un aperçu global du fonctionnement interne de l’entreprise étape par étape.

Nous noterons pour commencer 2 points très importants manquant le plus dans l’ancien système.

o la nécessité de disposer de droits pour l’utilisation du logiciel! (Confidentialité des données internes à l’entreprise).

o Le besoin de sécurité !

- Nous verrons aux cours de cette analyse les services supplémentaires proposés aux clients indirectement (Rappel automatique de paiements …).

- Une ligne de crédit disponible et unique pour chaque client !- Le retour aisé de marchandises chez le fournisseur sans devoir effectuer une recherche

longue et laborieuse pour savoir d’où provient le produit défectueux. (Système d’identification produit).

SommaireChapitre I : Le client................................................................................................................................6

I.1 - Présentation de l’entreprise :......................................................................................................6

I.2 - Clientèle de l’entreprise :............................................................................................................6

I.3 - Personnel / hiérarchie interne :...............................................................................................7

I.4 - Description du système actuel :..................................................................................................7

Easy Shop | P. 3

Page 4: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

I.5 - Leurs besoins :.............................................................................................................................7

Chapitre II. Objectifs et Besoins :............................................................................................................8

Chapitre III : Analyse Fonctionnelle......................................................................................................10

III.1 : Schéma Entités – Associations :...............................................................................................10

III.2 : Modèle Relationnel :...............................................................................................................11

Chapitre IV : Analyse Technique :.........................................................................................................12

IV.1 - Petite parenthèse sur les droits utilisateurs sur la base de données :.....................................12

IV.2 - L’accès serveur :......................................................................................................................12

IV.3 - Le développement :.................................................................................................................12

IV.4 - La modélisation de la base de données :.................................................................................12

IV.5 - O.S :.........................................................................................................................................12

IV.6 - Aperçu de l’architecture Principale du logiciel :......................................................................13

IV.7 - Architecture globale en couches : (Schéma)...........................................................................14

IV.8 - Architecture globale découpé selon les couches.....................................................................15

IV.7 - Aperçu d’une partie des différentes fonctions présentes dans EasyShop + Droits..................16

Chapitre V : USE CASE :.........................................................................................................................17

V.1.1 - Authentification de l’utilisateur et définition des variables globales....................................17

V.1.2 - Analyse du Login utilisateur :................................................................................................17

b) Les variables globales utilisées :...............................................................................................22

C) La couche applicative : extraits de code et sécurité des variables (Cryptage / Décryptage )....23

D) Point de vue Visuel : Impression d’écran Page Login Principal.................................................24

V. 2. La gestion de l’année fiscale :...................................................................................................25

V.2.1 - Présentation de la problématique de l’année fiscale et pourquoi l’avoir laissé définissable manuellement :................................................................................................................................25

V.2.2 - BIS : Use Case en détails - Vérification de la date serveur détaillée :....................................27

V.2.3 - Extrait de code de la vérification des 2 dates :.....................................................................28

V.2.4 - Résultat visuel pour l’utilisateur du programme :.................................................................30

V.2.5 - Le fonctionnement de l’incrémentation des numéros de factures / tickets en détails ….....33

V.3 : La gestion des droits Utilisateurs :............................................................................................35

V.3.1 : Use Case : Le système d’alerte utilisateur : Contexte :..........................................................36

V.3.2 : Explication du fonctionnement de la vérification des droits pour chaque utilisateur :.........37

V.3.3 : Illustration :...........................................................................................................................40

V. 4 : Encodage des produits et encodage des entrées de stocks.....................................................43

V.5 : Définition du prix de l’article....................................................................................................50

V.5.1 – Prix Normal / Prix Promo......................................................................................................50

Easy Shop | P. 4

Page 5: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.5.2 - La définition du prix de manière manuelle lors d’une vente ou d’une remise de prix..........53

V.6 : La rentrée de stocks :...............................................................................................................56

V.6.1 : Analyse du Module d’encodage d’une commande fournisseur............................................56

V.6.2 : La présence de numéros de série dans l’insertion d’une entrée de stock.............................65

V.7 : La vente de produits aux clients..............................................................................................69

V.7.1 – Identification des besoins d’un client souhaitant une offre de prix au sein du magasin :.. . .70

V.7.2 - Transfert d’une offre en facturation :....................................................................................74

V.7.3 - Use Case transfert Commande en Facture:...........................................................................78

V.7.4 - Use case Création facture (On cible la nécessité de sélection client et article avant la création de facture) :........................................................................................................................80

V.8 : Limite de crédits - Rappel de paiements..................................................................................88

V.8.1- Limite de crédits client :.........................................................................................................88

V.8.2 - Gestion des Rappels de Paiements........................................................................................93

V.8.3 - La gestion des paiements par virement ! Ou Paiement décalé.............................................96

V.8.4 - la gestion des Paiements :.....................................................................................................99

V.9 - L’inventaire :..........................................................................................................................102

V.9.1 - La gestion de STOCK en profondeur :..................................................................................102

V.9.2 - Le calcul de l’inventaire :.....................................................................................................106

V.10 : Les Statistiques :...................................................................................................................110

V.10.1 - Le premier module traitera sur les statistiques de vente de chaque utilisateur dans le système..........................................................................................................................................110

V.10.2 - Statistiques de vente sur un client par article :.................................................................116

Chapitre VI. Les Tests.........................................................................................................................119

Chapitre VII. Problèmes parcourus :...................................................................................................120

Chapitre VIII : Modifications à venir :.................................................................................................121

Chapitre IX : Planning :.......................................................................................................................122

IX.1 - Apport des correctifs au planning réalisé au mois de juin 2009 :..........................................123

Chapitre X : Conclusions :...................................................................................................................124

Lexique :.........................................................................................................................................125

Chapitre I : Le client

I.1 - Présentation de l’entreprise :

Calinfo SPRL :

Easy Shop | P. 5

Page 6: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Ce magasin anciennement appelé BCMC informatique, déploie principalement ses activités dans la vente de matériel informatique et dans le domaine de la téléphonie, multimédia.

Ses principales activités sont notamment : pièces détachées (carte graphique, disque dur), GSM et abonnements Mobistar – Proximus. Contrat ADSL, téléviseurs et home cinéma.

Située dans le centre d’Andenne et lancée il y a maintenant 10 ans d’ici, cette société SPRL déclarée sous peu, occupe actuellement 4 personnes à temps pleins.

Petit historique de la société :

1998 : ouverture du premier magasin rue du pont à Andenne, réparations, ventes au détail.

2003 : déménagement à coté de la banque ING au carrefour à Andenne toujours.

2005 : extension de l’aile du magasin passage à x m²

2007 : passage en société.

Face à l’expansion de son secteur d’activité, à l’augmentation des ventes de matériel informatique et à la nécessité d’utiliser actuellement un pc (virement bancaire, déclaration tva, recherches interactives, emails …) le patron de cette entreprise souhaiterait donc pouvoir gérer de manière plus aboutie l’ensemble de ses activités.

I.2 - Clientèle de l’entreprise :

- B2C : Dans le monde du commerce électronique et d'internet, Business to Consumer aussi appelé Business to Customer est le nom donné à l'ensemble d'architectures techniques et logicielles informatiques permettant de mettre en relation des entreprises avec leurs clients (consommateurs) : en français, « des entreprises aux particuliers »

- B2B : L'expression business to business (B2B) désigne : l'ensemble d'architectures techniques et logicielles informatiques permettant de mettre en relation des entreprises

I.3 - Personnel / hiérarchie interne :

Calianno Bruno : Administrateur de la société

Easy Shop | P. 6

Page 7: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Badot Xavier : Chef d’atelier

Labiouse A : Apprenti

Cornet L. : Apprenti

Au vu des différents grades dans la société, le programme ne pourra être utilisé de la même manière par tout le monde. -> Contrôle requis.

I.4 - Description du système actuel :

Le logiciel de facturation (programme commercial non étudié spécifiquement pour le magasin) devenant complètement obsolète :

- impossibilité de travailler à 2 personnes sur le module facture client sinon plantage du programme...),

- Pas de système de base de données - Fichiers plats (fichiers qui s’alourdissent avec le temps)- Lenteur des recherches due aux fichiers plats qui grossissent de jour en jour- Pas de lien direct avec le site internet actuel (vu l’absence de base de données,

l’exportation des fichiers plats se fait vers un fichier excel lui-même chargé par une base de données mysql …)

Conséquences :

Pas de stock réel sur le site internet ( pas de concordance simultanée entre stock réel et stock présent sur le site ).

Lourdeur d’exportation des fichiers … Exportation manuelle obligatoire.

I.5 - Leurs besoins :

Un outil de pointe est nécessaire afin de faciliter le travail au sein de l’entreprise, éviter une perte de temps importante, ainsi qu’apporter une meilleure image vis-à-vis de la clientèle.

Chapitre II. Objectifs et Besoins : Les améliorations apportées au fur et à mesure du développement du projet ( Objectifs et Besoins ).

BMI FACT EasyShop

- Pas de base de données (fichier plat ) - Utilisation de Sql Server pour plus de

Easy Shop | P. 7

Page 8: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

- Extrêmement lent rapidité

- Pas de gestion de droit - Droit distinct pour chaque utilisateur du système

- Mono Utilisateur (plantage si 2 personnes travaillent sur le programme en même temps : problème du fichier plat) .

- Multi -Utilisateurs.

- Impossible de personnaliser ses impressions (module complètement bloqué).

- Personnalisation de l’impression (logo, données bancaires … ).

- Pas de gestion de stocks - Gère les commandes fournisseursGestion de Stocks

- Auto-Stocks Alerte

- Pas d’historique de ventes (statistiques) - Possibilité de faire des statistiques sur les historiques de vente

- Statistiques sur un produit vendu

- Meilleur Vente Ticket

- Pas de suivi sur les ventes - Grâce au login de l’utilisateur, on peut avoir un tracking sur les pièces vendues.

- Pas de gestion des numéros de série - Gestion des numéros de série- Provenance fournisseur- Date D’achat- Encodage du code fournisseur

- Clôture de caisse : instable, plantage fréquent

- Manque de sécurité (copie du fichier intégral ).

- Même lors de la copie du répertoire easyshop aucune donnée confidentielle n’est volée.

- Problème de liaisons avec le site Web (stock non mis a jour en temps réel).

- Le site Web qui sera développé sera connecté en temps réel à la base de

Easy Shop | P. 8

Page 9: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

données

- Problème d’incrémentation de compteur dans les notes de crédit.

- Lenteur des recherches

- Difficulté des recherches (recherche par string)

- Pas de rappels de paiements - Gestion de rappels des paiements avec filtre et dates limites (paiements fin de mois … ).

- Pas de ligne de crédit - Ligne de crédit gérable paramétrable.

- Pas de gestionnaire d’inventaire FIFO correct (travaillait toujours avec le dernier cost price ).

- Inventaire calculé en fonction des cost price restant dans la table fifo.

- Pas de télé distance - Base de données en ligne (travaille en télé distance moyennant ligne internet).

- Pas de vérification de prix lors de transfert

- Check prix lors de transfert d’offres vers commandes, commandes vers factures, offres vers factures.

- Définir Remise/ ristourne en % - Définir prix : ristourne %- Manuel

- Vente d’articles avec marge négative.

- Historique d’achat - Evolution prix d’achat Graphique.

Chapitre III : Analyse Fonctionnelle.

III.1 : Schéma Entités – Associations :

Easy Shop | P. 9

Page 10: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

III.2 : Modèle Relationnel :

Easy Shop | P. 10

Page 11: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Easy Shop | P. 11

Page 12: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre IV : Analyse Technique :

IV.1 - Petite parenthèse sur les droits utilisateurs sur la base de données :

Seulement 2 droits sont appliqués sur la base de données (DB Read, DB writer). Un utilisateur général sera utilisé pour se connecter à la DB. On évitera donc d’utiliser le compte SA pour des raisons de sécurité.

Aucun filtrage des droits utilisateurs sur la base de données ne sera géré par cette méthode. L’ensemble des droits seront définis et gérés par le logiciel en lui-même (Voir Chapitre V Use case ).

L’accès au serveur via Microsoft SQL Server Management Studio ne sera donc pas possible !

IV.2 - L’accès serveur :

L’accès sera limité au sein de l’entreprise. La base de données pourra être modifiée ou adaptée via le logiciel Sql management studio express. Compte administrateur désactivé à distance. Accès Serveur nécessaire.

- Le mot de passe utilisé dans Easy Shop pour la connexion à la base de données sera crypté dans un fichier texte.

IV.3 - Le développement :

L’ensemble du programme est développé en csharp. ( .Net Framework 3.5 ).

IV.4 - La modélisation de la base de données :

Utilisation de Win design : en mode compatibilité sql server -> aucun souci rencontré pour l’export vers le sql server 2008.

IV.5 - O.S :

Le logiciel sera déployé sur plusieurs plateformes : Windows XP, Windows Seven, Windows Vista.

Easy Shop | P. 12

L’ensemble des tests effectués tout au long du développement se baseront sur SQL server 2008 tournant sur un Windows server 2003.

Page 13: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

IV.6 - Aperçu de l’architecture Principale du logiciel :

Easy Shop | P. 13

Page 14: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

IV.7 - Architecture globale en couches : (Schéma).

Easy Shop | P. 14

Page 15: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

IV.8 - Architecture globale découpée selon les couches.

a) Use Case : Login Utilisateur

Pour l’authentification utilisateur, Le client dispose du module d’interface « Accueil ». Lors du traitement d’authentification de celui-ci et de sa validation, le logiciel utilise les ressources de la table « users », si celle-ci est valide le traitement de l’authentification redirigera l’utilisateur vers l’interface principale du programme ( Main form ).

Spécifications :

- Paramètre in : login - mot passe.

- Paramètre retourné : Redirection de l’utilisateur vers l’interface principale.

- Pré condition : ouvrir l'application

- Condition : saisir le login et mot de passe (valides).

- Post-condition : Base de données disponible. Validité des données rentrées.

- Gestion des cas d’erreur & d’exception : Libellé message d’erreur - croix rouge indiquant l’indisponibilité de la base de données.

b) Use case : Rappel de paiements

Pour le rappel de paiement, le client dispose du module d’interface << Rappel de paiements >>. Lors de la validation de l’envoi d’un rappel pour une facture, le système utilisera les ressources de la table « Factures » de la base de données afin de lister les factures impayées. Après sélection le traitement formulaire génère un PDF stocké sur le disque dur nommé de l’id de la facture. Ce dernier sera joint à l’email lors de l’expédition via l’interface Email et envoi celui-ci au client , une notification de l’envoi de celui-ci lui succède.

Spécifications :

- Paramètre in : listing des non payés

- Paramètre retourné : Envoi de l’email – Notification de l’envoi

- Pré condition : ouverture du module, sélection du client à traiter.

- Conditions : disposer des droits pour le module. Sélectionner une facture.

- Post-condition : Base de données disponible. Validité du format de l’email.

- Gestion des cas d’erreur & d’exception : Alerte Email non valide.

Easy Shop | P. 15

Page 16: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

IV.7 - Aperçu d’une partie des différentes fonctions présentes dans EasyShop + Droits.

Fichier Paramètres Maintenance Encodage ( Entrée de Stock ) Ticket FacturationGlobal Owner Info

EDIT_GLOBAL_OWNER_INFO

- Compteurs F/T/O Assignation des compteurs

 EDIT_COUNTER

- Catégories Ajouter Editer Cacher

Décacher.

 EDIT_CATEGORY

- Nouvelle Commande Fournisseur

MODIFICATION_STOCK

- Nouveau Ticket -Nouvelle Facture

-Liste Facture

- Import Importation des

données clients Importation Code

Postal Importation Data

Fournisseurs

IMPORT_DATA

- Marge d’achat

Définir la marge par défaut a effectuer sur le prix d’achat de l’article

EDIT_MARGIN_PRICE

- Clients Ajouter Editer Cacher

-  CREDIT_LIMIT

- Clients Genre-> Ajouter-> Editer

- Liste Commande Fournisseur

MODIFICATION_STOCK

- Liste Ticket -Note d’envoi

- Se délogguer Imprimantes

- Code Postal

Ajouter Editer

- Nouvelle Facture Achat Fournisseur

MODIFICATION_STOCK

- Clôture de Caisse

 CLOSING_CASH

-Nouvelle Note de crédit - Liste Note de crédit

EDIT_CREDIT_NOTE

- Quitter - Constructeurs-> Ajouter-> Supprimer

- Liste Facture Achat Fournisseur

MODIFICATION_STOCK

-Journal de caisse

CLOSING_CASH_JOURNAL

- Méthodes de paiement Ajouter Editer Cacher

EDIT_PAYMENT_METHOD

- Fournisseurs

 EDIT_SUPPLIER

- Mouvement de Stock Ajouter Supprimer

MODIFICATION_STOCK

-Rappels de paiement

PAYMENT_REMINDER

- Email Sender / Server Configuration

EDIT_MAIL_CONFIGURATION

- Pays Ajouter Editer

- Taux Tva

 EDIT_TVA

Easy Shop | P. 16

Page 17: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

- Taxes

 EDIT_TAXES

Easy Shop | P. 17

Page 18: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre V : USE CASE :

Comme expliqué précédemment dans l’avant propos, l’ensemble de l’analyse a été effectuée sous forme de USE CASE. Cette méthode s’est avérée la plus efficace pour comprendre le système actuel, et ainsi d’y apporter les solutions les mieux adaptées.

V.1.1 - Authentification de l’utilisateur et définition des variables globales.Pourquoi un login ? Demande du client : 

Afin de pouvoir suivre le travail de ses employés, le patron de la société souhaite pouvoir effectuer certains contrôles ou statistiques sur les ventes des produits. Il souhaite aussi avoir la possibilité de restreindre l’accès à certains modules pour des questions de sécurité.

Les points importants requis : 

- Suivi des ventes (qui a vendu quoi ? responsabilité des ventes … Savoir qui a vendu l’article au client si réclamation client, qui est en faute ?).

- Qui peut faire quoi ? (définir les actions possibles pour chaque utilisateur distinct).- Facilité de recherches sur un ticket, factures, encodages par utilisateur. On marque l’utilisateur qui a créé la

facture ou le ticket.- Possibilité de statistiques en fonction des résultats des différents vendeurs, …

V.1.2 - Analyse du Login utilisateur :a) Use Case : Connexions d’un utilisateur (light, et approfondi).b) Explication des variables globales utilisées / Variables qui suivront l’utilisateur tout au long de sa session sur le programme. Pourquoi ? De qu’elle manière ? c) Sécurité du module de connexion – Cryptage/Décryptage des données lors de la connexion.d) Point de Vue visuel : La connexion de l’utilisateur

a) USE CASE : Identification de l’utilisateur travaillant sur le programme

RESUME : Définition des variables personnelles liées à l’utilisateur courant.

ACTEUR : Utilisateur pourvu / dépourvu de droit.

PRE-CONDITION : Disposer d’un compte utilisateur créé précédemment par un administrateur 

DESCRIPTION :       L’utilisateur va pouvoir se connecter au système grâce à son Login / Password. Ce login permettra de définir les différents droits de l’utilisateur pour l’accès aux différents modules contrôlés.

Easy Shop | P. 18

UTILISATEUR

Login

Délègue des droits

Système

Page 19: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use case simplifié      (Login user) :   

Lancement Programme

Demande d'authentification

Utilisateur

SystèmeVerif_login_password

Remplit Login / Password

Lancement Main Form

Vérifie Authentification

nok

ok

Easy Shop | P. 19

Lancement du programme par un utilisateur :

- Demande de login- Lancement ou boucle sur la demande d’un login valide.

Page 20: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use case Login User détaillé      :  

Récupère et Crypte Le Mot de Passe en MD5

Système Appel Méthode Authentification check

nok

Système

Verif_login_password(from Logical View)

Remplissage Login / passwordUtilisateur

(from Logical View)

Validation

Définition des Variables Globales

Chargement Main Form

Chargement Data From XML File

Easy Shop | P. 20

Nous remarquerons :

- Ajout du cryptage du password en MD5 pour la vérification au sein de la base de données. On évite ainsi dans le cas d’une écoute réseau le transfert en clair du login et du mot de passe.

- Notons l’apparition des variables globales qui seront expliquées par la suite.

- Chargement de divers paramètres supplémentaires via le fichier XML dans les variables globales.

Page 21: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Diagramme des séquences Login / User      :  

: Utilisateur : Utilisateur : Système : Système DB USERSDB USERS

1: Envoi Login Password

2: Cryptage MD5

3: Vérif Login Password

4: True / False

5: Récupère Info Users Complet

6:

7: Définition Global Variables

8: Load Xml Parameters

9:

10: Definition Global Var restantes

11: Load Main Form.

12: Actions

Easy Shop | P. 21

Page 22: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Schéma de la dynamique ( Connections User ).

Choix Authentification Login

Invite Login / Mot de Passe

Invite à l'authentification de l'utilisateur

Entrée Login / Mot de Passe

Connection Click

Validité Log + MDP

Erreur Connection

Récupération Variable Global

Ouverture Main Form

Invitation BarCode

Entrée BarCode

Connection Click -

Erreur Connection -

Easy Shop | P. 22

Page 23: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

b) Les variables globales utilisées :Nous avons vu dans le schéma précédent qu’EasyShop charge après authentification de l’utilisateur, une série de paramètres nécessaires au fonctionnement du programme. Quel en est le but ?

Pourquoi des variables globales      :   

Les variables globales serviront à :

- stocker le nom de l’utilisateur actuel ; prénom, login, ainsi que son numéro d’identification unique dans la base de données. (Nous nous servirons de ces paramètres pour les créations de factures, tickets … -> Auteur de la facture ou du ticket …). Le Nom, Prénom pour les statistiques ou messages envoyés … ( Tchat local, tâches utilisateurs ).

- Stocker les différentes valeurs des compteurs ticket, facture … (nous allons voir par la suite pourquoi dans le chapitre suivant).

- La marge bénéficiaire par défaut définie pour les articles. On définira la marge par défaut à effectuer sur le prix d’achat d’un article afin de déterminer ou de donner idée du prix auquel on souhaiterait vendre le produit.

- Les paramètres du serveur sortant pour les emails (Utilisation pour les rappels de paiements).- L’expéditeur de l’email par défaut pour les rappels de paiements.- L’imprimante par défaut à utiliser pour l’impression.

Analyse du chargement des variables et extraits de code :

Comment sont stockées ses variables :

Enumération des composantes du fichier xml contenant les paramètres de l’application :

<?xml version="1.0" encoding="utf-8"?><config> <connectionString>database=easyshop;server=mcfly588.dyndns.org;User ID=sa;pwd=</connectionString> <CptOffre>坻鸸㎭Α</CptOffre> <CptTicket>坻鸸㎭Α</CptTicket> <CptCmdCli>坻鸸㎭Α</CptCmdCli> <CptFact>坻鸸㎭Α</CptFact> <CptCreditNote>坻鸸㎭Α</CptCreditNote> <Fiscal_year>끭䴠쯨廧䀻ᄦ ᰚ</Fiscal_year> <Marge>34</Marge> <Defaut_Printer_Global>PDFCreator</Defaut_Printer_Global> <Email_Sender>[email protected]</Email_Sender> <Smtp_Sender>smtp.skynet.be</Smtp_Sender></config>

Easy Shop | P. 23

Un fichier XML reprenant la configuration non sensible du POSTE (chaque poste possédera un fichier XML, ceci afin de permettre de travailler sur plusieurs années fiscales différentes, l’imprimante par défaut à utiliser pour le poste en cours, ou encore de paramétrer sur quel serveur travaille l’application, …)

Page 24: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

C) La couche applicative : extraits de code et sécurité des variables (Cryptage / Décryptage ).

Nous avons pu voir à la page précédente que l’ensemble des données reprises dans le fichier config.xml sont illisibles pour l’utilisateur averti qui aurait une mauvaise intention sur le programme.

Les données sensibles seront donc protégées via un algorithme de cryptage !

La sécurité      du fichier contenant les différentes variables chargées :   

Rappel      :  

Le cryptage / Décryptage de l’application      :  

Fonction de cryptage du fichier xml :

Les différentes valeurs des compteurs seront cryptées afin d’éviter la modification manuelle ainsi que l’année fiscale en cours.Etudions par exemple l’utilisation du module de cryptage / décryptage pour le chargement du mot de passe pour l’accès à la base de donnée. Ce mot de passe se trouvera dans un fichier externe appelé PASSWORD.TXT qui sera crypté de la même manière que les différents compteurs.

Couche applicative      (extraits de code)      -  a)  Exemple de fonction de Cryptage.

public string Md5Encrypt(string original) { String password = "4"; MD5CryptoServiceProvider hashMd5 = new MD5CryptoServiceProvider(); byte[] passwordHash = hashMd5.ComputeHash( UnicodeEncoding.Unicode.GetBytes(password));

TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = passwordHash;

des.Mode = CipherMode.ECB;

byte[] buffer = UnicodeEncoding.Unicode.GetBytes(original);

return UnicodeEncoding.Unicode.GetString( des.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length)); }

Easy Shop | P. 24

En cas de chargement de valeur non cryptée le programme n’autorisera pas la connexion. Exception gérée par le programme -> Maintenance Requise !

Page 25: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

b) Fonction de décryptage.   

public string Md5Decrypt(string encrypted) { String password = "4";

MD5CryptoServiceProvider hashMd5 = new MD5CryptoServiceProvider(); byte[] passwordHash = hashMd5.ComputeHash( UnicodeEncoding.Unicode.GetBytes(password));

TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = passwordHash; des.Mode = CipherMode.ECB;

byte[] buffer = UnicodeEncoding.Unicode.GetBytes(encrypted);

return UnicodeEncoding.Unicode.GetString( des.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length)); }

Afin d’établir une connexion à la base de données, le programme lira donc l’item <connexionString> se trouvant dans le fichier xml auquel la fonction Md5Decrypt rajoutera le mot de passe décrypté à partir du fichier texte.

L’application EasyShop sera accompagnée d’un petit projet de cryptage afin de générer le mot de passe crypté à insérer dans le fichier password.txt pour la connexion à la base de données. -> Mot de passe externe au programme et sécurisé.

D) Point de vue Visuel : Impression d’écran Page Login Principal.

Easy Shop | P. 25

- Procédure d’authentification o Login / Passwordo BareCode

Dés le lancement du programme l’utilisateur sera invité à se loguer. Pas d’action possible sur le programme sans le login utilisateur.

Page 26: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V. 2. La gestion de l’année fiscale :

USE CASE : L’utilisateur veut pouvoir définir son année fiscale de travail. 

RESUME : Définition des variables personnelles  liée à l’utilisateur courant au chargement du programme

ACTEUR : Utilisateur pourvu / dépourvu de droit.

PRE-CONDITION : Disposer d’un compte utilisateur créé précédemment par un administrateur 

     Disposer des droits pour la modification de l’année fiscale si souhaité.

DESCRIPTION : L’utilisateur va pouvoir définir son année fiscale de travail tout en étant alerté des risques encourus de manière claire.

V.2.1 - Présentation de la problématique de l’année fiscale et pourquoi l’avoir laissé définissable manuellement :

V.2.2 - Use Case en détails.

V.2.3 - Couche applicative – Extraits de code.

V.2.4 - La définition / réaffectation des compteurs (Visuel).

V.2.1 - Présentation de la problématique de l’année fiscale et pourquoi l’avoir laissé définissable manuellement :

Pourquoi rendre les paramètres compteurs modifiables      :  

oL’année Fiscale : Afin de laisser la possibilité à l’utilisateur de continuer à créer des factures en travaillant par exemple sur une année antérieure, le logiciel chargera l’année fiscale sur laquelle on souhaite travailler à partir du fichier XML.

oCompteurs Offres / Factures / … : Avoir la possibilité d’installer EASY SHOP dans une entreprise en cours d’année (grâce au paramètre lu à partir du xml) !!!!!! On ne va pas recommencer les factures au numéro 1 au milieu de l’année

Objectif du module : avoir une interface claire et contrôlée afin de pouvoir définir la numérotation de départ souhaité !

oCette numérotation devra être revue à chaque début d’année afin de recommencer à partir 1 la numérotation (très importante, nous verrons au point suivant la gestion d’alerte pour le contrôle de l’année fiscale et numéro).

La définition du numéro (ticket, facture, offre, crédit note) sera effectuée par un trigger au sein de la base de données, nous verrons comment dans le chapitre suivant.

Easy Shop | P. 26

Page 27: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use Case   : Analyse Activity Model   ( Light ) :

Login USER

Vérification Date Server

Différence Date Pc et Server ?

Alerte Différence de Date

Chargement Easy Shop Normal

Choix Utilisateurs - Réassignation Compteurs

Demande de Définition Du compteur

Ecriture dans le Fichier XML

non

Easy Shop | P. 27

- Nous partirons de l’idée que le serveur 2003 utilisé pour le développement du logiciel et le stockage de la base de données sera suivi de manière régulière.

- De par cette maintenance régulière, nous nous baserons sur l’heure du serveur afin de vérifier l’année fiscale supposée être en cours.

- Synchronisation du serveur via un serveur NTP.

Page 28: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.2.2 - BIS : Use Case en détails - Vérification de la date serveur détaillée :

Login USER

Vérification Date Server

Différence Date Pc et Server ?

Alerte Différence de Date

Chargement Easy Shop Normal

Choix Utilisateurs - Réassignation Compteurs

Demande de Définition Du compteur

Ecriture dans le Fichier XML

non

Vérification droits utilisateurs

Droit édition?

Validation Formulaire

Demande Login Utilisateur avec droit

Cryptage

Easy Shop | P. 28

- Dans le cas d’une sélection négative lors de la réassignation du compteur, EasyShop alertera l’utilisateur de manière régulière !

- EasyShop affichera également l’année fiscale de travail en rouge afin d’attirer l’attention de l’utilisateur.

- Dans le cas négatif : easyshop charge les variables globales de manière standard comme vu dans le premier chapitre (use case simplifié ici).

Page 29: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.2.3 - Extrait de code de la vérification des 2 dates :

private void loadtimeserver() { DataSet dsServerTime = sqlrequest.GetServerDateTime(); DataRow ServerTime = dsServerTime.Tables[0].Rows[0]; textBox_time_server.Text = ServerTime[0].ToString(); DateTime ServerTimea = (DateTime)ServerTime[0]; int YearActual = ServerTimea.Year; int FiscalYearLoad = Convert.ToInt32(GlobalVariable.Fiscal_Year); label_fiscal_year_load.Text = FiscalYearLoad.ToString(); //label_fiscal_year_load.BackColor = System.Drawing.Color.Green; // on va vérifier que l'année fiscal en cours est correcte sinon on demande la revalidation des compteurs pour la nouvelle année.

if (YearActual > FiscalYearLoad) { DialogResult reply = MessageBox.Show("La date Fiscal ne semble plus être valide ! Souhaitez-vous réassigner les compteurs ?", "YesorNo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (reply == DialogResult.Yes) { Edit_Increment Fen_Edit_inc = new Edit_Increment(); Fen_Edit_inc.ShowDialog(); } } //on revérifie si la variable a été changée et on affiche en rouge si non. FiscalYearLoad = Convert.ToInt32(GlobalVariable.Fiscal_Year); if (YearActual > FiscalYearLoad) { label_fiscal_year_load.BackColor = System.Drawing.Color.Red; }

}

Easy Shop | P. 29

Page 30: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Zoom sur une fonction de l’écriture d’un paramètre compteur dans le fichier xml.

Petit aperçu du fichier xmlrw.

Fonction écriture / Lecture   :

public static string GetFiscalYear() { string Fiscal_Year = "";

try { xmlDoc.Load(Application.StartupPath + "\\config.xml");

Fiscal_Year = xmlDoc.SelectSingleNode("config/Fiscal_year").FirstChild.Value.ToString();

Fiscal_Year = Decrypt(Fiscal_Year); //MessageBox.Show(Fiscal_Year.ToString()); } catch (Exception e) { MessageBox.Show(e.Message); }

return Fiscal_Year;

}

public static void SetFiscalYear(int Fiscal_year) { try { String Fiscal_year_encrypt = Fiscal_year.ToString(); Fiscal_year_encrypt = Encrypt(Fiscal_year_encrypt);

System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument(); xmlDocument.Load(Application.StartupPath + "\\config.xml");

// For example: XmlNodeList elemList = xmlDocument.GetElementsByTagName("Fiscal_year"); for (int i = 0; i < elemList.Count; i++) {

elemList[i].InnerXml = Fiscal_year_encrypt.ToString(); }

Easy Shop | P. 30

Nous utiliserons le fichier xmlrw.cs (fichier permettant la lecture et l’écriture du fichier xml avec cryptage / décryptage) pour le stockage des compteurs sur le poste local.

using System.Security.Cryptography;using System.IO;

- Utilisation des librairies framework pour le cryptage des données.

- IO : Input Output, librairie permettant la lecture / écriture de fichier.

Page 31: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

xmlDocument.Save(Application.StartupPath + "\\config.xml");

Initialize(); } catch (Exception e) { MessageBox.Show(e.Message); }

}

V.2.4 - Résultat visuel pour l’utilisateur du programme :

- L’alerte Utilisateur en cas de changement d’année :

o Illustration de l’alerte en cas d’utilisation du logiciel dans une année fiscale non « valide » :

o La vérification de l’année fiscale au démarrage du programme (fonctionnement):

Lors de la connexion de l’utilisateur au programme, la main form va se connecter sur la base de données du serveur et récupérer la date de celui-ci.

L’objectif étant d’alerter l’utilisateur qu’il doit changer son année fiscale de travail !!

Lors du passage au 1er Janvier EasyShop Notifiera donc l’utilisateur du changement d’année et proposera automatiquement de réassigner les compteurs (ceux – ci chargés également à partir du fichier XML).

Easy Shop | P. 31

On remarque que le champ sur lequel on travaille est toujours en clair aussi bien dans le xmlwriter que dans le fichier XML. Ces données seront également cryptées pour la suite du projet !

Page 32: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

o Illustration de la comparaison entre les 2 dates ( client – serveur )   :

Le programme compare les 2 dates client et serveur, s’il remarque une anomalie dans les dates, automatiquement, il en avertit l’utilisateur et bloque le lancement du programme.

Easy Shop | P. 32

- Présence d’un administrateur ou Utilisateur avec droit d’incrémentation requis, le premier Janvier de chaque année !!! Il faut un droit pour modifier les compteurs !!!!

- Requête imposée par le gérant de la société.

- Le gérant se chargera du paramétrage du programme le premier de l’an.

- L’année fiscale sera utilisée dans le marquage des commandes, offres, tickets, factures …

Page 33: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Visuel   : Le programme lance la fenêtre de contrôle des compteurs si l’utilisateur le souhaite   !

Définition des compteurs   : Fenêtre Incrément   ( ouverture à condition d’avoir le droit ) :

Easy Shop | P. 33

- Réinitialisation de tous les compteurs à 1 (valeur de départ).

- Automatiquement easyshop appelle la procédure d’écriture du fichier xml tout en cryptant la valeur avec l’insertion dans le fichier.

- Les valeurs sont automatiquement rechargées à partir du fichier XML, on contrôle ainsi la bonne écriture du fichier.

- La notification du rechargement du fichier sera notifiée dans la suite.

- Nous noterons la présence d’une double confirmation sur le bouton reset all !

Page 34: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.2.5 - Le fonctionnement de l’incrémentation des numéros de factures / tickets en détails … Problématique      :   

- Légalement Chaque Facture / Ticket doit être << taggué d’un numéro et de l’année fiscale >>.- Chaque numéro doit être unique et incrémenté pour chaque année fiscale !

Use case      :   

- 2 Utilisateurs travaillent sur le programme et cliquent simultanément sur nouveau ticket. Comment gérer l’incrémentation du compteur fiscal sans avoir de doublon ?

La fonction de des triggers d’insertion :

- Le trigger se positionne sur l’entrée insérée et tente d’insérer le numéro qu’on lui a demandé de la manière suivante :

Le trigger recherche le numéro le plus grand dans la base de données, en fonction de l’année sur laquelle on travaille et définit le numéro actuel de la facture.

o 1) Si le trigger n’a pas de valeur maximale définie, il encode le numéro de facture passé par la requête sql (+1) ! (explication à venir).

o 2) Si le trigger détecte déjà une entrée dans la table de destination, il reprend le dernier numéro défini dans cette année fiscale et l’incrémente de 1.

Pourquoi avoir géré ceci par trigger      ?  

Le trigger gère les numéros à l’insertion, on est donc certain de ne pas avoir de doublon étant donné que chaque requête sql est traitée l’une après l’autre … Ceci évitera de se retrouver avec 2 numéros de facture identiques si 2 utilisateurs cliquent sur « créer facture » simultanément.

L’option du Begin transaction sql aurait pu être également envisagée en incluant la récupération du plus grand numéro présent dans la base de données et sur l’année fiscale en cours (Autre méthode de travail).

Exemple d’un trigger  utilisé pour l’incrémentation      :  

CREATE TRIGGER FACT_INC ON FACTURE_VENTE AFTER INSERTASBEGINDECLARE @maxvalue INTDECLARE @ID uniqueidentifierSET @ID = (SELECT ID_FAC FROM inserted)

SELECT @maxvalue = MAX(NUM_FAC) FROM FACTURE_VENTE

WHERE DATE_FAC=FACTURE_VENTE.DATE_FAC

SET @maxvalue = @maxvalue+1 UPDATE FACTURE_VENTE SET NUM_FAC = (@maxvalue) WHERE FACTURE_VENTE.ID_FAC=@IDEND

Easy Shop | P. 34

Le Trigger sélectionne dans la base de données le plus grand nombre trouvé pour l’année fiscale insérée.

Si un numéro est trouvé il l’incrémente automatiquement.

De cette manière, comme l’on passe dans l’insertion de la première facture le numéro de départ (paramétrable dans le menu compteur), ceci permet de spécifier la première valeur générée à l’insertion (+1).

Pour la prochaine entrée, il prendra donc le plus grand nombre trouvé dans la table et l’incrémentera.

De cette manière on est sur que le compteur est unique et incrémenté pour l’année fiscale en cours, et ainsi non avons la possibilité de préciser le numéro de départ.

Page 35: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Même principe pour la partie atelier du magasin ( Encodage des réparations PC au sein de l’entreprise ) : 

CREATE TRIGGER ATELIER_INC ON ATELIER AFTER INSERTASBEGINDECLARE @maxvalue INTDECLARE @FISCAL_YEAR_SAVE INTDECLARE @ID uniqueidentifierSET @ID = (SELECT ID_REP FROM inserted)SET @FISCAL_YEAR_SAVE INT = (SELECT FISCAL_YEAR_REP FROM inserted)

SELECT @maxvalue = MAX(NUM_REP) FROM ATELIER where FISCAL_YEAR_REP=@FISCAL_YEAR_SAVE

SET @maxvalue = @maxvalue+1 UPDATE ATELIER SET NUM_REP = (@maxvalue) WHERE ATELIER.ID_REP=@IDEND

Easy Shop | P. 35

Le trigger pour le numéro des réparations en atelier fonctionnera de la même manière, sauf que celui-ci commencera par défaut à 1. Nous n’avons pas besoin de paramétrer le compteur, aucune obligation légale contrairement aux factures ou tickets.

Il se chargera simplement de récupérer le dernier numéro de l’année fiscale dans laquelle on travaille, et l’incrémente de 1.

Nous n’avons pas d’obligation à reprendre un ancien numéro de départ pour la numérotation des fiches de l’atelier en cours d’année dans le cas d’une nouvelle installation d’EasyShop, contrairement à la facture !

Page 36: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.3 : La gestion des droits Utilisateurs :

Maintenant que nous avons étudié le chargement de easyshop, grâce aux variables globales précédemment définies, nous allons pouvoir obtenir les droits de l’utilisateur courant grâce à son GUID ( Global Unique Identifier ).

USE CASE  :  L’utilisateur sans droit veut se connecter à un niveau supérieur de l’application auquel il n’est pas autorisé.

RESUME Object :

Le client souhait pouvoir appliquer une série de restrictions sur l’ensemble des modules sensibles du logiciel tout en gardant la possibilité d’autoriser de manière temporaire, l’accès à ce module grâce à  l’intervention d’un administrateur. L’utilisateur standard sera  autorisé à accéder au module de manière temporaire.

ACTEUR : Utilisateur / administrateur

PRE-CONDITION : Disposer d’un compte utilisateur créé précédemment par un administrateur 

DESCRIPTION :       L’utilisateur clique sur une fonction du logiciel auquel il n’est pas autorisé d’accéder : que se passe-t-il ? 

Quels sont les possibilités d’accéder malgré tout à ce module ? C’est ici que l’administrateur rentre en jeu.

Aperçu      :  

V.3.1 - Use Case V.3.2 - Pourquoi avoir implémenté des droits sur chaque LoginV.3.3 - Point de vue Visuel : l’alerte utilisateur !

Présentation de la problématique :

EasyShop proposera dans sa version finale une longue liste de droits applicables pour chaque utilisateur que nous verrons par la suite.

Pourquoi ? - Afin de limiter les accès aux fonctions du programme par utilisateur comme précédemment présenté.- Eviter que les données confidentielles à l’entreprise ne soient accessibles (le prix d’achat de l’article, les

entrées de stock, les coordonnées fournisseurs, …) par un quelconque utilisateur.

Cas concret      :   

Dans le cas d’une vente d’un article (sous forme de ticket, ou facture) l’utilisateur peut spécifier, si souhaité, une remise sur le produit.

Tous les utilisateurs ne peuvent pas disposer de ce droit !

Seuls, les utilisateurs avec le droit spécifique EDIT_PRICE pourront alors éditer et effectuer une remise sur le produit.

Easy Shop | P. 36

Page 37: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.3.1 : Use Case : Le système d’alerte utilisateur : Contexte :

Appelle Page Spécifique

Retour Erreur

Demande de Login Pour un Droit Spécifique

User

Remplit la Form de demande Login

Sys(from Logical View)

Résultat Accept / Denied

Easy Shop | P. 37

UTILISATEUR

Demande Le chargement d’une page

Autorise / Demande AutorisationSystème

Page 38: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.3.2 : Explication du fonctionnement de la vérification des droits pour chaque utilisateur :

User Login For special right access      :   

Nous parlerons dans l’ensemble des cas étudiés dans Easyshop de droit spécifique.

Pourquoi spécifique : 

Il doit nous être possible, lors de l’utilisation du programme par un utilisateur dépourvu de droit, de pouvoir rentrer un code administrateur afin d’effectuer une action de niveau supérieure. Dans le cas traité ici, l’édition de prix du produit :

Voyons le message généré par le système lors de l’absence de droit pour l’utilisateur.

Dans le cas où l’utilisateur n’aurait par exemple pas le droit d’accéder à une certaine fonctionnalité, EasyShop affichera donc une alerte pour indiquer le refus de l’accès au module !

- Ensuite si la connexion est refusée, EasyShop proposera la possibilité de se loguer ! Cette fonctionnalité permettra à un administrateur ou un utilisateur de niveau supérieur d’appliquer une autorisation temporaire pour l’accès à cette page !

- Cette fonction n’affecte en rien les variables globales, dés la fermeture ou l’accès à une autre zone non autorisée le programme redemandera automatiquement la nouvelle connexion d’un utilisateur avec droit !

- =>> Droit TEMPORAIRE.

Easy Shop | P. 38

Refuse Autorisation

SystèmeDemande Login

UTILISATEURAdministrateur

S’authentifie avec un compte de niveau supérieur pour autoriser l’accès temporaire à l’utilisateur

standard

Page 39: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Fonction de Vérification des droits utilisateurs      :  

Exemple pour la vérification du droit EDIT_OWNER_INFO :

Guid ID_USR_RIGHT_REQUIRED = sqlrequest.GetIdRightForFen("EDIT_OWNER_INFOS");

// on va vérifier si l'utilisateur connecté est repris dans la liste des users liés à ce droit: Boolean Authorised_Usr = sqlrequest.GetAutorisationForUsr(ID_USR_RIGHT_REQUIRED, new Guid(GlobalVariable.UserGuid));

if (Authorised_Usr == false) { MessageBox.Show("Accès Refusé, Vous n'avez pas les droits !"); // on va réclamer l'autorisation !

Users_Right_Request Fen_Right_Request = new Users_Right_Request("EDIT_OWNER_INFOS"); DialogResult resultright = Fen_Right_Request.ShowDialog(this); if (resultright == DialogResult.Yes) { MessageBox.Show("Access Granted"); } else { Close(); } }

Nous remarquerons donc lors du chargement de la fenêtre, la vérification du droit de l’utilisateur, si le droit n’est pas respecté le système charge donc « le Login Prompt » pour le droit demandé :

Seconde Fonction lors du remplissage de la fenêtre de login      ( LOGIN PROMPT PAGE ) :   

HashPasswordMD5 = null;HashPasswordMD5 = CreateMD5Hash(textBox_password.Text); Boolean checkvalid = sqlrequest.Verif_login_password(textBox_login.Text, HashPasswordMD5); if (checkvalid == true) { //on stock le userguid pour le request user right dsinfousers.Clear(); dsinfousers = sqlrequest.GetdsUsersInfo(textBox_login.Text); DataRow InfoUser = dsinfousers.Tables[0].Rows[0];

Guid ID_USR = (Guid) InfoUser["ID_USR"];

// on vérifie si le user maintenant connecté a le droit :

Guid ID_USR_RIGHT_REQUIRED = sqlrequest.GetIdRightForFen(RIGHT_REQUEST_RECU);

// si l’utilisateur connecté a le droit on valid le dialog result et on return true a la fonction mère. Boolean Authorised_Usr = sqlrequest.GetAutorisationForUsr(ID_USR_RIGHT_REQUIRED,ID_USR);

if (Authorised_Usr == true) { DialogResult = DialogResult.Yes; } }

Easy Shop | P. 39

Page 40: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Fonction de vérification de l’autorisation de l’utilisateur      :   

public Boolean GetAutorisationForUsr(Guid ID_USR_RIGHT, Guid ID_USR) { Boolean Authorised = false; try { SqlConnection connection = new SqlConnection(connectString); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.TableMappings.Add("Table", "ID_RECUP"); SqlCommand command = new SqlCommand("SELECT * FROM USERS_RIGHT_LIST where ID_USR=@ID_USR and ID_USR_RIGHT=@ID_USR_RIGHT", connection); command.Parameters.AddWithValue("@ID_USR", ID_USR); command.Parameters.AddWithValue("@ID_USR_RIGHT", ID_USR_RIGHT); command.CommandType = CommandType.Text; adapter.SelectCommand = command; // Fill the DataSet. DataSet dataSet = new DataSet("ID_RECUP"); adapter.Fill(dataSet);

DataTable info = dataSet.Tables[0]; int cpt = info.Rows.Count; if (cpt != 0) { DataRow inforow = info.Rows[0]; //ID_FACT_ACH = inforow[0].ToString();

//MessageBox.Show("ok"); Authorised = true; }

} catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); MessageBox.Show(ex.ToString());

}

return Authorised;

}

Easy Shop | P. 40

Remarques : Utilisation des paramètres pour la fonction sql, afin d’éviter toute tentative de modification du code sql. (Protection contre l’injection Sql ).

L’ensemble des fonctions d’easyshop fonctionnera avec cette méthode.

Page 41: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.3.3 : Illustration :

Fenêtre demandant l’accès temporaire pour une personne ne possédant pas le droit adéquat.

Vérification du login pour accès avec droit spécifique.

Easy Shop | P. 41

Spécification du droit requis

Une seule fois pour une seule fonction !!!Accès Unique pour l’utilisateur dépourvu du droit.

Page 42: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Présentation des droits utilisateurs :

La liste des droits sera accompagnée d’une brève description permettant de rappeler la fonction définie par ce droit ! (Chaque administrateur pourra modifier la description du droit présent dans easyshop si souhaité).

L’ajout des différents droits sera ajouté au fur et à mesure de l’élaboration finale du projet.

Easy Shop | P. 42

Page 43: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Interface permettant de gérer les droits utilisateurs      :   

Easy Shop | P. 43

Page 44: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V. 4 : Encodage des produits et encodage des entrées de stocks.

Maintenant que nous avons défini les droits, et limité l’accès aux pages sensibles, nous allons pouvoir découvrir les différents modules du programme.

Tout d’abord, avant toute vente nous allons devoir encoder notre produit …

Tout produit rentré dans le magasin devra être étiqueté afin de définir sa provenance      !  

- La société étant confrontée à différents problèmes de gestion de garantie, le client a demandé la possibilité de retrouver la provenance et la facture d’achat de l’article.

Le système actuel      :   

-Actuellement le magasin ne gère pas les entrées de stock : pas d’encodage de facture d’achat -> simple quantité rentré et son prix. Manque de lien avec le fournisseur.

Les besoins / Demandes du client :

- Pouvoir connaître de quel fournisseur provient l’article et connaitre sa facture d’achat.

- Avoir un suivi sur les entrées / Sorties (Quel article a été vendu à quel moment ?)

Si l’on veut commander un produit chez le fournisseur et encoder la précommande dans notre logiciel, nous devrons créer notre article au sein du système. Nous allons découvrir ce point dans le chapitre ci-dessous.

Encodage des produits      :  

USE CASE  :  L’utilisateur encode un produit 

RESUME : L’utilisateur va pouvoir créer sa fiche produite s’il en possède le droit ! Différentes options ont été demandées  par le client (Référence, libellé, catégorie, marque du produit …).

ACTEUR : Utilisateur pourvu / dépourvu de droit.

PRE-CONDITION : Disposer d’un compte utilisateur créé précédemment par un administrateur 

         Disposer des droits pour la modification des données d’un article

DESCRIPTION : L’administrateur de la société repère un article intéressant chez le fournisseur et souhaite en passer commande afin de le rentrer en magasin. 

L’administrateur encode donc le produit dans le système avant de créer sa commande fournisseur dans le programme -> Nous verrons l’utilité de ce module dans le chapitre suivant, nous nous intéresserons uniquement au cas de la création de l’article et des possibilités de la fiche article dans le cas actuel.

Easy Shop | P. 44

Page 45: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Encodage de l’article      :   Use case   

Appelle nouvelle fiche Article

Vérification Droit Utilisateur

Remplit La fiche Article

Utilisateur

Demande de Sauvegarde

SYS.(from Logical View)

Vérifie le formulaire

Enregistre les infos de l'article

Création de l'entrée Article Prix

Création de l'entrée Stock Location ( Stock Fictif )

Alerte de Sauvegarde : Article Enregistré !

Easy Shop | P. 45

Sauvegarde du prix de l’article dans une table externe

Initialisation des stocks ( fictif ).

Page 46: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: Utilisateur : Utilisateur : SYS. : SYS. DB - Articlesert

: SYS.DB - Articlesert

: SYS.DB : Article

PrixDB : Article

PrixDB - Stock

LocationDB - Stock

Location

1: Appelle page Création Article

2: Return MSG Login / Chargement Page

3: Remplit Fiche Article

4: Enregistre les infos en variable

5: Demande de Sauvegarde

6: Vérification du Formulaire

7: Insert into

8:

9: Insert Into

10:

11: insert into

12:

13: Message Alerte : Enregistré !

Easy Shop | P. 46

- Entrée des données dans le formulaire- Enregistrement de la fiche article- Création de la ligne article prix pour l’article- Création de l’entrée des stocks fictifs (Quantité Magasin, Réservation, En commande

fournisseur). -> très important pour le STOCK affiché dans le programme et sur le site web (voir plus tard).

- Important aussi, nous introduirons la notion de FIFO dans ce chapitre.

Page 47: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Analyse de la fiche produit au sein du logiciel :

a) Référence produit : définit la référence pour la facilité de recherche d’articles lors d’une vente. Une classification étudiée au sein de l’entreprise permettra de classer les références créées

( EasyShop ne s’en occupe donc pas ). La seule chose donc le programme se chargera est la vérification de doublons (double

référence, ou double libellé …). Le bar code : extrêmement important pour la recherche d’articles également. Catégorie : Obligation de sélectionner une sous-catégorie produit lors de la sauvegarde de

l’article (contrainte imposée lors de la demande de l’élaboration du programme, ceci nous servira dans le moteur de recherche articles -> voir filtres. Ceci sera également utilisé dans le développement futur du site web).

Constructeurs : Constructeur de l’article (voir plus bas). La TVA : définissable dans les paramètres d’EasyShop (Création à souhait) Les Taxes liés :

Recupel Reprobel … Obligation d’afficher les cotisations sur l’impression dynamique des tickets / factures … Egalement paramétrable à souhait via la gestion des taxes

Statut de l’article (caché, non caché). Dernier point Important : l’autostock.

Extrait de code contrôlant la saisie      :   

Boolean Valid = Check_Completed_Form();

// on vérifie que le formulaire est correctement remplit : if (Valid == true) {

}

private Boolean Check_Completed_Form() { Boolean Valid_value_form = true;

if (TypeSauvegarde == "NEW") { String ID_SS_CAT = rowViewCurrentArticle["ID_SS_CAT"].ToString();

if (textBox_reference_art.Text == "") { MessageBox.Show("Référence Null !"); Valid_value_form = false; }

if (textBox_libelle_art.Text == "") { MessageBox.Show("Libellé Obligatoire !"); Valid_value_form = false; }

if (ID_SS_CAT == "") {

Easy Shop | P. 47

Page 48: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

MessageBox.Show("Aucune Sous-Catégorie selectionnée pour l'article !"); Valid_value_form = false;

} if (rowViewCurrentArticle["ID_TVA"].ToString() == "") { MessageBox.Show("Aucune TVA selectionnée pour l'article !"); Valid_value_form = false; }

if (rowViewCurrentArticle["ID_CON"].ToString() == "") { MessageBox.Show("Aucun Constructeur selectionné pour l'article !"); Valid_value_form = false; }

// on va vérifier le doublon Référence dans la base de donnée buisness process :

// on va vérifier les doublons sur le reference !!!Business.Articles_Manager BuisnessCheckReference = new Business.Articles_Manager();

String Reference = textBox_reference_art.Text;Boolean Reference_Already_Present = BuisnessCheckReference.Check_Article_Double_Ref(Reference);

if (Reference_Already_Present == true) { MessageBox.Show("Doublon Référence !");

Valid_value_form = false; }

} else { // dans le cas d'une mise a jour :

} return Valid_value_form; }

Easy Shop | P. 48

- L’ensemble des formulaires du programme seront vérifiés grâce à ce système.

Page 49: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Visuel      :   

Au Final      :   (Découverte du module ‘’création d’articles’’ ).

1) L’encodage des articles dans le système (avec leurs différentes caractéristiques).

2) La définition du prix Normal / Promo de l’article.

3) Les statistiques d’entrées et de sortie.

4) Le classement par catégories / sous – catégories.

Possibilités : créer, éditer, définir les prix de vente ou encore les prix promo des articles vendus en magasin.

A cela s’ajoutera toute une série de petits modules et outils qui vont faciliter la définition et la surveillance des prix ou ventes des produits entre autre, l’utilisation de graphiques expliquant l’évolution du cost price et du prix de vente …

Easy Shop | P. 49

Page 50: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Petite Parenthèse sur les différentes possibilités de la fiche article ainsi que l’auto stock      :  

Lorsque la case Auto Stock sera cochée, lors de la vente d’un article, easyshop vérifiera automatiquement que le stock restant est toujours supérieur à la quantité minimum.

Dans le cas contraire easyshop sélectionnera l’ensemble des utilisateurs possédant le droit « AUTO_STOCK » et enverra une tâche à chaque utilisateur abonné :

- Intitulé : Auto Stock (Référence Produit).- Message : Alerte Auto Stock.

Easy Shop | P. 50

Pour la suite :

- EasyShop sera à court terme capable d’effectuer une précommande de fournisseur de lui-même.

- Dans un premier temps easyshop rassemblera l’ensemble des articles à commander dans un module spécifique.

- L’objectif      :   

- Easyshop devra être capable de sélectionner le fournisseur du produit de lui même.- Mais également être capable de sélectionner le meilleur fournisseur ! (En fonction du Cost

Price d’achat de l’article).

Page 51: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.5 : Définition du prix de l’article.

V.5.1 – Prix Normal / Prix Promo.EasyShop propose 2 grandes fonctionnalités concernant le prix de l’article :

La première permet de gérer son prix de vente << normal >> , la seconde propose une prix promotionnel de l’article ( Date de début et date de fin promo ).Lors de l’ajout d’un article à une offre, commande ou facture easyshop sélectionnera automatiquement le prix promo si la date du jour est comprise entre la date de début de fin. Analysons la sélection du prix de vente lors d’une vente de produit :

- Vente de l’article au prix promo :    

USE CASE : L’administrateur souhaite proposer des articles en promotion pendant un certain temps. Sélection du prix de vente automatique (Promo ou pas) par le système. 

RESUME : l’utilisateur supérieur définit la date de promotion du produit ainsi que son prix promo.

ACTEUR : Utilisateur pourvu / dépourvu de droit.

PRE-CONDITION : Disposer d’un compte utilisateur créé précédemment par un administrateur 

         Disposer des droits pour la modification des données d’un article

DESCRIPTION : l’administrateur possède dans ce modèle, la possibilité de mettre l’article en promotion pour une période déterminée. Sélection de la date de début et date de fin suivant un calendrier proposé par le système.

Lors du dépassement de la période de promotion, le statut << PROMO >> de l’article repasse automatiquement à faux (A vérifier donc chaque jour suivant le souhait du client).

Analyse de la vente d’un article en promotion      :   

Sélectionne article

Définit variable IS_PROMO

Définit Variable Début - Fin Promo

Comparaison à la date du jour

Définition Prix et Affichage Prix

Vendeur

Validation Encodage

SYS(from Logical View)

Easy Shop | P. 51

Page 52: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Extrait de code      :   

// 21/09/2009 AJOUT CHECK PROMOTION VALABLE : // on récupère la date de début et de fin DateTime Date_Debut_Promo = (DateTime)rowpriceline["DATE_PROMO_DEBUT_ART_PRI"]; DateTime Date_Fin_Promo = (DateTime)rowpriceline["DATE_PROMO_FIN_ART_PRI"]; DateTime Date_Du_Jour = DateTime.Now; Boolean Verif_Promo = (Boolean) rowpriceline["IS_PROMO_ART_PRI"]; if (Date_Du_Jour >= Date_Debut_Promo && Date_Du_Jour <= Date_Fin_Promo && Verif_Promo==true) { // l'article est en promotion on set la variable : prixventeHTVA = (decimal)rowpriceline["PRIX_PROMO_ART_PRI"]; } else { prixventeHTVA = (decimal)rowpriceline["PRIX_VENTE_ART_PRI"]; }

// END MODIF LOAD PRICE / PRICE PROMO

Illustration de la définition de la date de promotion de l’article      :   

Illustration de la boîte de dialogue sélectionnant le bon prix promo      :   

Easy Shop | P. 52

Sélection du prix de vente automatique par le système en fonction de la période promotion.

Page 53: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Visuel      pour l’utilisateur ( Définition du prix de l’article pour la vente ) :    

Easy Shop | P. 53

La date de fin d’une promo ne peut évidement pas être inférieure à la date de début.

- Lors de la sélection du début de la promo, automatiquement le calendrier permettant de sélectionner la date de fin est bloqué au minimum à la date de début.

- Promo d’un seul jour autorisé.

Nous remarquerons la présence d’un graphique reprenant en rouge l’ensemble des prix d’achat connu pour le produit, en bleu l’évolution du prix de vente normal de l’article.

Prix Normal

Définition Prix Promo

Page 54: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.5.2 - La définition du prix de manière manuelle lors d’une vente ou d’une remise de prix.

EasyShop devra être capable de gérer les autorisations sur les ristournes accordées ! Exemple : Un stagiaire ne peut octroyer une remise à un client, nous bloquerons donc ceci grâce à un droit et demanderons l’intervention d’un administrateur pour la validation du prix souhaité.

USE CASE : L’utilisateur souhaite modifier le prix d’un article manuellement (On souhaite par exemple faire une ristourne de 5€ sur le produit).

RESUME : l’utilisateur souhaite modifier le prix unitaire du produit -> s’il en possède le droit.

ACTEUR : Utilisateur pourvu / dépourvu de droit.

PRE-CONDITION : Disposer d’un compte utilisateur créé précédemment par un administrateur 

         Disposer des droits pour la modification des données d’un article.

      Présence d’un administrateur pour valider la demande de login d’un utilisateur supérieur.

DESCRIPTION : L’utilisateur définit son prix manuellement s’il en possède les droits !!

o Demande de login si le droit n’est pas présent pour l’utilisateur courant.

Easy Shop | P. 54

UTILISATEUR

Demande l’édition du prix de vente de l’article.

Autorise / Demande Autorisation

Système

UTILISATEUR

Entre son login << administrateur >>

Autorise l’utilisateur simple à spécifier son prix souhaité.

Avec droits.

Page 55: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Affichage Liste Articles

Sélection de l'article souhaité pour la vente

Récupère et définit les variables de l'article dans la fenêtre Ajout Article

IS_PROMO ?

DATE_TODAY >= DATE_DEBUT && DATE_FIN >= DATE_TODAY

PRICE = PRIX_PROMO

oui

PRICE = PRIX NORMAL

Edition Prix Manuel ?

oui

non

non

Droit Utilisateur ?

Valide ?

Prompt Login

Entrée Login / Password

Prompt Price

PRICE = DEFINE_PRICE

Validation

non

Validation Encodage

Définition Price

oui

Définition Manuel du prix de vente par l’utilisateur       lors d’une vente :   

Easy Shop | P. 55

Page 56: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: Vendeur : VendeurSYSSYS ARTICLESARTICLES ARTICLES_PRIXARTICLES_PRIX

1: Liste Articles

2:

3:

4:

5: return list with price article request sql

6: Affichage Liste Articles

7: Select Article

8: Define Article Promo variable True / False

9: Define Var Date Debut / Date Fin

10: Define Article Price

11: Affichage Prix Promo / Prix Normal

12: Demande Edition Manuel Prix

13: Vérif Autorisation

16: Define End Price

15: Validation Prix

14: Affichage Edition Prix

Easy Shop | P. 56

Page 57: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.6 : La rentrée de stocks :

V.6.1 : Analyse du Module d’encodage d’une commande fournisseur.Une commande fournisseur peut préalablement être enregistrée dans EasyShop afin d’accélérer l’encodage des articles lors de la livraison.

Pourquoi avoir implémenté ce module :

Le temps n’est pas toujours présent lors de la livraison d’une commande en magasin, ce module va permettre d’encoder préalablement la marchandise arrivant en magasin. (Grâce au prix d’achat déjà préenregistré ainsi que les quantités, la mise à jour du stock, et la création de numéro de Série se fera via la validation de l’encodage -> de manière très rapide grâce au bouton DELIVERY).

Use Case      :   

a)

b)

Easy Shop | P. 57

UTILISATEUR

Préenregistré la commande

UTILISATEUR

Définit les informations de livraison produit (N° Facture … )

Validation de l’encodage avec mise à jour des données

(Transfert)

Page 58: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Voyons l’impact de la commande fournisseur sur le logiciel      :   

Accès EasyShop      :  

Demande d’informations pour la création de la commande      :  

Easy Shop | P. 58

Sélection du Fournisseur d’où provient la marchandise

Référence transmise par le fournisseur,définit par exemple lors de la commande par le site web du fournisseur

(Ou sur la note d’envoi). Tout dépend le cas dans lequel on se trouve vis-à-vis du fournisseur.

Date souhaitée, ou définie précédemment (date est toujours approximative, ne définira en aucun cas la date de la facture d’achat par la suite).

Voir écran suivant …

La génération d’un numéro de commande interne à l’entreprise sera également ajoutée lors de la création de la commande. (FISCAL YEAR + NUMBER).

Page 59: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Etape Suivante pour l’encodage de la commande fournisseur      :   

Cet écran va permettre l’ajout d’articles en commande, le code fournisseur actuel de l’article, la quantité demandée, ainsi que le prix d’achat de l’article.

Le prix d’achat de l’article est toujours approximatif      : Suivant l’évolution du marché, le prix d’achat du produit peut être modifié lors de l’émission de la facture par le fournisseur !!

EasyShop proposera donc la possibilité de modifier le COST_PRICE de l’article à l’écran « DELIVRY » , fonction permettant de transférer la commande en facture d’achat ( Entrée de stock pour Easyshop ).

Une fois les articles ajoutés à la commande, EasyShop permet à tout moment de transférer la commande en rentrée de stocks ! Lorsque la livraison arrive, l’utilisateur possédant le droit « MODIFICATION_STOCK » n’a plus qu’à adapter le prix d’achat de l’article ainsi que la quantité reçue dans la livraison !

Easy Shop | P. 59

L’impression dans ce module permet de faxer la commande au fournisseur. Certains fournisseurs ne possédant pas de commande en ligne sur leur site internet.

Page 60: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

2 possibilités      :   

- A) Via la fenêtre liste des commandes fournisseurs.- B) A l’intérieur de la commande en elle-même.

Observations      :  

On retrouve ici la commande préalablement créée !

- On notera la présence du nom du fournisseur, l’année fiscale, le numéro interne généré, le numéro de commande fournisseur défini à la création de la commande ainsi que la date de création de livraison souhaitée.

- Filtre présent afin d’effectuer une recherche ciblée parmi l’ensemble des commandes présentes dans le système, et possibilité d’afficher les commandes déjà transférées.

Easy Shop | P. 60

La quantité reçue dans ce module est très importante !!! Ceci permet de garder un œil sur les articles restant en « Back Order » chez le fournisseur. Ceci implique un contrôle de la marchandise à l’arrivée (Le manque de produits livrés est maintenant détecté et surveillé).

Page 61: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Transférons maintenant notre commande en entrée de stocks (facture achat)      :   

Cet écran permet donc à l’utilisateur de transférer ses produits déjà préenregistrés dans le système (gros gain de temps lors de la réception de l’article !!).

Ici, l’utilisateur pourra également rentrer le serial original de l’article (un petit plus pour le contrôle de rentrée en garantie).

Présentation du module      :   

- Les quantités reçues et les quantités restantes      :  

Easyshop permet de définir les quantités arrivées lors de la livraison ! Si un article est manquant, la commande fournisseur reste visible dans la liste récapitulative des commandes.

Lors d’un transfert d’un article, la quantité restante est automatiquement décrémentée, l’utilisateur ne peut bien sûr pas rentrer un nombre de produits supérieurs à la commande (alors on ajoute manuellement l’article dans le mouvement de stocks, ou on rajoute une ligne manuellement dans la commande par la suite ou encore rajout d’une ligne dans le module facture d’achat directement en créant une nouvelle facture).

Easy Shop | P. 61

Possibilité de spécifier la date de la facture, extrêmement important pour les retours en garantie des articles !!! Les fournisseurs demandant la facture d’achat du produit pour le renvoi de marchandise !

Code de l’article Fournisseur (également important pour les retours). Le fournisseur demande également le code figurant sur la facture pour l’attribution d’un numéro RMA.

Référence Facture

Page 62: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Une fois la commande transférée de manière complète, la commande est validée comme transférée automatiquement par le système.

Nous allons maintenant voir l’influence de cet encodage sur le système, mais auparavant petit zoom sur le module facture d’achat.

Easy Shop | P. 62

Lorsqu’une ligne est entièrement transférée, elle disparait immédiatement de la liste « disponible pour le transfert ».

Notons la présence de SERIAL pour le point suivant !

Page 63: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Les incidences de ce transfert      :  

Plusieurs points vont être affectés par le transfert de l’article :

Tout d’abords :

1) L’entrée de stocks:

Les quantités « disponibles », vont être les premiers grands impacts.

Illustration :

Dans le module Listing articles, nous aurons l’aperçu des différentes quantités référencées dans le système.

A) In stock : article de stocks - magasin

B) B.O Customer :

Back Order Customer : quantité produite réservée dans les commandes clients !!

C) B.O Supplier :

Back Order Supplier : nombre d’articles en commande chez le fournisseur (livraison à court terme si tout va bien).

Les livraisons de marchandises se faisant tous les 7jours +-, un utilisateur normal n’aura pas forcément besoin de savoir la date exacte de rentrée. (Voir Gérant car les dates peuvent être très aléatoires).

Easy Shop | P. 63

Page 64: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

2) L’historique (Le Stock modification est mis à jour pour voir l’ensemble des marchandises rentrées).

3) Le FIFO ! (on remarque l’entrée de nos 2 articles à la date du 13).

Insertion des quantités reçues et du prix d’achat de l’article dans la table article stock. Nous analyserons le fonctionnement du fifo en profondeur plus tard dans cette analyse.

Easy Shop | P. 64

Page 65: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

4) La table contenant les numéros de série :

Cette table reprendra l’ensemble des numéros de séries créés à l’encodage de l’article lors de la réception de la marchandise.

- Serial number- Cost price- Date Création Cette table sera liée avec la table stock modification, facture achat, …

5) Le COST PRICE de l’article est mis à jour

Pourquoi ?

o Aide à définir le prix de venteo Permettra de faire un graphique sur l’évolution du prix d’achat de l’article ! (Nous avons vu l’aperçu dans

le module création de l’article).

Easy Shop | P. 65

Page 66: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.6.2 : La présence de numéros de série dans l’insertion d’une entrée de stock.EasyShop fonctionnera dans la première partie de sa phase de développement en gérant toute entrée de stock par la création « propre » de numéros de série. Ce numéro de série est « propre » à EasyShop, celui-ci pourra venir éventuellement se greffer sur le serial du fabricant (Voir la case Serial Prompt dans les entrées de stocks).Le numéro de série est pour le moment généré de manière aléatoire par le système (L’élaboration d’un numéro de série compréhensible pour le vendeur sera étudié pour la fin du projet).

Pourquoi avoir instauré le numéro de série dans les ventes d’articles      :  

Comme souhaité dans le cahier de charge, easyshop doit être capable de savoir quel article provient de quel fournisseur !

Important de connaître :

- Facture achat- Serial Fabricant - Fournisseur- Date de la facture d’achat chez le fournisseur- Code Article BDD chez le fournisseur.

Pourquoi ces informations      :  Certains fournisseurs ont des procédures de retour vraiment laborieuses et ces différents renseignements sont obligatoires afin d’obtenir un numéro de RMA (Return Material Authorization).

Exemple      :   Nous encodons 4 numéros de Série et faisons un petit essai via le logiciel. (Les champs de données Delivry article sont volontairement non vidés pour la démo)

Easy Shop | P. 66

Résultat de l’encodage de 4 articles via le module

<< Delivery >>

Page 67: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Application de la recherche d’un article via le numéro de série      :  

Menu Articles      :  

Recherche d’informations sur un numéro de série      :   

Easy Shop | P. 67

Point extrêmement important pour la gestion des garanties au sein de l’établissement.

- Rappel : Les numéros de séries seront simplifiés pour l’utilisation courante du logiciel ! L’encodage manuel d’un numéro de série de ce genre n’est évidement pas possible pour le vendeur.

Page 68: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Affichage des informations de vente via le numéro de série      :  

L’avantage de ce petit module      :   

Easy Shop | P. 68

Permet de retrouver la facture ou le ticket d’un client rapportant son article en magasin pour une garantie.

- Extrêmement pratique si le client a perdu son ticket.

- Facile pour la société de déterminer si le produit est toujours sous garantie pour le client

- (1 an, 2 ans, 3 ans) …

Page 69: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Concordance du stock Fictif avec les numéros de séries présents dans le système      :   Le stock fictif de l’article doit toujours être concordant avec le stock réel système et le nombre de pièces en magasin.Afin d’éviter de se retrouver avec des discordances, easyshop calculera la quantité de ce produit vendu en fonction de la sélection des numéros de séries.

Use case      :  La quantité vendue doit correspondre au nombre de numéro de série sélectionné lors de la    vente.

Sélectionne Article a Vendre

Chargement des infos de l'article dans le formulaire

Sépcifie quantité souhaité

Comment s'assurer de la concordance des numéros de série dans le système en fonction des ventes

Valide la demande d'encodage de la vente

Proposition de serial ( x fois correspondant à QT définie )

Utilisateur

Sélection Serial(s)

Mise à jour statut serial

SYS(from Logical View)

Réassigne la QT en fonction de ou des sélections

Update

Easy Shop | P. 69

Use Case :

- Le vendeur sélectionne l’article à vendre- Le système complète le formulaire de vente

avec la référence produit, libellé, …- Le vendeur spécifie la quantité qu’il

souhaite vendre.- Validation de la part du vendeur- Le système propose les numéros de série.- Le vendeur sélectionne les numéros.- Si le vendeur ne sélectionne pas autant de

numéros de série que la quantité spécifiée, easyshop adapte la quantité vendue automatiquement, ainsi que le stock fictif !

Page 70: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.7 : La vente de produits aux clients.

Maintenant que nos différents articles sont encodés et arrivés en magasin, procédons à la vente de quelques produits      …    

o Maintenant que nous avons vu les principales fonctions de bases d’easyshop : L’encodage Produit (Référence, Libellé, prix d’achat, prix de vente). Le Login utilisateur avec droits afin de pouvoir utiliser le logiciel de manière restreinte ou complète. Un aperçu des numéros de séries Les entrées de Stock

Nous allons pouvoir entamer l’analyse de nos ventes via le logiciel :

Les différents USE CASE pour la vente client      :   

1) La proposition d’une offre au client.

2) Les commandes client

3) La Facturation Client

4) Les Notes de crédit

Easy Shop | P. 70

UTILISATEUR

Création d’une offre

Commande Client

Facture Client

Note de Crédit

TransfertTransfert

Transfert

Transfert

Page 71: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use case :

V.7.1 – Identification des besoins d’un client souhaitant une offre de prix au sein du magasin :

o Présentation du client au sein de l’entrepriseo Un conseiller/vendeur prend en charge le client afin de cerner sa demande.

Lorsque le vendeur a bien cerné le besoin d’un client, celui-ci va donc se rendre à une caisse comptoir afin d’effectuer une remise de prix attitrée obligatoirement.

Le vendeur va donc identifier le client (déjà connu ou non au sein de l’entreprise). Dans le cas négatif, l’ensemble de ses coordonnées seront donc enregistrées afin d’établir l’offre.

Dans ce cas d’utilisation, la création de l’offre de prix au sein du système est considérée comme « validée » lors de la sélection du client. Ensuite le vendeur va donc encoder l’ensemble des produits - pièces demandées par le client afin d’établir l’offre de prix.

Easy Shop | P. 71

Offre de Prix

Demande

Elabore

USE CASE : Vendeur élabore une offre de prix dans le logiciel 

RESUME : Le Vendeur doit pouvoir proposer une offre de prix composée  de plusieurs pièces avec possibilité de modifier le prix et la quantité !

ACTEUR : Vendeur

PRE-CONDITION : Disposer d’un compte utilisateur préalablement créé par un administrateur

DESCRIPTION :  

Le Vendeur sélectionne les produits un par un et spécifie la quantité de la pièce souhaitée dans l’offre de prix afin d’établir un prix global.

:client

: Vendeur

Page 72: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use case détaillé:

Chargement Main Form

Demande Login

Encodage Offre

Se connecte

Vérification authentification

ok

Selection client

Système

Impression

conseille

Rempli form login

nok

Chargement Module Offre

Encodage des articles

: Vendeur

Emet sa demande

Prise de contact

: Client

Reception Offre par le client

Easy Shop | P. 72

Page 73: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Schéma collaboration      :  

: : Client

: : Vendeur

: Système

DB CLIENTS

DB OFFRE

DB ARTICLES

DB_OFFRE_DETAILS

Imprimante

Le but ici étant de bien voir les différents étapes d'accès au système !! On stoppe a l'impression car ce n'est pas le pt ciblé ici.

1: Emission demande

2: Lance le programme

3: Demande d'authentification

4: Rempli form Login

5: Génére Main Form

6: Ouverture Module Offre

9: Génération fenêtre offre + demande selection client10: Selectionne le client

13: Affichage des infos offre (date,numéro, ...)

14: Demande Liste Articles

17: Affichage Liste Articles

18: Selection article + qt

21: Msg encodage ok

22: Impression

7: Select * from client

8: Return value11: Génération d'une offre

12: Retour valeur offre

15: Select * from articles

16: Return *

19: Enregistrements des articles

20: return ok

Easy Shop | P. 73

Page 74: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: : Client : : Client : : Vendeur : : Vendeur : Système : Système DB OFFRE : Système

DB OFFRE : Système

DB CLIENTS : Système

DB CLIENTS : Système

DB ARTICLES : Système

DB ARTICLES : Système

Imprimante : Système

Imprimante : Système

DB OFFRE DETAILS : Système

DB OFFRE DETAILS : Système

Emission demande

Conseille

Accède

Demande de login

Remplissage Form

Appelle Liste Client

Selectionne/Encode

Création de l'offre

Système retourne Info Offre Numéro ...

Demande Liste Articles

Selectionne Articles

Imprime

Transmet le document

Appelle module offre

Génère fenêtre

Génère Main Form

Cas Login étudié plus tardUSE CASE Spécifique !

Get ds clients

Return Clients

Affichage Fenêtre Clients

Select * from Articles

return *

Génération Fenêtre Articles

Encodage articles BDD

Return Result

Easy Shop | P. 74

Page 75: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use Case :

V.7.2 - Transfert d’une offre en facturation :Lorsqu’un client se présente en magasin avec un numéro d’offre, le vendeur a donc la possibilité à la validation du client de transférer cette offre en facture. Chaque offre est définie par un numéro unique, il est donc très facile pour le vendeur de retrouver une offre de prix, grâce au moteur de recherche prévu a cet effet!

Cependant plusieurs facteurs entrent en jeux ; le client peut demander de transférer une partie de l’offre seulement, le vendeur doit donc pouvoir sélectionner les articles désirés lors du transfert.

Le système doit pouvoir déterminer si le prix de l’article précédemment proposé est toujours d’actualité ! Afin d’éviter de vendre à perte, le programme doit informer le vendeur d’une différence de prix (Possibilité ou non de conserver l’ancien prix ou de mettre à jour ce dernier).

Easy Shop | P. 75

Offre de prixValide

Transfert

USE CASE : Vendeur transfert offre de prix

RESUME : Transfert d’une offre en facture avec modifications de prix et sélection des articles.

ACTEUR : Client, Vendeur

PRE-CONDITION : Disposer d’un compte utilisateur préalablement créé par un administrateur

DESCRIPTION :  

Le vendeur sélectionne les articles à transférer en facture, adapte le prix si nécessaire (supposons qu’un article ait augmenté de prix ou n’est plus en promotion le système alertera automatiquement l’utilisateur).

Lors du transfert le serveur demande les numéros de séries des articles vendus.

: Vendeur

:client

Page 76: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

On prend le cas où le vendeur se trouve déjà dans le module Listing Offre!

Adaptation du prix (voir droits) Oui / Non

Affichage Filtrage

Affichage de la fiche Offre de prix

Génère Fenêtre de transfert avec alerte vérification des prix

Validation du transfert

Affichage résultat en facture

Système

* Impression et transfert au client de la facture simplifiée ici

Introduction n° Offre

Selection Offre

Clic Transfert

Selectionne les articles a transférer

Vendeur

Valide un numéro d'offre

Client

Livraison facture

Use case cernant - ciblant principalement le CHECK des prix des différents articles !(Use détaillé avec demande de serial plus bas).

Easy Shop | P. 76

Page 77: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Schéma Séquence      :  

: Client : Client : Vendeur : Vendeur : Système : Système DB OFFRES : Système

DB OFFRES : Système

DB OFFRES DETAILS

DB OFFRES DETAILS

Articles_Prix : Système

Articles_Prix : Système

DB FACTURES_VENTE : Système

DB FACTURES_VENTE : Système

DB FACTURES_VENTES_DETAILS : Système

DB FACTURES_VENTES_DETAILS : Système

1: Valide

2: Filtre

3: Affichage filtre

4: Selection

5: Récup Info Offre

7: Récup Info Offre Détails

6:

8:

9: Affichage Offre complète

10: Chargement Info Prix

11: Check Prix Actuel

12:

13: Affichage Articles a transférer ancien prix, nouveau prix !

14: Transfert

15: Encodage nouvelle facture

16:

17: Encodage des articles composant la facture

18:

19: Affichage Facture

Easy Shop | P. 77

Page 78: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use CaseTransfert d’une Offre en Facture détaillé :

Adaptation du prix ( voir droits )

Demande des Numéros de Série pour l'article en cours de transfert

Selectionne les articles a transférer

Livraison facture

Vendeur Introduction n° Offre

Affichage Filtrage

Selection Offre

Affichage de la fiche Offre de prix

Clic Transfert

Génère Fenêtre de transfert avec alerte vérification des prix

Validation du transfert

Création Facture

Sélectionne les numéros

Système

Affichage résultat en facture

Update Ligne article détails QT ( i )

Update Serial

Insert Ligne détails ( i )

Easy Shop | P. 78

Page 79: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.7.3 - Use Case transfert Commande en Facture:

Select Commande

Sélection Articles a transférer ( case a cocher )

Sélection des QT a transférer

Utilisateur

Appel transfert commande

Affichage CMD

Affichage CMD Détails

Validation Transfert

Demande de Serial

Update Serial

Update Qt Transférés ligne cmd détails

Maj Statut Cmd

Affichage Facture

SYS

Encodage Articles et Qt selectionnés

Création Facture

Easy Shop | P. 79

Observations :

Nous remarquerons ici la mise à jour des quantités transférées, ainsi nous saurons par la suite combien de pièces il reste à délivrer au client pour cette commande.

Une commande peut-être transférée en plusieurs fois. Tant que la quantité commandée n’est pas égale à la quantité transférée, le statut <<COMPLETED_CMD_CLI>> de la commande reste à false.

Page 80: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: Utilisateur : Utilisateur

: SYS : SYS DB : CMDDB : CMD DB : CMD DETAILS

DB : CMD DETAILS

DB : FACTDB : FACT DB : FACT DETAILS

DB : FACT DETAILS

DB : ARTICLES INFO ( SERIAL )DB : ARTICLES INFO ( SERIAL )

1: Select CMD

2: Request Data CMD

3:

4:

5:

6: Affichage Récapitulatif CMD

7: Select Article a transférer ( case a cocher )

8: Définition QT a transférer

9: Validation Transfert

10: Création Facture

11:

12: INSERT DETAILS & QT

13:

14: UPDATE SERIAL

15:

16: MAJ STATUT

17:

18: Affichage Facture

Easy Shop | P. 80

Observation : Notons la présence supplémentaire de la fonction mise à jour statut :

// check si les produits ont tous étés transférés : // on check si la quantitée commandée ( QT_CMD_CLI ) est égale à QT_TRANSFERED_CMD_CLI_DET + QT Delivry Now; int qt_cmd = (int)rowseldataset["QT_CMD_CLI_DET"]; int qt_already_transfered = (int)rowseldataset["QT_TRANSFERED_CMD_CLI_DET"]; int qt_delivry_now = (int)rowseldataset["QT Delivry Now"]; if ((qt_cmd != qt_already_transfered + qt_delivry_now)) { Transfert_complet = false; } Suite du code :

if (Transfert_complet == true) { //on update la commande l'état transfert complet sqlrequest.UpdateCmdCliStatutCompleted(ID_CMD_CLI, true); }

Page 81: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.7.4 - Use case Création facture (On cible la nécessité de sélection client et article avant la création de facture) :

nok

Chargement Main Form

Demande LoginVérification authentification

ok

Demande Selection Client

Affichage Détails Facture

Création Facture

Système

Client

(from Use Case View)

Se connecte

Selection Bouton Nouvelle Facture

Selection Client

Demande Selection Article

Sélection & Validation Article

Cloture

Prise de contact

Emet sa demande

conseille

Vendeur

(from Use Case View)

Sélection Client et au moins 1 Article Obligatoire avant création de la facture !

Easy Shop | P. 81

Use Case :

Nous ciblons ici l’obligation d’avoir sélectionné un client et un article AVANT la création de facture ! On évitera ainsi des trous ou des factures VIDES !!!!

Point très important !

Page 82: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use case Encodage Nouveau Client      :   

L’encodage d’un nouveau client proposera d’encoder l’ensemble des coordonnées du nouveau client.

o Nomo Prénomo Adresseo Numéro Ad.o Code Postal – Localité o Payso Inscription à la mailing Liste (Prévu pour plus tard)o Email Cliento Telo Faxo GSM

Petite remarque :

Une fois le pays du client sélectionné, il ne sera plus possible de faire marche arrière.

On bloque le code pays afin d’afficher correctement les factures sauvées.

Facture sauvée -> lien vers la table pays pour afficher le CODE TVA PAYS.

ScreenShot Table Pays      :  

Easy Shop | P. 82

Nous pourrions envisager pour la suite la sauvegarde du code tva dans la table facture et note de crédit afin de faire sauter cette « limite du programme » (dans notre environnement de travail, ceci ne pose AUCUN problème).

USE CASE  :  Utilisateur encode un client

RESUME : Sauvegarde des coordonnées du client dans la base de données.

ACTEUR : Client, Vendeur

PRE-CONDITION :   Disposer d’un compte utilisateur préalablement créé par un administrateur

DESCRIPTION :  

L’utilisateur encode les coordonnées du client dans le programme après avoir effectué  une pré-recherche 

Page 83: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

USE CASE : Encodage d'un client dans la base de Données

Enumération des CoordonnéesClient

Encodage Data

Liste des clients complète connue dans le système.

Demande Sauvegarde

Système

Refresh Liste

Alerte Sauvegardé.

Sélection Outils Clients ( Fenêtre Gestion Client)

Demande des Coordonnées Clients

Effectue un filtre sur les données clients

Fenêtre Nouveau CLient

Sélection du Client

Vendeur

Vérifie que le client n'est déjà pas présent.

Easy Shop | P. 83

Page 84: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Fiche Création Client Selection Pays et Filtre Code Postal en FCTN

Filtrage en Fctn du Pays définit

Affichage Liste Code Postaux

Affichage Pays

SystèmeClic Bouton Pays

Clic Bouton CDP

Sélectionne CDP

Selection Pays

Vendeur

Easy Shop | P. 84

Page 85: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: Client : Client

: Vendeur : Vendeur

: Système : Système DB PAYSDB PAYS INSERT DATAINSERT DATA DB CLIENTSDB CLIENTS

1: Transmition des Coordonnées

2: Demande Liste Pays

Default Pays is Belgique

Un champs Défault est prévu dans la base de donnée afin de charger un pays par défaut pour le fitre dans la page Code Postal

3:

4:

5: Affichage Pays

6: Sélection

7: Demande Code Postal

8: SELECT * FROM CDP WHERE PAYS !!!

9: Return Result

10: Affichage

11: Sélection CDP

12: Système Rempli Form

13: SAUVER CLIENT

14:

15:

16: Réaffichage de la liste des clients à jour

17: Sélection dans la liste

Easy Shop | P. 85

Page 86: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use case      :   

Clôture Caisse :

Pourquoi avoir instauré une clôture de caisse :

Suivant la demande du client, l’ensemble des ventes effectuées en ticket au cours de la journée devra être transférable en factures.

Ce module devra reprendre l’ensemble des tickets PAYES et non transférés en factures, pour ensuite les transférer dans une facture globale au nom de la société.

La somme des paiements sera donc effectuée dans ce transfert, le système s’occupe de rassembler l’ensemble des paiements de manière distincte (Total Visa, Total Bancontact, …).

Le système sauvegarde le mode de paiement pour la facture globale une fois le calcul terminé.

Utilisateur

(from Use Case View)

Appel Cloture de Caisse

(from Use Case View)

Affichage Liste Tickets Payés non Transférés

(from Use Case View)

Validation Cloture

(from Use Case View)

System(from Use Case View)

Création Facture

(from Use Case View)

Affichage Facture de Cloture

(from Use Case View)

Ajout Facture Détails From Tickets Détails

(from Use Case View)

Exclus le calcul des modes de paiments global.Voir Second Schéma

Easy Shop | P. 86

Page 87: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use Case      : Clôture de Caisse Détails

Boucle du Système sur chaque ligne

Le système Récupère les modes de paiements du Ticket en cours de transfert et enregistre le résultat dans un tableau afin de globaliser les montants reçus par VISA, BANCONTACT, ...

Boucle Général sur les Tickets

Insert Facture Détails

(from Use Case View)

GetDsPaiementsTickets & Calcul Variable Paiement Global

(from Use Case View)

Affichage Facture Détails

(from Use Case View)

Flag du Tickets en "Transféré"

(from Use Case View)

Lancement Cloture de Caisse

(from Use Case View)

Utilisateur

(from Use Case View)Création de la Facture

(from Use Case View)

GetDsTicketsDetails ( On récupère les détails du ticket )

(from Use Case View)

SystèmeInsert_FactureInsert_Facture_DétailsGetDsTicketsDétailsGetDsPaiementsTickets

Impression Facture

(from Use Case View)

Easy Shop | P. 87

Page 88: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: Utilisateur : Utilisateur

: Système : Système Db : Tickets : Système

Db : Tickets : Système

Db : Tickets Détails

Db : Tickets Détails

Db Factures Vente

Db Factures Vente

Db Factures Détails

Db Factures Détails

Db PaiementsDb Paiements

1: Appel Liste de Cloture

2: Select * From Tickets where Transferd=0 and Payed=1

Selectionne tickets payés non transférés

3: Affichage Liste

4: Validation Cloture

5: Creation Facture

6:

7: Insert Facture Détails From Tickets Détails

8:

9: GetDsPaiements

10:

11: Définit le Ticket a payé

12: Load Facture

13:

14: Load Facture Détails

15:

16: Impression

Easy Shop | P. 88

*Update Paiements Facture

Page 89: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.8 : Limite de crédits - Rappel de paiements

V.8.1- Limite de crédits client : EasyShop intègre un module permettant la gestion d’une ligne de crédits limités à ne pas dépasser.

Chaque utilisateur possède une note de crédit bien spécifique définissable via la fiche client.

Le premier module consistera à afficher un message d’alerte avertissant l’utilisateur du programme que le client a dépassé sa ligne de crédit !

Dans cette situation, 2 cas sont à envisager :

a) On refuse la vente à ce client tant que sa situation n’est pas régularisée.b) Soit on autorise la création de la facture malgré tout !

Dans la deuxième situation, afin d’éviter les abus ou l’ignorance des messages d’alertes, l’utilisateur devra posséder l’autorisation de création de facture même si la limite de crédit est atteinte ! (USER RIGHT = CREDIT_LIMIT)

Voir le chapitre des droits de EasyShop (V.3).   

(Vérification du login pour accès avec droit spécifique)

Définition de la ligne de crédit      :   

Easy Shop | P. 89

Définition du montant impayé maximal à ne pas dépasser.

Calculer le montant impayé pour les factures ouvertes

Afficher la facture non payée

Page 90: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Use Case : Un vendeur sélectionne un client dont la limite de crédit est dépassée.

Nouvelle Facture / Nouvelle Commande

Génère Liste Clients

Selection Client

Calcul Montant Impayé

Alerte Statut Crédit Limit

Demande Accès / Login

Remplit Form Login

Attribution de l'autorisation

Demande la sélection d'un article

USER

Sélection Article

SYS(from Logical View)

Création Facture

Easy Shop | P. 90

Page 91: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: USER : USER : SYS : SYS DB ClientsDB Clients DB FacturesDB Factures DB UsersDB Users DB ArticlesDB Articles

1: Demande Création Facture

2: Select * FROM CLIENTS

3:

4: Liste Clients

5: Sélection client

6: Select * From Fact non payés

7:

8: Génération Alerte Message

9:

10: Login

11: Select * From USERS

12:

13: True / False Autorisation

14: Select * From Articles

15:

16: Return Liste Articles

17: Selection Article

18: Création Facture

On arrête ici l'analyse de ce moduleFacture détails, ...

Easy Shop | P. 91

Page 92: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Schéma avec crédit limité      :  

Demande Accès / Login

Alerte Statut Crédit Limit

USER Nouvelle Facture / Nouvelle Commande

Génère Liste Clients

Selection Client

Calcul Montant Impayé

Remplit Form Login

Sélection Article

Création Facture

SYS(from Logical View)

Vérification de l'autorisation

Validation Dépassement de la limite de Crédit

Easy Shop | P. 92

Page 93: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Avertissement de l’utilisateur d’un dépassement de ligne de crédit client      :  

Seconde alerte utilisateur      :   

Easy Shop | P. 93

Informations :

o Blocage si droit insuffisanto Double Alerte !o Décision de Continuer ou d’annuler en fonction du montant non payé.

Page 94: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.8.2 - Gestion des Rappels de Paiements.

Afin de gérer les différentes factures ouvertes dans le système, EasyShop proposera dans sa version finale un module de gestion des paiements.

Objectifs :

- Faciliter la gestion des paiements reçus par virement

Pour les virements, chaque facture sera marquée d’un VCS : Virement à communication structurée.

- Moteur de recherche afin de filtrer les factures via un numéro VCS.- Voir l’ensemble des factures non payées - Impression des factures non payées à envoyer pour un éventuel rappel.- Affichage en ROUGE des factures qui sont en dépassement au niveau de la date limite de paiement et

possibilité d’imprimer celle-ci.- Envoyer les factures non payées par email aux clients !

La définition des dates limites de paiement      :   

ScreenShot Limite de paiement      :  

Easy Shop | P. 94

Page 95: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Les différentes options      possibles :    

- Limite Paiement en jour : définit la date limite théorique légale : 30 jours généralement (Affichage légal sur la facture)

- Paiement fin de mois : définit si le logiciel doit calculer la date limite est égale à la date d’aujourd’hui + 30J ou + 30j et fin de mois.

- Définir la limite maximale de paiement du client (parfois dans les 180 jours).

Aperçu du moteur de recherches      :   

Easy Shop | P. 95

Calcul de la date réelle limite et affichage des factures qui ont dépassées cette date en ROUGE.

Ouverture du module de paiement afin de clôturer la facture si le paiement a été reçu.

(Flag de la facture à payé simultanément).

Page 96: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Extrait de code permettant le calcul des dates de paiement maximales :

V.8.3 - La gestion des paiements par virement ! Ou Paiement décalé.

Use case      :    filtrage client 

Easy Shop | P. 96

int cptdsList = 0;

foreach (DataRow row in dsListNoPay.Tables[0].Rows) { Boolean end_month = (Boolean) row["END_MONTH_CLI"]; DateTime Date_Facture = (DateTime) row["DATE_CREATED_FAC"]; int DAY_LEFT_END_PAY = (int)row["REAL_DATE_END_PAY"]; //Pas en fin de mois if (end_month == false) { row["DATE_LIMIT"] = Date_Facture.AddDays(DAY_LEFT_END_PAY); if (DateTime.Now > Date_Facture.AddDays(DAY_LEFT_END_PAY)) {

//QT Delivry Affichage de la ligne en rougesi dépassement de la date dataGridView_no_pay.Rows[cptdsList].DefaultCellStyle.BackColor = Color.Red;

}

} else {

//Fin de mois

DateTime DateTempo; DateTempo = Date_Facture.AddDays(DAY_LEFT_END_PAY); int days = 0; days = DateTempo.Day; days--; DateTempo = DateTempo.AddDays(-days); DateTempo = DateTempo.AddMonths(1); DateTempo = DateTempo.AddDays(-1); row["DATE_LIMIT"] = DateTempo; if (DateTime.Now > DateTempo) { dataGridView_no_pay.Rows[cptdsList].DefaultCellStyle.BackColor = Color.Red; } } cptdsList++;

}

Page 97: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

EasyShop propose un module permettant de gérer les rappels de paiement. Si une limite de crédit est dépassée, la possibilité d’envoi de rappels de paiement sera proposée par ce module. Tout en gérant les dates limites de paiement. Afin de retrouver facilement un virement effectué par une société, easyshop marquera chaque facture d’un numéro VCS.

Voyons ceci plus en détail :

Appelle Module Rappel Paiement

Vérifie Autorisation

Affiche l'ensemble des factures non payées

Effectue une recherche

Effectue un Filtre

Impression Rappels Factures

SYS(from Logical View)

Impression

USER

Expédition du Rappel ou des Rappels

Use Case par VCS      :   

Recherche d’un virement arrivé sur le compte de la société via le vcs :

Easy Shop | P. 97

Recherche sur un client dans ce use case. Filtre proposé dans la fenêtre Rappel Paiement :

- Nom, Prénom, Tva, VCS …

Page 98: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Appelle Module Rappel Paiement

Affiche l'ensemble des factures non payées

Vérifie Autorisation

Effectue recherche sur le VCS

Effectue filtre sur le VCS

USER

Cloture du paiement

SYS(from Logical View)

Flag facture "payé"

L’algorithme d’un VCS      :   

http://belgium.wikia.com/wiki/Virement

Easy Shop | P. 98

Recherche d’une facture par la communication structurée. L’utilisateur va pouvoir cliquer sur l’option « paiement » afin de clôturer la facture (ou une partie de la somme).

- Dans le cas où la facture est entièrement payée le module de gestion de paiement va automatiquement marquer la facture comme « payée ». Une fois marquée comme payée, elle disparaitra automatiquement des rappels de paiement.

- Si le VCS est entré de manière complète le filtre ne retournera qu’un seul résultat VCS = UNIQUE !!!!!!!!

Page 99: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

La communication +++XXX/XXXX/XXXXX+++ (les 'X' représentant des chiffres) est une communication

structurée. Celle-ci facilite la gestion des dossiers des clients par les entreprises car elles peuvent plus

rapidement mettre en relation le virement avec la facture associée au client et à leur comptabilité interne.

Dans une communication structurée, les dix premiers chiffres sont significatifs et utilisables librement, les 2

derniers chiffres sont le nombre de contrôle (+++SSS/SSSS/SSSCC+++). Il se calcule comme étant le reste de la

division (modulo) du nombre représenté par les 10 chiffres significatifs divisé par 97. Si le nombre de

contrôles est égal a 0 alors le nombre de contrôle 97 sera utilisé. Si le nombre de contrôles est inférieur a 10,

on rajoute un zéro devant (4 -> 04) (exemple: communication: 123456, contrôle: 123456%97 = 72, ce qui

donne: +++000/0123/45672+++).

La fonction générant ce code      :   

o On va se baser ici sur le numéro de facture ainsi que sur l’année fiscale en cours !!public String Generated_VCS_FAC(String Num_Fact)

{ String endstring; int longueur = Num_Fact.Length; while (longueur < 6) { Num_Fact = Num_Fact + "0"; longueur = Num_Fact.Length; } //on est a 10chiffres String finalvcs = GlobalVariable.Fiscal_Year + Num_Fact; long a = Int32.Parse(finalvcs); long result = (a / 97); long end = 0; if (result == 0) { end = 97; endstring = a.ToString() + end.ToString(); } else { if (result < 10) { endstring = a.ToString() + "0" + result;

} else { endstring = a.ToString() + "00"; } } return endstring; }

V.8.4 - la gestion des Paiements :Le mode paiement :

Easy Shop | P. 99

Page 100: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Le même module va être utilisé afin de valider les paiements sur les tickets, factures, ou encore notes de crédit.

La distinction se fera simplement à l’appel du chargement de l’objet (Fenêtre paiement) .

Le paramètre String Type_Save sera passé afin de déterminer sur quoi on travaille actuellement.

Ce module a été conçu afin d’éviter de devoir taper le montant reçu par le client manuellement !

Les touches FN sont donc actives dans ce module et vont s’avérer extrêmement pratiques et faciles d’utilisation.

Lors de la pression d’une touche F(x) le montant restant est automatiquement affecté à la fonction correspondant à F(x).

Petite illustration du système      :  

Nous remarquerons ici, la ligne précédant les méthodes de paiement ! Le système affiche les différents paiements déjà précédemment reçus et calcule automatiquement le montant restant à payer !!

Extrait de code gérant les fonctions F1 à F12      :  

Easy Shop | P. 100

Page 101: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

private void dataGridView_met_pay_KeyDown(object sender, KeyEventArgs e)

{

String rechKeyFx = e.KeyCode.ToString();

int rowa = dataGridView_met_pay.Rows.Count - 1;

for (int r = 0; r < rowa; r++) {

//Recherche de la case correspondant à F(x) if (dataGridView_met_pay.Rows[r].Cells["F(x)"].Value.ToString() == rechKeyFx) {if (dataGridView_met_pay.Rows[r].Cells["Amount"].Value.ToString() == "0,00") {

//Si case est à 0 alors on attribue le montant restant par défaut. dataGridView_met_pay.Rows[r].Cells["Amount"].Value = lefttopay; } else { //decimal savepay = 0; // savepay = decimal.Parse(dataGridView_met_pay.Rows[r].Cells["Amount"].Value.ToString());// on réassigne la valeur à 0 ! dataGridView_met_pay.Rows[r].Cells["Amount"].Value = "0,00"; } } }

}

Complément      :   La définition des méthodes de paiement est bien sûr possible !

Easy Shop | P. 101

Page 102: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Edition des méthodes de paiement :

V.9 - L’inventaire :

Pour les entreprises à but lucratif, il doit être fait pour établir le bilan. Il permet de fixer la valeur du stock et

de contrôler si aucune marchandise n'a disparu physiquement (par obsolescence, perte ou vol) ou

Easy Shop | P. 102

La suppression est bien entendu à proscrire car l’ensemble des paiements reçus jusqu'à présent seraient concernés par cette suppression. Nous proposerons donc la possibilité de mettre les méthodes de paiement en caché (HIDDEN).

Page 103: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

comptablement (par erreur de gestion) et d'avoir donc une image des stocks réels au moment de

l'inventaire.

Pour cela, sont répertoriées toutes les marchandises existantes dans les entrepôts pour les comparer à la

liste des achats et des ventes. Si tout se passe bien, les stocks à la date d'inventaire doivent correspondre à la

différence entre les entrées et les sorties de stock depuis le dernier inventaire (en tenant compte aussi des

stocks qui existaient lors de ce dernier inventaire). S'il manque des marchandises par rapport à ce calcul, il y

a lieu de s'interroger sur l'origine des disparitions ou des erreurs de gestion.

Il y a lieu par ailleurs d'apprécier les pertes de valeur marchande des marchandises devenues inutilisables ou

obsolètes.

V.9.1 - La gestion de STOCK en profondeur :Les entrées de stock ( petit rappel )*      :  

A chaque mouvement de stocks (transfert d’une commande fournisseur en facture d’achats, encodage facture d’achats, mouvements de stocks manuels), la table gérant le fifo va donc être modifiée.

Une ligne est créée à chaque modification de stock :

Article(s) concerné(s) Le LOG mouvement de stock lié à cette entrée. Date de Création Cost Price (nécessaire a l’inventaire). Quantité rentrée Quantités Disponibles (qui n’ont pas encore été vendues)

Le Fifo actuel est visible dans la fiche Article :

A chaque vente d’article, le stock est décrémenté :

En cas de vente Ticket

Easy Shop | P. 103

Page 104: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Transfert d’une commande en facture Transfert d’une offre en facture Facturation Note de Crédit sur un article.

if (NO_STOCK_ART == false) {

//Update quantity stock FICTIF ! On décrémente le stock du nombre d'article vendu

sqlrequest.UpdateStockArt(id_art, -CptQTInsert);

// On met a jour le article stock ( FIFO inventaire ); //FONCTION OK

DataSet Fifo = new DataSet(); Fifo = sqlrequestFifo.GetDsArticleStockWhereIdArtAndQTFreeNotNULL(id_art);

int row = Fifo.Tables[0].Rows.Count - 1;

int reste = CptQTInsert; int a = 0; while (reste != 0) { DataRow rowselFifo = Fifo.Tables[0].Rows[a];

int qtfreeupd = (int)rowselFifo["QT_FREE_ART_STO"] - reste;

if (qtfreeupd >= 0) {

rowselFifo["QT_FREE_ART_STO"] = (int)rowselFifo["QT_FREE_ART_STO"] - reste; reste = 0; } else { rowselFifo["QT_FREE_ART_STO"] = 0; reste = Math.Abs(qtfreeupd); a++; }

} sqlrequestFifo.UpdateDsStock_From_IdArt(Fifo); }

Décrémentation des quantités      :   

Lors de la vente de l’article le stock fictif est également mis à jour :

Pourquoi avoir une table avec un stock Fictif ?

Easy Shop | P. 104

Dans le cas d’un article possédant un stock, cette fonction va permettre de décrémenter le fifo disponible pour l’article tant qu’il reste des quantités a décrémenter.

- La vérification de la vente du produit est nécessaire avant la validation de la vente (afin de bien décrémenter le fifo, voir vérification).

- On modifie le tableau localement, ensuite on renvoie la modification à la DB.

Page 105: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

L’ensemble des articles encodés provenant d’une commande fournisseurs (transfert) ou d’un encodage d’une facture d’achats, sont traités dans la table : articles info.

Nous pourrions obtenir le nombre d’articles non vendus dans cette table via la commande :

SELECT [ID_ART_SER] ,[ID_TICK_DET] ,[ID_FACT_DET] ,[ID_STOCK_MOD] ,[ID_ART] ,[ID_FACT_ACH] ,[STATUT_VENTE_ART_INFO] ,[SERIAL_NUMBER_ART_INFO] ,[COST_PRICE_ART_INFO] ,[SERIAL_FABRICANT_ART_INFO] ,[REMARQUES_ART_INFO] ,[STATUT_ART_INFO] ,[DATE_CREATED_ART_INFO] ,[DATE_MODIFIED_ART_INFO] ,[FROM_ID_ART_INFO] ,[NUM_LINE_FACT_ART_INFO] ,[CODE_FOURNISSEUR_ART_INFO] FROM [easyshop].[dbo].[ARTICLES_INFO] where STATUT_VENTE_ART_INFO=0 and ID_ART=’ FD6BB402-7E90-49AB-89C4-3E06CD0A8581’

Pourquoi ne pas agir de cette manière pour obtenir le stock réel ?

a) Avec le nombre d’articles en entrée et sortie dans la société, la requête serait assez lourde (la table va vite grossir ) et la requête sera de plus en lourde à être effectuée.

b) De plus, ceci ne nous apporte pas le stock réel disponible :

o Le stock réel disponible pour le site internet par exemple sera le nombre d’articles de stock MOINS le nombre d’articles réservés dans les commandes client !!!!

c) On va éviter de concaténer plusieurs requêtes sql pour savoir exactement le stock réel !

EasyShop travaille donc avec une autre table précédemment abordée STOCK_LOCATION_LIST

Easy Shop | P. 105

Page 106: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Cette table est donc utilisée pour recenser les quantités actuelles disponibles des articles.

- Stock magasin- Stock réservé- Qi en commande chez le fournisseur pour cet article

Avantages      :   

- Rapidité d’exécution- Le client peut voir le stock réel en ligne sans surcharger la base de données de requête …

On imagine 15 clients visitant le site … en utilisant la première méthode, le serveur sql serait soumis à rude épreuve.

Easy Shop | P. 106

Page 107: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.9.2 - Le calcul de l’inventaire :

- Ce calcul se basera donc sur la table FIFO (présenté précédemment) actuelle du système.

EasyShop rassemblera chaque ligne de la table articles info ou le QT_FREE_ART_STO est différent de NULL. ( Ce qui réprésente donc un article de stocks en magasin ) et multiplira son COST_PRICE par la quantité présente dans le stock.

L’inventaire tiendra compte également des taxes.

EasyShop proposera 2 types d’inventaires !

Inventaire simple ( on regroupe les différentes entrées avec le même cost_price et même article ) Inventaire détaillé : Chaque ligne du FIFO est affichée dans les détails de l’inventaire ( voir ci-dessous ).

Demande nouvel Inventaire

Création Inventaire ID

Selectionne les Articles de Stock ( QT_FREE != null )

Calcul Montant ligne détails par Article et Cost_Price

Calcul Montant ligne détails Avec Taxes

Mise à Jour Montant Global

Affichage Inventaire

User

Imprime / Exporte

SYS(from Logical View)

Easy Shop | P. 107

Page 108: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

: User : User

: SYS : SYS DB ARTICLE STOCK

DB ARTICLE STOCK

DB INVENTAIRE

DB INVENTAIRE

DB INVENTAIRE DETAILS

DB INVENTAIRE DETAILS

1: Demande Nouvel Inventaire

2: select * FROM ARTICLE STOCK

3:

4: Création Inventaire

5:

6: Calcul Montant de chaque Ligne

7: Calcul avec Taxes

8: INSERT INTO INVENTAIRE DETAILS

9:

10: Maj TOTAL & TOTAL TAXES

11:

12: Affichage

13: Opération

Easy Shop | P. 108

Page 109: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Extrait de code      :  

private void New_Inv_Load(object sender, EventArgs e) { // PASSER CETTE FONCTION EN TRIGGER PLUS TARD POUR GAGNER EN RAPIDITE D'EXECUTION ! TOTAL_HORS_TAXES = 0; Guid ID_INV = Guid.NewGuid();

sqlrequest.Insert_New_Inv(ID_INV, new Guid(GlobalVariable.UserGuid), "Inventaire");

dsInv_Details = sqlrequest.GetDsInvDetailsWhereQtFreeNotNull();

int row = dsInv_Details.Tables[0].Rows.Count - 1;

for (int r = 0; r <= row; r++) { DataRow rowseldataset = dsInv_Details.Tables[0].Rows[r];

Guid ID_INV_DET = Guid.NewGuid();

//on réinitialise les variables COST_PRICE_UNIT_INV_DET = 0; PRIX_HORS_TAXES_INV_DET = 0; PRIX_AVEC_TAXES_INV_DET = 0;

COST_PRICE_UNIT_INV_DET = (decimal)rowseldataset["COST_PRICE_ART_STO"]; PRIX_HORS_TAXES_INV_DET = (int)rowseldataset["QT_FREE_ART_STO"] * COST_PRICE_UNIT_INV_DET; TOTAL_HORS_TAXES = TOTAL_HORS_TAXES + PRIX_HORS_TAXES_INV_DET;

// calcul avec TAXES ; cptTaxes = 0; string id_art = rowseldataset["ID_ART"].ToString();

dsTaxesList.Clear(); dsTaxesList = sqlrequest.GetDsTaxesList_for_article(id_art); montant_taxes = 0; cptTaxes = dsTaxesList.Tables[0].Rows.Count;

for (int a = 0; a < cptTaxes; a++) { DataRow rowselTaxes = dsTaxesList.Tables[0].Rows[a]; montant_taxes += decimal.Parse((rowselTaxes["PRIX_TAX"].ToString())); }

PRIX_AVEC_TAXES_INV_DET = PRIX_HORS_TAXES_INV_DET + (montant_taxes * (int)rowseldataset["QT_FREE_ART_STO"]);

TOTAL_AVEC_TAXES = TOTAL_AVEC_TAXES + PRIX_AVEC_TAXES_INV_DET; sqlrequest.Insert_New_Inv_Details(ID_INV_DET, ID_INV, new Guid(rowseldataset["ID_ART"].ToString()), rowseldataset["REFERENCE_ART"].ToString(), rowseldataset["LIBELLE_ART"].ToString(), (int)rowseldataset["QT_FREE_ART_STO"], COST_PRICE_UNIT_INV_DET, PRIX_HORS_TAXES_INV_DET, PRIX_AVEC_TAXES_INV_DET);

Easy Shop | P. 109

Page 110: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

}

sqlrequest.UpdateInvTotal(ID_INV, TOTAL_HORS_TAXES, TOTAL_AVEC_TAXES);

MessageBox.Show("Inventaire terminé !"); DialogResult = DialogResult.OK;

Visuel pour l’utilisateur      :   

Easy Shop | P. 110

Page 111: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.10 : Les Statistiques :Les différents modules de statistique élaborés dans EasyShop :

V.10.1 - Le premier module traitera sur les statistiques de vente de chaque utilisateur dans le système.

Objectifs      :   définir le meilleur vendeur sur une période donnée.

Le principe :

- On sélectionne l’ensemble des tickets payés filtrés par utilisateur (créateur) et on en calcule la somme totale.

- On regroupe ces données par JOUR.- Une fois la requête sql effectuée, il suffit de dessiner pour chaque jour, le montant donné (Somme des

tickets du jour) !

Petit aperçu du module      :  

Easy Shop | P. 111

La période est définissable par les 2 objets « DateTimePicker » .

- Date de début - Date de Fin

Ensemble des résultats triés par JOUR

Page 112: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Analyse      :  

Statistiques Tickets

Génère demande de sélection de date

Demande Génération

Définit Date Début et Date Fin

SYS(from Logical View)

par jourEffectue la somme des tickets

vendus par chaque utilisateurs ...

Sauvegarde des données dans un tableau pour chaque user

Dessine Graphique pour chaque tableau / User

User

Zoom

Easy Shop | P. 112

Page 113: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Demande de Génération

Prompt Demande sélection Date début et Fin

Sélectionne la somme des tickets payés pour chaque user par jour

Sauvegarde données dans un tableau pour chaque user

Dessine Graphique

Modification Date Début

initialise DateFin = Date Start

Date Start = Current Date & Date Fin = Curent Date

non

Modif Date Fin

Récupère Date Fin

oui

non

Easy Shop | P. 113

Page 114: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Extrait de code :

Requête Sql correspondant à la fonction      :   

public DataSet GetdsStatMeilleurVendeurTicketDateToDate(String DATE_START, String DATE_END,Guid ID_USR) { try { SqlConnection connection = new SqlConnection(connectString); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.TableMappings.Add("Table", "TICKET_STAT"); SqlCommand command = new SqlCommand("select ID_USR,SUM(MONTANT_TIC) AS MONTANT_TIC,CONVERT(VARCHAR(10),DATE_CREATED_TIC, 103) AS DATE_DAY from TICKETS WHERE CONVERT(VARCHAR(10),DATE_CREATED_TIC, 103) >= '@DATE_START' AND CONVERT(VARCHAR(10),DATE_CREATED_TIC, 103)<= '@DATE_END' and ID_USR='@ID_USR' group by ID_USR,CONVERT(VARCHAR(10),DATE_CREATED_TIC, 103)", connection); command.Parameters.AddWithValue("@DATE_START", DATE_START); command.Parameters.AddWithValue("@DATE_END", DATE_END); command.Parameters.AddWithValue("@ID_USR", ID_USR.ToString()); command.CommandType = CommandType.Text; adapter.SelectCommand = command;

adapter.Fill(dsStatsTickets);

} catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); MessageBox.Show(ex.ToString());

}

return dsStatsTickets; }

Easy Shop | P. 114

Page 115: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Implémentation du code pour le dessin du graphique      :  

zedGraphControl_best_vendeur.GraphPane.GraphObjList.Clear(); zedGraphControl_best_vendeur.GraphPane.CurveList.Clear(); string[] DateDebut = dateTimePicker_start.Value.GetDateTimeFormats(); string[] DateFin = dateTimePicker_end.Value.GetDateTimeFormats();

zedGraphControl_best_vendeur.ResetText(); an.Clear(); an = sqlrequest.GetDsUsersLightInfo();

int cpt = 0; cpt = an.Tables[0].Rows.Count;

DataTable[] Table = new DataTable[100]; for (int i = 0; i < 3; i++) { Table[i] = new DataTable(); Table[i].Clear(); } DataSourcePointList[] dsp = new DataSourcePointList[100]; for (int i = 0; i < 3; i++) { dsp[i] = new DataSourcePointList(); }

for (int b = 0; b < cpt; b++) { DataRow UserInfo = an.Tables[0].Rows[b]; Guid UserGuid = (Guid) UserInfo["ID_USR"]; // boucle pour chaque users dsVenteTickets.Clear();

dsVenteTickets = sqlrequest.GetdsStatMeilleurVendeurTicketDateToDate(DateDebut[5].ToString(), DateFin[5].ToString(), UserGuid);

DataTable temp = new DataTable(); temp.Clear(); temp = (DataTable)dsVenteTickets.Tables[0]; Table[b].Merge(temp);

DataColumn lFxColumn = new DataColumn(); lFxColumn.DataType = System.Type.GetType("System.DateTime"); lFxColumn.ColumnName = "DATE_TIME_CONVERT"; Table[b].Columns.Add(lFxColumn);

foreach (DataRow dr in Table[b].Rows) { dr["DATE_TIME_CONVERT"] = dr["DATE_DAY"];

//DateTime dt = DateTime.ParseExact(dr["DATE_DAY"].ToString(), "yyyy-MM-dd HH:mm:ss",

}

// source a dessiner dsp[b].DataSource = Table[b];

Easy Shop | P. 115

Page 116: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

zedGraphControl_best_vendeur.GraphPane.XAxis.Type = AxisType.Date;zedGraphControl_best_vendeur.GraphPane.XAxis.Scale.Format = ZedGraph.Scale.Default.FormatMinuteMinute;

dsp[b].XDataMember = "DATE_TIME_CONVERT"; // The Y data will come from the "Freight" column dsp[b].YDataMember = "MONTANT_TIC"; }

zedGraphControl_best_vendeur.GraphPane.XAxis.Type = AxisType.DateAsOrdinal;

for (int b = 0; b < cpt; b++) { DataRow UserInfo = an.Tables[0].Rows[b]; String UserGuid = UserInfo["ID_USR"].ToString(); String Login_User = UserInfo["LOGIN_USR"].ToString(); int COLOR_USR = (int)UserInfo["COLOR_USR"];

myCurve = zedGraphControl_best_vendeur.GraphPane.AddCurve(Login_User,dsp[b], Color.FromArgb(COLOR_USR));

// Turn off the line so it's a scatter plot //myCurve = zedGraphControl_best_vendeur.GraphPane.AddCurve("Orders", dsp[1], Color.Red);

myCurve.Line.IsVisible = true; } zedGraphControl_best_vendeur.GraphPane.AxisChange(); zedGraphControl_best_vendeur.Refresh();

Petit aperçu du résultat      :   

Easy Shop | P. 116

Page 117: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Easy Shop | P. 117

Page 118: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

V.10.2 - Statistiques de vente sur un client par article :

Prompt Demande sélection Date début et Fin

Sélectionne la somme des tickets payés pour chaque user par jour

Sauvegarde données dans un tableau pour chaque user

Dessine Graphique

Modification Date Début

initialise DateFin = Date Start

Date Start = Current Date & Date Fin = Curent Date

non

Modif Date Fin

Récupère Date Fin

oui

non

Client Sélectionné ?

Invite Sélection client

Demande de Génération

non

Article Sélectionné ?

Invite Sélection Client

Easy Shop | P. 118

Page 119: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Aperçu      :  

Easy Shop | P. 119

Page 120: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Ressources utilisées      :   

Le composant graphique      :   

EasyShop utilise le composant Zedgraph afin de réaliser les graphiques des différents modules de statistique:

ZedGraph est une librairie destinée aux développements .NET aussi bien en WinForm qu'en WebForm. Les classes qu'elle fournit sont extrêmement souples et paramétrables. Il est possible de représenter et de configurer pratiquement n'importe quel type de graphe, d'un histogramme à la représentation de fonctions mathématiques

L'utilisation de cette librairie est simplifiée par l'adoption d'un grand nombre de valeurs par défaut pour l'aspect des graphiques.

Quelques exemples possibles :

http://zedgraph.org/wiki/index.php?title=Main_Page

Easy Shop | P. 120

- Zedgraph possède un haut niveau de paramétrage.

- Il est possible de réaliser des graphiques de toutes sortes …

- Possibilité de tracer un graphique à partir d’un tableau de point facilement adaptable depuis un dataset ou datatable.

- Axe X et Y paramétrable au format Date.

Page 121: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre VI. Les Tests.Nous terminerons l’approche de ce projet sur les différents tests unitaires et applicatifs effectués tout au long de l’évolution du logiciel.

Les tests unitaires : 

Les tests unitaires ont été intégrés sur chaque formulaire :

Extrait de code contrôlant la saisie      :   

Boolean Valid = Check_Completed_Form();

// on vérifie que le formulaire est correctement remplit : if (Valid == true) {

}

La fonction complète est disponible sur la page 42 (Exemple pratique lors de l’enregistrement d’un article).

Les tests fonctionnels : 

Après l’élaboration de chaque module le gérant de la société a pu tester les différentes fonctionnalités présentées.

Après chaque test, Chaque remarque a été notée et corrigée au fur et à mesure pour enfin arriver à un résultat probant.

Les différentes fonctions nécessaires pour l’évolution du projet ont étés prises en compte et complétées par la suite.

Certaines fonctions ne sont pas toujours indispensables pour le module analysé mais pourront être utile dans un avenir.

Exemple : l’affichage d’un message lors de la sélection d’un client (Alerte pour le vendeur ou Message à faire passer au client).

La mise en place finale du logiciel : 

Le programme est actuellement testé au sein de l’entreprise en parallèle avec le système actuel, ceci nous permet de voir les problèmes rencontrés au fur et à mesure du travail.

Le logiciel sera également mis en place Fin juin, début juillet chez un client en phase de test réel afin d’éventuellement parer aux bugs récalcitrants ou non détectés lors de l’utilisation. Ce client est intéressé également par le programme mais en évitant la demande de numéros de séries obligatoire dans cette version présentée.

Cet accord clientèle nous apportera un avis totalement externe et surtout dans un environnement pratique de tous les jours autre que le nôtre!

Easy Shop | P. 121

Page 122: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre VII. Problèmes parcourus :

Sql server 2008      :  

Problème pour la mise à jour d’une table au sein de la base de données :

La version 2008 est par défaut configurée pour refuser l’ajout ou la modification d’un champ d’une table au sein de la base de données.

Ceci m’a contraint plusieurs fois à récréer la base de données de manière complète à partir du MLR.

Solution : Une case à cocher au sein de Sqlserver 2008 permet d’éviter cette contrainte.

L’impression      :   

- La solution aux problèmes d’impression a été difficile à résoudre, dû au manque de solutions claires et précises se trouvant sur internet.

L’utilisation d’une classe disponible sur un site web Français m’a permis d’arriver à une solution stable et paramétrable grâce à l’ensemble des recherches effectuées.

Les codes barres      :   

L’impression des codes barres pour les numéros de séries à été assez laborieuse ! La société étant équipée d’anciens codes barres (EAN 13), nous étions dans l’impossibilité de coder nos numéros de séries sur une étiquette.

Le problème a été résolu grâce à la commande de nouveaux lecteurs de code barre chez notre fournisseur.

Easy Shop | P. 122

Page 123: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre VIII : Modifications à venir :

- La création d’un module permettant l’impression des étiquettes pour la livraison des produits.

- La possibilité d’introduire plusieurs adresses email pour un seul client.

- La génération de précommandes par EasyShop. (Conseils de commandes, sélection du fournisseur ayant le meilleur cost_price, proposition à l’administrateur d’un bon de commande déjà rédigé, ceci sera réalisé grâce au module << auto stock >> du programme).

- L’envoi de sms au client.

- Développement du site web lié au programme. (Multi interface afin d’adapter le thème du site en fonction de l’environnement dans lequel EasyShop fonctionnera -> orientation entreprise).

- Proposer un système de sauvegarde des données du logiciel sur un support externe.

- Exportation des données clients, fournisseurs.

- La vérification contre la vente à perte (en cours de réalisation).

- La gestion de plusieurs listes de prix.

- Stock Location -> Gestion de plusieurs magasins.

- Une meilleure gestion de l’atelier : la possibilité d’encoder le matériel changé dans la fiche technique de la réparation est en cours d’étude. Ceci nous permettrait d’établir une offre de prix reprenant la liste des composants et main d’œuvre à facturer au client. En un simple clic, nous pourrions obtenir la facture de cette réparation. (Gain de temps quand le client arrive en magasin).

- Plus de statistiques : Gains réels entre les entrées des stocks et les ventes.

Easy Shop | P. 123

Page 124: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre IX : Planning :

Easy Shop | P. 124

Page 125: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

IX.1 - Apport des correctifs au planning réalisé au mois de juin 2009 :

L’élaboration du rapport final a été effectuée tout au long du développement du projet. Celui-ci a pris également du temps (Remise des différents USE CASE dans Rational rose).

Easy Shop | P. 125

Page 126: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Chapitre X : Conclusions :

Travaillant maintenant depuis 4 ans au sein de la société dans la commercialisation de matériel informatique, j’ai pu obtenir une approche globale et au fil du temps de plus en plus approfondie des fonctionnements et disfonctionnements internes de la société (exemple : la génération d’un numéro de série unique pour chaque produit).

Durant ces 4 années d’utilisation du logiciel actuel, bon nombre d’irrégularités, de problèmes et de conflits ont étés décelés.

De par l’analyse effectuée de ces différents problèmes, j’ai pu proposer l’élaboration d’un logiciel au sein de la société, pour palier à ces disfonctionnements.

Au final, nous disposons d’une application fonctionnelle palliant aux problèmes antérieurs avec de nouvelles fonctionnalités. Celui-ci est en cours d’étude à l’exportation vers d’autres sociétés, et devrait être installé fin du mois de juin / début juillet au sein de la société.

Bibliographie      :   

Sites      :  

- http://www.java2s.com/

- http://www.csharp-home.com/index/tiki-read_article.php?articleId=85

- http://www.csharpfr.com/

- http://msdn.microsoft.com/fr-fr/default.aspx

- http://www.codes-sources.com/

- http://www.developpez.net/forums/

- http://stackoverflow.com/

- http://www.velocityreviews.com/

- http://fr.wikipedia.org/wiki/Inventaire

Documents      :  

- Cours ESA Csharp PDF 2008

Easy Shop | P. 126

Page 127: easycorp.beeasycorp.be/WordPress/wp-content/uploads/.../11/Bado…  · Web viewTout d’abord : afin de bien représenter dans l’ordre les différentes activités logiques appliquées

Lexique :

Le Fifo :

L'acronyme FIFO est l'abréviation de l'expression anglaise First In, first Out, que l'on peut traduire par « premier arrivé, premier servi » (littéralement « premier entré, premier sorti »). Ce terme est employé en informatique pour décrire une méthode de traitement des données. Cette méthode correspond à une méthode de traitement des éléments d'une file (calculs d'un ordinateur, stocks).

Last In, First Out, souvent abrégé par l'acronyme LIFO, signifie « dernier arrivé, premier sorti ». Cette expression est utilisée en informatique pour décrire une manière de traiter des données. La dernière donnée ajoutée à la structure est ainsi la première à être retirée. La structure de pile repose sur ce principe.

Coût unitaire moyen pondéré

Le coût unitaire moyen pondéré (CUMP) est une valorisation des sorties d'un poste comptable à un

coût unitaire qui est la moyenne des coûts unitaires des entrées de la période (en y incluant le coût

unitaire du stock initial). Cette moyenne des coûts unitaires est pondérée par les quantités.

EAN 13

Les codes EAN 13 (European Article Numbering à 13 chiffres) sont les codes à barres utilisés dans le

monde entier sur l'ensemble de produits de grande consommation (On utilise parfois le code EAN 8 pour

les objets de petite taille). Ils comportent 13 chiffres dont la signification varie suivant le type du produit.

Les deux ou trois premiers correspondent au pays de provenance du produit, ou à une classe

normalisée de produits,

Les 4 ou 5 suivants sont le numéro de membre de l’entreprise participant au système EAN,

Les 5 suivants sont le numéro d’article du produit ainsi marqué et le treizième est une clé de

contrôle calculée en fonction des douze précédents.

Easy Shop | P. 127