Add multi-branch POS with team roles and branch-scoped cashiers.
Deploy Ladill POS / deploy (push) Successful in 1m58s

Pro and Business users can manage branches, invite cashiers with branch assignment, and switch registers; sales and register flows respect acting location.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-08 06:05:30 +00:00
co-authored by Cursor
parent cac7c60415
commit 9d7dac6c24
34 changed files with 1434 additions and 30 deletions
+15 -1
View File
@@ -1,7 +1,9 @@
<?php
use App\Http\Controllers\Auth\SsoLoginController;
use App\Http\Controllers\Pos\AiController;
use App\Http\Controllers\AccountSwitchController;
use App\Http\Controllers\Pos\LocationController;
use App\Http\Controllers\Pos\MemberController;
use App\Http\Controllers\Pos\DashboardController;
use App\Http\Controllers\Pos\KitchenController;
use App\Http\Controllers\Pos\MenuController;
@@ -50,6 +52,9 @@ Route::middleware(['auth', 'platform.session'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('pos.dashboard');
Route::post('/account/switch', [AccountSwitchController::class, 'switch'])->name('account.switch');
Route::post('/settings/location/switch', [LocationController::class, 'switch'])->name('pos.location.switch');
Route::get('/register', [RegisterController::class, 'index'])->name('pos.register');
Route::get('/register/lookup', [RegisterController::class, 'lookup'])->name('pos.register.lookup');
Route::post('/register/charge', [RegisterController::class, 'charge'])->name('pos.register.charge');
@@ -101,6 +106,15 @@ Route::middleware(['auth', 'platform.session'])->group(function () {
Route::get('/settings', [SettingsController::class, 'index'])->name('pos.settings');
Route::put('/settings', [SettingsController::class, 'update'])->name('pos.settings.update');
Route::get('/settings/branches', [LocationController::class, 'index'])->name('pos.branches.index');
Route::get('/settings/branches/create', [LocationController::class, 'create'])->name('pos.branches.create');
Route::post('/settings/branches', [LocationController::class, 'store'])->name('pos.branches.store');
Route::get('/settings/branches/{location}/edit', [LocationController::class, 'edit'])->name('pos.branches.edit');
Route::put('/settings/branches/{location}', [LocationController::class, 'update'])->name('pos.branches.update');
Route::delete('/settings/branches/{location}', [LocationController::class, 'destroy'])->name('pos.branches.destroy');
Route::get('/settings/team', [MemberController::class, 'index'])->name('pos.team.index');
Route::post('/settings/team', [MemberController::class, 'store'])->name('pos.team.store');
Route::delete('/settings/team/{member}', [MemberController::class, 'destroy'])->name('pos.team.destroy');
Route::post('/settings/import-crm', [SettingsController::class, 'importCrm'])->middleware('pro')->name('pos.settings.import-crm');
Route::post('/settings/import-merchant', [SettingsController::class, 'importMerchant'])->middleware('pro')->name('pos.settings.import-merchant');
Route::post('/settings/tables', [SettingsController::class, 'storeTable'])->name('pos.settings.tables.store');