Bonjour,
J’ai un doute sur la structure de base de données à mettre ne place pour réaliser ce qui suit.
L’application va tourner sous php + mysql +javascript.
J’ai une première interphase qui permet de saisir plusieurs lignes de choses à vendre.
Vente Dupond
Produit 1 | 100
Produit 2 | 300
Service 6 | 150
______________
Total | 550
Une fois validé, cela alimente automatiquement un compte bancaire.
Date…………..|Libellé……………………….|Catégorie…|Débit………|Crédit…..|Solde
--------------------------------------------------------------------------------------------------------
01/01/2008..|Client Dupont……………|Vente………|……………….|550……….|1550*
* solde avant opération : 1000
Je souhaite un peu comme à la manière de Microsoft Money pour ceux qui connaissent) pouvoir ventiler un montant au besoin.
Date…………..|Libellé……………………….|Catégorie….|Débit………|Crédit…..|Solde
--------------------------------------------------------------------------------------------------------
01/01/2008..|Client Dupont……………|Ventilation|……………….|550……….|1550
Avec en double cliquant sur Ventilation, l'utilisateur peut détailler le monant comme il veut. exemple :
Catégorie………………………………….| Montant
----------------------------------------------------------
Produit ……………………………………..| 400
Service………………………………………| 150
----------
550
On a donc une notion de vente, une notion de paiement et une notion ligne de paiement (détail) .
A une Vente correspond forcément 1 voir plusieurs paiements (cas d’un client qui paye en 2 fois par exemple) donc relation (1,n). Un paiement donné correspond au plus à une seule vente et peut ne correspondre à aucune vente (cas d’un don par exemple) (0,1).
Une ligne de paiement correspond à 1 ou plusieurs lignes de paiement, la somme de ces lignes étant égales au montant du paiement. Une ligne de paiement prises par mis toutes les lignes correspondant forcément à un et un seul paiement.
D’où l’idée d’une table Vente, une table Paiement et une table Ligne_paiement.
S’agissant d’une interphase avec une notion de débit et de crédit, je me suis dit pourquoi pas 2 champs : débit et crédit. Après réflexion, je me suis dit : une colonne suffit : un montant peut être positif ou négatif. En fonction de sa valeur, on l’affiche dans telle ou telle colonne. (si négatif alors débit, si positif = crédit, si nul ben on enregistre pas)
D’où la structure suivante :
Table Vente :
Id_vente
Montant _total (champ calculé = somme des items vendus)
Table Paiement
Id_paiement
Vente_id (clé étrangère = id_vente de la table vente)
Catégorie : plusieurs items possibles dont un particulier : ventilation
Table Ligne paiement
Id_ligne_paiement
Paiement_id (clé étrangère = id_paiement de la table Paiement)
Catégorie : plusieurs items possibles sauf ventilation
Montant_détail
Avec la Somme des Montant_détail pour un Paiement_id donné est obligatoirement égal au Montant_total de la table vente.
Qu'en pensez-vous ? Avez-vous déjà réalisé ce genre de chose. Est-ce que je fais fausse route ? Ai-je oublié une chose importante ?
Par avance merci.
Tavarlindar
Partager