49 lines
2.1 KiB
PHP
49 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class StoreAvoirRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'client_id' => 'required|exists:clients,id',
|
|
'invoice_id' => 'nullable|exists:invoices,id',
|
|
'group_id' => 'nullable|exists:client_groups,id',
|
|
'status' => 'required|in:brouillon,emis,applique,annule',
|
|
'avoir_date' => 'required|date',
|
|
'due_date' => 'nullable|date|after_or_equal:avoir_date',
|
|
'currency' => 'required|string|size:3',
|
|
'total_ht' => 'required|numeric',
|
|
'total_tva' => 'required|numeric',
|
|
'total_ttc' => 'required|numeric',
|
|
'reason_type' => 'required|in:remboursement_total,remboursement_partiel,reduction,erreur_facturation,retour_marchandise,accord_commercial,autre',
|
|
'reason_description' => 'nullable|string',
|
|
'e_invoice_status' => 'nullable|in:cree,transmis,accepte,refuse,en_litige,acquitte,archive',
|
|
'refund_status' => 'nullable|in:non_rembourse,en_cours,partiellement_rembourse,rembourse,compense',
|
|
'refund_date' => 'nullable|date',
|
|
'refund_method' => 'nullable|in:virement,cheque,carte_credit,compensation_future,autre',
|
|
'compensation_invoice_id' => 'nullable|exists:invoices,id',
|
|
'compensation_amount' => 'nullable|numeric|min:0',
|
|
'lines' => 'required|array|min:1',
|
|
'lines.*.product_id' => 'nullable|exists:products,id',
|
|
'lines.*.invoice_line_id' => 'nullable|exists:invoice_lines,id',
|
|
'lines.*.description' => 'required|string',
|
|
'lines.*.quantity' => 'required|numeric',
|
|
'lines.*.unit_price' => 'required|numeric',
|
|
'lines.*.tva_rate' => 'required|numeric',
|
|
'lines.*.total_ht' => 'required|numeric',
|
|
'lines.*.total_tva' => 'required|numeric',
|
|
'lines.*.total_ttc' => 'required|numeric',
|
|
'lines.*.notes' => 'nullable|string',
|
|
];
|
|
}
|
|
}
|