# 📘 Panduan Modul: Pembatalan (Sistem Void / Rollback Nota)

## 1. Peran & Fungsi Utama
Modul ini mengelola mekanisme pembatalan (*void*) atau penarikan kembali transaksi final yang sudah terlanjur diposting:
- **`_processSelectNotaRevert.php`**: Controller pemilih nota transaksi asal yang akan dibatalkan/direvert.
- **`Pembatalan.php` / `Transaksi.php`**: Mengelola daftar pengajuan void dan histori transaksi pembatalan.
- **`FollowUp.php`**: Menangani otorisasi pembatalan, rollback status transaksi asal, pembalikan mutasi stock locker (dual-write), serta pembalikan entri FIFO.

---

## 2. Aliran Finansial & Reversal Akuntansi
Pembatalan transaksi memicu pembalikan jurnal secara otomatis (*reversal journal*):
- **Jurnal Balik**: Sistem akan menghasilkan entri jurnal baru dengan membalik posisi debet/kredit transaksi awal (misalnya, mendebet hutang dagang dan mengkredit persediaan jika GRN dibatalkan).
- **`postProcessorRequestRevert`**: Mengidentifikasi tipe dokumen asal (misal `19467` untuk uang muka) dan melakukan pembalikan status bayar via `PaymentUangMuka` / `PaymentAntiSource` / `TransaksiPengembalianUangReference`.

---

## 3. Reversal Persediaan & Locker Stok
- **Kembalikan Saldo**: Stok barang yang terjual/terkirim dikembalikan ke locker gudang asal menggunakan `penulisan ganda stock locker` untuk menaikkan kembali status `active`.
- **Pre-Processor Reverse**: Mengidentifikasi serial number yang batal agar statusnya aktif kembali (`status = 1` untuk penjualan batal) atau dinonaktifkan (`trash = 1` untuk GRN batal) menggunakan extractor pembalik.
