Files
Ferme/frontend/services/dto/bovine-data.ts
tristan 8f88abab46 feat : Reception.validatedAt + statut entrées + mode consultation
- Backend : champ Reception.validatedAt (timestamp) avec PreUpdate + helpers
  isFullyConfirmed/tryValidate ; sync EDNOTIF déclenche tryValidate sur
  les receptions impactées ; expose Supplier.name dans le groupe bovine:read.
- Migration : ajout colonne validated_at sans backfill (les receptions
  remontent en attente jusqu'au prochain sync).
- Front /entry-exit : remplace Historique par 'Entrées validées' (filtre
  exists[validatedAt]=true), ajoute filtres et colonne Statut sur les
  deux tableaux, retire Fournisseur, layout 2x2 (entrées + sorties).
- Front /entry-exit/entry/{id} : mode consultation quand entryCompleted=true
  (formulaire + actions masqués, colonne EDNOTIF par bovin) ; ajoute
  colonnes Vendeur et Cause dans le récap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 16:31:16 +02:00

43 lines
1.2 KiB
TypeScript

export interface BovineBuildingRef {
label: string
}
export interface BovineBuildingCaseRef {
caseNumber: number | null
building: BovineBuildingRef | null
}
export interface BovineData {
id: number
nationalNumber: string
receivedWeight: number | null
pricePerKg: number | null
finalPrice: number | null
arrivalDate: string | null
exitDate: string | null
buildingCase: BovineBuildingCaseRef | null
building: BovineBuildingRef | null
effectiveBuilding: BovineBuildingRef | null
supplier: { id: number; name: string } | string | null
workNumber: string | null
birthDate: string | null
bovineType: { id: number; label: string; code: string } | null
sex: string | null
ageMonths: number | null
exitedAt: string | null
reception?: string | null
entryCause?: 'A' | 'N' | 'P' | null
ednotifConfirmedAt?: string | null
}
export type BovinePayload = {
nationalNumber?: string
receivedWeight?: number | null
pricePerKg?: number | null
arrivalDate?: string | null
buildingCase?: string | null
supplier?: string | null
reception?: string | null
entryCause?: 'A' | 'N' | 'P' | null
}