feat:바로빌 메뉴 그룹 및 하위메뉴 추가

- 바로빌본사 → 바로빌로 이름 변경
- 하위메뉴 추가: 설정, 전자세금계산서, 계좌조회, 카드사용내역, 홈텍스매입/매출, 사용량조회
- 설정 페이지 구현 (이메일, 동기화, API, 알림 설정)
- 나머지 메뉴는 준비중 페이지로 생성
This commit is contained in:
pro
2026-01-22 15:27:01 +09:00
parent bfb8e52e78
commit f55d30e867
9 changed files with 591 additions and 8 deletions

View File

@@ -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');
}
}

View File

@@ -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'],
]);
// ========================================
// 시스템 그룹

View File

@@ -0,0 +1,26 @@
@extends('layouts.app')
@section('title', '계좌조회')
@section('content')
<div class="flex flex-col h-full">
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-6">
<div>
<h1 class="text-2xl font-bold text-gray-800">계좌조회</h1>
<p class="text-sm text-gray-500 mt-1">등록된 계좌의 입출금 내역 조회</p>
</div>
</div>
<div class="flex-1 flex items-center justify-center">
<div class="text-center">
<div class="w-24 h-24 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4">
<svg class="w-12 h-12 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z" />
</svg>
</div>
<h2 class="text-xl font-semibold text-gray-800 mb-2">준비중입니다</h2>
<p class="text-gray-500">계좌조회 기능이 제공됩니다.</p>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,26 @@
@extends('layouts.app')
@section('title', '카드사용내역')
@section('content')
<div class="flex flex-col h-full">
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-6">
<div>
<h1 class="text-2xl font-bold text-gray-800">카드사용내역</h1>
<p class="text-sm text-gray-500 mt-1">등록된 카드의 사용 내역 조회</p>
</div>
</div>
<div class="flex-1 flex items-center justify-center">
<div class="text-center">
<div class="w-24 h-24 bg-blue-100 rounded-full flex items-center justify-center mx-auto mb-4">
<svg class="w-12 h-12 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z" />
</svg>
</div>
<h2 class="text-xl font-semibold text-gray-800 mb-2">준비중입니다</h2>
<p class="text-gray-500">카드사용내역 조회 기능이 제공됩니다.</p>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,26 @@
@extends('layouts.app')
@section('title', '홈텍스매입/매출')
@section('content')
<div class="flex flex-col h-full">
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-6">
<div>
<h1 class="text-2xl font-bold text-gray-800">홈텍스매입/매출</h1>
<p class="text-sm text-gray-500 mt-1">홈텍스 매입/매출 데이터 조회</p>
</div>
</div>
<div class="flex-1 flex items-center justify-center">
<div class="text-center">
<div class="w-24 h-24 bg-orange-100 rounded-full flex items-center justify-center mx-auto mb-4">
<svg class="w-12 h-12 text-orange-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>
</div>
<h2 class="text-xl font-semibold text-gray-800 mb-2">준비중입니다</h2>
<p class="text-gray-500">홈텍스매입/매출 조회 기능이 제공됩니다.</p>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,148 @@
@extends('layouts.app')
@section('title', '바로빌 설정')
@section('content')
<div class="flex flex-col h-full">
<!-- 페이지 헤더 -->
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-6 flex-shrink-0">
<div>
<h1 class="text-2xl font-bold text-gray-800">바로빌 설정</h1>
<p class="text-sm text-gray-500 mt-1">이메일 주소 기타 자료의 수정 동기화</p>
</div>
</div>
<!-- 설정 카드 -->
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
<!-- 이메일 설정 -->
<div class="bg-white rounded-lg shadow-sm p-6">
<div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 bg-blue-100 rounded-lg flex items-center justify-center">
<svg class="w-5 h-5 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg>
</div>
<div>
<h3 class="font-semibold text-gray-800">이메일 설정</h3>
<p class="text-xs text-gray-500">세금계산서 발송 이메일 설정</p>
</div>
</div>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-600 mb-1">발신 이메일 주소</label>
<input type="email" class="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="noreply@company.com">
</div>
<div>
<label class="block text-sm font-medium text-gray-600 mb-1">담당자 이메일</label>
<input type="email" class="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="manager@company.com">
</div>
</div>
</div>
<!-- 동기화 설정 -->
<div class="bg-white rounded-lg shadow-sm p-6">
<div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 bg-green-100 rounded-lg flex items-center justify-center">
<svg class="w-5 h-5 text-green-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" />
</svg>
</div>
<div>
<h3 class="font-semibold text-gray-800">데이터 동기화</h3>
<p class="text-xs text-gray-500">바로빌 데이터 동기화 설정</p>
</div>
</div>
<div class="space-y-4">
<div class="flex items-center justify-between p-3 bg-gray-50 rounded-lg">
<div>
<p class="text-sm font-medium text-gray-700">자동 동기화</p>
<p class="text-xs text-gray-500">매일 자정 자동 동기화</p>
</div>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 peer-focus:ring-2 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
<button type="button" class="w-full px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700 transition flex items-center justify-center gap-2">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" />
</svg>
지금 동기화
</button>
</div>
</div>
<!-- API 설정 -->
<div class="bg-white rounded-lg shadow-sm p-6">
<div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 bg-purple-100 rounded-lg flex items-center justify-center">
<svg class="w-5 h-5 text-purple-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
</svg>
</div>
<div>
<h3 class="font-semibold text-gray-800">API 설정</h3>
<p class="text-xs text-gray-500">바로빌 API 연동 설정</p>
</div>
</div>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-600 mb-1">API CERT KEY</label>
<input type="password" class="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="**********************">
</div>
<div class="flex items-center gap-2 p-3 bg-green-50 rounded-lg border border-green-200">
<svg class="w-5 h-5 text-green-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<span class="text-sm text-green-700">API 연결 상태: 정상</span>
</div>
</div>
</div>
<!-- 알림 설정 -->
<div class="bg-white rounded-lg shadow-sm p-6">
<div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 bg-yellow-100 rounded-lg flex items-center justify-center">
<svg class="w-5 h-5 text-yellow-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" />
</svg>
</div>
<div>
<h3 class="font-semibold text-gray-800">알림 설정</h3>
<p class="text-xs text-gray-500">세금계산서 관련 알림</p>
</div>
</div>
<div class="space-y-3">
<div class="flex items-center justify-between p-3 bg-gray-50 rounded-lg">
<span class="text-sm text-gray-700">발행 완료 알림</span>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" checked class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 peer-focus:ring-2 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
<div class="flex items-center justify-between p-3 bg-gray-50 rounded-lg">
<span class="text-sm text-gray-700">수신 알림</span>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" checked class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 peer-focus:ring-2 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
<div class="flex items-center justify-between p-3 bg-gray-50 rounded-lg">
<span class="text-sm text-gray-700">만료 예정 알림</span>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 peer-focus:ring-2 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
</div>
</div>
</div>
<!-- 저장 버튼 -->
<div class="mt-6 flex justify-end">
<button type="button" class="px-6 py-2.5 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition font-medium">
설정 저장
</button>
</div>
</div>
@endsection

View File

@@ -0,0 +1,26 @@
@extends('layouts.app')
@section('title', '전자세금계산서')
@section('content')
<div class="flex flex-col h-full">
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-6">
<div>
<h1 class="text-2xl font-bold text-gray-800">전자세금계산서</h1>
<p class="text-sm text-gray-500 mt-1">전자세금계산서 발행 조회</p>
</div>
</div>
<div class="flex-1 flex items-center justify-center">
<div class="text-center">
<div class="w-24 h-24 bg-purple-100 rounded-full flex items-center justify-center mx-auto mb-4">
<svg class="w-12 h-12 text-purple-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>
</div>
<h2 class="text-xl font-semibold text-gray-800 mb-2">준비중입니다</h2>
<p class="text-gray-500">전자세금계산서 기능이 제공됩니다.</p>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,26 @@
@extends('layouts.app')
@section('title', '사용량조회')
@section('content')
<div class="flex flex-col h-full">
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-6">
<div>
<h1 class="text-2xl font-bold text-gray-800">사용량조회</h1>
<p class="text-sm text-gray-500 mt-1">바로빌 서비스 사용량 조회</p>
</div>
</div>
<div class="flex-1 flex items-center justify-center">
<div class="text-center">
<div class="w-24 h-24 bg-indigo-100 rounded-full flex items-center justify-center mx-auto mb-4">
<svg class="w-12 h-12 text-indigo-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
</svg>
</div>
<h2 class="text-xl font-semibold text-gray-800 mb-2">준비중입니다</h2>
<p class="text-gray-500">사용량조회 기능이 제공됩니다.</p>
</div>
</div>
</div>
@endsection

View File

@@ -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');
});
// 대시보드