session()->get('user.business_id'); $waves = WmsWave::forBusiness($business_id)->with('lines')->latest('id')->paginate(20); $yards = WmsYardLocation::forBusiness($business_id)->get(); return view('inventorymanagement::wms.index', compact('waves', 'yards')); } public function storeWave(Request $request, WmsWaveService $wms) { $business_id = $request->session()->get('user.business_id'); $validated = $request->validate([ 'location_id' => 'required|integer', 'sell_line_ids' => 'nullable|array', ]); $wave = $wms->createWave($business_id, (int) $validated['location_id'], $validated['sell_line_ids'] ?? []); return redirect()->back()->with('status', ['success' => 1, 'msg' => 'Wave '.$wave->wave_no.' created']); } public function releaseWave($id, WmsWaveService $wms) { $business_id = request()->session()->get('user.business_id'); $wave = WmsWave::forBusiness($business_id)->findOrFail($id); $wms->releaseWave($wave); return redirect()->back()->with('status', ['success' => 1, 'msg' => 'Wave released']); } public function rfScan(Request $request) { $business_id = $request->session()->get('user.business_id'); $validated = $request->validate([ 'barcode' => 'required|string', 'scan_type' => 'required|string', 'wave_line_id' => 'nullable|integer', ]); \DB::table('im_wms_rf_scans')->insert([ 'business_id' => $business_id, 'user_id' => auth()->id(), 'scan_type' => $validated['scan_type'], 'barcode' => $validated['barcode'], 'wave_line_id' => $validated['wave_line_id'] ?? null, 'scanned_at' => now(), 'created_at' => now(), 'updated_at' => now(), ]); if (! empty($validated['wave_line_id'])) { $line = \Modules\InventoryManagement\Models\WmsWaveLine::find($validated['wave_line_id']); if ($line) { app(WmsWaveService::class)->recordPick($line, 1); } } return response()->json(['success' => true]); } }