fix: [finance] 거래처 등록 필수값 개선 (거래처명+사업자번호만 필수)
- 백엔드: bizNo 필수 검증 추가, trade_type/status null-safe 처리 - 프론트엔드: 사업자번호 필수 검증 + 라벨에 * 표시 추가 - 나머지 필드 비어있어도 저장 가능하도록 NOT NULL 컬럼 기본값 보장
This commit is contained in:
@@ -83,6 +83,7 @@ public function store(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:100',
|
||||
'bizNo' => 'required|string|max:20',
|
||||
'type' => 'nullable|string|max:100',
|
||||
'category' => 'nullable|string|max:100',
|
||||
]);
|
||||
@@ -92,7 +93,7 @@ public function store(Request $request): JsonResponse
|
||||
$partner = TradingPartner::create([
|
||||
'tenant_id' => $tenantId,
|
||||
'name' => $request->input('name'),
|
||||
'trade_type' => $request->input('tradeType', 'sales'),
|
||||
'trade_type' => $request->input('tradeType') ?? 'sales',
|
||||
'type' => $request->input('type') ?? 'vendor',
|
||||
'category' => $request->input('category') ?? '기타',
|
||||
'biz_no' => $request->input('bizNo'),
|
||||
@@ -103,7 +104,7 @@ public function store(Request $request): JsonResponse
|
||||
'address' => $request->input('address'),
|
||||
'manager' => $request->input('manager'),
|
||||
'manager_phone' => $request->input('managerPhone'),
|
||||
'status' => $request->input('status', 'active'),
|
||||
'status' => $request->input('status') ?? 'active',
|
||||
'memo' => $request->input('memo'),
|
||||
]);
|
||||
|
||||
|
||||
@@ -127,6 +127,7 @@ function PartnersManagement() {
|
||||
};
|
||||
const handleSave = async () => {
|
||||
if (!formData.name) { alert('거래처명을 입력해주세요.'); return; }
|
||||
if (!formData.bizNo) { alert('사업자번호를 입력해주세요.'); return; }
|
||||
setSaving(true);
|
||||
try {
|
||||
const url = modalMode === 'add' ? '/finance/partners/store' : `/finance/partners/${editingItem.id}`;
|
||||
@@ -362,7 +363,7 @@ className={`mb-4 border-2 border-dashed rounded-xl p-6 text-center cursor-pointe
|
||||
</div>
|
||||
<div><label className="block text-sm font-medium text-gray-700 mb-1">거래처명 *</label><input type="text" value={formData.name} onChange={(e) => setFormData(prev => ({ ...prev, name: e.target.value }))} placeholder="거래처명" className="w-full px-3 py-2 border border-gray-300 rounded-lg" /></div>
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div><label className="block text-sm font-medium text-gray-700 mb-1">사업자번호</label><input type="text" value={formData.bizNo} onChange={(e) => setFormData(prev => ({ ...prev, bizNo: e.target.value }))} placeholder="123-45-67890" className="w-full px-3 py-2 border border-gray-300 rounded-lg" /></div>
|
||||
<div><label className="block text-sm font-medium text-gray-700 mb-1">사업자번호 *</label><input type="text" value={formData.bizNo} onChange={(e) => setFormData(prev => ({ ...prev, bizNo: e.target.value }))} placeholder="123-45-67890" className="w-full px-3 py-2 border border-gray-300 rounded-lg" /></div>
|
||||
<div><label className="block text-sm font-medium text-gray-700 mb-1">대표자</label><input type="text" value={formData.ceo} onChange={(e) => setFormData(prev => ({ ...prev, ceo: e.target.value }))} placeholder="대표자명" className="w-full px-3 py-2 border border-gray-300 rounded-lg" /></div>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
|
||||
Reference in New Issue
Block a user