================================================================================================ SUIVI #1223 — diag retenues / flags poste 2026-08-06T06:33:02+00:00 DB: mysql / hectareenvol LECTURE SEULE. Volumes = base connectée. ================================================================================================ 1. SCHÉMA — tables / colonnes des flags ------------------------------------------------------------------------------------------------ Niveau réel des flags : table `postes_budgetaires_types` (modèle PosteBudgetaireType). (pas sur postes_budgetaires programme, pas sur rubriques_bilan) Colonnes : - lie_aux_marches : type=tinyint null=NO default='0' - lie_aux_factures : type=tinyint null=NO default='0' - est_taxe : type=tinyint null=NO default='0' - est_concessionnaire : type=tinyint null=NO default='0' - applicable_retenue_garantie : type=tinyint null=NO default='1' - applicable_caution_bancaire : type=tinyint null=NO default='1' - applicable_compte_prorata : type=tinyint null=NO default='1' - applicable_opc : type=tinyint null=NO default='1' - applicable_cie : type=tinyint null=NO default='1' - applicable_marche : type=tinyint null=NO default='0' - applicable_budget : type=tinyint null=NO default='0' Table postes_budgetaires : UNIQUE (programme_id, poste_type_id) attendu — flags retenues ? postes_budgetaires.lie_aux_marches : non postes_budgetaires.lie_aux_factures : non postes_budgetaires.est_taxe : non postes_budgetaires.est_concessionnaire : non postes_budgetaires.applicable_retenue_garantie : non postes_budgetaires.applicable_caution_bancaire : non postes_budgetaires.applicable_compte_prorata : non postes_budgetaires.applicable_opc : non postes_budgetaires.applicable_cie : non postes_budgetaires.applicable_marche : non postes_budgetaires.applicable_budget : non Table rubriques_bilan — flags retenues ? rubriques_bilan.applicable_retenue_garantie : non rubriques_bilan.applicable_compte_prorata : non rubriques_bilan.applicable_opc : non rubriques_bilan.applicable_cie : non 2. RÉPARTITION de chaque flag (1 / 0 / NULL) ------------------------------------------------------------------------------------------------ Total postes_budgetaires_types = 108 lie_aux_marches | 1= 5 | 0= 103 | NULL= 0 lie_aux_factures | 1= 10 | 0= 98 | NULL= 0 est_taxe | 1= 4 | 0= 104 | NULL= 0 est_concessionnaire | 1= 7 | 0= 101 | NULL= 0 applicable_retenue_garantie | 1= 22 | 0= 86 | NULL= 0 applicable_caution_bancaire | 1= 22 | 0= 86 | NULL= 0 applicable_compte_prorata | 1= 2 | 0= 106 | NULL= 0 applicable_opc | 1= 2 | 0= 106 | NULL= 0 applicable_cie | 1= 2 | 0= 106 | NULL= 0 applicable_marche | 1= 58 | 0= 50 | NULL= 0 applicable_budget | 1= 50 | 0= 58 | NULL= 0 3. TABLEAU DE FIABILITÉ (objet 1) + verdict ------------------------------------------------------------------------------------------------ Critères : - used_flag0 = marchés/dépôts avec retenue réelle ≠ 0 alors que flag=0/NULL - flag1_jamais = postes flag=1 sans aucun marché ni dépôt utilisant la retenue FIABLE si used_flag0 = 0 (ou négligeable) ET le flag discrimine (n0 > 0). NON FIABLE si used_flag0 > 0 (masquer cacherait des retenues légitimes). NON DISCRIMINANT si n0=0 (tout à 1, défaut migration #juin 2026) — masquage sans effet. lie_aux_* : legacy connu NON FIABLE (#1023) — inclus pour comparaison. flag | à 1 | à 0/NULL | used flag=0 | flag=1 jamais | verdict applicable_retenue_garantie | 22 | 86 | 24 | 21 | NON FIABLE applicable_compte_prorata | 2 | 106 | 28 | 1 | NON FIABLE applicable_opc | 2 | 106 | 0 | 1 | FIABLE (à confirmer métier) applicable_cie | 2 | 106 | 0 | 2 | FIABLE (à confirmer métier) applicable_caution_bancaire | 22 | 86 | 0 | 21 | FIABLE (à confirmer métier) lie_aux_marches | 5 | 103 | 134 | 0 | NON FIABLE (legacy #1023) lie_aux_factures | 10 | 98 | 115 | 0 | NON FIABLE (legacy #1023) Verdicts résumés : applicable_retenue_garantie → NON FIABLE applicable_compte_prorata → NON FIABLE applicable_opc → FIABLE (à confirmer métier) applicable_cie → FIABLE (à confirmer métier) applicable_caution_bancaire → FIABLE (à confirmer métier) lie_aux_marches → NON FIABLE (legacy #1023) lie_aux_factures → NON FIABLE (legacy #1023) 4. DÉPÔTS À RISQUE (objet 2 — INFORMATIONS, Q3B Robin : pas de zéro rétroactif sur validés) ------------------------------------------------------------------------------------------------ Risque B résolu : masquage+zéro UNIQUEMENT dépôts non encore validés ; validés/compta/payés = lecture seule « (historique) ». Liste = dépôts avec retenue ≠ 0 alors que le flag poste du marché est 0/NULL. Total lignes risque (1 dépôt peut apparaître plusieurs fois si plusieurs retenues) = 2 Ventilation par bucket statut : historique_ou_cloture : 2 Liste (max 200) : id | statut | bucket | programme | marché | poste | retenue | valeur | flag 428 | rejete | historique_ou_cloture | ARBOREA | MCH-2026-023 | SPS (CSPS) | RG | 5.0000 | applicable_retenue_garantie 428 | rejete | historique_ou_cloture | ARBOREA | MCH-2026-023 | SPS (CSPS) | CP | 1.5000 | applicable_compte_prorata Note finitions : aucun flag `applicable_finitions` sur le poste — hors croisement flag. 5. MARCHÉS avec % de retenue sans flag correspondant ------------------------------------------------------------------------------------------------ RG% : 0 CP% : 0 OPC% : 0 a_caution=1 sans applicable_caution_bancaire : 0 Marchés avec poste_budgetaire_type_id : 171 ; sans poste : 0 Un marché = un poste (colonne unique) — pas de multi-poste à arbitrer sur le marché. 6. COLONNES % SUR LES MARCHÉS + taux de remplissage ------------------------------------------------------------------------------------------------ Total marchés = 171 retenue_garantie_pct : type=decimal null=NO default='5.00' remplissage : >0 = 53 | ≈0 = 118 | NULL = 0 compte_prorata_pct : type=decimal null=NO default='1.50' remplissage : >0 = 56 | ≈0 = 115 | NULL = 0 taux_opc_pct : type=decimal null=NO default='0.00' remplissage : >0 = 2 | ≈0 = 169 | NULL = 0 rg_complementaire_pct : type=decimal null=NO default='0.00' remplissage : >0 = 1 | ≈0 = 170 | NULL = 0 Préremplissage dépôt : existant (DepotFactureSaisieForm.applyRetenuesPrefillDepuisMarche lit marche.retenue_garantie_pct / compte_prorata_pct / taux_opc_pct). Création marché : défauts UI Create.vue RG=5 CP=1.5 OPC=0 ; serveur normaliserRetenuesSelonApplicabilitePoste force 0 si flag poste=false. Pas de % CIE ni finitions sur marches — CIE/finitions = montants dépôt. Aucune migration attendue pour le préremplissage. 7. ANOMALIES ------------------------------------------------------------------------------------------------ applicable_marche=1 mais lie_aux_marches=0/NULL : 53 lie_aux_marches=1 mais applicable_marche=0/NULL : 0 postes sans rubrique_bilan_id : 0 marchés avec poste_budgetaire_type_id orphelin : 0 ================================================================================================ FIN #1223 — coller cette sortie dans la fiche / arbitrage Robin. Aucun écriture. Aucun arbitrage Sabrina/Rudy requis sur le risque B (décision Robin). ================================================================================================