- Invoice satu per struk berisi semua grup; kembalian/tip masuk total
- Submit ke Firefly III sebagai satu transaksi split; invoice dilampirkan sekali di pecahan pertama
- Nomor invoice 6 digit hex acak, ditentukan sebelum item dan direset tiap struk baru
- Tombol Lihat Invoice di floating menu; tombol invoice per grup dihapus
- Logo & QRIS pada invoice, pengaturan cetak logo/QRIS di struk thermal
- Simpan invoice ke folder Download via MediaStore Android
- Layar laporan keuangan dan laporan tersimpan
- Ekspor PDF laporan dengan tanda tangan dan lampiran
- Edit serta sinkron transaksi Firefly III dari laporan
- Pengaturan dokumen laporan di layar konfigurasi
- Integrasi CashierStatusBar langsung di bawah potongan kertas sobek pada tampilan struk
- Quick dialog Bluetooth scanner langsung dari ketukan status bar tanpa ganti layar
- Penyesuaian lebar struk responsif proporsional dengan tear effect merata
- Pembersihan konfigurasi printer dan akun tujuan dari ConfigScreen
- Perampingan SpeedDial menjadi 5 tombol transaksi utama dengan variasi warna permanen
- Dialog tambah item lebih lebar dan nyaman untuk kasir
- Bump versi aplikasi ke 1.6.0+6
Multi-Grup Sumber & UI:
- Model ReceiptGroup: satu struk bisa punya banyak grup sumber (
revenue)
- Tombol "Tambah Sumber" dengan dashed border (max 10 grup)
- Hapus label "Dari:" di SourceAccountSelector (chip saja)
- Default 1 grup kosong di ReceiptProvider constructor &
_resetState
Akun Tujuan ke Config:
- Pindah DestinationAccountSelector dari receipt body ke Config
screen
- Persist & load via SharedPreferences (permanen, tidak di-reset)
- Dropdown auto-load dari cache/mirror saat buka Config
- Tombol "Sinkronisasi Manual" sekarang simpan ke mirror &
refresh dropdown
Batch Send via SubmissionTask:
- Model SubmissionTask: konteks per-grup (group/tip +
destination + date)
- TransactionSubmissionDialog refactor: terima
List<SubmissionTask>
- Helper buildTasksFromReceipt &
buildTasksFromAllUnsubmittedReceipts
- LocalReceiptsScreen: tombol "Kirim Semua Nota" + post-process
status
Bug Fix:
- copyWith sentinel pattern: field nullable (tipSourceAccount,
destinationAccount, fireflyUrl, accessToken) kini bisa di-set
ke null
- Tip dapat dibersihkan dengan "Batal Tip" & reset antar
transaksi
- Hapus tombol "Muat Akun" (redundan dgn Sinkronisasi Manual)
Lainnya:
- Date picker untuk tanggal transaksi
- Font courier prime caching via CourierStyles
- Perf: compute() untuk decode image, cancel stream bluetooth,
fix rebuild loop
- External link: <queries> AndroidManifest + skip canLaunchUrl
- Layout cetak: hapus Ke:, sederhanakan separator grup, hapus
TIP: TIDAK
- Hapus TransactionLinksScreen, ganti inline copy/open di popup
This commit removes the confusing default account mapping feature and implements a more reliable offline-first account mirroring system. The changes include:
BREAKING CHANGES:
- Remove all default account mapping functionality (saveDefaultAccount, getDefaultAccount, etc.)
- Simplify account selection to use direct account choice instead of default mapping
FEATURES:
- Implement account mirroring system that stores all FireFly III accounts locally
- Add offline-first approach: server accounts > mirrored accounts > fallback
- Automatic account sync when connection is available
- Manual sync capability in config screen
- Enhanced offline reliability - app works completely without server connection
IMPROVEMENTS:
- Faster startup times using local account cache
- More predictable account selection behavior
- Reduced confusion about which accounts are being used
- Better error handling for offline scenarios
- Simplified architecture without complex default mapping logic