- Hapus transaksi bersarang:
- Pindahkan DB::beginTransaction() & DB::commit() dari processAndSaveClosingBalanceData() ke handle() menggunakan DB::transaction()
- Cegah error max_lock_per_transaction pada PostgreSQL
- Implementasi batch processing:
- Tambah metode batchUpdateOrCreate()
- Ambil data existing dalam satu query via whereIn()
- Pisahkan data menjadi toInsert & toUpdate
- Gunakan DB::table()->insert() untuk batch insert
- Lakukan update individual untuk data yang sudah ada
- Penyederhanaan error handling:
- Hapus try-catch di processAndSaveClosingBalanceData() karena sudah ditangani di handle()
- Penambahan logging:
- Tambah log informasi untuk monitoring batch insert/update
- Optimasi performa:
- Kurangi beban database & mencegah duplikasi data
- Gunakan pendekatan "delete-first, then insert" seperti ExportStatementJob