Bonjour,
je travaille avec une base de données sous SQL Server 2005.
Mon entreprise facture à ses clients des services et des produits.
Il y a dans la base de données les tables:
- T_FACTURE_FAC (FAC_ID, FAC_REF, FAC_DATE, etc.)
- T_LIG_FAC : Détails de la facture (LIF_ID, LIF_NUM, LIF_LIBELLE, FAC_ID, etc.)
- TJ_SVC_CDE : Services commandés par le client (SVC_CDE_ID, SVC_CDE_QUTE, LIF_ID, etc.)
- TJ_PDT_CDE: Produits commandés par le client (PDT_CDE_ID, PDT_CDE_QUTE, LIF_ID, etc.)
Les relations entre les tables sont:
- T_FACTURES_FAC <- FAC_ID -> T_LIG_FAC
- T_LIG_FAC <- LIF_ID -> TJ_SVC_CDE
- T_LIG_FAC <- LIF_ID -> TJ_PDT_CDE
Les colonnes LIF_ID des tables TJ_SVC_CDE et TJ_PDT_CDE ont la valeur NULL lorsqu'ils ne sont pas facturés. Ainsi les services et les produits sont facturables si LIF_ID est NULL.
Les utilisateurs doivent pouvoir supprimer les factures. Les services et les produits présents sur la facture supprimée doivent alors être facturée sur une autre facture.
J'aimerais que les factures ne soient pas réellement supprimées de la base de données.
Lors de la suppression, je pense procéder comme décrit ci-dessous :
- j'ajoute à la table T_FACTURE_FAC, la colonne "FAC_SUPPRIME". La colonne FAC_SUPPRIME de la facture supprimée est mis à 1.
- la colonne LIF_ID des services et des produits associés sont remis à NULL pour qu'ils puissent être facturés sur une autre facture.
- Je crée une table d'historisation des produits facturés sur la facture supprimée et une autre pour les services.
Cela donnerait:
- TH_SVC_FAC (HIST_SVC_ID, LIF_ID, SVC_CDE_ID): L'identifiant de chaque service et du détail de la facture supprimée sont enregistrés dans cette table.
- TH_PDT_FAC (HIST_PDT_ID, LIF_ID, PDT_CDE_ID): L'identifiant de chaque produit et du détail de la facture supprimée sont enregistrés dans cette table.
Que pensez-vous de cette façon de procéder ? Quelle autre solution pourriez-vous me proposer ?
Merci d'avance,
++
Partager