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

Merise Discussion :

MCD Devis, Commande et facturation


Sujet :

Merise

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut MCD Devis, Commande et facturation
    Bonjour,

    Je suis en cours d'élaboration d'un MCD pour la mise en place d'une facturation. L'entreprise vend des installations spécialisées ce qui fait que les lignes de produits sont spécifiques à un seul client avec un prix défini pour chaque ligne.

    Le principe est le schéma classique client, devis, commande et facture.

    Mais tout se complique lors de la mise en œuvre en raison des particularités de fonctionnement de l'entreprise.
    J'ai prévu les entités suivantes

    Clients(IdClient, Nom, Autres_Attribus)

    Devis(IdDevis, Date, Num, Autres_Attributs)
    Commandes(IdCde, Date, Num, Autres_Attributs)
    Factures(IdFact, Date, Num, Autres_Attributs)

    Pour les trois dernières entités, il existe les lignes de produits que j'ai prévu d'inclure dans une entité

    Lignes(IdLig, Désignation, Spécificité, quantité, prix_Unit)

    Mon idée est d'avoir une entité ligne commune pour les devis, commandes et factures, car dans 80 % des cas, la ligne du devis est reprise dans la commande. Puis la ligne de commande est reprise dans la facture. Mais les 20 % qui restent me préoccupent.

    Une commande ne peut posséder qu'un seul devis
    Une facture ne peut posséder qu'une seule commande

    Mais dans la pratique, nous avons :

    Un devis peut faire l'objet d'une commande ou simplement être classé sans suite (Refus du client)
    Une commande peut être la reprise d'un devis, mais il est possible que certaines lignes du devis ne soient pas retenues dans la commande. Il existe aussi la possibilité d'ajouter des lignes complémentaires à la commande, lesquelles ne sont pas prévues au devis. (Visite du commercial pour prise de commande)
    Une commande peut être faite sans devis lors de la visite d'un commercial

    Pour la facture, nous avons la même situation reprise de la commande, lignes de commandes non retenues ou ajout direct de lignes livrées sans devis ni commande. Il s'agit d'ajout complémentaire de dernière minute au moment de l'installation
    Une facture peut également être faite directement de produits livrés sans devis et sans commande. (Petites installations)
    J'ai créé mon MCD sur le principe suivant



    Duquel j'obtiens le MPD ci-après.



    J'ai ensuite procédé à quelques corrections pour parvenir au MPD suivant :



    L'examen de ce document me conduit à constater que de nombreuses clés étrangères vont être nulles. Je vais donc être dans l'impossibilité de mettre en œuvre l'intégrité référentielle sur ces clés d'où une fragilité de ma base et de mon développement du logiciel de gestion commerciale.

    Mes questions :
    Ma démarche présente-t-elle, sans être satisfaisante, une certaine cohérence ?
    Serait-il préférable de créer une entité lignes spécifiques Devis, Commandes, Factures ? Dans cette approche, il y aura redondance de 80 % des lignes de produit.
    Existe-t-il un moyen pour assurer une fiabilité aux différentes clés étrangères par l'intermédiaire de triggers ou autres. L'objectif est de s'assurer qu'il n'existe aucune ligne orpheline, c'est-à-dire sans au minimum une clé étrangère reliée à un devis, à une commande ou à une facture.

    J'ai utilisé PowerAMC 12.1 pour réalisé le MCD

    Ne pas hésiter à me faire part de vos remarques et critiques. Je vous en remercie par avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Ton problème de clés étrangères nulles vient du fait que ton logiciel de modélisation a mal interprété les cardinalités (0,1 - 0,n).
    Dans ce cas, il faut normalement générer une table associative, comme dans le cas des cardinalités (0,n - 0,n).

    Par exemple, dans ton MCD il y a ceci :
    Devis -1,n----Comporter----0,1- Ligne

    Ceci doit engendrer le MLD suivant :
    Devis <----Ligne_Devis---->Ligne

    Et donc il y aura une table Ligne_Devis (IdLig, IdDevis...).

    Idem pour les autres associations du même type.

    Ça demande un examen plus approfondi mais il me semble que ton MCD permet aussi qu'une commande contienne des lignes venant d'un autre devis que celui auquel elle fait référence.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    Je te remercie pour ta réponse rapide, il faut dire que tu es très actif sur ce forum.

    J'avais pensé qu'il fallait des tables associatives ce qui ne semble possible avec PowerAMC qu'en créant les cardinalités (0,n - 0,n). C'est un peu dommage. Enfin, l'essentiel est de trouver une solution.

    Par contre, tu indiques :
    Ça demande un examen plus approfondi mais il me semble que ton MCD permet aussi qu'une commande contienne des lignes venant d'un autre devis que celui auquel elle fait référence.
    J'avoue ne pas avoir pensé à ce point. Après examen, cela me semble impossible, mais je n'en suis pas totalement certain.

    Effectivement, il serait bien que la base de données soit mise en œuvre pour interdire cette opération lorsqu'un devis a été attaché à une commande. Par contre, je ne vois pas comment modifier mon MCD pour parvenir à ce résultat.

    Si tu pouvais m'éclairer, j'en serais ravi.

    Encore merci pour ton aide

    Cordialement

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut Pour évacuer le bonhomme NULL
    Bonsoir,


    Avec Power AMC, il est tout à fait possible de définir des entités-types associatives avec des cardinalités maximum 1 dans tous les sens. Prenons par exemple le cas de votre relation Facturer associant Commande et Facture :

    MCD

    Notez l’identification relative portée par la patte connectant R2 et Facturer.

    Par ailleurs, indépendamment de cela, CommandeNumero et FactureNumero doivent faire l’objet d’identifiants alternatifs.




    MLD

    Reste à supprimer les arcs allant de Commande à Facturer et de Facture à Facturer.

    En outre, comme Power AMC oublie de le faire, CommandeId est à définir comme clé alternative (mickey <ak>) de la table Facturer.




    Voyez aussi la discussion ouverte par Oishiiii : Passage MCD vers MLD. Créer la table jointure.

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut Utilisation de la notation Entité/Relation
    En complément :

    En utilisant la notation Entité/Relation (ou E/R + Merise), on peut éviter la génération des cycles par Power AMC, donc d’avoir à les supprimer manuellement.

    A partir du MCD ci-dessous, on produit le même MLD que celui que j’ai présenté dans mon message précédent (avec toutefois l’obligation là aussi de définir manuellement CommandeId comme clé alternative de la table Facturer).



    Pour voir comment définir un rôle dominant : voyez encore la discussion ouverte par Oishiiii : Passage MCD vers MLD. Créer la table jointure. (Chercher le mot-clé « dominant ».)

    Ou encore : la discussion ouverte par BLJ.CHAUVIN : Multiples catégories de produits.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    Je vous remercie pour vos réponses.

    Je vais maintenant étudier toutes vos remarques et les mettre en application.

    Je vous montrerai le résultat, tout d'abord par reconnaissance pour votre travail, puis afin que votre œil de professionnel m'indique si j'ai fait une erreur.

    Cordialement à vous deux

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par CinePhil Voir le message
    [...]il me semble que ton MCD permet aussi qu'une commande contienne des lignes venant d'un autre devis que celui auquel elle fait référence.
    CinePhil a raison. Selon votre MCD, vous pouvez parfaitement tricoter les lignes d’une commande d’un client donné avec celles d’un autre client.

    De la même façon, vous pouvez tricoter un devis d’un client avec une commande d’un autre client. Ce risque-là peut être évité en identifiant DEVIS, COMMANDE et FACTURE relativement à CLIENT puis, après avoir éliminé les scories dans le MLD, produire ceci :



    Pour éviter de tricoter les lignes d’une commande d’un client donné avec celles d’un autre client, vous pouvez identifier les lignes relativement au client (et tant qu’à faire utiliser l’héritage pour définir une ligne comme la généralisation des 3 types de lignes).

    MCD (partiel) :



    MLD :


    Concernant votre MLD :

    Table Lig_devis : vous avez défini {Index du devis} comme clé alternative, en conséquence de quoi un devis ne pourra comporter qu’une ligne, ce qui est plutôt réducteur...

    L’utilisation du type SMALLINT ne vaut que si les valeurs ne dépassent pas 2^16 : attention aux lignes.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    Je vous remercie pour une réponse aussi rapide.

    CinePhil a raison. Selon votre MCD, vous pouvez parfaitement tricoter les lignes d’une commande d’un client donné avec celles d’un autre client.
    Je n'ai jamais douté de la remarque de CinePhil, mais je n'avais pas encore situé correctement cette faiblesse pour la corriger.
    Avec votre exemple, j'ai compris et vais traiter ce point, puisqu'il convient de mettre en place une association dépendante.

    Table Lig_devis : vous avez défini {Index du devis} comme clé alternative, en conséquence de quoi un devis ne pourra comporter qu’une ligne, ce qui est plutôt réducteur...
    Lors de mes quelques essais d'hier pour la mise en place de la base de données, je me suis aperçu de mon erreur. En effet, un devis = une ligne, ce n'est pas le top.

    L’utilisation du type SMALLINT ne vaut que si les valeurs ne dépassent pas 2^16 : attention aux lignes
    Là, également, j'ai vu l'anomalie au moment de créer la première table. J'ai fait les corrections.

    Il faut dire, que je ne maîtrise pas tous les méandres de la conception MCD et MPD. Entre étudier dans les livres, les tutorials et passer à la pratique, il y a un monde à franchir. Il en est de même pour PowerAmc 12.1 qui est un outil remarquable, mais il faut un peu de temps pour se l'approprier.

    Je vais continuer de travailler mon MCD dans le sens que vous m'avez indiqué.

    Après modification, je posterai la nouvelle présentation.

    Merci encore pour le temps consacré.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    J'ai modifié mon MCD et MPD en fonction des observations présentées par @fsmrel et @CinePhil.

    Mon MCD se présente ainsi :



    Ce qui me permet de passer au MPD lequel, après diverses modifications, s'établit comme suit :



    Merci de m'indiquer si la présentation est satisfaisante ou si il convient de modifier un dernier détail.

    Merci pour tout ce que j'ai appris lors de l'élaboration de projet et des conseils que vous m'avez communiqués.

    Je vais maintenant créer ma base de données et faire des essais pour mieux comprendre mon MPD.

  10. #10
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Merci de m'indiquer si la présentation est satisfaisante ou si il convient de modifier un dernier détail.
    A mon avis c’est tout bon.

    Je vais maintenant créer ma base de données et faire des essais pour mieux comprendre mon MPD.
    N’hésitez pas à poser vos questions au sujet code SQL produit, d’autant plus que j’ai généré mon propre code avec SQL Server Express 2005 et pourrai ainsi me pencher sur d'éventuels points particuliers.

    Bon courage.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour

    J'ai supprimé le message précédent car le MCD était une horreur et très loin du descriptif.

    J'ai un nouvel MCD en cours, il me reste un ou deux points à terminer. Après, je verrai pour les questions à poser.

    Merci à ceux qui m'ont aidé pour la 1ère partie.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    Merci à tous ceux qui m'ont aidé.

    Je mets résolu. Si nécessaire, j'ouvrirai une nouvelle discussion.

  13. #13
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Juste une petite question............
    Pour les attributs/champs TOTAUX (HT,TVA,TTC) dans les tables DEVIS,COMMANDE et FACTURE faudra-t-il qu'ils soient dans ces tables ou bien il suffirait de les sommer depuis les tables lignes ?
    Qu'es-ce qui est recommandé de faire ?

    Merci.

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    Réponse à @freud.

    Je me permets de te répondre, car depuis le 05/05/2010, le projet a évolué et cette partie du MPD est maintenant programmée et en phase de test.

    Pour ta question, effectivement le calcul des totaux HT, TVA et TTC se fait à partir des lignes. Pour cela, j'ai créé des vues qui me permettent d'obtenir ces montants facilement et rapidement.

    La règle générale est : toute valeur qui peut être calculée n'a pas à être stockée dans la base. Après, il y a des exceptions qui consiste à dénormaliser la base suivant les situations, mais il s'agit d'une autre histoire.

    Je pense avoir répondu à ta préoccupation.

    Bon courage

  15. #15
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonsoir,

    Citation Envoyé par seabs
    Je pense avoir répondu à ta préoccupation
    Oui amplement.

    Merci beaucoup seabs
    Et beaucoup de réussite pour ton projet

  16. #16
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonsoir,

    Excusez-moi de revenir sur cette discussion mais sur le dernier MCD de seabs
    Je constates que sur l'entité LIGNE l'attribut LigneDesignation est en varchar(20) s'agit-il de l'article ?
    Et je suppose que les taux de tva et de remise ont été incluse dans l'entité LIGNE .....?

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 576
    Points : 1 071
    Points
    1 071
    Par défaut
    Bonjour,

    Oui, la ligne désignation concerne la dénomination de l'article. Il faut savoir que la situation de l'entreprise ne correspond pas directement à ton cas personnel.

    Cette entreprise assure la vente de produit à installer. Lorsque le bon de commande est accepté par le client, il est transmis à un installateur qui se charge de l'approvisionnement du chantier, des retours, etc.

    Après l'installation, il y a un bon de réception qui est signé entre l'entreprise commerciale, l'installateur et le client. Dès cette signature, l'entreprise commerciale fait la facture au client et soutraite la garantie et la maintenance. Donc, l'entreprise commerciale ne fait aucune livraison, donc aucun stock.

    La ligne est un prix net, il n'existe qu'une remise éventuelle au niveau de la facture. Elle est incluse à ce niveau.

    Il a été décidé de faire une facture par taux de TVA, le taux est donc inclus au niveau de la facture.

    Maintenant, tout cela peut s'inclure au niveau de la ligne ou dans une entité suivant la situation.

    A ta disposition pour tout autre renseignement.

  18. #18
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Désolé, je pensais que c'etait pour une gestion commerciale standard

    Merci pour ta réponse et ta disposition.

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

Discussions similaires

  1. MCD Devis facture
    Par nabou dans le forum Merise
    Réponses: 0
    Dernier message: 01/05/2013, 23h30
  2. Réponses: 1
    Dernier message: 09/06/2012, 00h10
  3. Réponses: 4
    Dernier message: 05/01/2012, 21h19
  4. [MCD] Devis - facturation
    Par jeff69 dans le forum Schéma
    Réponses: 2
    Dernier message: 13/04/2008, 13h32
  5. MCD devis + facturation
    Par hugue dans le forum Schéma
    Réponses: 4
    Dernier message: 16/01/2008, 19h45

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