DCM_FQ_2 — Devis / offre de référencement
Objet (quoi enregistrer)
Enregistrer une offre chiffrée de prestation de diagnostic : le périmètre (diagnostics dus), le détail tarifaire ligne par ligne, le total, la validité et le statut. Support de la transformation devis → commande (DCM_PRO_2). [STANDARD]
Champs / structure
Prototype des tables cibles
dcm.devis(en-tête) +dcm.devis_lignes(détail).colonne: type.
En-tête dcm.devis :
devis_id: uuid (PK)
numero_devis: text (unique) # ex. DEV-2026-0042
prospect_id: uuid (FK → dcm.prospects) # NULL si demande directe
client_payeur_nom: text # vendeur/bailleur (souvent le payeur)
prescripteur_nom: text # agence/notaire/syndic à l'origine
bien_adresse: text
bien_type: enum(maison | appartement | immeuble | local_pro | terrain | autre)
bien_copropriete: bool
bien_annee_construction: int
bien_usage: enum(habitation | erp | mixte | autre)
bien_surface_m2: numeric
transaction: enum(vente | location | travaux | demolition | autre)
type_offre: enum(devis_ponctuel | grille_referencement)
montant_ht: numeric
tva: numeric
montant_ttc: numeric
remise_pct: numeric
validite_devis_jours: int # durée de validité de l'offre
statut: enum(brouillon | emis | accepte | refuse | sans_suite | expire)
motif_perte: text # si refuse/sans_suite
date_emission: date
date_reponse: date
lettre_mission_signee: bool
dossier_id: text # alloué à la signature (lien J1, YYMMDD-NN-CLIENT-VILLE)
cree_le: timestamptz
maj_le: timestamptz
[STANDARD]
Détail dcm.devis_lignes :
ligne_id: uuid (PK)
devis_id: uuid (FK → dcm.devis)
diagnostic_code: text # ex. AMI.AV, ELEC.AV, CREP, DPE, GAZ, TERM, CARREZ — cf. Référentiel Services (Lot 7bis)
diagnostic_libelle: text
prix_unitaire_ht: numeric
quantite: int
reconduction: bool # diagnostic antérieur valide réutilisé
option: bool # ligne optionnelle (ex. amiante à refaire — vices cachés)
sous_total_ht: numeric
[STANDARD]
Règles de remplissage
diagnostic_codealigné sur le Référentiel des Services VESICA (Lot 7bis : codes courtsAMI.CAV,ELEC.AV…). [CORPUS] (04Lot 7bis)- La liste des lignes découle du cadrage C1 (cf.
DCM_IQ_3) — pas d'invention commerciale du périmètre. [CORPUS] reconduction = true→ ligne à 0 € ou exclue, signalée au client (diagnostic antérieur valide). [CORPUS] (M0)option = true→ ligne non incluse au total par défaut (ex. amiante à refaire). [CORPUS] (M3C1)montant_ht≥ plancher de marge (cf.DCM_IQ_3). [STANDARD]- À la signature :
lettre_mission_signee = true, allouerdossier_id→ déclenche J1. Fin périmètre DCM. [CORPUS] motif_perteobligatoire sistatut ∈ {refuse, sans_suite}(analyse du taux de transformation). [STANDARD]
Rattachement (procédure/instruction)
- Procédure :
DCM_PQ_2. [STANDARD] - Instruction :
DCM_IQ_3(établir le devis). [STANDARD]
Enregistrement résultant
- Un devis persistant (1 en-tête + N lignes) ; à la signature, génère la lettre de mission qui fait naître le dossier (handoff J1 → ADV). En v0 : modèle bureautique + registre. Cible : Postgres + édition console. [STANDARD] + [CORPUS]