diff --git a/services/targo-hub/lib/legacy-sync.js b/services/targo-hub/lib/legacy-sync.js index c875f5a..8ca28d8 100644 --- a/services/targo-hub/lib/legacy-sync.js +++ b/services/targo-hub/lib/legacy-sync.js @@ -540,8 +540,8 @@ async function scoreboard () { const [fAcct, fSvcActive, fDelivery, fTicket, fInvoice, fPayment, fDevice, eCust, eSubActif, eLoc, eIssue, eInv, ePay, eDevice, ghost] = await Promise.all([ myc('SELECT COUNT(*) c FROM account'), - // F actif = service.status=1 SUR compte non-résilié (F ne cascade pas la résiliation → comptage brut gonflé) : comparé pomme-à-pomme au 'Actif' ERPNext maintenant nettoyé - myc('SELECT COUNT(*) c FROM service s JOIN delivery d ON d.id=s.delivery_id JOIN account a ON a.id=d.account_id WHERE s.status=1 AND a.status NOT IN (3,4,5)'), + // F actif = service.status=1 BRUT (ce que F croit actif, fantômes F-non-cascadés inclus) ; l'écart positif = fantômes avérés qu'ERPNext a retirés (raffinage 2026-07-06) + myc('SELECT COUNT(*) c FROM service WHERE status=1'), myc('SELECT COUNT(*) c FROM delivery'), myc('SELECT COUNT(*) c FROM ticket'), myc('SELECT COUNT(*) c FROM invoice'), @@ -564,7 +564,7 @@ async function scoreboard () { entities: [ row('customers', 'Clients', fAcct, eCust, 'F account ↔ Customer'), row('locations', 'Lieux de service', fDelivery, eLoc, 'F delivery ↔ Service Location'), - row('subscriptions', 'Abonnements actifs', fSvcActive, eSubActif, ghost ? `${ghost} actifs sur compte résilié — à revoir (fantômes payants >24 mois auto-annulés)` : 'F actif hors compte résilié ↔ Actif'), + row('subscriptions', 'Abonnements actifs', fSvcActive, eSubActif, `écart = fantômes avérés retirés d'ERPNext (payants, résiliés, F silencieux >24 mois) ; ${ghost} actifs sur compte résilié restants à revoir`), row('devices', 'Appareils', fDevice, eDevice, 'F device ↔ Service Equipment (liens orphelins possibles)'), row('tickets', 'Tickets', fTicket, eIssue, 'F ticket ↔ Issue (import à réparer)'), row('invoices', 'Factures', fInvoice, eInv, 'F invoice ↔ Sales Invoice'),