---
suivi: 1760
date: 2026-09-30
sujet: Bouton Super-admin sur la fiche facture
chantier: factures
type: evolution
statut: poussé
hash:
fichiers:
  - app/Support/FactureSuperAdminLienAcces.php
  - app/Http/Controllers/FactureController.php
  - resources/js/Pages/Factures/Show.vue
  - tests/Unit/FactureSuperAdminLien1760SourceTest.php
  - public/build/
  - docs/suivi/SUIVI_1760_bouton_superadmin_fiche_facture.md
---

# SUIVI #1760 — Bouton Super-admin sur la fiche facture

## PROMPT ENVOYÉ

Bouton « Super-admin », à droite de « JSON brut », réservé à GS_ADMIN_ERP (m365GroupNames brut). Nouvel onglet vers la page super-admin de cette facture. Pas sur la fiche dépôt si l’en-tête n’est pas le même.

## FICHES LUES

- #1525 LEÇON : le JSON admin se décide par m365GroupNames() brut, jamais par une Gate.
- #1692 : la page super-admin lit la facture (`{facture}`), pas le dépôt. Ses droits restent les siens.

## CONSTAT DÉPÔT

La fiche dépôt (`DepotFactures/Show.vue`) n’a pas l’en-tête Historique / Voir la saisie / JSON brut. La consultation de saisie a seulement « JSON brut ». Le bouton n’y est pas ajouté.

## SYNTHÈSE

La route `admin.factures-superadmin.show` attend l’id facture. Le booléen et l’URL sont dans les props de la fiche, absents si le groupe n’est pas là. Le bouton reprend le style de « JSON brut » et ouvre un nouvel onglet.

## DÉPLOIEMENT-TEST

git pull origin main
php artisan optimize:clear
php artisan view:clear

Pas de migration. Pas de route:clear. Pas de journal. Pas de npm sur le serveur.

Bundles : Show-D_gQ6Isc.js, Show-3mPMvvNm.css, app-O_4PfTI9.js.

1. Robin (GS_ADMIN_ERP), facture 1713 : bouton à droite de JSON brut, nouvel onglet sur la page super-admin de cette facture.
2. Usurpation d’un compte sans GS_ADMIN_ERP (Rudy BENOR) : bouton absent.

## LEÇON

La page super-admin laisse aussi passer GS_DSI. Le bouton de la fiche, lui, ne regarde que GS_ADMIN_ERP sur la liste brute. Ne pas réutiliser hasAnyM365Group : un admin ERP passerait par Gate::before.
