IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Site web de création de factures [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Site web de création de factures
    Je viens d'attaquer mon projet de stage qui sera un site web de création de factures le plus ergonomique et facile d'accès possible car destiné avant tout aux néophytes en informatique (une sorte de "la facturation pour les nuls ).
    Ce petit exercice (qui n'a finalement pas été si petit que ça) sur les motos m'a été bien utile pour saisir certaines nuances que je ne voyais pas vraiment au départ (je pense que c'est une histoire d'expérience), mais étant pour mon stage qui est donc très important, je me permets de poster le MCD "site de factures" dans l'état actuel qui me parait un peu "trop simple"





    J'espère ne pas trop abuser de votre temps

    PS : pour les intéressés la page web utilisant la BDD créée plus haut est visible ici , il n'y a que 3 motos dans la base car je n'ai pas eu le temps d'en mettre plus (ça rame déjà pas mal par moments , la faute à tous les scripts en php et zéro javascript je pense), j'espère avoir le temps de terminer tout ça un de ces jours , pour le moment c'est projet de stage only .

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je lis le schéma :
    "Un User possède un et un seul Profil et un Profil est possédé par un et un seul User"
    Avec une cardinalité 1,1, ces deux entités peuvent être fusionnées en une seule.

    "Une Facture peut ou pas contenir des Lignes et une Ligne peut ou pas être contenue dans plusieurs factures" !
    Vous émettez des factures sans ligne et qui n'ont donc pas de montant ?
    Une ligne de facture peut se retrouver sur plusieurs factures ? M. Dupont peut se retrouver avec une facture contenant des lignes de la facture de M. Durand ?

    " Une ligne peut ou pas valoir plusieurs montants et un montant peut figurer sur plusieurs lignes"
    Quel est l'intérêt de faire une entité pour les montants ?
    Ne serait-ce pas plutôt un attribut de la ligne de facture ?

    Généralement le schéma est plutôt :
    Facture -1,n----Contenir----1,1- Ligne

    L'entité Ligne comprend effectivement des attributs de montant hors taxe et de taux de TVA, éventuellement de remise accordée ou de code tarif mais comme facture est simple, les premiers attributs que vous avez mis dans l'entité Montant sont suffisants. Au détail près qu'on met plutôt un taux de TVA (ou même un code qui relie à une table de taux) et on calcule le prix TTC (ce n'est pas un attribut).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Pour les lignes , Mr Durand peut acheter un DVD a 19€ à une boutique , Mr Dupont achète le même au même endroit , il le paiera le même prix , la ligne sera donc commune.
    Si la facture de Mr Durand est supprimée , il ne faut pas que la ligne du DVD le soit puisque Mr Dupont l'a sur la sienne , donc si par la suite la facture de Mr Dupont est aussi supprimée , cette ligne deviendra "orpheline" et ne sera plus dans aucune facture.
    Pour les tarifs , j'ai séparé TTC et HTVA au cas où certaines lignes soient remplies dans la case du prix HTVA (auquel cas le prix TTC sera calculé et rempli automatiquement) , et où d'autres soient remplies dans la case HTVA (idem) , si je n'ai qu'un seul champs dans la table SQL je ne saurais pas lequel a été rempli (quoiqu'en écrivant ces lignes je me dis que je ne devais pas avoir les yeux en face des trous hier , il me suffit d'enregistrer le prix HTVA une fois calculé ).
    Je n'ai jamais été trop fort en MERISE , je pense que je vois trop les choses du coté programmation
    PS : S'il faut je peux créer un nouveau sujet.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Mikerhinos Voir le message
    Pour les lignes , Mr Durand peut acheter un DVD a 19€ à une boutique , Mr Dupont achète le même au même endroit , il le paiera le même prix , la ligne sera donc commune.
    Si la facture de Mr Durand est supprimée , il ne faut pas que la ligne du DVD le soit puisque Mr Dupont l'a sur la sienne , donc si par la suite la facture de Mr Dupont est aussi supprimée , cette ligne deviendra "orpheline" et ne sera plus dans aucune facture.
    Désolé mais cette conception est une horreur !
    Puisque tu fais ça dans le cadre d'un stage d'études, je te déconseille fortement de mettre ce modèle en oeuvre.
    Regarde dans les tutoriels Merise, tu trouveras des exemples similaires qui adoptent plutôt mon schéma que le tien.

    Pour les tarifs , j'ai séparé TTC et HTVA au cas où certaines lignes soient remplies dans la case du prix HTVA (auquel cas le prix TTC sera calculé et rempli automatiquement) , et où d'autres soient remplies dans la case HTVA (idem) , si je n'ai qu'un seul champs dans la table SQL je ne saurais pas lequel a été rempli (quoiqu'en écrivant ces lignes je me dis que je ne devais pas avoir les yeux en face des trous hier , il me suffit d'enregistrer le prix HTVA une fois calculé ).
    Je n'ai jamais été trop fort en MERISE , je pense que je vois trop les choses du coté programmation
    Effectivement !
    C'est le programme de l'interface utilisateur qui va calculer le prix manquant puis préparer la requête pour enregistrer le prix hors taxe dans la BDD.

    Quelques tutoriels Merise :

    http://sqlpro.developpez.com/cours/modelisation/merise/
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut [MCD] site de facturation
    Voila mon MCD pour mon site de facturation revu et corrigé , je pense qu'il n'est pas trop mal maintenant :



    J'ai passé les clients en 1:1 pour les users , car je me suis dit qu'il suffit qu'un user ai un client commun avec un autre mais ne tape pas une des données de la même façon (Michael-Michaël-Mickael-Mickaël etc... ce qui peut arriver très souvent) pour que cela crée une occurence supplémentaire donc autant "économiser" une table remplie des id_user et id_client.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Eviter les cardinalités minimales à 1 des deux côtés de l'association :
    Je crée un user, il faut déjà qu'il ait fait édité une facture mais la facture est éditée par un seul user qui n'existe pas encore.
    En fait, tes lignes correspondent plutôt à des produits non ?
    Facture -1,n----Contenir----0,n- Produit

    L'association Contenir se transformera en une table associative qui pourra s'appeler LignesFactures.
    Et je conseille de reporter dans l'association Contenir le prix vendu hors taxes car si le prix du produit change, ça change le montant des factures déjà émises et/ou payées !

    Pour une appli simple, l'ensemble est correct.
    On pourrait peaufiner en externalisant la ville par exemple. Ca éviterait les erreurs de saisie. Et les résultats incomplets lors de requêtes par exemple de nombre de clients par ville :
    Ville : Nombre
    Saint Nazaire : 1
    Saint-Nazaire : 5
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Oui lignes est un peu l'équivalent de produits , j'ai préféré l'appeler "lignes" car cela pourra aussi désigner des heures de main d'oeuvre.
    Pour le prix effectivement je n'avais pensé aux répercutions d'un changement de prix au niveau rétro-activité

    Au niveau externalisation des villes par contre je ne pense pas avoir compris.
    Les mettre dans une entité à part pour en faire une table et afficher les villes déjà entrées dans une listbox lors de la saisie d'un nouveau client ? Si nouvelle ville , ajout à la table ?

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Mikerhinos Voir le message
    Oui lignes est un peu l'équivalent de produits , j'ai préféré l'appeler "lignes" car cela pourra aussi désigner des heures de main d'oeuvre.
    Donc des prestations de service.
    Dans la norme ISO 9000, le terme 'produit' est à prendre dans le sens de 'produit et/ou service'.

    Au niveau externalisation des villes par contre je ne pense pas avoir compris.
    Les mettre dans une entité à part pour en faire une table et afficher les villes déjà entrées dans une listbox lors de la saisie d'un nouveau client ? Si nouvelle ville , ajout à la table ?
    C'est ça.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Mise à jour (version finale je pense)




    Pour la ville j'ai trouvé une solution pas trop male je pense : j'ai mis la main sur un fichier de l'INSEE contenant le numero INSEE de chaque commune et ville de France , chacune avec leur code postal et nom , tout cela séparé par des ";" , du coup importation dans une table MySQL tout ce qu'il y a de plus aisé , j'ai fais le test en local ca marche impec même s'il a quand même fallu 30mn d'import (+38.000 enregistrements tout de même). Du coup lors de l'inscription d'un user ou d'un client de cet user , une textbox recevant le code postal , "ok" , hop en ajax affichage en dessous d'une listbox contenant les communes ayant ce code postal et roules ma poule aucun risque de doublon de nom de ville

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Comme ton fichier des villes contient les codes postaux, ça veut dire que tu as plusieurs fois les mêmes villes car les grandes villes ont plusieurs codes postaux.
    Et certains codes postaux couvrent parfois plusieurs communes.
    "C'est vrai qu'ils sont charmants, tous ces petits villa-a-ages..." (Georges Brassens)

    La TVA est bien propre à un produit (ou service) mais la remise dépend de la facture donc de la ligne de facture.

    Mon produit A vaut 10 euros l'unité et comme mon client X en a commandé 2000 je lui fais une remise de 10%. Par contre sur la même facture il a commandé un produit B qui vaut 25 euros en 2 exemplaires et là il n'a pas de remise.

    Le même jour, mon client Y commande lui aussi du produit A mais en seulement 10 exemplaires et n'a pas droit à la remise.

    Le reste me semble OK.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Pour les villes , si je fais un select * from ville where nom_ville like "Paris%" (c'est un exemple) , j'ai la liste de tous les arrondissements de Paris qui ont chacun leur code postal , je n'ai pas l'air d'avoir de doublon.

    Pour la remise je n'avais pas pensé à ça , pauvre de moi , c'est modifié et les tables sont crées , y a pu qu'à utiliser tout ca en php , merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Création de site web
    Par nati dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2006, 10h05
  2. Cahier des charges création d'un site Web
    Par Naktan dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 24/01/2006, 18h04
  3. Réponses: 11
    Dernier message: 12/01/2006, 18h01
  4. [devis] Création site web pro
    Par sheepk dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 28/11/2005, 13h07
  5. Réponses: 2
    Dernier message: 04/08/2005, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo