# Rapport v1.19.2 — Reprise du dossier du comptable : les rangs tenus par la corbeille se libèrent aussi

Correctif court (`PROMPT-V1.19.2.md`, 07/11/2026). Base `v1.19.1` (`a259ed5`, en prod).

## Constat

En prod le 07/11 à 15 h, `mobdie:deployer-v1190` montrait 35 et 36/2026 (Fakhar Naima) **à la
corbeille**, sans paiement, opération ni échéance — et `reprise:factures-cabinet` (simulation)
refusait : « la pièce 35/2026 n'est ni une facture annulée ni un brouillon (statut « à la
corbeille ») ». Le premier tableau du contrôle affichait encore « Annulée / Brouillon » pour 35 et
36 (il lisait le statut sans voir la corbeille) et un autre client pour 38 (il lisait le nom porté
par la pièce, pas celui du dossier).

## Ce qui change

- `app/Console/Commands/Reprise/FacturesCabinet.php`
  - Un rang tenu par une pièce **à la corbeille** se libère aussi, avec les mêmes garde-fous que
    l'annulée : aucun paiement (direct ou par échéance), aucune opération au journal, aucune
    échéance → sinon refus global, rien n'est écrit (tout ou rien, inchangé).
  - La pièce est renumérotée comme les autres (numéro suivant de la série, note « Renumérotée le
    07/11/2026 : n° initial X… ») et **reste à la corbeille** : `save()` ne touche pas
    `deleted_at` — ni restauration, ni suppression définitive. Statut inchangé.
  - Tableau 1 : colonne Statut affiche « À la corbeille ».
  - Le brouillon et l'annulée gardent exactement les règles v1.19.1.
- `app/Console/Commands/DeployerV1190.php` : le premier tableau (« Rangs du dossier du comptable »)
  tient compte de la corbeille et nomme la pièce comme le second — `client->raison_sociale` avant
  `client_nom`, « À la corbeille » avant le statut. La légende du second tableau dit que la
  corbeille est admise (sans paiement, opération ni échéance) et qu'elle y reste.

Aucune migration, aucune dépendance, aucun fichier déplacé ni supprimé, `public/build` inchangé.

## Tests

`tests/Feature/V1190/LotV1190Test.php` — les pièces se mettent à la corbeille par `deleted_at`
directement (comme en prod : l'application refuse de supprimer une pièce qui a pris rang,
`FacturePriseEnSerieException`) :

- rang tenu par une pièce à la corbeille sans lien (35 annulée, 36 brouillon détaché, comme en
  prod) : simulation sans écriture puis application — renumérotées, statut inchangé, **toujours à
  la corbeille**, les rangs repris par les factures du cabinet, soldes et opérations intacts ;
- pièce à la corbeille avec échéance / paiement / opération au journal → refus, rien n'est écrit ;
- contrôle de mise en ligne : les deux tableaux disent « À la corbeille » et le même nom
  (« 35/2026 : Fakhar Naima (À la corbeille) ») ;
- les tests v1.19.1 restent verts. Deux assertions du test v1.19.1 du contrôle ont été resserrées
  (`| 36/2026 | Fakhar Naima | Brouillon` au lieu de « Fakhar Naima » + « Brouillon » séparés) :
  le premier tableau nommant désormais Fakhar Naima, la même ligne portait les deux sous-chaînes et
  `expectsOutputToContain` ne consomme qu'une attente par ligne. Le comportement testé est le même.

Suite complète : **1 685 tests, 1 684 au vert** ; 1 échec préexistant propre au poste
(`PortailSousDomaineTest` — `APP_URL` du `.env` du Mac). Pint vert ; `npm run build` :
`public/build` identique à v1.19.1.

## Attendu en prod (simulation)

35 → 79/2026, 36 → 80/2026 (à la corbeille), 38 → 81, 39 → 82, 42 → 83, 43 → 84 ;
« 6 pièces renumérotées (79/2026 à 84/2026) ; 6 factures créées, 3 840,00 DH TTC, hors
trésorerie ; 0 opération, 0 paiement, 0 e-mail » ; Avant = Après.

## Livraison

`4-livraisons/mobdie-v1.19.2.tar.gz` — delta v1.19.1 → v1.19.2 : 2 fichiers `app/`, `CHANGELOG.md`,
`docs/rapports/RAPPORT-V1.19.2.md`, `public/version.json` (v1.19.2). Pas de `public/build` (inchangé),
pas de migration, pas de `.htaccess`, rien à supprimer sur le serveur.
