From f55d30e8675f2395160d81e66295bb1a712346fe Mon Sep 17 00:00:00 2001 From: pro Date: Thu, 22 Jan 2026 15:27:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EB=B0=94=EB=A1=9C=EB=B9=8C=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=20=EA=B7=B8=EB=A3=B9=20=EB=B0=8F=20=ED=95=98=EC=9C=84?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 바로빌본사 → 바로빌로 이름 변경 - 하위메뉴 추가: 설정, 전자세금계산서, 계좌조회, 카드사용내역, 홈텍스매입/매출, 사용량조회 - 설정 페이지 구현 (이메일, 동기화, API, 알림 설정) - 나머지 메뉴는 준비중 페이지로 생성 --- .../Barobill/BarobillController.php | 85 +++++++ database/seeders/MngMenuSeeder.php | 228 +++++++++++++++++- .../barobill/bank-account/index.blade.php | 26 ++ .../views/barobill/card-usage/index.blade.php | 26 ++ .../views/barobill/hometax/index.blade.php | 26 ++ .../views/barobill/settings/index.blade.php | 148 ++++++++++++ .../barobill/tax-invoice/index.blade.php | 26 ++ .../views/barobill/usage/index.blade.php | 26 ++ routes/web.php | 8 + 9 files changed, 591 insertions(+), 8 deletions(-) create mode 100644 resources/views/barobill/bank-account/index.blade.php create mode 100644 resources/views/barobill/card-usage/index.blade.php create mode 100644 resources/views/barobill/hometax/index.blade.php create mode 100644 resources/views/barobill/settings/index.blade.php create mode 100644 resources/views/barobill/tax-invoice/index.blade.php create mode 100644 resources/views/barobill/usage/index.blade.php diff --git a/app/Http/Controllers/Barobill/BarobillController.php b/app/Http/Controllers/Barobill/BarobillController.php index 7079fda1..26a2cd49 100644 --- a/app/Http/Controllers/Barobill/BarobillController.php +++ b/app/Http/Controllers/Barobill/BarobillController.php @@ -12,6 +12,19 @@ */ class BarobillController extends Controller { + /** + * 바로빌 설정 페이지 + * HTMX 요청 시 전체 페이지 리로드 (스크립트 로딩을 위해) + */ + public function config(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.config.index')); + } + + return view('barobill.config.index'); + } + /** * 회원사관리 페이지 * HTMX 요청 시 전체 페이지 리로드 (스크립트 로딩을 위해) @@ -24,4 +37,76 @@ public function members(Request $request): View|Response return view('barobill.members.index'); } + + /** + * 바로빌 설정 페이지 (이메일 주소 및 기타 자료 수정/동기화) + */ + public function settings(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.settings.index')); + } + + return view('barobill.settings.index'); + } + + /** + * 전자세금계산서 페이지 + */ + public function taxInvoice(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.tax-invoice.index')); + } + + return view('barobill.tax-invoice.index'); + } + + /** + * 계좌조회 페이지 + */ + public function bankAccount(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.bank-account.index')); + } + + return view('barobill.bank-account.index'); + } + + /** + * 카드사용내역 페이지 + */ + public function cardUsage(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.card-usage.index')); + } + + return view('barobill.card-usage.index'); + } + + /** + * 홈텍스매입/매출 페이지 + */ + public function hometax(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.hometax.index')); + } + + return view('barobill.hometax.index'); + } + + /** + * 사용량조회 페이지 + */ + public function usage(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('barobill.usage.index')); + } + + return view('barobill.usage.index'); + } } diff --git a/database/seeders/MngMenuSeeder.php b/database/seeders/MngMenuSeeder.php index 00ab6579..99b29766 100644 --- a/database/seeders/MngMenuSeeder.php +++ b/database/seeders/MngMenuSeeder.php @@ -314,6 +314,8 @@ protected function seedMainMenus(): void ]); $financeSubOrder = 0; + + // 대시보드/일보 $this->createMenu([ 'parent_id' => $financeGroup->id, 'name' => '재무 대시보드', @@ -322,6 +324,24 @@ protected function seedMainMenus(): void 'sort_order' => $financeSubOrder++, 'options' => ['route_name' => 'finance.dashboard', 'section' => 'main'], ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '일일자금일보', + 'url' => '/finance/daily-fund', + 'icon' => 'newspaper', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.daily-fund', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '자금계획일정', + 'url' => '/finance/fund-schedules', + 'icon' => 'calendar', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.fund-schedules.index', 'section' => 'main'], + ]); + + // 계좌관리 $this->createMenu([ 'parent_id' => $financeGroup->id, 'name' => '계좌관리', @@ -338,21 +358,165 @@ protected function seedMainMenus(): void 'sort_order' => $financeSubOrder++, 'options' => ['route_name' => 'finance.account-transactions', 'section' => 'main'], ]); + + // 카드관리 $this->createMenu([ 'parent_id' => $financeGroup->id, - 'name' => '자금계획일정', - 'url' => '/finance/fund-schedules', - 'icon' => 'calendar', + 'name' => '법인카드관리', + 'url' => '/finance/corporate-cards', + 'icon' => 'credit-card', 'sort_order' => $financeSubOrder++, - 'options' => ['route_name' => 'finance.fund-schedules.index', 'section' => 'main'], + 'options' => ['route_name' => 'finance.corporate-cards', 'section' => 'main'], ]); $this->createMenu([ 'parent_id' => $financeGroup->id, - 'name' => '일일자금일보', - 'url' => '/finance/daily-fund', - 'icon' => 'newspaper', + 'name' => '카드사용내역', + 'url' => '/finance/card-transactions', + 'icon' => 'document-text', 'sort_order' => $financeSubOrder++, - 'options' => ['route_name' => 'finance.daily-fund', 'section' => 'main'], + 'options' => ['route_name' => 'finance.card-transactions', 'section' => 'main'], + ]); + + // 수입/지출 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '수입관리', + 'url' => '/finance/income', + 'icon' => 'arrow-down', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.income', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '지출관리', + 'url' => '/finance/expense', + 'icon' => 'arrow-up', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.expense', 'section' => 'main'], + ]); + + // 매출/매입 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '매출관리', + 'url' => '/finance/sales', + 'icon' => 'trending-up', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.sales', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '매입관리', + 'url' => '/finance/purchase', + 'icon' => 'shopping-cart', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.purchase', 'section' => 'main'], + ]); + + // 정산관리 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '영업수수료 정산', + 'url' => '/finance/sales-commission', + 'icon' => 'cash', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.sales-commission', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '컨설팅비용 정산', + 'url' => '/finance/consulting-fee', + 'icon' => 'briefcase', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.consulting-fee', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '고객사 정산', + 'url' => '/finance/customer-settlement', + 'icon' => 'users', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.customer-settlement', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '구독료 정산', + 'url' => '/finance/subscription', + 'icon' => 'refresh', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.subscription', 'section' => 'main'], + ]); + + // 차량관리 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '법인차량관리', + 'url' => '/finance/corporate-vehicles', + 'icon' => 'truck', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.corporate-vehicles', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '차량정비이력', + 'url' => '/finance/vehicle-maintenance', + 'icon' => 'wrench', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.vehicle-maintenance', 'section' => 'main'], + ]); + + // 거래처관리 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '고객사관리', + 'url' => '/finance/customers', + 'icon' => 'user-group', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.customers', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '협력사관리', + 'url' => '/finance/partners', + 'icon' => 'office-building', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.partners', 'section' => 'main'], + ]); + + // 채권/채무 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '채권관리', + 'url' => '/finance/receivables', + 'icon' => 'document-add', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.receivables', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '채무관리', + 'url' => '/finance/payables', + 'icon' => 'document-remove', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.payables', 'section' => 'main'], + ]); + + // 기타 + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '환불관리', + 'url' => '/finance/refunds', + 'icon' => 'receipt-refund', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.refunds', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $financeGroup->id, + 'name' => '부가세관리', + 'url' => '/finance/vat', + 'icon' => 'calculator', + 'sort_order' => $financeSubOrder++, + 'options' => ['route_name' => 'finance.vat', 'section' => 'main'], ]); // ======================================== @@ -370,6 +534,14 @@ protected function seedMainMenus(): void ]); $barobillSubOrder = 0; + $this->createMenu([ + 'parent_id' => $barobillGroup->id, + 'name' => '설정', + 'url' => '/barobill/settings', + 'icon' => 'cog', + 'sort_order' => $barobillSubOrder++, + 'options' => ['route_name' => 'barobill.settings.index', 'section' => 'main'], + ]); $this->createMenu([ 'parent_id' => $barobillGroup->id, 'name' => '회원사관리', @@ -378,6 +550,46 @@ protected function seedMainMenus(): void 'sort_order' => $barobillSubOrder++, 'options' => ['route_name' => 'barobill.members.index', 'section' => 'main'], ]); + $this->createMenu([ + 'parent_id' => $barobillGroup->id, + 'name' => '전자세금계산서', + 'url' => '/barobill/tax-invoice', + 'icon' => 'document-text', + 'sort_order' => $barobillSubOrder++, + 'options' => ['route_name' => 'barobill.tax-invoice.index', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $barobillGroup->id, + 'name' => '계좌조회', + 'url' => '/barobill/bank-account', + 'icon' => 'credit-card', + 'sort_order' => $barobillSubOrder++, + 'options' => ['route_name' => 'barobill.bank-account.index', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $barobillGroup->id, + 'name' => '카드사용내역', + 'url' => '/barobill/card-usage', + 'icon' => 'credit-card', + 'sort_order' => $barobillSubOrder++, + 'options' => ['route_name' => 'barobill.card-usage.index', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $barobillGroup->id, + 'name' => '홈텍스매입/매출', + 'url' => '/barobill/hometax', + 'icon' => 'document-report', + 'sort_order' => $barobillSubOrder++, + 'options' => ['route_name' => 'barobill.hometax.index', 'section' => 'main'], + ]); + $this->createMenu([ + 'parent_id' => $barobillGroup->id, + 'name' => '사용량조회', + 'url' => '/barobill/usage', + 'icon' => 'chart-bar', + 'sort_order' => $barobillSubOrder++, + 'options' => ['route_name' => 'barobill.usage.index', 'section' => 'main'], + ]); // ======================================== // 시스템 그룹 diff --git a/resources/views/barobill/bank-account/index.blade.php b/resources/views/barobill/bank-account/index.blade.php new file mode 100644 index 00000000..e9abafe4 --- /dev/null +++ b/resources/views/barobill/bank-account/index.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('title', '계좌조회') + +@section('content') +
+
+
+

계좌조회

+

등록된 계좌의 입출금 내역 조회

+
+
+ +
+
+
+ + + +
+

준비중입니다

+

계좌조회 기능이 곧 제공됩니다.

+
+
+
+@endsection diff --git a/resources/views/barobill/card-usage/index.blade.php b/resources/views/barobill/card-usage/index.blade.php new file mode 100644 index 00000000..91177182 --- /dev/null +++ b/resources/views/barobill/card-usage/index.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('title', '카드사용내역') + +@section('content') +
+
+
+

카드사용내역

+

등록된 카드의 사용 내역 조회

+
+
+ +
+
+
+ + + +
+

준비중입니다

+

카드사용내역 조회 기능이 곧 제공됩니다.

+
+
+
+@endsection diff --git a/resources/views/barobill/hometax/index.blade.php b/resources/views/barobill/hometax/index.blade.php new file mode 100644 index 00000000..aa9256df --- /dev/null +++ b/resources/views/barobill/hometax/index.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('title', '홈텍스매입/매출') + +@section('content') +
+
+
+

홈텍스매입/매출

+

홈텍스 매입/매출 데이터 조회

+
+
+ +
+
+
+ + + +
+

준비중입니다

+

홈텍스매입/매출 조회 기능이 곧 제공됩니다.

+
+
+
+@endsection diff --git a/resources/views/barobill/settings/index.blade.php b/resources/views/barobill/settings/index.blade.php new file mode 100644 index 00000000..ded94449 --- /dev/null +++ b/resources/views/barobill/settings/index.blade.php @@ -0,0 +1,148 @@ +@extends('layouts.app') + +@section('title', '바로빌 설정') + +@section('content') +
+ +
+
+

바로빌 설정

+

이메일 주소 및 기타 자료의 수정 및 동기화

+
+
+ + +
+ +
+
+
+ + + +
+
+

이메일 설정

+

세금계산서 발송 이메일 설정

+
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+
+ + + +
+
+

데이터 동기화

+

바로빌 데이터 동기화 설정

+
+
+
+
+
+

자동 동기화

+

매일 자정 자동 동기화

+
+ +
+ +
+
+ + +
+
+
+ + + +
+
+

API 설정

+

바로빌 API 연동 설정

+
+
+
+
+ + +
+
+ + + + API 연결 상태: 정상 +
+
+
+ + +
+
+
+ + + +
+
+

알림 설정

+

세금계산서 관련 알림

+
+
+
+
+ 발행 완료 알림 + +
+
+ 수신 알림 + +
+
+ 만료 예정 알림 + +
+
+
+
+ + +
+ +
+
+@endsection diff --git a/resources/views/barobill/tax-invoice/index.blade.php b/resources/views/barobill/tax-invoice/index.blade.php new file mode 100644 index 00000000..b749f7ba --- /dev/null +++ b/resources/views/barobill/tax-invoice/index.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('title', '전자세금계산서') + +@section('content') +
+
+
+

전자세금계산서

+

전자세금계산서 발행 및 조회

+
+
+ +
+
+
+ + + +
+

준비중입니다

+

전자세금계산서 기능이 곧 제공됩니다.

+
+
+
+@endsection diff --git a/resources/views/barobill/usage/index.blade.php b/resources/views/barobill/usage/index.blade.php new file mode 100644 index 00000000..6ce31e6c --- /dev/null +++ b/resources/views/barobill/usage/index.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('title', '사용량조회') + +@section('content') +
+
+
+

사용량조회

+

바로빌 서비스 사용량 조회

+
+
+ +
+
+
+ + + +
+

준비중입니다

+

사용량조회 기능이 곧 제공됩니다.

+
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 64dce943..cb4d7979 100644 --- a/routes/web.php +++ b/routes/web.php @@ -268,7 +268,15 @@ |-------------------------------------------------------------------------- */ Route::prefix('barobill')->name('barobill.')->group(function () { + Route::get('/settings', [\App\Http\Controllers\Barobill\BarobillController::class, 'settings'])->name('settings.index'); Route::get('/members', [\App\Http\Controllers\Barobill\BarobillController::class, 'members'])->name('members.index'); + Route::get('/tax-invoice', [\App\Http\Controllers\Barobill\BarobillController::class, 'taxInvoice'])->name('tax-invoice.index'); + Route::get('/bank-account', [\App\Http\Controllers\Barobill\BarobillController::class, 'bankAccount'])->name('bank-account.index'); + Route::get('/card-usage', [\App\Http\Controllers\Barobill\BarobillController::class, 'cardUsage'])->name('card-usage.index'); + Route::get('/hometax', [\App\Http\Controllers\Barobill\BarobillController::class, 'hometax'])->name('hometax.index'); + Route::get('/usage', [\App\Http\Controllers\Barobill\BarobillController::class, 'usage'])->name('usage.index'); + // 기존 config 라우트 (호환성) + Route::get('/config', [\App\Http\Controllers\Barobill\BarobillController::class, 'config'])->name('config.index'); }); // 대시보드