VESICA
FQDAF_FQ_1Brouillon

DAF_FQ_1 — Facture de vente (structure de données)

Formulaire· Administrative & Financière· émetteur VESICA DAF_PRO_1

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 : passe emise → envoyee → payee (ou impayee, ou avoir). Le passage à payee vient 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 : format YYMMDD-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]