44 lines
1.5 KiB
PHP
44 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Sgc;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class StoreInvoiceRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true; // Em produção, verificar token/API key
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'metadata.event_type' => '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',
|
|
];
|
|
}
|
|
}
|