fix(export): update global sequence tracking and correct formatting issues

- Perbaiki penggunaan `sequence_no` dalam proses ekspor data dengan menambahkan pelacakan global sequence (`globalSequence`) di seluruh chunk, sehingga memastikan urutan yang konsisten dan tepat.
- Gantikan penggunaan indeks lokal chunk dengan `globalSequence` di setiap entri dalam data proses.
- Tambahkan komentar untuk menjelaskan fungsi tambahan terkait pelacakan sequence global.
- Koreksi format narasi pada nilai `'FT.OUT'` yang sebelumnya salah menggunakan `'FT.IN'`.
- Tambahkan pemeriksaan dan pembaruan pada logika penyimpanan data untuk meningkatkan kejelasan dan efisiensi.
This commit is contained in:
daengdeni
2025-05-23 07:24:01 +07:00
parent 79d8ea2eee
commit d66afb36c7

View File

@@ -93,16 +93,20 @@
Log::info("Processing {$totalCount} statement entries for account: {$this->account_number}");
// Track the global sequence number across chunks
$globalSequence = 0;
// Proses data dalam chunk untuk mengurangi penggunaan memori
StmtEntry::with(['ft', 'transaction'])
->where('account_number', $this->account_number)
->where('booking_date', $this->period)
->orderBy('date_time', 'ASC')
->orderBy('trans_reference', 'ASC')
->chunk($this->chunkSize, function ($entries) use (&$runningBalance) {
->chunk($this->chunkSize, function ($entries) use (&$runningBalance, &$globalSequence) {
$processedData = [];
foreach ($entries as $index => $item) {
foreach ($entries as $item) {
$globalSequence++; // Increment the global sequence counter
$runningBalance += (float) $item->amount_lcy;
try {
@@ -124,7 +128,7 @@
$processedData[] = [
'account_number' => $this->account_number,
'period' => $this->period,
'sequence_no' => $index + 1,
'sequence_no' => $globalSequence,
'transaction_date' => $transactionDate,
'reference_number' => $item->trans_reference,
'transaction_amount' => $item->amount_lcy,
@@ -136,7 +140,7 @@
'updated_at' => now(),
];
}
// var_dump($processedData);
// Simpan data dalam batch untuk kinerja yang lebih baik
if (!empty($processedData)) {
DB::table('processed_statements')->insert($processedData);
@@ -178,7 +182,7 @@
if ($narrParam->_id == 'FTIN') {
$fmt = 'FT.IN';
} else if ($narrParam->_id == 'FTOUT') {
$fmt = 'FT.IN';
$fmt = 'FT.OUT';
} else {
$fmt = $narrParam->_id;
}