SimpleAkunting v3.5 Multi-Tenant

Dokumentasi Arsitektur & Flowchart Entry Transaksi

Single Source of Truth & Real-time Perpetual Journal

Flowchart & Logika Bisnis Entry Transaksi

Setiap modul operasional (Penjualan, Pembelian, Kas & Bank, Produksi, dan Penyesuaian) terintegrasi langsung dengan mesin akuntansi otomatis yang membentuk jurnal berimbang (Debit = Kredit) serta divalidasi dengan PeriodLockTrait dan transaksi database ACID.

Arsitektur Jurnal

Real-time Perpetual

Proteksi Periode

PeriodLock Guard

Integritas Data

PDO Atomic Rollback

Isolasi Organisasi

Tenant & Unit Scoped

Arsitektur Terpadu

Flowchart Siklus Entry Transaksi Global

Diagram alir holistik mulai dari validasi form, pemeriksaan periode tutup buku, pembentukan jurnal otomatis, hingga pembaruan laporan keuangan.

app/core/PeriodLockTrait.php
flowchart TD Start["Mulai Entry Transaksi"] --> AuthCheck{"Otorisasi User dan Tenant?"} AuthCheck -- "Tidak Valid" --> Denied["Tolak Akses / Flash Error"] AuthCheck -- "Valid" --> FormInput["User Input Form Transaksi"] FormInput --> PeriodCheck{"Apakah Periode Terbuka?
PeriodLockTrait"} PeriodCheck -- "Periode Ditutup - Closed" --> ErrPeriod["Flash Error: Periode Akuntansi Sudah Ditutup"] ErrPeriod --> FormInput PeriodCheck -- "Periode Aktif - Open" --> SelectType{"Pilih Jenis Transaksi"} SelectType --> FlowJU["Entry Jurnal Umum Manual"] SelectType --> FlowKas["Entry Kas dan Bank"] SelectType --> FlowPJ["Entry Faktur Penjualan"] SelectType --> FlowPB["Entry Faktur Pembelian"] SelectType --> FlowPay["Entry Pembayaran / Penerimaan"] SelectType --> FlowAdj["Entry Produksi dan Penyesuaian"] FlowJU --> Validation["Validasi Data dan Keseimbangan Debit = Kredit"] FlowKas --> Validation FlowPJ --> Validation FlowPB --> Validation FlowPay --> Validation FlowAdj --> Validation Validation -- "Gagal / Tidak Seimbang" --> Rollback["Batalkan dan Tampilkan Flash Message"] Rollback --> FormInput Validation -- "Lolos Validasi" --> DBTransaction["Begin DB Transaction - PDO"] DBTransaction --> InsertHeaderDetail["Simpan Header dan Detail Dokumen Transaksi"] DBTransaction --> AutoJournal["Otomatis Posting ke jurnal_umum dan jurnal_detail"] DBTransaction --> AuxUpdate["Update Stok / Saldo Kontak / Kartu Stok"] AuxUpdate --> Commit["Commit Transaction"] Commit --> Finish["Laporan Keuangan dan Buku Besar Terupdate Otomatis"]
1. Gatekeeper: Tutup Buku

Setiap request dicek oleh PeriodLockTrait::checkPeriodLock(). Jika tanggal transaksi masuk dalam bulan yang sudah ditutup di tabel periode_akuntansi, transaksi diblokir seketika.

2. Atomic DB Transactions

Menggunakan beginTransaction() dan commit(). Jika gagal saat menyimpan detail atau mutasi stok, otomatis rollBack() sehingga database selalu bersih tanpa data parsial.

3. Real-Time Reporting

Semua transaksi langsung mengalir ke jurnal_umum & jurnal_detail. Neraca Lajur, Laba Rugi, Posisi Keuangan, dan Arus Kas langsung mencerminkan data terbaru tanpa proses batch.

Matriks Aturan Entry & Penguncian Transaksi

Tinjauan cepat efek basis data dan penjurnalan untuk setiap jenis transaksi.

Modul / Transaksi Tabel Database Utama Dampak Jurnal Otomatis Penguncian (is_locked) Efek Sampingan (Auxiliary)
Jurnal Umum Manual jurnal_umum, jurnal_detail Sesuai baris input pengguna 0 (Bisa Diedit Langsung) -
Kas Masuk / Keluar kas_transaksi Debit Kas vs Kredit Lawan (atau sebaliknya) 1 (Terkunci di Jurnal) Validasi Saldo Minimum Kas
Faktur Penjualan penjualan, penjualan_detail Kas/Piutang vs Pendapatan, Pajak, HPP & Persediaan 1 (Terkunci di Jurnal) Potong Stok Barang & Tambah Piutang
Faktur Pembelian pembelian, pembelian_detail Persediaan, PPN vs Kas/Utang & Diskon 1 (Terkunci di Jurnal) Tambah Stok, Kartu Stok & Tambah Utang
Pelunasan Piutang / Utang pembayaran, penerimaan Kas/Bank vs Piutang (atau Utang vs Kas/Bank) 1 (Terkunci di Jurnal) Kurangi sisa_tagihan faktur & saldo kontak
Produksi & BOM produksi, produksi_detail Persediaan Barang Jadi vs Persediaan Bahan Baku 1 (Terkunci di Jurnal) Konversi Stok Bahan Baku -> Barang Jadi