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>
45 lines
1.4 KiB
PHP
45 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Pos;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Controllers\Pos\Concerns\ScopesToAccount;
|
|
use App\Models\PosProduct;
|
|
use App\Models\PosSale;
|
|
use App\Services\Pos\PosLocationService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
use ScopesToAccount;
|
|
|
|
public function __construct(private PosLocationService $locations) {}
|
|
|
|
public function index(Request $request): View
|
|
{
|
|
$owner = $this->ownerRef($request);
|
|
$todayStart = now()->startOfDay();
|
|
|
|
$todaySales = $this->scopeToLocation($request, PosSale::owned($owner))
|
|
->where('status', PosSale::STATUS_PAID)
|
|
->where('paid_at', '>=', $todayStart);
|
|
|
|
$stats = [
|
|
'today_total_minor' => (int) (clone $todaySales)->sum('total_minor'),
|
|
'today_count' => (clone $todaySales)->count(),
|
|
'product_count' => PosProduct::owned($owner)->active()->count(),
|
|
'open_pending' => $this->scopeToLocation($request, PosSale::owned($owner))
|
|
->where('status', PosSale::STATUS_PENDING)->count(),
|
|
];
|
|
|
|
$recentSales = $this->scopeToLocation($request, PosSale::owned($owner))
|
|
->with('lines')
|
|
->latest()
|
|
->limit(8)
|
|
->get();
|
|
|
|
return view('pos.dashboard', compact('stats', 'recentSales'));
|
|
}
|
|
}
|