|string> */ public function rules(): array { return [ 'client_id' => 'required|exists:clients,id', 'group_id' => 'nullable|exists:client_groups,id', 'quote_number' => 'required|string|max:191|unique:quotes,quote_number', 'status' => 'required|in:brouillon,envoye,accepte,refuse,expire,annule', 'quote_date' => 'required|date', 'valid_until' => 'nullable|date|after_or_equal:quote_date', 'currency' => 'required|string|size:3', 'total_ht' => 'required|numeric|min:0', 'total_tva' => 'required|numeric|min:0', 'total_ttc' => 'required|numeric|min:0', ]; } public function messages(): array { return [ 'client_id.required' => 'Le client est obligatoire.', 'client_id.exists' => 'Le client sélectionné est invalide.', 'group_id.exists' => 'Le groupe sélectionné est invalide.', 'quote_number.required' => 'Le numéro de devis est obligatoire.', 'quote_number.string' => 'Le numéro de devis doit être une chaîne de caractères.', 'quote_number.max' => 'Le numéro de devis ne doit pas dépasser 191 caractères.', 'quote_number.unique' => 'Ce numéro de devis existe déjà.', 'status.required' => 'Le statut est obligatoire.', 'status.in' => 'Le statut sélectionné est invalide.', 'quote_date.required' => 'La date du devis est obligatoire.', 'quote_date.date' => 'La date du devis n\'est pas valide.', 'valid_until.date' => 'La date de validité n\'est pas valide.', 'valid_until.after_or_equal' => 'La date de validité doit être postérieure ou égale à la date du devis.', 'currency.required' => 'La devise est obligatoire.', 'currency.size' => 'La devise doit comporter 3 caractères.', 'total_ht.required' => 'Le total HT est obligatoire.', 'total_ht.numeric' => 'Le total HT doit être un nombre.', 'total_ht.min' => 'Le total HT ne peut pas être négatif.', 'total_tva.required' => 'Le total TVA est obligatoire.', 'total_tva.numeric' => 'Le total TVA doit être un nombre.', 'total_tva.min' => 'Le total TVA ne peut pas être négatif.', 'total_ttc.required' => 'Le total TTC est obligatoire.', 'total_ttc.numeric' => 'Le total TTC doit être un nombre.', 'total_ttc.min' => 'Le total TTC ne peut pas être négatif.', ]; } }