45 lines
1.7 KiB
PHP
45 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class UpdateSalesProposalRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'invoice_date' => 'required|date',
|
|
'due_date' => 'required|date|after_or_equal:invoice_date',
|
|
'customer_id' => 'required|integer|exists:users,id',
|
|
'warehouse_id' => 'required|integer|exists:warehouses,id',
|
|
'payment_terms' => 'nullable|string|max:255',
|
|
'notes' => 'nullable|string',
|
|
'items' => 'required|array|min:1',
|
|
'items.*.product_id' => 'required|integer|min:1',
|
|
'items.*.quantity' => 'required|integer|min:1',
|
|
'items.*.unit_price' => 'required|numeric|min:0',
|
|
'items.*.discount_percentage' => 'nullable|numeric|min:0|max:100',
|
|
'items.*.tax_percentage' => 'nullable|numeric|min:0|max:100',
|
|
'items.*.taxes' => 'nullable|array',
|
|
'items.*.taxes.*.tax_name' => 'required_with:items.*.taxes|string',
|
|
'items.*.taxes.*.tax_rate' => 'required_with:items.*.taxes|numeric|min:0',
|
|
];
|
|
}
|
|
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'customer_id.exists' => __('Selected customer does not exist.'),
|
|
'items.required' => __('At least one item is required.'),
|
|
'items.*.product_id.min' => __('Please select a product for each item.'),
|
|
'items.*.quantity.min' => __('Quantity must be at least 1.'),
|
|
'items.*.unit_price.min' => __('Unit price must be 0 or greater.')
|
|
];
|
|
}
|
|
} |