diff --git a/app/Http/Controllers/Barobill/HometaxController.php b/app/Http/Controllers/Barobill/HometaxController.php index 6c2d70ed..870f8f24 100644 --- a/app/Http/Controllers/Barobill/HometaxController.php +++ b/app/Http/Controllers/Barobill/HometaxController.php @@ -1497,8 +1497,22 @@ public function manualStore(Request $request): JsonResponse 'write_date' => 'required|date', 'invoicer_corp_name' => 'nullable|string|max:200', 'invoicer_corp_num' => 'nullable|string|max:20', + 'invoicer_ceo_name' => 'nullable|string|max:50', + 'invoicer_branch_num' => 'nullable|string|max:10', + 'invoicer_address' => 'nullable|string|max:300', + 'invoicer_biz_type' => 'nullable|string|max:100', + 'invoicer_biz_class' => 'nullable|string|max:100', + 'invoicer_email' => 'nullable|string|max:200', + 'invoicer_email2' => 'nullable|string|max:200', 'invoicee_corp_name' => 'nullable|string|max:200', 'invoicee_corp_num' => 'nullable|string|max:20', + 'invoicee_ceo_name' => 'nullable|string|max:50', + 'invoicee_branch_num' => 'nullable|string|max:10', + 'invoicee_address' => 'nullable|string|max:300', + 'invoicee_biz_type' => 'nullable|string|max:100', + 'invoicee_biz_class' => 'nullable|string|max:100', + 'invoicee_email' => 'nullable|string|max:200', + 'invoicee_email2' => 'nullable|string|max:200', 'supply_amount' => 'required|numeric|min:0', 'tax_amount' => 'nullable|numeric|min:0', 'item_name' => 'nullable|string|max:200', @@ -1542,8 +1556,22 @@ public function manualStore(Request $request): JsonResponse 'issue_date' => $validated['write_date'], 'invoicer_corp_name' => $validated['invoicer_corp_name'] ?? '', 'invoicer_corp_num' => $validated['invoicer_corp_num'] ?? '', + 'invoicer_ceo_name' => $validated['invoicer_ceo_name'] ?? '', + 'invoicer_branch_num' => $validated['invoicer_branch_num'] ?? '', + 'invoicer_address' => $validated['invoicer_address'] ?? '', + 'invoicer_biz_type' => $validated['invoicer_biz_type'] ?? '', + 'invoicer_biz_class' => $validated['invoicer_biz_class'] ?? '', + 'invoicer_email' => $validated['invoicer_email'] ?? '', + 'invoicer_email2' => $validated['invoicer_email2'] ?? '', 'invoicee_corp_name' => $validated['invoicee_corp_name'] ?? '', 'invoicee_corp_num' => $validated['invoicee_corp_num'] ?? '', + 'invoicee_ceo_name' => $validated['invoicee_ceo_name'] ?? '', + 'invoicee_branch_num' => $validated['invoicee_branch_num'] ?? '', + 'invoicee_address' => $validated['invoicee_address'] ?? '', + 'invoicee_biz_type' => $validated['invoicee_biz_type'] ?? '', + 'invoicee_biz_class' => $validated['invoicee_biz_class'] ?? '', + 'invoicee_email' => $validated['invoicee_email'] ?? '', + 'invoicee_email2' => $validated['invoicee_email2'] ?? '', 'supply_amount' => $validated['supply_amount'], 'tax_amount' => $taxAmount, 'total_amount' => $totalAmount, @@ -1597,8 +1625,22 @@ public function manualUpdate(Request $request, int $id): JsonResponse 'write_date' => 'sometimes|date', 'invoicer_corp_name' => 'nullable|string|max:200', 'invoicer_corp_num' => 'nullable|string|max:20', + 'invoicer_ceo_name' => 'nullable|string|max:50', + 'invoicer_branch_num' => 'nullable|string|max:10', + 'invoicer_address' => 'nullable|string|max:300', + 'invoicer_biz_type' => 'nullable|string|max:100', + 'invoicer_biz_class' => 'nullable|string|max:100', + 'invoicer_email' => 'nullable|string|max:200', + 'invoicer_email2' => 'nullable|string|max:200', 'invoicee_corp_name' => 'nullable|string|max:200', 'invoicee_corp_num' => 'nullable|string|max:20', + 'invoicee_ceo_name' => 'nullable|string|max:50', + 'invoicee_branch_num' => 'nullable|string|max:10', + 'invoicee_address' => 'nullable|string|max:300', + 'invoicee_biz_type' => 'nullable|string|max:100', + 'invoicee_biz_class' => 'nullable|string|max:100', + 'invoicee_email' => 'nullable|string|max:200', + 'invoicee_email2' => 'nullable|string|max:200', 'supply_amount' => 'sometimes|numeric|min:0', 'tax_amount' => 'nullable|numeric|min:0', 'item_name' => 'nullable|string|max:200', @@ -1615,7 +1657,7 @@ public function manualUpdate(Request $request, int $id): JsonResponse ]); // nullable 필드 빈 문자열 처리 - foreach (['invoicer_corp_name', 'invoicer_corp_num', 'invoicee_corp_name', 'invoicee_corp_num'] as $field) { + foreach (['invoicer_corp_name', 'invoicer_corp_num', 'invoicer_ceo_name', 'invoicer_branch_num', 'invoicer_address', 'invoicer_biz_type', 'invoicer_biz_class', 'invoicer_email', 'invoicer_email2', 'invoicee_corp_name', 'invoicee_corp_num', 'invoicee_ceo_name', 'invoicee_branch_num', 'invoicee_address', 'invoicee_biz_type', 'invoicee_biz_class', 'invoicee_email', 'invoicee_email2'] as $field) { if (array_key_exists($field, $validated)) { $validated[$field] = $validated[$field] ?? ''; } diff --git a/app/Models/Barobill/HometaxInvoice.php b/app/Models/Barobill/HometaxInvoice.php index afe3a001..fa26c861 100644 --- a/app/Models/Barobill/HometaxInvoice.php +++ b/app/Models/Barobill/HometaxInvoice.php @@ -53,9 +53,21 @@ class HometaxInvoice extends Model 'invoicer_corp_num', 'invoicer_corp_name', 'invoicer_ceo_name', + 'invoicer_branch_num', + 'invoicer_address', + 'invoicer_biz_type', + 'invoicer_biz_class', + 'invoicer_email', + 'invoicer_email2', 'invoicee_corp_num', 'invoicee_corp_name', 'invoicee_ceo_name', + 'invoicee_branch_num', + 'invoicee_address', + 'invoicee_biz_type', + 'invoicee_biz_class', + 'invoicee_email', + 'invoicee_email2', 'supply_amount', 'tax_amount', 'total_amount', diff --git a/resources/views/barobill/hometax/index.blade.php b/resources/views/barobill/hometax/index.blade.php index b1adf79a..8194df0c 100644 --- a/resources/views/barobill/hometax/index.blade.php +++ b/resources/views/barobill/hometax/index.blade.php @@ -1597,8 +1597,22 @@ className="px-4 py-2 text-sm font-medium text-white bg-violet-600 rounded-lg hov write_date: editData?.writeDateFormatted || editData?.write_date || formatKoreanDate(getKoreanNow()), invoicer_corp_name: editData?.invoicerCorpName || editData?.invoicer_corp_name || '', invoicer_corp_num: editData?.invoicerCorpNum || editData?.invoicer_corp_num || '', + invoicer_ceo_name: editData?.invoicer_ceo_name || '', + invoicer_branch_num: editData?.invoicer_branch_num || '', + invoicer_address: editData?.invoicer_address || '', + invoicer_biz_type: editData?.invoicer_biz_type || '', + invoicer_biz_class: editData?.invoicer_biz_class || '', + invoicer_email: editData?.invoicer_email || '', + invoicer_email2: editData?.invoicer_email2 || '', invoicee_corp_name: editData?.invoiceeCorpName || editData?.invoicee_corp_name || '', invoicee_corp_num: editData?.invoiceeCorpNum || editData?.invoicee_corp_num || '', + invoicee_ceo_name: editData?.invoicee_ceo_name || '', + invoicee_branch_num: editData?.invoicee_branch_num || '', + invoicee_address: editData?.invoicee_address || '', + invoicee_biz_type: editData?.invoicee_biz_type || '', + invoicee_biz_class: editData?.invoicee_biz_class || '', + invoicee_email: editData?.invoicee_email || '', + invoicee_email2: editData?.invoicee_email2 || '', supply_amount: editData?.supplyAmount || editData?.supply_amount || '', tax_amount: editData?.taxAmount || editData?.tax_amount || '', item_name: editData?.itemName || editData?.item_name || '', @@ -1743,46 +1757,131 @@ className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:rin {/* 거래처 정보 */} -
-
-

- {isSales ? '공급받는자 정보' : '공급자 정보'} -

- {!editData && form.invoice_type === 'purchase' && ( - - )} -
-
-
- - + {(() => { + const prefix = isSales ? 'invoicee' : 'invoicer'; + const label = isSales ? '공급받는자' : '공급자'; + return ( +
+
+

{label} 정보

+ {!editData && form.invoice_type === 'purchase' && ( + + )}
+ {/* 등록번호 + 종사업장번호 */} +
+
+ + handleChange(`${prefix}_corp_num`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="000-00-00000" + /> +
+
+ + handleChange(`${prefix}_branch_num`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="" + /> +
+
+ {/* 상호 + 성명 */} +
+
+ + +
+
+ + handleChange(`${prefix}_ceo_name`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="대표자명" + /> +
+
+ {/* 사업장 주소 */}
- + handleChange(isSales ? 'invoicee_corp_num' : 'invoicer_corp_num', e.target.value)} + value={form[`${prefix}_address`]} + onChange={(e) => handleChange(`${prefix}_address`, e.target.value)} className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" - placeholder="000-00-00000" + placeholder="사업장 주소" />
+ {/* 업태 + 종목 */} +
+
+ + handleChange(`${prefix}_biz_type`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="업태" + /> +
+
+ + handleChange(`${prefix}_biz_class`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="종목" + /> +
+
+ {/* 이메일 */} +
+
+ + handleChange(`${prefix}_email`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="이메일" + /> +
+
+ + handleChange(`${prefix}_email2`, e.target.value)} + className="w-full px-3 py-2 border border-stone-300 rounded-lg text-sm focus:ring-2 focus:ring-violet-500 focus:border-violet-500 outline-none" + placeholder="이메일 2" + /> +
+
-
+ ); + })()} {/* 금액 */}