- Champ entryCause sur Bovine (enum App\Enum\CauseEntree : Achat/Naissance/PretOuPension)
- Sélecteur "Cause d'entrée" sur le formulaire de saisie (default Achat, required)
- ednotif_confirmed_at sur Bovine : timestamp set par le sync EDNOTIF la première
fois qu'un bovin remonte dans getInventory. Backfill des bovins existants au
jour de la migration.
- Inventaire (page + export + stats) filtre les bovins encore "en attente
EDNOTIF" : ils n'apparaissent qu'une fois confirmés par le sync.
- getter getConfirmedBovineCount sur Reception, exposé en reception:read.
- Tableau Historique full-width sur /entry-exit listant les entrées validées,
avec filtres de colonnes (numéro, date, fournisseur), compteur Confirmés/Saisis,
et badge de statut "Confirmée" / "EDNOTIF en attente".
- Tableau récap de l'écran de saisie passé en useDataTableServerState pour
bénéficier du loading et de la pagination serveur.
- Validation entrée : confirm window obligatoire, message renforcé en cas
d'écart entre saisis et déclarés.
- Pattern projet "submitted" sur le formulaire d'ajout pour le visuel required.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Dépendance phpoffice/phpspreadsheet
- Endpoint GET /bovines/inventory-export : XLSX coloré, header figé, auto-filter, tri birthDate ASC
- Endpoint GET /bovines/inventory-stats : comptes par tranche d'âge (>=24, 22-24, 20-22)
- Bouton Excel à gauche du titre (style icône-only, même design que le bouton impression)
- Légende visuelle avec cartes bordées coloriées
- Ajustement seuils couleurs des lignes en -300 (base) / -400 (hover)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Ajout (X bovins) à côté du titre sur les pages inventaire et case
- Seuils par âge : 20-22 mois orange, 22-24 mois rouge, 24+ violet
- Couleurs renforcées en -200 / hover -300
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>