New-Thanasoft/thanasoft-back/app/Http/Requests/StoreAvoirRequest.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',
];
}
}