75 lines
2.6 KiB
PHP
75 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace Modules\InventoryManagement\Http\Controllers;
|
|
|
|
use App\BusinessLocation;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\InventoryManagement\Models\WmsWave;
|
|
use Modules\InventoryManagement\Models\WmsYardLocation;
|
|
use Modules\InventoryManagement\Services\WmsWaveService;
|
|
|
|
class WmsController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$business_id = $request->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]);
|
|
}
|
|
}
|