fix: 어음 등록 중복번호 검증 추가

- StoreBillRequest에 tenant scope unique 검증 규칙 추가
- lang/ko/error.php에 bill.duplicate_number 에러 메시지 추가
- SAM 표준 패턴 적용 (app('tenant_id'))
This commit is contained in:
2025-12-24 19:41:33 +09:00
parent 01d9ccaf57
commit cac8dba138
2 changed files with 17 additions and 1 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V1\Bill; namespace App\Http\Requests\V1\Bill;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class StoreBillRequest extends FormRequest class StoreBillRequest extends FormRequest
{ {
@@ -13,8 +14,17 @@ public function authorize(): bool
public function rules(): array public function rules(): array
{ {
$tenantId = app('tenant_id') ?? 0;
return [ return [
'bill_number' => ['nullable', 'string', 'max:50'], 'bill_number' => [
'nullable',
'string',
'max:50',
Rule::unique('bills', 'bill_number')->where(function ($query) use ($tenantId) {
return $query->where('tenant_id', $tenantId);
}),
],
'bill_type' => ['required', 'string', 'in:received,issued'], 'bill_type' => ['required', 'string', 'in:received,issued'],
'client_id' => ['nullable', 'integer', 'exists:clients,id'], 'client_id' => ['nullable', 'integer', 'exists:clients,id'],
'client_name' => ['nullable', 'string', 'max:100'], 'client_name' => ['nullable', 'string', 'max:100'],
@@ -37,6 +47,7 @@ public function rules(): array
public function messages(): array public function messages(): array
{ {
return [ return [
'bill_number.unique' => __('error.bill.duplicate_number'),
'bill_type.required' => __('validation.required', ['attribute' => __('validation.attributes.bill_type')]), 'bill_type.required' => __('validation.required', ['attribute' => __('validation.attributes.bill_type')]),
'bill_type.in' => __('validation.in', ['attribute' => __('validation.attributes.bill_type')]), 'bill_type.in' => __('validation.in', ['attribute' => __('validation.attributes.bill_type')]),
'amount.required' => __('validation.required', ['attribute' => __('validation.attributes.amount')]), 'amount.required' => __('validation.required', ['attribute' => __('validation.attributes.amount')]),

View File

@@ -289,6 +289,11 @@
'recipient_email_required' => '수신자 이메일이 필요합니다.', 'recipient_email_required' => '수신자 이메일이 필요합니다.',
], ],
// 어음 관리 관련
'bill' => [
'duplicate_number' => '이미 존재하는 어음번호입니다.',
],
// 계정 관리 관련 // 계정 관리 관련
'account' => [ 'account' => [
'invalid_password' => '비밀번호가 일치하지 않습니다.', 'invalid_password' => '비밀번호가 일치하지 않습니다.',