'required|in:INVOICE_CREATED', 'metadata.timestamp' => 'required|date', 'sgf_doc_number' => 'required|string|max:40', 'sgf_invoice_id' => 'required|integer', 'oc_reference' => 'required|string|max:50', 'supplier.sgf_supplier_id' => 'required|string|max:40', 'supplier.nuit' => 'required|string|max:20', 'supplier.name' => 'required|string|max:200', 'amounts.subtotal' => 'required|numeric|min:0', 'amounts.iva_amount' => 'required|numeric|min:0', 'amounts.total' => 'required|numeric|min:0', 'amounts.currency' => 'required|string|size:3', 'amounts.exchange_rate' => 'required|numeric|min:0', 'dates.invoice_date' => 'required|date', 'dates.due_date' => 'required|date|after_or_equal:dates.invoice_date', ]; } public function messages(): array { return [ 'sgf_doc_number.required' => 'Número do documento SGF é obrigatório', 'oc_reference.required' => 'Referência da OC é obrigatória', 'amounts.subtotal.min' => 'Valor subtotal deve ser positivo', ]; } }