Update besar apk finance

This commit is contained in:
Wian Drs
2026-09-11 16:03:00 +07:00
parent d42483b350
commit 4ef15c22ae
897 changed files with 98056 additions and 15979 deletions
@@ -0,0 +1,6 @@
<!doctype html><html><head><meta charset="utf-8"><style><?=file_get_contents(APPPATH.'views/fixed_assets/pdf_style.css')?></style></head><body>
<header><div><h1><?=html_escape($company->name??'Perusahaan')?></h1><p>KARTU DAN REGISTER ASET TETAP</p></div><img src="<?=$qr?>" class="qr"></header>
<section class="title"><h2><?=html_escape($asset->kode_asset.' - '.$asset->nama_asset)?></h2><p>Dicetak <?=date('d/m/Y H:i')?> · Status <?=html_escape(strtoupper($asset->lifecycle_status))?></p></section>
<table class="kv"><tr><th>Dokumen Perolehan</th><td><?=html_escape($asset->document_no)?></td><th>Sumber</th><td><?=html_escape($asset->source_type.' / '.($asset->source_reference_no?:'-'))?></td></tr><tr><th>Kategori</th><td><?=html_escape($asset->category_name?:'-')?></td><th>Lokasi</th><td><?=html_escape($asset->location_name?:'-')?></td></tr><tr><th>Penanggung Jawab</th><td><?=html_escape($asset->responsible_name?:'-')?></td><th>Barcode / Serial</th><td><?=html_escape(($asset->barcode?:'-').' / '.($asset->serial_number?:'-'))?></td></tr><tr><th>Tanggal Perolehan</th><td><?=html_escape($asset->tanggal_perolehan)?></td><th>Kapitalisasi</th><td><?=html_escape($asset->capitalization_date?:'-')?></td></tr><tr><th>Nilai Perolehan</th><td>Rp <?=number_format($asset->nilai_perolehan,2,',','.')?></td><th>Nilai Residu</th><td>Rp <?=number_format($asset->nilai_residu,2,',','.')?></td></tr><tr><th>Akumulasi Penyusutan</th><td>Rp <?=number_format($asset->akumulasi_penyusutan,2,',','.')?></td><th>Nilai Buku</th><td><b>Rp <?=number_format($asset->nilai_buku,2,',','.')?></b></td></tr><tr><th>Masa Manfaat</th><td><?=$asset->masa_manfaat?> bulan</td><th>Metode</th><td><?=html_escape($asset->depreciation_method)?></td></tr></table>
<h3>Riwayat Mutasi dan Jurnal</h3><table><thead><tr><th>Tanggal</th><th>Dokumen</th><th>Jenis</th><th>Nilai</th><th>Nilai Buku</th><th>Jurnal / Keterangan</th></tr></thead><tbody><?php foreach($asset->events as$e):?><tr><td><?=$e->event_date?></td><td><?=html_escape($e->event_no)?></td><td><?=html_escape($e->event_type)?></td><td class="num"><?=number_format($e->amount,2,',','.')?></td><td class="num"><?=number_format($e->book_value_after,2,',','.')?></td><td><?=html_escape(($e->journal_no?:'-').' · '.($e->notes?:'-'))?></td></tr><?php endforeach?><?php if(!$asset->events):?><tr><td colspan="6">Belum ada mutasi.</td></tr><?php endif?></tbody></table>
<footer>Dokumen ini dihasilkan dari subledger Aset Tetap. Verifikasi identitas melalui QR.</footer></body></html>
+27
View File
@@ -0,0 +1,27 @@
<?php $p=$asset_permissions;$today=date('Y-m-d'); function assetAccountOptions($accounts,$placeholder=true){$html=$placeholder?'<option value="">Pilih akun</option>':'';foreach($accounts as$a)$html.='<option value="'.(int)$a->id.'">'.html_escape($a->kode_akun.' - '.$a->nama_akun).'</option>';return$html;} ?>
<link rel="stylesheet" href="<?=base_url('assets/css/fixed-assets-professional.css').'?v='.filemtime(FCPATH.'assets/css/fixed-assets-professional.css')?>">
<section class="asset-page">
<div class="asset-hero"><div><span class="eyebrow">SUBLEDGER ASET TETAP</span><h2>Siklus Aset Tetap</h2><p>Perolehan, persetujuan, kapitalisasi, penyusutan, mutasi, opname, dan rekonsiliasi dalam satu alur.</p></div><?php if($p['create']):?><button class="btn btn-primary" id="btnNewAsset"><i class="bi bi-plus-lg"></i> Perolehan Aset</button><?php endif?></div>
<div class="asset-metrics"><article><span>Total register</span><strong><?=number_format((int)$summary->total_assets,0,',','.')?></strong><small><?=number_format((int)$summary->active_assets,0,',','.')?> aset aktif</small></article><article><span>Nilai perolehan</span><strong>Rp <?=number_format((float)$summary->acquisition_cost,2,',','.')?></strong><small>Subledger terkapitalisasi</small></article><article><span>Nilai buku</span><strong>Rp <?=number_format((float)$summary->book_value,2,',','.')?></strong><small>Akumulasi Rp <?=number_format((float)$summary->accumulated_depreciation,2,',','.')?></small></article><article><span>Perlu tindakan</span><strong><?=number_format((int)$summary->pending_workflow+(int)$summary->open_opnames,0,',','.')?></strong><small><?=$summary->pending_workflow?> approval · <?=$summary->open_opnames?> opname</small></article></div>
<nav class="asset-tabs" role="tablist"><button class="active" data-bs-toggle="tab" data-bs-target="#assetRegister"><i class="bi bi-journal-text"></i><span>Daftar Aset</span></button><button data-bs-toggle="tab" data-bs-target="#assetOpname"><i class="bi bi-qr-code-scan"></i><span>Asset Opname</span></button><button data-bs-toggle="tab" data-bs-target="#assetMaster"><i class="bi bi-sliders"></i><span>Master Data</span></button><button data-bs-toggle="tab" data-bs-target="#assetReports"><i class="bi bi-bar-chart-line"></i><span>Laporan & Rekonsiliasi</span></button></nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="assetRegister"><div class="card asset-card"><div class="card-body"><div class="filter-grid mb-3"><input id="assetSearch" class="form-control" placeholder="Cari kode, nama, lokasi, barcode atau PIC"><select id="filterCategory" class="form-select"><option value="">Semua kategori</option><?php foreach($categories as$c):?><option value="<?=$c->id?>"><?=html_escape($c->code.' - '.$c->name)?></option><?php endforeach?></select><select id="filterWorkflow" class="form-select"><option value="">Semua workflow</option><option value="draft">Draft</option><option value="submitted">Menunggu approval</option><option value="approved">Siap kapitalisasi</option><option value="capitalized">Terkapitalisasi</option><option value="rejected">Ditolak</option></select><select id="filterLifecycle" class="form-select"><option value="">Semua kondisi</option><option value="active">Aktif</option><option value="fully_depreciated">Tersusut penuh</option><option value="disposed">Dilepas</option><option value="lost">Hilang</option><option value="damaged">Rusak</option></select></div><div class="table-responsive"><table id="assetTable" class="table align-middle w-100"><thead><tr><th>Aset</th><th>Kategori/Lokasi</th><th>Sumber</th><th>Status</th><th class="text-end">Perolehan</th><th class="text-end">Nilai Buku</th><th>Aksi</th></tr></thead></table></div></div></div></div>
<div class="tab-pane fade" id="assetOpname"><div class="section-heading"><div><h3>Asset Opname</h3><p>Hitung fisik per lokasi dengan bukti, approval, dan audit trail.</p></div><?php if($p['create']):?><button class="btn btn-primary" id="btnNewOpname"><i class="bi bi-plus-lg"></i> Buat Opname</button><?php endif?></div><div class="card asset-card"><div class="table-responsive"><table class="table align-middle mb-0"><thead><tr><th>Dokumen</th><th>Tanggal/Lokasi</th><th>Status</th><th>Pembuat</th><th>Aksi</th></tr></thead><tbody><?php foreach($opnames as$o):?><tr><td><strong><?=html_escape($o->opname_no)?></strong></td><td><?=html_escape($o->opname_date)?><br><small><?=html_escape($o->location_name?:'-')?></small></td><td><span class="status-pill status-<?=html_escape($o->status)?>"><?=html_escape(strtoupper($o->status))?></span></td><td><?=html_escape($o->creator_name?:'-')?></td><td><button class="btn btn-sm btn-outline-primary btn-opname" data-id="<?=$o->id?>">Detail</button> <?php if($p['export']):?><button class="btn btn-sm btn-outline-danger btn-pdf" data-url="<?=base_url('fixedassets/opname_pdf/'.$o->id)?>">PDF</button><?php endif?></td></tr><?php endforeach?><tr class="<?=count($opnames)?'d-none':''?>"><td colspan="5" class="empty-state">Belum ada dokumen opname.</td></tr></tbody></table></div></div></div>
<div class="tab-pane fade" id="assetMaster"><div class="section-heading"><div><h3>Master Aset</h3><p>Kategori menentukan default masa manfaat dan akun. Lokasi dipakai oleh register, transfer, dan opname.</p></div></div><div class="row g-3"><div class="col-xl-7"><div class="card asset-card"><div class="card-header"><strong>Kategori Aset</strong><?php if($p['update']):?><button class="btn btn-sm btn-primary" data-master="category">Tambah</button><?php endif?></div><div class="table-responsive"><table class="table mb-0"><thead><tr><th>Kode/Nama</th><th>Masa Manfaat</th><th>Metode</th><th>Status</th><th></th></tr></thead><tbody><?php foreach($categories as$c):?><tr><td><strong><?=html_escape($c->code)?></strong><br><small><?=html_escape($c->name)?></small></td><td><?=$c->default_useful_life_months?> bulan</td><td><?=html_escape($c->depreciation_method)?></td><td><?=$c->is_active?'Aktif':'Nonaktif'?></td><td><?php if($p['update']):?><button class="btn btn-sm btn-outline-primary edit-category" data-row='<?=html_escape(json_encode($c),true)?>'>Edit</button><?php endif?></td></tr><?php endforeach?></tbody></table></div></div></div><div class="col-xl-5"><div class="card asset-card"><div class="card-header"><strong>Lokasi Aset</strong><?php if($p['update']):?><button class="btn btn-sm btn-primary" data-master="location">Tambah</button><?php endif?></div><div class="table-responsive"><table class="table mb-0"><thead><tr><th>Kode/Nama</th><th>Status</th><th></th></tr></thead><tbody><?php foreach($locations as$l):?><tr><td><strong><?=html_escape($l->code?:'-')?></strong><br><small><?=html_escape($l->nama)?></small></td><td><?=$l->is_active?'Aktif':'Nonaktif'?></td><td><?php if($p['update']):?><button class="btn btn-sm btn-outline-primary edit-location" data-row='<?=html_escape(json_encode($l),true)?>'>Edit</button><?php endif?></td></tr><?php endforeach?></tbody></table></div></div></div></div></div>
<div class="tab-pane fade" id="assetReports"><div class="section-heading"><div><h3>Laporan & Rekonsiliasi</h3><p>Laporan berasal dari subledger aset dan dapat ditelusuri ke jurnal.</p></div></div><div class="card asset-card"><div class="card-body"><div class="report-controls"><select id="reportType" class="form-select"><option value="register">Daftar Aset</option><option value="depreciation">Jadwal Penyusutan</option><option value="maintenance">Riwayat Maintenance</option><option value="events">Mutasi & Audit Aset</option><option value="reconciliation">Rekonsiliasi dengan Buku Besar</option></select><input type="date" id="reportFrom" class="form-control" value="<?=date('Y-01-01')?>"><input type="date" id="reportTo" class="form-control" value="<?=$today?>"><button class="btn btn-primary" id="btnRunReport">Tampilkan</button><?php if($p['export']):?><button class="btn btn-outline-danger" id="btnReportPdf">PDF</button><button class="btn btn-outline-success" id="btnReportExcel">Excel</button><?php endif?></div><div id="reportResult" class="report-result"><div class="empty-state">Pilih jenis laporan lalu klik Tampilkan.</div></div></div></div></div>
</div>
</section>
<div class="modal fade" id="assetFormModal" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><form id="assetForm" data-ajax="true"><div class="modal-header"><div><small class="text-muted">DOKUMEN PEROLEHAN</small><h5 class="modal-title">Perolehan Aset Tetap</h5></div><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Tutup"></button></div><div class="modal-body"><input type="hidden" name="id"><input type="hidden" name="idempotency_key"><input type="hidden" name="item_id"><input type="hidden" name="barcode_id"><input type="hidden" name="warehouse_id"><input type="hidden" name="bin_id">
<div class="source-choice"><label><input type="radio" name="source_type" value="manual" checked><span><i class="bi bi-pencil-square"></i><b>Input Langsung</b><small>Pembelian/manual yang belum berasal dari stok.</small></span></label><label><input type="radio" name="source_type" value="warehouse"><span><i class="bi bi-box-seam"></i><b>Dari Gudang</b><small>Ambil barang aktif beserta barcode dan nilai ledger.</small></span></label></div>
<div class="form-section warehouse-source d-none"><h6>Barang Gudang</h6><select id="inventoryLookup" class="form-select"></select><div id="inventoryInfo" class="source-info mt-2">Cari kode barang, nama, barcode, atau serial number.</div></div>
<div class="form-section"><h6>Identitas & Penempatan</h6><div class="row g-3"><div class="col-md-6"><label class="form-label">Nama aset</label><input class="form-control" name="nama_asset" required></div><div class="col-md-3"><label class="form-label">Tanggal perolehan</label><input type="date" class="form-control" name="tanggal_perolehan" value="<?=$today?>" required></div><div class="col-md-3"><label class="form-label">Tanggal kapitalisasi</label><input type="date" class="form-control" name="capitalization_date" value="<?=$today?>"></div><div class="col-md-4"><label class="form-label">Kategori</label><select class="form-select" name="category_id" required><option value="">Pilih kategori</option><?php foreach($categories as$c)if($c->is_active):?><option value="<?=$c->id?>" data-life="<?=$c->default_useful_life_months?>" data-method="<?=$c->depreciation_method?>" data-asset="<?=$c->asset_account_id?>" data-accum="<?=$c->accumulated_depreciation_account_id?>" data-expense="<?=$c->depreciation_expense_account_id?>"><?=html_escape($c->code.' - '.$c->name)?></option><?php endif?></select></div><div class="col-md-4"><label class="form-label">Lokasi</label><select class="form-select" name="lokasi_asset_id" required><option value="">Pilih lokasi</option><?php foreach($locations as$l)if($l->is_active):?><option value="<?=$l->id?>"><?=html_escape($l->code.' - '.$l->nama)?></option><?php endif?></select></div><div class="col-md-4"><label class="form-label">Penanggung jawab</label><select id="employeeLookup" class="form-select" name="responsible_employee_id"></select></div></div></div>
<div class="form-section"><h6>Nilai & Penyusutan</h6><div class="row g-3"><div class="col-md-3 warehouse-source d-none"><label class="form-label">Qty dikapitalisasi</label><input class="form-control money-input" name="qty" value="1" inputmode="decimal"></div><div class="col-md-3"><label class="form-label" id="acquisitionValueLabel">Nilai perolehan</label><input class="form-control money-input" name="nilai_perolehan" inputmode="decimal"></div><div class="col-md-3"><label class="form-label">Nilai residu</label><input class="form-control money-input" name="nilai_residu" value="0" inputmode="decimal"></div><div class="col-md-3"><label class="form-label">Masa manfaat (bulan)</label><input type="number" min="1" class="form-control" name="masa_manfaat" required></div><div class="col-md-3"><label class="form-label">Metode</label><select class="form-select" name="depreciation_method"><option value="straight_line">Garis lurus</option><option value="declining_balance">Saldo menurun</option></select></div></div></div>
<div class="form-section"><h6>Akun & Sumber Jurnal</h6><div class="row g-3"><div class="col-md-4"><label class="form-label">Akun aset</label><select class="form-select" name="asset_account_id" required><?=assetAccountOptions($accounts)?></select></div><div class="col-md-4"><label class="form-label">Akumulasi penyusutan</label><select class="form-select" name="accumulated_depreciation_account_id" required><?=assetAccountOptions($accounts)?></select></div><div class="col-md-4"><label class="form-label">Beban penyusutan</label><select class="form-select" name="depreciation_expense_account_id" required><?=assetAccountOptions($accounts)?></select></div><div class="col-md-4 manual-source"><label class="form-label">Perlakuan jurnal</label><select class="form-select" name="source_journal_mode"><option value="post_journal">Buat jurnal kapitalisasi</option><option value="linked_journal">Hubungkan jurnal yang sudah posted</option><option value="no_journal">Saldo awal/tanpa jurnal baru</option></select></div><div class="col-md-4 manual-source credit-account"><label class="form-label">Akun lawan</label><select class="form-select" name="account_kredit_id"><?=assetAccountOptions($accounts)?></select></div><div class="col-md-4 manual-source linked-journal d-none"><label class="form-label">Jurnal posted</label><select id="journalLookup" class="form-select" name="source_journal_id"></select></div><div class="col-md-4"><label class="form-label">Referensi sumber</label><input class="form-control" name="source_reference_no" placeholder="Invoice/BAST/dokumen lain"></div></div></div>
<div class="form-section"><h6>Dokumen Pendukung <span class="text-danger">*</span></h6><p class="form-hint">Minimal satu gambar atau PDF wajib sebelum diajukan.</p><div id="assetFiles" class="file-grid"><label class="file-add"><input type="file" id="assetFileInput" accept="image/*,.pdf" multiple hidden><i class="bi bi-plus-lg"></i><span>Tambah</span></label></div></div><div class="form-section"><label class="form-label">Keterangan lengkap</label><textarea class="form-control" name="keterangan" rows="3" placeholder="Jelaskan asal, kondisi, nomor dokumen, dan alasan kapitalisasi"></textarea></div></div><div class="modal-footer"><button type="button" class="btn btn-light" data-bs-dismiss="modal">Batal</button><button class="btn btn-primary" type="submit">Simpan Draft</button></div></form></div></div></div>
<div class="modal fade" id="assetDetailModal" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><div><small class="text-muted">ASSET REGISTER</small><h5 class="modal-title">Detail Aset</h5></div><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body" id="assetDetailBody"></div><div class="modal-footer" id="assetDetailActions"></div></div></div></div>
<div class="modal fade" id="pdfModal" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Dokumen PDF</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body p-0"><iframe title="Pratinjau PDF"></iframe></div></div></div></div>
<div class="modal fade" id="masterModal" tabindex="-1"><div class="modal-dialog modal-lg modal-dialog-centered"><div class="modal-content"><form id="masterForm"><div class="modal-header"><h5 class="modal-title">Master Aset</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body" id="masterFields"></div><div class="modal-footer"><button type="button" class="btn btn-light" data-bs-dismiss="modal">Batal</button><button class="btn btn-primary">Simpan</button></div></form></div></div></div>
<div class="modal fade" id="opnameModal" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Asset Opname</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body" id="opnameBody"></div><div class="modal-footer" id="opnameActions"></div></div></div></div>
<script>window.FIXED_ASSET_PAGE=<?=json_encode(array('base'=>base_url(),'permissions'=>$p,'locations'=>$locations,'accounts'=>$accounts),JSON_UNESCAPED_SLASHES)?>;</script>
<script src="<?=base_url('assets/js/fixed-assets.js').'?v='.(file_exists(FCPATH.'assets/js/fixed-assets.js')?filemtime(FCPATH.'assets/js/fixed-assets.js'):time())?>"></script>
@@ -0,0 +1 @@
<!doctype html><html><head><meta charset="utf-8"><style><?=file_get_contents(APPPATH.'views/fixed_assets/pdf_style.css')?></style></head><body><header><div><h1><?=html_escape($company->name??'Perusahaan')?></h1><p>BERITA ACARA ASSET OPNAME</p></div></header><section class="title"><h2><?=html_escape($opname->opname_no)?></h2><p>Tanggal <?=html_escape($opname->opname_date)?> · Lokasi <?=html_escape($opname->location_name)?> · Status <?=html_escape(strtoupper($opname->status))?></p></section><table><thead><tr><th>Kode</th><th>Nama Aset</th><th>Lokasi Catatan</th><th>Lokasi Fisik</th><th>Ditemukan</th><th>Kondisi</th><th>Catatan</th></tr></thead><tbody><?php foreach($opname->lines as$l):?><tr><td><?=html_escape($l->kode_asset)?></td><td><?=html_escape($l->nama_asset)?></td><td><?=html_escape($l->expected_location?:'-')?></td><td><?=html_escape($l->actual_location?:'-')?></td><td><?=$l->is_found?'Ya':'Tidak'?></td><td><?=html_escape($l->actual_status)?></td><td><?=html_escape($l->notes?:'-')?></td></tr><?php endforeach?></tbody></table><div class="signatures"><div>Dibuat oleh<br><br><br><b><?=html_escape($opname->creator_name?:'-')?></b></div><div>Disetujui oleh<br><br><br><b><?=html_escape($opname->approver_name?:'-')?></b></div><div>Diposting oleh<br><br><br><b><?=html_escape($opname->poster_name?:'-')?></b></div></div><footer>Selisih kondisi tidak otomatis menjurnal. Pelepasan, hilang, atau rusak diproses melalui mutasi aset resmi.</footer></body></html>
@@ -0,0 +1 @@
@page{margin:24px}body{font-family:DejaVu Sans,Arial,sans-serif;color:#1d2738;font-size:9px}header{display:flex;border-bottom:2px solid #1769e0;padding-bottom:10px;margin-bottom:14px}header h1{margin:0;font-size:17px}header p{margin:3px 0;color:#607087}.qr{width:75px;margin-left:auto}.title{margin-bottom:13px}.title h2{font-size:15px;margin:0 0 3px}.title p{margin:0;color:#607087}h3{font-size:11px;margin:16px 0 6px}table{border-collapse:collapse;width:100%}th,td{border:1px solid #d6dde8;padding:6px;vertical-align:top}thead th{background:#edf3fa;text-transform:uppercase;font-size:7px;letter-spacing:.04em}.kv th{width:16%;background:#f5f7fa;text-align:left}.num{text-align:right}.signatures{display:flex;justify-content:space-between;margin-top:28px;text-align:center}.signatures div{width:30%}footer{position:fixed;bottom:-13px;border-top:1px solid #ccd5e1;width:100%;padding-top:5px;color:#6a7687;font-size:7px}
@@ -0,0 +1 @@
<!doctype html><html><head><meta charset="utf-8"><style>body{font-family:Arial;margin:20px}.label{width:320px;border:1px solid #111;padding:12px;text-align:center}.label img{width:150px}.label h2{font-size:18px;margin:7px}.label p{margin:4px;font-size:12px}@media print{button{display:none}}</style></head><body><div class="label"><img src="<?=$qr?>"><h2><?=html_escape($asset->kode_asset)?></h2><p><?=html_escape($asset->nama_asset)?></p><p><?=html_escape($asset->location_name?:'-')?> · <?=html_escape(strtoupper($asset->lifecycle_status))?></p></div><br><button onclick="print()">Cetak Label QR</button></body></html>
@@ -0,0 +1 @@
<!doctype html><html><head><meta charset="utf-8"><style><?=file_get_contents(APPPATH.'views/fixed_assets/pdf_style.css')?></style></head><body><header><div><h1><?=html_escape($company->name??'Perusahaan')?></h1><p>LAPORAN ASET TETAP</p></div></header><section class="title"><h2><?=html_escape($definition['title'])?></h2><p>Periode <?=html_escape($filters['date_from'])?> s.d. <?=html_escape($filters['date_to'])?> · Dicetak <?=date('d/m/Y H:i')?></p></section><table><thead><tr><?php foreach($definition['columns']as$label):?><th><?=html_escape($label)?></th><?php endforeach?></tr></thead><tbody><?php foreach($rows as$row):?><tr><?php foreach($definition['columns']as$key=>$label):?><td class="<?=preg_match('/value|nilai|cost|amount|selisih|buku|perolehan|akumulasi/i',$key)?'num':''?>"><?php $v=$row->$key??null; echo html_escape(is_numeric($v)&&preg_match('/value|nilai|cost|amount|selisih|buku|perolehan|akumulasi/i',$key)?number_format($v,2,',','.'):$v);?></td><?php endforeach?></tr><?php endforeach?><?php if(!$rows):?><tr><td colspan="<?=count($definition['columns'])?>">Tidak ada data.</td></tr><?php endif?></tbody></table><footer>Laporan dihasilkan dari subledger Aset Tetap dan dibatasi pada perusahaan aktif.</footer></body></html>