Add status filters to asset transactions (movement, disposal, maintenance)

This commit is contained in:
Arya Dwi Putra
2025-12-02 14:23:28 +07:00
parent 449c0ae680
commit 7e0caa0cb6
5 changed files with 70 additions and 8 deletions

View File

@@ -17,10 +17,15 @@ class AssetMaintenanceController extends Controller
public function index(): View
{
$maintenances = AssetMaintenance::with('asset')->latest()->paginate(config('system.ui.table_page_size', 20));
$status = request('status');
$maintenances = AssetMaintenance::with('asset')
->when($status, fn($q) => $q->where('status', $status))
->latest()
->paginate(config('system.ui.table_page_size', 20))
->withQueryString();
$assets = Asset::orderBy('code')->get();
return view('assets.maintenances', compact('maintenances', 'assets'));
return view('assets.maintenances', compact('maintenances', 'assets', 'status'));
}
public function store(Request $request): RedirectResponse

View File

@@ -11,20 +11,26 @@ class AssetTransactionPageController extends Controller
{
public function movements(): View
{
$status = request('status');
$items = AssetMovement::with(['asset', 'fromLocation', 'toLocation', 'fromDepartment', 'toDepartment', 'fromUser', 'toUser'])
->when($status, fn($q) => $q->where('status', $status))
->latest()
->paginate(config('system.ui.table_page_size', 20));
->paginate(config('system.ui.table_page_size', 20))
->withQueryString();
return view('assets.movements', compact('items'));
return view('assets.movements', compact('items', 'status'));
}
public function disposals(): View
{
$status = request('status');
$items = AssetDisposal::with(['asset', 'previousStatus', 'previousLocation', 'previousDepartment'])
->when($status, fn($q) => $q->where('status', $status))
->latest()
->paginate(config('system.ui.table_page_size', 20));
->paginate(config('system.ui.table_page_size', 20))
->withQueryString();
return view('assets.disposals', compact('items'));
return view('assets.disposals', compact('items', 'status'));
}
public function audits(): View

View File

@@ -12,6 +12,21 @@
<div class="card-title mb-0">Disposal</div>
</div>
<div class="card-body">
<form class="row g-2 mb-3" method="GET">
<div class="col-md-3">
<label class="form-label">Status</label>
<select name="status" class="form-select" onchange="this.form.submit()">
<option value="">Semua</option>
<option value="pending" @selected(($status ?? '')==='pending')>Pending</option>
<option value="approved" @selected(($status ?? '')==='approved')>Approved</option>
<option value="rejected" @selected(($status ?? '')==='rejected')>Rejected</option>
</select>
</div>
<div class="col-md-3 align-self-end">
<button class="btn btn-outline-secondary">Filter</button>
<a href="{{ route('asset-disposals.index') }}" class="btn btn-link">Reset</a>
</div>
</form>
<div class="table-responsive">
<table class="table table-bordered text-nowrap align-middle">
<thead class="table-light">
@@ -19,6 +34,7 @@
<th>Waktu</th>
<th>Aset</th>
<th>Alasan</th>
<th>Status</th>
<th>Catatan</th>
<th>Status Reverse</th>
</tr>
@@ -29,6 +45,7 @@
<td>{{ optional($item->disposed_at)->format('d/m/Y H:i') ?: '-' }}</td>
<td>{{ $item->asset?->code }} - {{ $item->asset?->name }}</td>
<td>{{ $item->reason ?: '-' }}</td>
<td><span class="badge bg-info-transparent text-info text-uppercase">{{ $item->status }}</span></td>
<td>{{ $item->notes ?: '-' }}</td>
<td>
@if($item->reversed_at)
@@ -40,7 +57,7 @@
</tr>
@empty
<tr>
<td colspan="5" class="text-center text-muted">Belum ada disposal.</td>
<td colspan="6" class="text-center text-muted">Belum ada disposal.</td>
</tr>
@endforelse
</tbody>

View File

@@ -33,6 +33,23 @@
</div>
@endif
<form class="row g-2 mb-3" method="GET">
<div class="col-md-3">
<label class="form-label">Status</label>
<select name="status" class="form-select" onchange="this.form.submit()">
<option value="">Semua</option>
<option value="pending" @selected(($status ?? '')==='pending')>Pending</option>
<option value="approved" @selected(($status ?? '')==='approved')>Approved</option>
<option value="rejected" @selected(($status ?? '')==='rejected')>Rejected</option>
<option value="completed" @selected(($status ?? '')==='completed')>Completed</option>
</select>
</div>
<div class="col-md-3 align-self-end">
<button class="btn btn-outline-secondary">Filter</button>
<a href="{{ route('asset-maintenances.index') }}" class="btn btn-link">Reset</a>
</div>
</form>
<div class="table-responsive">
<table class="table table-bordered text-nowrap align-middle mb-0">
<thead class="table-light">

View File

@@ -12,6 +12,21 @@
<div class="card-title mb-0">Movement</div>
</div>
<div class="card-body">
<form class="row g-2 mb-3" method="GET">
<div class="col-md-3">
<label class="form-label">Status</label>
<select name="status" class="form-select" onchange="this.form.submit()">
<option value="">Semua</option>
<option value="pending" @selected(($status ?? '')==='pending')>Pending</option>
<option value="approved" @selected(($status ?? '')==='approved')>Approved</option>
<option value="rejected" @selected(($status ?? '')==='rejected')>Rejected</option>
</select>
</div>
<div class="col-md-3 align-self-end">
<button class="btn btn-outline-secondary">Filter</button>
<a href="{{ route('asset-movements.index') }}" class="btn btn-link">Reset</a>
</div>
</form>
<div class="table-responsive">
<table class="table table-bordered text-nowrap align-middle">
<thead class="table-light">
@@ -20,6 +35,7 @@
<th>Aset</th>
<th>Dari</th>
<th>Ke</th>
<th>Status</th>
<th>Catatan</th>
</tr>
</thead>
@@ -30,11 +46,12 @@
<td>{{ $item->asset?->code }} - {{ $item->asset?->name }}</td>
<td>{{ $item->fromLocation?->name ?: '-' }} / {{ $item->fromDepartment?->name ?: '-' }} / {{ $item->fromUser?->name ?: '-' }}</td>
<td>{{ $item->toLocation?->name ?: '-' }} / {{ $item->toDepartment?->name ?: '-' }} / {{ $item->toUser?->name ?: '-' }}</td>
<td><span class="badge bg-info-transparent text-info text-uppercase">{{ $item->status }}</span></td>
<td>{{ $item->notes ?: '-' }}</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center text-muted">Belum ada movement.</td>
<td colspan="6" class="text-center text-muted">Belum ada movement.</td>
</tr>
@endforelse
</tbody>