header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('barobill.config.index')); } // 현재 선택된 테넌트 정보 $tenantId = session('selected_tenant_id'); $currentTenant = $tenantId ? Tenant::find($tenantId) : null; // 해당 테넌트의 바로빌 회원사 정보 $barobillMember = $tenantId ? BarobillMember::where('tenant_id', $tenantId)->first() : null; return view('barobill.config.index', compact('currentTenant', 'barobillMember')); } /** * 회원사관리 페이지 * HTMX 요청 시 전체 페이지 리로드 (스크립트 로딩을 위해) */ public function members(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('barobill.members.index')); } // 테넌트 목록 (전체 테넌트 모드에서 선택용) $tenants = Tenant::select('id', 'company_name')->orderBy('company_name')->get(); return view('barobill.members.index', compact('tenants')); } /** * 바로빌 설정 페이지 (이메일 주소 및 기타 자료 수정/동기화) */ public function settings(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('barobill.settings.index')); } // 현재 선택된 테넌트 정보 $tenantId = session('selected_tenant_id', 1); $currentTenant = Tenant::find($tenantId); // 해당 테넌트의 바로빌 회원사 정보 $barobillMember = BarobillMember::where('tenant_id', $tenantId)->first(); return view('barobill.settings.index', compact('currentTenant', 'barobillMember')); } /** * 전자세금계산서 페이지 */ 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')); } // 현재 선택된 테넌트 정보 $tenantId = session('selected_tenant_id', 1); $currentTenant = Tenant::find($tenantId); // 해당 테넌트의 바로빌 회원사 정보 $barobillMember = BarobillMember::where('tenant_id', $tenantId)->first(); // 본사(테넌트 1) 여부 $isHeadquarters = $tenantId == 1; return view('barobill.usage.index', compact('currentTenant', 'barobillMember', 'isHeadquarters')); } /** * 거래처 검색 (전자세금계산서 공급받는자 검색용) */ public function searchTradingPartners(Request $request): JsonResponse { $tenantId = session('selected_tenant_id', 1); $keyword = $request->input('keyword', ''); $query = TradingPartner::forTenant($tenantId)->active(); if ($keyword) { $query->where(function ($q) use ($keyword) { $q->where('name', 'like', "%{$keyword}%") ->orWhere('biz_no', 'like', "%{$keyword}%") ->orWhere('manager', 'like', "%{$keyword}%"); }); } $partners = $query->orderBy('name') ->limit(50) ->get(['id', 'name', 'biz_no', 'contact', 'email', 'manager', 'manager_phone']); return response()->json($partners); } /** * 과금관리 페이지 (본사 전용) */ public function billing(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('barobill.billing.index')); } // 현재 선택된 테넌트 정보 $tenantId = session('selected_tenant_id', 1); $currentTenant = Tenant::find($tenantId); // 본사(테넌트 1) 여부 $isHeadquarters = $tenantId == 1; // 테넌트 목록 (전체 테넌트 모드에서 선택용) $tenants = Tenant::select('id', 'company_name')->orderBy('company_name')->get(); return view('barobill.billing.index', compact('currentTenant', 'isHeadquarters', 'tenants')); } }