ERPNext v16 - Asset (Versi BMP)
Modul Asset di BMP mengelola mesin-mesin produksi (mixing tank 100L/200L, filling machine, capping machine, labeling machine) dan aset pendukung (kendaraan, furnitur, peralatan kantor). Karakter khas BMP: semua mesin dibeli melalui broker/forwarder borongan dengan invoice all-in IDR - tidak ada bea masuk terpisah, tidak ada Landed Cost Voucher. Nilai invoice langsung menjadi nilai perolehan aset dan sistem menghitung penyusutan otomatis.
Peta dokumen:
| Chapter |
Isi |
Kedalaman |
| 0 |
Struktur & Cross-check |
✅ |
| A |
Masters (Asset Category & Asset) |
Penuh |
| B |
Siklus Akuisisi (Purchase → Capitalization) |
Penuh |
| C |
Siklus Operasional (Depresiasi, Movement, Repair) |
Penuh |
| D |
Reports |
Sedang |
| E |
Asset Settings |
Policy |
Chapter 0 - Struktur & Cross-check
0.1 Grup struktur ↔ doctype utama (erpnext/assets/doctype/)
| Grup | Doctype | | Status di BMP |
| --- | --- | | --- |
| Masters | asset_category, asset_category_account | Adopsi Penuh | |
| Aset | asset, asset_finance_book | Adopsi Penuh | |
| Depresiasi | asset_depreciation_schedule | Adopsi Penuh | |
| Kapitalisasi | asset_capitalization, asset_capitalization_item, asset_capitalization_stock_item | Adopsi Terbatas | |
| Pergerakan | asset_movement, asset_movement_item | Adopsi Penuh | |
| Perbaikan | asset_repair | Adopsi Penuh | |
| Pemeliharaan | asset_maintenance, asset_maintenance_task, asset_maintenance_log | Adopsi Penuh | |
| Penyesuaian Nilai | asset_value_adjustment | Adopsi | |
| Aktivitas | asset_activity | Adopsi (audit trail) | |
| Shift | asset_shift_factor | Tolak (produksi single shift) | |
0.2 Kesimpulan Struktur
Modul Asset di BMP sangat linear dan tidak bercabang:
- Mesin dibeli via broker → Purchase Invoice → Asset lahir otomatis.
- Asset punya jadwal depresiasi → scheduler posting JE bulanan.
- Mesin dipakai → Asset Maintenance (jadwal pembersihan/kalibrasi) + Asset Repair (saat rusak, konsumsi spare part dari Stock).
- Mesin dipindah (jarang) → Asset Movement.
- Mesin dijual/di-scrap → Asset disposal via Journal Entry.
Tidak ada: Capital Work in Progress (CWIP) yang kompleks, multi-finance-book, shift-based depreciation, atau asset leasing. UMKM parfum punya 10-30 aset, semuanya dibeli tunai/kredit sederhana, dan disusutkan garis lurus.
0.3 Register Delta v16 (Asset)
- Asset Capitalization matang - bisa menggabungkan stock item (spare part) + non-stock item (jasa eksternal) + service cost ke dalam nilai aset baru/existing.
- Asset Repair terintegrasi Stock - repair yang mengonsumsi spare part otomatis menulis Stock Entry + menambah/mengurangi nilai aset.
- Asset Activity log - setiap perubahan pada aset (purchase, movement, repair, depreciation, disposal) tercatat dalam satu timeline kronologis.
- Depreciation posting via Journal Entry otomatis - scheduler mengecek asset_depreciation_schedule dan membuat JE tanpa campur tangan manusia.
- Asset Movement dengan multi-item - satu dokumen movement bisa memindahkan beberapa aset sekaligus (misal: pindahan pabrik).
Chapter A - Masters (Asset Category & Asset)
Mesin apa: kamus "apa saja aset kita dan bagaimana cara menyusutkannya". Asset Category adalah blueprint depresiasi (metode, umur ekonomis, akun GL), sedangkan Asset adalah record individual setiap mesin/peralatan dengan identitas unik, lokasi, dan status.
Perilaku per doctype:
- Asset Category (erpnext/assets/doctype/asset_category/) - master blueprint. Setiap kategori menentukan:
- Nama & kode (misal: Mesin Produksi, Kendaraan, Peralatan Kantor).
- Child finance_books: metode depresiasi (Straight Line / Written Down Value / Manual), useful life dalam tahun/bulan, frequency posting (bulanan), salvage value.
- Child accounts: tautan ke GL Account - Fixed Asset Account (aset di neraca), Accumulated Depreciation Account (akumulasi penyusutan), Depreciation Expense Account (beban penyusutan di P&L).
- Perilaku: saat Asset baru dibuat, ia mewarisi seluruh konfigurasi dari Asset Category-nya. Mengubah kategori tidak retroaktif - aset lama tetap memakai parameter saat dibuat (pola yang sama dengan Item Group & Customer Group).
- Asset (erpnext/assets/doctype/asset/) - record individual per mesin/aset. Atribut penentu:
- asset_name - nama deskriptif (misal: "Mixer Stainless 200L #01").
- asset_category - link ke blueprint.
- location - di mana aset berada (pabrik, gudang, kantor).
- custodian - siapa yang bertanggung jawab (link ke Employee, opsional).
- gross_purchase_amount - nilai perolehan awal (dari Purchase Invoice).
- purchase_date - tanggal beli.
- available_for_use_date - tanggal mulai dipakai (depresiasi mulai dari sini).
- status lifecycle: Draft → Submitted → In Use → Sold/Scrapped → Cancelled.
- Child finance_books: override parameter depresiasi per aset (jika berbeda dari kategori).
- Perilaku kunci: Asset tidak bisa di-submit manual - ia lahir dari Purchase Invoice/Purchase Receipt dan otomatis berstatus Draft. Submit terjadi saat asset mulai digunakan.
- Asset Finance Book - child table di dalam Asset: metode depresiasi, useful life, salvage value, frequency. Di BMP, biasanya hanya satu finance book per aset (Straight Line, bulanan). Multi-finance-book (misal: satu untuk pajak, satu untuk manajemen) = kebutuhan enterprise, ditolak.
Lintas domain:
- Asset Category menentukan akun GL yang dipakai saat depresiasi (Accounting Chapter A).
- Asset lahir dari Purchase Invoice/Receipt (Buying Chapter B).
- Asset Repair mengonsumsi spare part dari Stock (Stock Chapter B).
- Custodian link ke Employee (HR - bila nanti ada).
- Location link ke Warehouse (Stock Chapter A) untuk tracking fisik.
Edge case:
- Mengubah Asset Category setelah aset ada = tidak retroaktif. Aset lama tetap parameter lama. Admin bingung "kenapa depresiasi mesin ini beda dari yang baru?" - jawabannya: kategori diubah setelah mesin lama dibuat.
- available_for_use_date terlambat diisi = depresiasi tidak mulai, jadwal kosong. Harus ada validasi: aset tidak bisa "In Use" tanpa tanggal ini.
- Asset tanpa Purchase Invoice (hibah, penemuan aset lama) = bisa dibuat manual via "New Asset" tapi harus ada Journal Entry opening. Ini edge case langka di UMKM.
- Location kosong = asset tidak terlihat di laporan per lokasi. Default location wajib di-set saat asset dibuat.
Chapter B - Siklus Akuisisi (Purchase → Capitalization)
Mesin apa: momen di mana uang berubah menjadi aset tetap - invoice pembelian mesin di-kapitalisasi menjadi nilai perolehan, bukan dibebankan sebagai expense. Di BMP, siklus ini sangat sederhana karena semua pembelian via broker all-in IDR.
Perilaku per tahap:
- Purchase Order → Purchase Receipt → Purchase Invoice (dari Buying module):
- Admin purchasing membuat PO ke broker/forwarder.
- Mesin tiba → Purchase Receipt (cek fisik oleh tim teknis, bukan QC parfum).
- Invoice broker diterima → Purchase Invoice.
- Kunci: di baris PI, admin memilih is_fixed_asset = Yes dan memilih Asset Category yang tepat. Ini yang membedakan "beli mesin" (kapitalisasi) dari "beli bahan baku" (expense).
- Auto-create Asset dari Purchase Invoice:
- Saat PI di-submit dengan is_fixed_asset = Yes, sistem otomatis membuat Asset record berstatus Draft.
- gross_purchase_amount = nilai invoice.
- purchase_date = tanggal invoice.
- Asset belum bisa disusutkan sampai available_for_use_date diisi dan statusnya di-submit.
- Asset Capitalization (erpnext/assets/doctype/asset_capitalization/) - v14+:
- Digunakan bila ada biaya tambahan setelah pembelian awal yang harus masuk nilai aset (misal: instalasi mesin, upgrade kapasitas, penggantian komponen mayor).
- Bisa menggabungkan: stock item (spare part dari gudang) + non-stock item (jasa teknisi eksternal) + service cost.
- Submit = nilai aset bertambah (atau aset baru tercipta jika capitalization_method = Create New Asset).
- Di BMP: digunakan untuk instalasi mesin baru (biaya broker + instalasi lokal) atau upgrade besar. Tidak untuk maintenance rutin (itu masuk Asset Repair/Expense).
- Tidak ada Landed Cost Voucher:
- Karena broker memberi invoice all-in (harga mesin + ongkir + bea + pajak + instalasi = satu angka IDR), maka tidak perlu memecah biaya via LCV.
- Nilai invoice langsung = gross_purchase_amount.
- Ini keputusan arsitektural yang menyederhanakan akuisisi aset secara drastis.
Lintas domain:
- PI menulis GL: debit Fixed Asset (neraca), kredit Creditors (Buying Chapter B).
- Asset Capitalization yang mengonsumsi stock item menulis Stock Entry (Stock Chapter B).
- Asset Category menentukan akun GL target (Accounting Chapter A).
Edge case:
- PI tanpa is_fixed_asset untuk pembelian mesin = mesin masuk expense, bukan neraca. Kesalahan fatal yang menggerus laba tahun berjalan. Mitigasi: training admin purchasing + validasi di PO (jika item group = "Mesin", auto-set flag).
- Asset Capitalization setelah aset sudah disusutkan = nilai aset naik, jadwal depresiasi harus di-recompute. ERPNext handle ini otomatis (bikin schedule baru dari nilai sisa).
- Broker tidak memberi rincian biaya (hanya total) = tidak bisa split ke mesin vs instalasi. Di BMP, ini bukan masalah karena semua masuk satu angka. Tapi bila auditor minta breakdown, lampirkan invoice broker sebagai attachment di Asset record.
- Pembelian mesin bekas = gross_purchase_amount adalah harga beli, bukan harga baru. Useful life harus disesuaikan (misal: mesin baru 10 tahun, bekas tinggal 5 tahun). Ini manual di Asset Finance Book.
Chapter C - Siklus Operasional (Depresiasi, Movement, Repair, Maintenance)
Mesin apa: kehidupan aset setelah dibeli - penyusutan nilai setiap bulan, perpindahan lokasi, perbaikan saat rusak, dan pemeliharaan rutin agar tidak rusak. Ini adalah chapter terpanjang karena mencakup seluruh lifecycle operasional.
Perilaku per doctype:
C.1 Depresiasi (Penyusutan Nilai)
- Asset Depreciation Schedule (erpnext/assets/doctype/asset_depreciation_schedule/):
- Dibuat otomatis saat Asset di-submit.
- Berisi child table depreciation_schedule: satu baris per periode (bulan), dengan kolom: tanggal, nilai depresiasi, akumulasi depresiasi, nilai buku.
- Perilaku: jadwal ini adalah blueprint - belum ada JE yang ditulis sampai scheduler atau user memicu posting.
- Posting Depresiasi otomatis via Scheduler:
- Setiap hari, scheduler mengecek semua Asset yang berstatus "In Use" dan punya jadwal depresiasi.
- Untuk setiap baris jadwal yang tanggalnya ≤ hari ini dan belum di-posting, sistem membuat Journal Entry:
- Debit: Depreciation Expense Account (beban di P&L).
- Kredit: Accumulated Depreciation Account (neraca, mengurangi nilai aset).
- JE ini tidak bisa di-cancel manual oleh user biasa - hanya via cancel Asset atau reversal khusus.
- Di BMP: depresiasi Straight Line, bulanan. Contoh: Mixer 200L seharga Rp 100 juta, umur 10 tahun, salvage value 0 → depresiasi Rp 833.333/bulan.
- Asset Value Adjustment (erpnext/assets/doctype/asset_value_adjustment/):
- Digunakan untuk revaluasi aset (misal: appraisal ulang, koreksi nilai, impairment).
- Submit = nilai aset berubah, jadwal depresiasi di-recompute dari nilai baru.
- Di BMP: sangat jarang dipakai. Mungkin hanya saat audit eksternal menemukan overvaluation. Default: hide dari UI operator.
C.2 Asset Movement (Perpindahan Lokasi)
- Asset Movement (erpnext/assets/doctype/asset_movement/):
- Dokumen untuk memindahkan aset dari satu lokasi ke lokasi lain, atau mengganti custodian.
- Child assets: bisa multi-item (pindahan massal).
- Submit = update location dan custodian di Asset record + catat di Asset Activity log.
- Di BMP: jarang dipakai (mesin produksi tidak dipindah-pindah). Tapi berguna saat:
- Pindahan pabrik.
- Mesin dipinjam ke cabang.
- Ganti penanggung jawab (custodian).
C.3 Asset Repair (Perbaikan)
- Asset Repair (erpnext/assets/doctype/asset_repair/):
- Dokumen untuk mencatat perbaikan aset yang rusak.
- Field: asset, failure_date, description, repair_status (Pending → Completed → Cancelled), repair_cost.
- Integrasi Stock: bila perbaikan mengonsumsi spare part dari gudang (seal, bearing, motor), admin bisa menambahkan child stock_items → sistem otomatis membuat Stock Entry (Material Issue) saat repair di-submit.
- Pilihan akuntansi:
- Expense (beban langsung): repair_cost masuk ke akun beban (P&L). Ini untuk perbaikan minor/rutin.
- Capitalize (kapitalisasi): repair_cost menambah nilai aset (neraca). Ini untuk perbaikan mayor yang memperpanjang umur aset.
- Di BMP: mayoritas repair adalah expense (ganti seal mixer, ganti nozzle filling). Hanya overhaul besar yang di-capitalize.
- Asset Activity (erpnext/assets/doctype/asset_activity/):
- Log otomatis setiap ada perubahan pada aset: purchase, movement, repair, depreciation posting, disposal.
- Berfungsi sebagai audit trail - "kapan terakhir mesin ini diservis?", "siapa yang memindahkannya?", "berapa total depresiasi sampai bulan ini?"
C.4 Asset Maintenance (Pemeliharaan Rutin)
- Asset Maintenance (erpnext/assets/doctype/asset_maintenance/):
- Master rencana pemeliharaan per aset.
- Child maintenance_tasks: daftar tugas rutin (misal: "Bersihkan tangki mixing tiap 7 hari", "Kalibrasi filling machine tiap 30 hari", "Ganti seal pump tiap 90 hari").
- Setiap task punya: maintenance_type (Preventive/Calibration), periodicity (Daily/Weekly/Monthly/Quarterly/Yearly), assign_to (Employee), next_due_date.
- Asset Maintenance Log (erpnext/assets/doctype/asset_maintenance_log/):
- Eksekusi aktual dari task di Asset Maintenance.
- Saat tanggal jatuh tempo tiba, scheduler membuat Notification ke user yang ditugaskan.
- User membuat Log: "Task X selesai tanggal Y, catatan: Z".
- Di BMP: sangat berguna untuk CPKB compliance - BPOM bisa minta bukti bahwa mesin produksi dibersihkan dan dikalibrasi secara rutin. Log ini adalah buktinya.
Lintas domain:
- Depresiasi menulis Journal Entry (Accounting Chapter A).
- Asset Repair mengonsumsi Stock (Stock Chapter B) dan menulis Stock Entry.
- Asset Maintenance Log bisa jadi bukti audit Quality/CPKB.
- Asset Movement update Warehouse/Location (Stock Chapter A).
Edge case:
- Depresiasi posting tanpa available_for_use_date = scheduler skip, tidak ada JE. Aset "menggantung" tanpa penyusutan. Mitigasi: validasi saat submit Asset.
- Asset Repair capitalize vs expense salah pilih = nilai aset salah atau beban salah. Mitigasi: default = expense; capitalize hanya dengan approval Owner/Finance.
- Asset Maintenance Log tidak diisi = tidak ada bukti pemeliharaan untuk audit BPOM. Mitigasi: Notification otomatis + My Attention alert jika ada task overdue > 3 hari.
- Asset Movement tanpa lokasi tujuan = aset "hilang" dari laporan lokasi. Mitigasi: field location wajib diisi.
- Depresiasi manual (bukan auto scheduler) = risiko double-posting jika user klik "Make Depreciation Entry" dua kali. Mitigasi: sistem cek apakah JE untuk periode itu sudah ada.
Chapter D - Reports
Mesin apa: mata dan telinga manajemen aset - menjawab "berapa nilai aset kita?", "berapa penyusutan bulan ini?", "kapan jadwal servis berikutnya?", dan "aset mana yang sudah rusak/terlalu tua?".
Perilaku per laporan:
- Asset Depreciation Schedule - menampilkan jadwal depresiasi per aset: tanggal, nilai, akumulasi, nilai buku. Filter: per Asset Category, per lokasi, per periode. Ini laporan paling sering dibuka oleh Finance.
- Depreciation Ledger - rekaman kronologis JE depresiasi per akun/per periode. Mirip GL tapi khusus depresiasi.
- Asset Register - daftar seluruh aset dengan detail: nama, kategori, lokasi, custodian, tanggal beli, nilai perolehan, akumulasi depresiasi, nilai buku saat ini. Filter: status (In Use/Sold/Scrapped).
- Asset Maintenance Due - daftar task pemeliharaan yang jatuh tempo atau overdue. Ini laporan operasional harian untuk tim produksi/maintenance.
- Asset Repair History - riwayat perbaikan per aset: tanggal, deskripsi, biaya, status. Berguna untuk analisis "mesin mana yang paling sering rusak?" dan "apakah lebih murah repair atau beli baru?".
- Asset Value Adjustment Report - log semua revaluasi aset (jarang dipakai, tapi ada untuk audit).
Lintas domain: membaca Asset (Chapter A), Depreciation Schedule (Chapter C), Asset Maintenance/Repair (Chapter C), GL (Accounting Chapter A).
Edge case:
- Asset Register tanpa lokasi = tidak bisa filter per lokasi. Pastikan location selalu terisi.
- Depreciation Ledger tidak match dengan GL = ada JE manual yang menyentuh akun depresiasi. Ini pelanggaran aturan "akun aset hanya boleh ditulis oleh modul aset".
- Asset Maintenance Due tidak dipantau = mesin tidak diservis, rusak mendadak, produksi berhenti. Mitigasi: integrasikan ke My Attention di Landing Page.
Chapter E - Asset Settings
Mesin apa: ruang policy modul - single doctype yang menentukan perilaku global aset.
Perilaku per policy:
- Asset Settings (erpnext/assets/doctype/asset_settings/):
- calculate_depreciation (default ON): mengaktifkan mesin depresiasi otomatis. Jika OFF, aset tidak disusutkan (hanya untuk aset non-depreciable seperti tanah).
- depreciation_periodicity (default Monthly): frekuensi posting JE depresiasi.
- asset_received_but_not_billed: akun GL untuk aset yang sudah diterima tapi belum ada invoice (akrual). Di BMP, ini jarang terjadi karena broker biasanya kasih invoice bareng pengiriman.
- capitalize_asset_in_construction (CWIP toggle, default OFF): mengaktifkan Capital Work in Progress. Di BMP, ini OFF karena mesin langsung dipasang dan dipakai.
- disposal_account: akun GL default untuk penjualan/scrap aset.
- Kebijakan BMP:
- Depresiasi Straight Line, bulanan, untuk semua kategori kecuali tanah.
- Useful life default per kategori (bisa di-override per aset):
- Mesin Produksi: 10 tahun
- Kendaraan: 8 tahun
- Peralatan Kantor: 4 tahun
- Furnitur: 8 tahun
- Salvage value = 0 (asumsi konservatif untuk UMKM).
- Asset Maintenance wajib untuk mesin produksi (CPKB compliance).
Catatan scope BMP:
- Adopsi penuh: Asset Category, Asset, Depreciation Schedule (auto-post), Asset Movement, Asset Repair, Asset Maintenance + Log.
- Adopsi terbatas: Asset Capitalization (hanya untuk instalasi/upgrade besar, bukan untuk WIP kompleks).
- Tolak: Asset Shift Factor (produksi single shift), multi-finance-book, Asset Leasing, CWIP kompleks.
- Keputusan desain BMP: depresiasi Straight Line + salvage value 0; Asset Maintenance wajib untuk mesin produksi; Asset Repair default = expense (capitalize hanya dengan approval).
Ringkasan Posisi BMP - Asset
| Aspek |
Keputusan |
| Akuisisi |
Via broker all-in IDR → PI → Asset otomatis. Tidak ada LCV. |
| Depresiasi |
Straight Line, bulanan, auto-post via scheduler. |
| Perbaikan |
Asset Repair + konsumsi spare part dari Stock. Default = expense. |
| Pemeliharaan |
Asset Maintenance + Log (CPKB compliance). Notification otomatis. |
| Pergerakan |
Asset Movement (jarang, tapi ada untuk pindahan/ganti custodian). |
| Laporan |
Depreciation Schedule, Asset Register, Maintenance Due, Repair History. |
| Chinese Wall |
IT tidak boleh lihat nilai aset, depresiasi, atau repair cost. |