Export full asset report with related sheets in Excel

This commit is contained in:
Arya Dwi Putra
2025-12-01 09:56:42 +07:00
parent b2e2dac668
commit becced2ead
2 changed files with 77 additions and 4 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Exports\ArrayReportExport;
use App\Exports\AssetFullReportExport;
use App\Models\Asset;
use App\Models\AssetAudit;
use App\Models\AssetCategory;
@@ -43,7 +44,9 @@ class ReportController extends Controller
$assets = $query->paginate(20)->withQueryString();
if ($request->get('export') === 'excel') {
$rows = $query->get()->map(fn($a)=>[
$assetsCollection = $query->get();
$assetRows = $assetsCollection->map(fn($a)=>[
$a->code,
$a->name,
$a->status?->name,
@@ -55,9 +58,45 @@ class ReportController extends Controller
$a->warranty?->name,
$a->created_at?->format('d/m/Y'),
])->toArray();
return Excel::download(new ArrayReportExport([
'Kode','Nama','Status','Kategori','Lokasi','Departemen','Pengguna','PIC','Garansi','Dibuat'
], $rows), 'asset-report.xlsx');
$movements = \App\Models\AssetMovement::with(['asset','fromLocation','toLocation','fromDepartment','toDepartment','fromUser','toUser'])
->whereIn('asset_id', $assetsCollection->pluck('id'))
->get()
->map(fn($m)=>[
$m->performed_at?->format('d/m/Y H:i'),
$m->asset?->code,
$m->fromLocation?->name,
$m->toLocation?->name,
$m->fromDepartment?->name,
$m->toDepartment?->name,
$m->fromUser?->name,
$m->toUser?->name,
$m->notes,
])->toArray();
$disposals = \App\Models\AssetDisposal::with('asset')
->whereIn('asset_id', $assetsCollection->pluck('id'))
->get()
->map(fn($d)=>[
$d->disposed_at?->format('d/m/Y H:i'),
$d->asset?->code,
$d->reason,
$d->notes,
$d->reversed_at ? 'Reversed' : 'Active',
])->toArray();
$audits = \App\Models\AssetAudit::with(['asset','location'])
->whereIn('asset_id', $assetsCollection->pluck('id'))
->get()
->map(fn($a)=>[
$a->audited_at?->format('d/m/Y H:i'),
$a->asset?->code,
$a->status,
$a->location?->name,
$a->notes,
])->toArray();
return Excel::download(new AssetFullReportExport($assetRows, $movements, $disposals, $audits), 'asset-report.xlsx');
}
if ($request->get('export') === 'pdf') {