|string> */ public function rules(): array { return [ 'purchase_order_id' => 'required|exists:purchase_orders,id', 'warehouse_id' => 'required|exists:warehouses,id', 'receipt_number' => 'required|string|max:191', 'receipt_date' => 'required|date', 'status' => 'nullable|in:draft,posted', 'notes' => 'nullable|string', 'lines' => 'nullable|array', 'lines.*.product_id' => 'required_with:lines|exists:products,id', 'lines.*.packaging_id' => 'nullable|exists:product_packagings,id', 'lines.*.packages_qty_received' => 'nullable|numeric|min:0', 'lines.*.units_qty_received' => 'nullable|numeric|min:0', 'lines.*.qty_received_base' => 'nullable|numeric|min:0', 'lines.*.unit_price' => 'nullable|numeric|min:0', 'lines.*.unit_price_per_package' => 'nullable|numeric|min:0', 'lines.*.tva_rate_id' => 'nullable|exists:tva_rates,id', ]; } /** * Get the error messages for the defined validation rules. * * @return array */ public function messages(): array { return [ 'purchase_order_id.required' => 'La commande fournisseur est requise.', 'purchase_order_id.exists' => 'La commande fournisseur spécifiée n\'existe pas.', 'warehouse_id.required' => 'L\'entrepôt est requis.', 'warehouse_id.exists' => 'L\'entrepôt spécifié n\'existe pas.', 'receipt_number.required' => 'Le numéro de réception est requis.', 'receipt_number.string' => 'Le numéro de réception doit être une chaîne de caractères.', 'receipt_number.max' => 'Le numéro de réception ne peut pas dépasser 191 caractères.', 'receipt_date.required' => 'La date de réception est requise.', 'receipt_date.date' => 'La date de réception doit être une date valide.', 'status.in' => 'Le statut doit être "draft" ou "posted".', 'notes.string' => 'Les notes doivent être une chaîne de caractères.', 'lines.array' => 'Les lignes doivent être un tableau.', 'lines.*.product_id.required_with' => 'Le produit est requis pour chaque ligne.', 'lines.*.product_id.exists' => 'Le produit spécifié dans une ligne n\'existe pas.', 'lines.*.packaging_id.exists' => 'Le conditionnement spécifié dans une ligne n\'existe pas.', 'lines.*.packages_qty_received.numeric' => 'La quantité de colis doit être un nombre.', 'lines.*.packages_qty_received.min' => 'La quantité de colis ne peut pas être négative.', 'lines.*.units_qty_received.numeric' => 'La quantité d\'unités doit être un nombre.', 'lines.*.units_qty_received.min' => 'La quantité d\'unités ne peut pas être négative.', 'lines.*.qty_received_base.numeric' => 'La quantité de base doit être un nombre.', 'lines.*.qty_received_base.min' => 'La quantité de base ne peut pas être négative.', 'lines.*.unit_price.numeric' => 'Le prix unitaire doit être un nombre.', 'lines.*.unit_price.min' => 'Le prix unitaire ne peut pas être négatif.', 'lines.*.unit_price_per_package.numeric' => 'Le prix par colis doit être un nombre.', 'lines.*.unit_price_per_package.min' => 'Le prix par colis ne peut pas être négatif.', 'lines.*.tva_rate_id.exists' => 'Le taux de TVA spécifié dans une ligne n\'existe pas.', ]; } }