# Finalisasi Modul Aset Tetap ## Arsitektur kanonis - Menu resmi: `Aset Tetap` → `/fixedassets`. - Controller transaksi: `Fixedassets.php`. - Aturan bisnis dan transaksi database: `FixedAssetService.php`. - Query register, detail, lookup, opname, laporan: `FixedAssetModel.php`. - `Asset.php` dan `Lokasiasset.php` hanya alias kompatibilitas. Keduanya tidak lagi boleh menulis stok, jurnal, atau aset. ## Alur perolehan `Draft → Diajukan → Disetujui/Ditolak → Dikapitalisasi` Dokumen pendukung wajib tersedia sebelum pengajuan. Pembuat dan approver dipisahkan, kecuali Master Admin yang memang memiliki seluruh kewenangan aplikasi. ### Input langsung - `Buat jurnal kapitalisasi`: debit akun aset, kredit akun lawan yang dipilih. - `Hubungkan jurnal posted`: tidak membuat jurnal kedua; jurnal sumber hanya boleh dipakai satu aset. - `Saldo awal/tanpa jurnal baru`: khusus migrasi/saldo awal yang memang telah direkonsiliasi. Alasan dan dokumen wajib lengkap. ### Dari gudang - Hanya item aktif dan barcode `available` yang dapat dipilih. - Biaya berasal dari inventory ledger, bukan input manual. - Kapitalisasi menggunakan transaksi database dan row locking. - Otomatis membuat jurnal debit Aset / kredit Persediaan, inventory ledger keluar, stock log, item movement, dan memperbarui barcode serta cache stok. - Barang `UNIT` selalu satu barcode untuk satu aset. Barang `QTY` dapat dikapitalisasi sebagian sesuai saldo tersedia. ## Siklus hidup - Penyusutan bulanan/catch-up tidak boleh melewati nilai residu dan unik per aset-periode. - Penambahan nilai, impairment, revaluasi, pelepasan/penjualan, hilang, dan rusak menghasilkan jurnal serta event immutable. - Transfer lokasi, perubahan PIC, maintenance, dan opname tersimpan sebagai audit trail. - Koreksi transaksi posted dilakukan melalui reversal event terakhir; histori tidak dihapus. - Hasil opname `hilang/rusak` tidak otomatis menjurnal. Setelah opname diposting, lakukan mutasi resmi pada aset terkait agar user memverifikasi nilai dan akun sebelum posting. ## Dokumen dan laporan - Kartu aset dan histori mutasi PDF. - Label QR yang membuka identitas aset company-scoped. - Berita acara opname PDF dengan pembuat, approver, dan poster. - Daftar aset, jadwal penyusutan, maintenance, mutasi/audit, serta rekonsiliasi subledger ke buku besar tersedia dalam layar, PDF, dan Excel. ## Database produksi Sebelum deploy: 1. Backup database dan file lampiran. 2. Jalankan migrasi berurutan sampai `20260906000900`. 3. Periksa mapping `inventory`, `asset_disposal_gain`, dan `asset_disposal_loss` untuk tiap perusahaan. 4. Lengkapi mapping akun default pada setiap kategori aset. 5. Tinjau aset legacy yang memakai mode `no_journal`, lalu rekonsiliasi saldo awal dengan GL. 6. Jalankan `php index.php fixedassetcheck` dan tindak lanjuti semua baris `[WARN]`. 7. Uji maker/approver dengan dua akun non-Admin dan satu Master Admin. Migrasi `20260906000400` menambah workflow, company scope, histori, attachment scope, indeks, dan event immutable. Migrasi `20260906000500` mengubah nominal aset menjadi `DECIMAL` agar nilai setelah koma tidak hilang. Migrasi `20260906000600`–`20260906000700` menormalkan akun harga perolehan aset legacy: kategori yang semula menunjuk akun induk diarahkan ke akun detail yang dapat menerima posting. Migrasi `20260906000800` mengisi nilai draft aset gudang lama yang masih nol berdasarkan inventory ledger. Migrasi `20260906000900` melengkapi `stock_logs.company_id`, backfill dari master barang, dan indeks tenant untuk kapitalisasi/reversal aset gudang. Production wajib meninjau nama/kode akun detail dan nilai draft hasil migrasi bersama Finance sebelum go-live. ## Kontrol akses - `can_view`: daftar, detail, lookup, dan laporan layar. - `can_create`: membuat dan mengajukan draft perolehan/opname. - `can_update`: mengubah draft/master, transfer, PIC, dan maintenance. - `can_approve`: approve/reject perolehan dan opname. - `can_post`: kapitalisasi, penyusutan, mutasi nilai, posting opname, dan reversal. - `can_export`: PDF, Excel, kartu aset, dan berita acara. ## Checklist penerimaan - Input langsung dan dari gudang berjalan sampai kapitalisasi. - Posting gudang hanya sekali walaupun tombol diklik ulang. - Debit dan kredit setiap jurnal aset seimbang. - Barcode/qty, inventory ledger, stock log, item movement, dan stok item konsisten. - Penyusutan periode yang sama tidak terduplikasi dan tidak di bawah residu. - Periode tertutup menolak kapitalisasi, penyusutan, mutasi, dan reversal. - Aset perusahaan lain tidak muncul pada register, lookup, detail, lampiran, atau laporan. - Tugas utama dapat dilakukan pada laptop dan HP; modal menjadi layar penuh di HP.