DAF_FQ_1 — Facture de vente (structure de données)
Objet (quoi enregistrer)
Enregistrer une facture de vente émise : son en-tête (numéro, dates, client, totaux, statut) et ses lignes (missions facturées). Prototype-fichier de la future table M2 factures (+ factures_lignes), magasin cible Postgres. [CORPUS] (ADR-033 — cible Postgres)
Champs / structure
[= prototype d'une table M2] — liste
colonne: type. Tenant-ready : aucune valeur tenant en dur. [CORPUS] (MACRO_PROJET/M4)
Table factures (en-tête) :
id: bigint identity # PK
numero: text # n° séquentiel continu (ex. F-2026-0042) — unique
dossier_id: text # rattachement dossier (M2 registre_dossiers ; pas de FK dure v1)
client_nom: text # raison sociale / nom du client facturé
client_adresse: text
client_siren: text | null # si client professionnel
client_tva_intra: text | null # si assujetti, ≥ 150 € HT
date_emission: date
date_prestation: date | null # fin d'exécution si ≠ émission
date_echeance: date # émission + délai (défaut 30 j)
total_ht: numeric(12,2)
taux_tva: numeric(4,2) # 20.00 par défaut
montant_tva: numeric(12,2)
total_ttc: numeric(12,2)
delai_paiement_jours: int # défaut 30
penalites_retard: text # mention conditions de règlement
statut: text # emise | envoyee | payee | impayee | avoir
mode_reglement: text | null # virement | cheque | CB | ...
pennylane_id: text | null # id de la pièce côté PennyLane (API)
date_paiement: date | null # renseigné au rapprochement (DAF_PRO_4) / suivi ADV
created_at: timestamptz # défaut now()
Table factures_lignes (détail) :
id: bigint identity
facture_id: bigint # FK → factures.id
service_code: text # code mission (référentiel services Lot 7bis, ex. AMI.CAV)
designation: text # libellé de la prestation
quantite: numeric(8,2) # défaut 1
prix_unitaire_ht: numeric(12,2)
taux_tva: numeric(4,2)
montant_ht: numeric(12,2) # quantite × prix_unitaire_ht
Règles de remplissage
numero: jamais réutilisé ni laissé en trou (R12 de DAF_IQ_1). [STANDARD]taux_tva: 20.00 sauf exception documentée (R11). [STANDARD]total_ttc = total_ht + montant_tva; cohérence vérifiée à l'enregistrement. [STANDARD]client_siren/client_tva_intra: obligatoires si client pro (et TVA intra si ≥ 150 € HT). [STANDARD]statut: passeemise → envoyee → payee(ouimpayee, ouavoir). Le passage àpayeevient du rapprochement bancaire (DAF_PRO_4) ou du suivi ADV ; la DAF ne « checke » pas le paiement opérationnel (frontière). [CORPUS] (08§4)dossier_id: formatYYMMDD-NN-CLIENT-VILLE(discipline workflow, non contraint en base). [CORPUS] (CLAUDE.md— conventions)
Rattachement (procédure/instruction)
- Procédure : DAF_PQ_1 (facturation client post-livraison).
- Instruction : DAF_IQ_1 (émettre une facture conforme).
- Consommée en aval par DAF_PRO_2 (écriture de vente), DAF_PRO_3 (TVA), DAF_PRO_4 (rapprochement →
date_paiement).
Enregistrement résultant
Une ligne factures (+ N lignes factures_lignes) par facture émise, miroir de la pièce déposée dans PennyLane, conservée 10 ans. [STANDARD]