Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-FIN-009 |
| Deskripsi | Menutup periode akuntansi brand: review transaksi, hutang/piutang, penyesuaian, akun laba ditahan dan pajak, lalu mengunci periode; serta membuka kembali periode yang sudah tertutup |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar record tutup buku beserta status periode tertutup / terbuka.
- User menjalankan tutup buku periode baru: pilih rentang bulan, review cek transaksi, rekonsiliasi terakhir, daftar hutang, daftar piutang, dan pratinjau neraca saldo.
- User memilih akun laba ditahan, beban pajak, hutang pajak, mode pajak, dan nominal pajak saat penutupan mencakup bulan Desember (annual closing).
- User menyimpan jurnal penyesuaian terkait tutup buku sebelum penutupan final.
- User membuka satu atau banyak periode yang sudah tertutup (termasuk massal per halaman).
- User menutup ulang subset periode pada record yang sudah ada.
- User melihat hasil final: trial balance, laba rugi, dan neraca.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | User dapat melihat daftar record tutup buku dan status tiap periode |
| FR-02 | User dapat memilih rentang periode tutup buku dalam satu tahun buku |
| FR-03 | User dapat meninjau transaksi, rekonsiliasi, hutang, piutang, dan pratinjau neraca saldo sebelum menutup |
| FR-04 | User dapat menyimpan jurnal penyesuaian hutang/piutang untuk periode penutupan |
| FR-05 | Saat penutupan mencakup Desember, user wajib mengisi akun laba ditahan, beban pajak, hutang pajak, mode pajak, dan nominal pajak |
| FR-06 | Sistem mengunci periode setelah tutup buku berhasil |
| FR-07 | User dapat membuka periode tertutup (satu range atau massal) |
| FR-08 | User dapat menutup ulang subset periode pada record yang ada |
| FR-09 | User dapat melihat trial balance, laba rugi, dan neraca setelah penutupan |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat daftar tutup buku |
| UC-02 | Menjalankan tutup buku periode |
| UC-03 | Membuka periode buku |
| UC-04 | Menutup ulang periode |
| UC-05 | Melihat laporan final tutup buku |
4. Use Case Scenario
UC-01 : Melihat daftar tutup buku
| Aktor | User keuangan |
| Deskripsi | User melihat riwayat record tutup buku dan status periode |
| Prekondisi | User sudah login Brand aktif terpilih |
| Alur utama | 1. User membuka halaman Tutup Buku (route ada; tidak di menu brands default). 2. Sistem memuat daftar record dengan pagination. 3. Sistem menampilkan rentang periode, keuntungan bersih, badge status periode, dan aksi. |
| Alur negatif | - Jika gagal memuat, muncul pesan error. |
| Bisnis rule | - Status periode tertutup: nilai list_periode per YYYYMM sama dengan tanda tutup (-).- User dapat memilih periode tertutup per record lewat modal detail. - POST /tutup-tahun/pindah-saldo-awal dipakai dari laporan buku besar, bukan dari halaman tutup buku ini. |
| Postkondisi | Daftar tutup buku tampil |
| Trigger | User membuka /brand/:id/tutup-buku |
| Kode FR | FR-01 |
UC-02 : Menjalankan tutup buku periode
| Aktor | User keuangan |
| Deskripsi | User menutup rentang periode setelah melewati review dan mengisi akun penutupan bila perlu |
| Prekondisi | User membuka alur tambah tutup buku (mode=create) |
| Alur utama | 1. User menekan Tutup Buku lalu memilih range bulan. 2. Sistem memvalidasi rentang satu tahun dan memuat jurnal penyesuaian. 3. User menelusuri tab Cek Transaksi, Cek Rekonsiliasi Terakhir, Cek Daftar Hutang, Cek Daftar Piutang, Pratinjau Neraca Saldo. 4. Pada tab terakhir, jika periode mencakup Desember, user mengisi akun laba ditahan, beban pajak, hutang pajak, mode pajak, dan nominal pajak. 5. User menekan Tutup Buku. 6. Sistem menyimpan jurnal penyesuaian lalu membuat record tutup buku. 7. Sistem menampilkan halaman final review. |
| Alur negatif | - Jika range kosong / beda tahun / tidak valid, muncul pesan error. - Jika form akun annual belum lengkap, muncul "Form akun penutupan belum lengkap". - Jika response tanpa id record, proses gagal. |
| Bisnis rule | - Periode tutup buku tidak boleh lintas tahun. - Field retained_earning, beban_pajak, hutang_pajak, mode_pajak, nominal_pajak wajib hanya jika range mencakup Desember.- Mode pajak pilihan: 31E, 17, 0,5%, Pribadi. - Prefix akun FE: laba ditahan 3304, beban pajak 9101/3303, hutang pajak 2201.- Setelah sukses, periode terkait terkunci ( list_periode = -).- Review FE memblokir lanjut hanya jika gagal load data review, bukan sekadar masih ada invoice draft. |
| Postkondisi | Periode tertutup dan record tutup buku tersimpan |
| Trigger | User menyelesaikan wizard review dan menekan Tutup Buku |
| Kode FR | FR-02 FR-03 FR-04 FR-05 FR-06 |
UC-03 : Membuka periode buku
| Aktor | User keuangan |
| Deskripsi | User membuka kembali satu atau banyak periode yang sudah tertutup |
| Prekondisi | Ada periode berstatus tertutup |
| Alur utama | 1. User memilih Buka Buku pada record, atau memilih periode lalu Buka Buku Terpilih / Buka Semua di Halaman Ini. 2. User menentukan range periode (atau konfirmasi bulk). 3. Sistem mengirim permintaan buka buku. 4. Sistem memuat ulang daftar. |
| Alur negatif | - Jika range berisi status campuran, ditolak. - Bulk: periode harus berurutan (kecuali buka semua halaman), satu tahun, satu range record, dan mencakup seluruh periode tertutup dalam rentang. |
| Bisnis rule | - Payload memakai start_periode, end_periode, list_periode_start, list_periode_end dari record. |
| Postkondisi | Periode terpilih berstatus terbuka |
| Trigger | User menekan Buka Buku / Buka Buku Terpilih / Buka Semua |
| Kode FR | FR-07 |
UC-04 : Menutup ulang periode
| Aktor | User keuangan |
| Deskripsi | User menutup ulang subset periode terbuka pada record yang sudah ada |
| Prekondisi | Record tutup buku punya periode terbuka |
| Alur utama | 1. User menekan Tutup Ulang pada record. 2. User memilih range periode terbuka. 3. Sistem membuka /tutup-buku/tambah dengan mode=reclose dan record_id.4. User menjalani review seperti UC-02 lalu menutup. |
| Alur negatif | - Jika record_id atau subset periode tidak valid, muncul error dan user dikembalikan ke daftar.- Periode yang masih tertutup ( -) tidak dapat ditutup ulang. |
| Bisnis rule | - Subset list_periode_start–list_periode_end harus di dalam start_periode–end_periode record. |
| Postkondisi | Subset periode tertutup ulang |
| Trigger | User menekan Tutup Ulang |
| Kode FR | FR-08 FR-02 |
UC-05 : Melihat laporan final tutup buku
| Aktor | User keuangan |
| Deskripsi | User melihat trial balance, laba rugi, dan neraca setelah penutupan |
| Prekondisi | Tutup buku baru saja berhasil dan record info tersedia |
| Alur utama | 1. Sistem menampilkan halaman Final Review. 2. User berpindah tab Trial Balance, Laba Rugi, Neraca. 3. User menekan Selesai untuk kembali ke daftar. |
| Alur negatif | - Jika info record kosong, label periode menampilkan "Periode tidak tersedia". |
| Bisnis rule | - Data akun diambil dari struktur kelompok / sub kelompok / jenis rekening / rekening. |
| Postkondisi | User kembali ke daftar tutup buku |
| Trigger | Penutupan berhasil atau user membuka final review |
| Kode FR | FR-09 |
5. Data Flow Diagram
DFD-01 — Alur tutup buku
6. Sequence Diagram
SD-01 — UC-01 : Melihat daftar tutup buku
SD-02 — UC-02 : Menjalankan tutup buku periode
SD-03 — UC-03 : Membuka periode buku
SD-04 — UC-04 : Menutup ulang periode
SD-05 — UC-05 : Melihat laporan final tutup buku
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /tutup-buku | existing | - |
GET /tutup-buku/:id | existing | - |
POST /tutup-buku | existing | - |
PUT /tutup-buku/buka | existing | - |
POST /tutup-tahun/pindah-saldo-awal | existing | Dipakai laporan buku besar, bukan UI tutup buku |
GET /jurnal-umum | existing | - |
POST /jurnal-umum/bulk-jurnal-db-cr | existing | - |
POST /calculation-request/start | existing | Pratinjau / final laba rugi & neraca |
POST /buku-besar/saldo-awal/bulk | existing | Saldo penyesuaian hutang/piutang & trial balance |
GET /rekening | existing | - |
GET /kelompok/with-includes | existing | - |
POST /financial-report/bank-statement-report | existing | Tab cek rekonsiliasi terakhir |