---
suivi: 1193
date: 2026-08-04
sujet: Retrait exigence poste sur sans_marche (correction #1191)
chantier: depot-factures
type: fix
statut: poussé
hash: db208c89
fichiers:
  - app/Http/Controllers/DepotFactureController.php
  - resources/js/Pages/DepotFactures/DepotFactureSaisieForm.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1193 — retirer l’exigence poste sur `sans_marche=1` (mesure prod 40/40
sans poste). Conserver exigence sur `rattachement_poste_direct`. Conserver
masquage retenues / sentinelles / reconstit. / CIE du #1191. Avant tout
déploiement combiné #1191+#1192+#1193.

## FICHES LUES

- `SUIVI_1191` — exigence poste sans_marche à retirer ; retenues / sentinelles
  à conserver.
- `SUIVI_1192` — ne pas casser header collant / options avancées.

## SYNTHÈSE

### Décision Robin
`sans_marche` = marché à créer : le poste n’est pas connu → **non obligatoire**.
`rattachement_poste_direct` = charge hors marché → **poste toujours obligatoire**.

### Serveur
Retrait du `if ($sansMarche && $posteTypeId === null)` 422.
Conservé : assert poste si `rattachement_poste_direct` ; validation d’éligibilité
si un poste est fourni sur `sans_marche` ; `assertAucuneRetenueHorsMarche`.

### Front
Label poste : `*` + placeholder charge directe seulement si rattachement ;
« (optionnel) » si sans_marche. Payload continue d’envoyer le poste s’il est
renseigné. Aucune écriture data sur les 40 dépôts.

### Conservé du #1191
Masquage RG/CP/Finitions/OPC + 422 serveur ; sentinelles ; hasRetenueUiActive ;
CIE/cagnotte hors masquage.

## DÉPLOIEMENT-TEST

```text
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
```

Pas de migrate. Tester enregistrement dépôt sans_marche sans poste (ex. 1212).

## LEÇON

Mesure prod avant d’exiger un champ : 100 % des `sans_marche` sans poste
prouve que l’exigence n’existait pas sur ce chemin (#1026 « rétablir » était
trompeur). Ne pas déployer #1191 avant cette correction.
