ownerRef($request)) ->with('lines') ->latest() ->paginate(25) ->withQueryString(); return view('pos.sales.index', compact('sales')); } public function show(Request $request, PosSale $sale): View { $this->authorizeOwner($request, $sale); $sale->load('lines', 'location'); $invoiceUrl = $sale->isPaid() ? $this->links->invoiceFromSale($sale) : null; return view('pos.sales.show', compact('sale', 'invoiceUrl')); } public function callback(Request $request, PosSale $sale): RedirectResponse { $reference = trim((string) $request->query('reference', $sale->payment_reference ?? '')); if ($reference === '') { return redirect()->route('pos.sales.show', $sale)->with('error', 'Missing payment reference.'); } try { $sale = $this->sales->completePayCheckout($reference); } catch (RuntimeException $e) { return redirect()->route('pos.sales.show', $sale)->with('error', $e->getMessage()); } return redirect() ->route('pos.sales.show', $sale) ->with('success', 'Payment received.'); } }