diff --git a/app/Http/Controllers/Pos/LocationController.php b/app/Http/Controllers/Pos/LocationController.php index ed08183..bba3ebd 100644 --- a/app/Http/Controllers/Pos/LocationController.php +++ b/app/Http/Controllers/Pos/LocationController.php @@ -23,10 +23,9 @@ class LocationController extends Controller private SubscriptionService $subscriptions, ) {} - public function index(Request $request): View + public function index(Request $request): RedirectResponse { $owner = $this->ownerRef($request); - $account = ladill_account() ?? $request->user(); abort_unless( app(\App\Services\Pos\PosMemberResolver::class)->canManageBranches( @@ -37,13 +36,7 @@ class LocationController extends Controller 403, ); - $branches = PosLocation::owned($owner)->orderBy('name')->get(); - - return view('pos.branches.index', [ - 'branches' => $branches, - 'canAddBranch' => $this->subscriptions->canAddLocation($account, $owner), - 'hasMultiLocation' => $this->subscriptions->canUseMultiLocation($account), - ]); + return redirect()->route('pos.settings')->withFragment('branches'); } public function create(Request $request): View|RedirectResponse @@ -85,7 +78,7 @@ class LocationController extends Controller 'is_default' => $isFirst, ]); - return redirect()->route('pos.branches.index')->with('success', 'Branch created.'); + return redirect()->route('pos.settings')->withFragment('branches')->with('success', 'Branch created.'); } public function edit(Request $request, PosLocation $location): View|RedirectResponse @@ -130,7 +123,7 @@ class LocationController extends Controller 'service_style' => $data['service_style'], ]); - return redirect()->route('pos.branches.index')->with('success', 'Branch updated.'); + return redirect()->route('pos.settings')->withFragment('branches')->with('success', 'Branch updated.'); } public function destroy(Request $request, PosLocation $location): RedirectResponse @@ -165,7 +158,7 @@ class LocationController extends Controller $request->session()->forget('ladill_pos_location'); } - return redirect()->route('pos.branches.index')->with('success', 'Branch removed.'); + return redirect()->route('pos.settings')->withFragment('branches')->with('success', 'Branch removed.'); } public function switch(Request $request): RedirectResponse diff --git a/app/Http/Controllers/Pos/MemberController.php b/app/Http/Controllers/Pos/MemberController.php index 0998102..0a13700 100644 --- a/app/Http/Controllers/Pos/MemberController.php +++ b/app/Http/Controllers/Pos/MemberController.php @@ -12,7 +12,6 @@ use App\Services\Pos\SubscriptionService; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Validation\Rule; -use Illuminate\View\View; class MemberController extends Controller { @@ -20,20 +19,13 @@ class MemberController extends Controller public function __construct(private SubscriptionService $subscriptions) {} - public function index(Request $request): View|RedirectResponse + public function index(Request $request): RedirectResponse { if ($redirect = $this->guardManage($request)) { return $redirect; } - $owner = $this->ownerRef($request); - $members = PosMember::owned($owner)->with('location')->orderBy('created_at')->get(); - - return view('pos.team.index', [ - 'members' => $members, - 'roles' => config('pos.roles', []), - 'branches' => PosLocation::owned($owner)->orderBy('name')->get(), - ]); + return redirect()->route('pos.settings')->withFragment('team'); } public function store(Request $request, IdentityTeamClient $identity): RedirectResponse @@ -89,7 +81,7 @@ class MemberController extends Controller ], ); - return back()->with('success', 'Invitation sent to '.$email.'.'); + return back()->withFragment('team')->with('success', 'Invitation sent to '.$email.'.'); } public function destroy(Request $request, PosMember $member): RedirectResponse @@ -107,7 +99,7 @@ class MemberController extends Controller $member->delete(); - return back()->with('success', 'Team member removed.'); + return back()->withFragment('team')->with('success', 'Team member removed.'); } private function guardManage(Request $request): ?RedirectResponse diff --git a/app/Http/Controllers/Pos/SettingsController.php b/app/Http/Controllers/Pos/SettingsController.php index 123670e..e604b50 100644 --- a/app/Http/Controllers/Pos/SettingsController.php +++ b/app/Http/Controllers/Pos/SettingsController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Pos; use App\Http\Controllers\Controller; use App\Http\Controllers\Pos\Concerns\ScopesToAccount; use App\Models\PosLocation; +use App\Models\PosMember; use App\Models\PosTable; use App\Services\Import\CrmProductImportService; use App\Services\Import\MerchantCatalogImportService; @@ -28,9 +29,21 @@ class SettingsController extends Controller { $owner = $this->ownerRef($request); $location = $this->location($request); + $account = ladill_account() ?? $request->user(); + $scope = $this->locationScope($request); + + $branches = $scope === null + ? PosLocation::owned($owner)->orderBy('name')->get() + : PosLocation::owned($owner)->whereKey($scope)->orderBy('name')->get(); return view('pos.settings', [ 'location' => $location, + 'branches' => $branches, + 'members' => PosMember::owned($owner)->with('location')->orderBy('created_at')->get(), + 'roles' => config('pos.roles', []), + 'hasMultiLocation' => $this->subscriptions->canUseMultiLocation($account), + 'hasTeamFeatures' => $this->subscriptions->canManageTeam($account), + 'canAddBranch' => $this->subscriptions->canAddLocation($account, $owner), 'merchantImportEnabled' => (bool) config('pos.merchant_import_enabled', true), 'tables' => $this->scopeToLocation($request, PosTable::owned($owner)) ->orderBy('area')->orderBy('position')->orderBy('label')->get(), diff --git a/resources/views/partials/topbar-location-switcher.blade.php b/resources/views/partials/topbar-location-switcher.blade.php index 093886b..2865e36 100644 --- a/resources/views/partials/topbar-location-switcher.blade.php +++ b/resources/views/partials/topbar-location-switcher.blade.php @@ -20,7 +20,7 @@ @endforeach @if (! empty($canManageBranches))
@endif diff --git a/resources/views/pos/branches/create.blade.php b/resources/views/pos/branches/create.blade.php index 2b1afcd..dd5c92c 100644 --- a/resources/views/pos/branches/create.blade.php +++ b/resources/views/pos/branches/create.blade.php @@ -23,7 +23,7 @@ diff --git a/resources/views/pos/branches/edit.blade.php b/resources/views/pos/branches/edit.blade.php index 10666f4..4cdb8b5 100644 --- a/resources/views/pos/branches/edit.blade.php +++ b/resources/views/pos/branches/edit.blade.php @@ -28,7 +28,7 @@ Default branch for admins diff --git a/resources/views/pos/settings.blade.php b/resources/views/pos/settings.blade.php index c024803..65004bc 100644 --- a/resources/views/pos/settings.blade.php +++ b/resources/views/pos/settings.blade.php @@ -1,19 +1,6 @@- Editing {{ $location->name }} -
- -+ {{ $branch->name }} + @if ($branch->id === $location->id) + Active + @endif + @if ($branch->is_default) + Default + @endif +
++ {{ strtoupper($branch->currency) }} + · {{ $branch->isRestaurant() ? 'Restaurant' : 'Retail' }} +
+No branches yet.
+ @endif + ++ Multi-branch POS is available on + Pro or Business. + Your account is limited to one branch. +
+ @endunless +No team members yet. Invite a cashier or manager above.
+ @else +| Member | +Role | +Branch | ++ |
|---|---|---|---|
| {{ $display }} | +{{ $roles[$member->role] ?? $member->role }} | +{{ $member->location?->name ?? 'All branches' }} | ++ @if ($member->user_ref !== auth()->user()->public_id && $member->user_ref !== strtolower((string) auth()->user()->email)) + + @endif + | +
+ Team invites and branch assignment require + Ladill POS Pro or Business. +
+ @endif +