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
|
||
|---|---|---|
| .vscode | ||
| android | ||
| assets/images | ||
| curl_scripts | ||
| ios | ||
| key | ||
| lib | ||
| linux | ||
| macos | ||
| plugins | ||
| test | ||
| web | ||
| windows | ||
| .gitignore | ||
| .metadata | ||
| COMMIT_MESSAGE.txt | ||
| PRINTING_CARD_IMPLEMENTATION.md | ||
| PROJECT_CONTEXT.md | ||
| README.md | ||
| analysis_options.yaml | ||
| devtools_options.yaml | ||
| package-lock.json | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| sample-struk.jpg | ||
README.md
Cashumit
Aplikasi kasir berbasis Flutter dengan fitur:
- Cetak struk ke printer thermal
- Integrasi langsung dengan FireFly III
Cara Menjalankan
- Pastikan Flutter sudah terinstall
- Jalankan perintah berikut:
flutter run
Konfigurasi FireFly III
- Buka aplikasi dan masuk ke menu "Pengaturan"
- Masukkan URL instance FireFly III Anda
- Masukkan Personal Access Token yang dibuat di FireFly III
- Simpan konfigurasi
Pengujian Integrasi FireFly III
Untuk menguji integrasi dengan FireFly III tanpa menjalankan aplikasi Flutter, Anda dapat menjalankan script pengujian:
dart test_firefly_integration.dart
Sebelum menjalankan script, pastikan untuk:
- Mengganti nilai
baseUrldengan URL instance FireFly III Anda - Mengganti nilai
accessTokendengan Personal Access Token yang valid - Mengganti nilai
sourceAccountIddandestinationAccountIddengan ID akun yang valid
Fitur yang Akan Dikembangkan
- Input transaksi kasir
- Cetak struk ke printer thermal (Bluetooth/USB)
- Integrasi API FireFly III untuk pencatatan transaksi
Catatan
- Pastikan printer thermal kompatibel dengan perangkat
- Siapkan API key dan URL FireFly III