42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\Admin\Setting;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Invoice;
|
|
use App\Support\VatSettings;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class VatNumberingController extends Controller
|
|
{
|
|
public function show(): JsonResponse
|
|
{
|
|
return response()->json(['error' => false, 'data' => VatSettings::numbering()]);
|
|
}
|
|
|
|
public function update(Request $request): JsonResponse
|
|
{
|
|
$data = $request->validate([
|
|
'serial' => 'required|string|max:20|regex:/^[A-Za-z0-9]+$/',
|
|
'next_number' => 'required|integer|min:1',
|
|
'padding' => 'required|integer|min:1|max:12',
|
|
'auto_issue' => 'required|boolean',
|
|
]);
|
|
|
|
$data['serial'] = strtoupper($data['serial']);
|
|
|
|
$lastIssued = Invoice::query()->where('vat_serial', $data['serial'])->whereNotNull('vat_number')->max('vat_number');
|
|
if ($lastIssued !== null && $data['next_number'] <= (int) $lastIssued) {
|
|
return response()->json([
|
|
'error' => true,
|
|
'message' => "Số tiếp theo phải lớn hơn số đã cấp gần nhất ({$lastIssued}) của ký hiệu {$data['serial']}",
|
|
], 422);
|
|
}
|
|
|
|
VatSettings::saveNumbering($data);
|
|
|
|
return response()->json(['error' => false, 'message' => 'Đã lưu cấu hình đánh số hóa đơn VAT', 'data' => VatSettings::numbering()]);
|
|
}
|
|
}
|