refactor(export-statement): improve narrative generation logic

- Mengubah tipe variable `$narr` dari string menjadi array untuk mempermudah pengelolaan elemen-elemen narasi.
- Menambahkan elemen narasi ke dalam array menggunakan metode `array_push` alih-alih concatenation dengan string.
- Menggunakan `array_filter` untuk memastikan semua elemen yang bernilai kosong tidak ikut ke dalam hasil akhir.
- Mengganti `trim` dengan `implode` untuk menggabungkan elemen narasi menjadi string dengan separator spasi.
- Memperbaiki fallback logic saat properti transaksional tidak ada, lebih rapi dan terstruktur pada skenario `else if ($item->narrativ)`.
- Penggunaan logika baru memastikan bahwa narasi lebih fleksibel dan tidak menghasilkan karakter-karakter string kosong yang tidak diperlukan di output akhir.
This commit is contained in:
daengdeni
2025-05-27 15:52:24 +07:00
parent 13344959c4
commit 4c1163fa05

View File

@@ -197,26 +197,27 @@
*/ */
private function generateNarrative($item) private function generateNarrative($item)
{ {
$narr = ''; $narr = [];
// Check if transaction exists before accessing its properties
if ($item->transaction) { if ($item->transaction) {
if ($item->transaction->narr_type) { if ($item->transaction->stmt_narr) {
$narr .= $item->transaction->stmt_narr . ' '; $narr[] = $item->transaction->stmt_narr;
$narr .= $this->getFormatNarrative($item->transaction->narr_type, $item);
} else {
$narr .= $item->transaction->stmt_narr . ' ';
} }
} else { if ($item->narrativ) {
// Fallback description if transaction is null $narr[] = $item->narrativ;
$narr .= ''; }
if ($item->transaction->narr_type) {
$narr[] = $this->getFormatNarrative($item->transaction->narr_type, $item);
}
} else if ($item->narrativ) {
$narr[] = $item->narrativ;
} }
if ($item->ft?->recipt_no) { if ($item->ft?->recipt_no) {
$narr .= 'Receipt No: ' . $item->ft->recipt_no; $narr[] = 'Receipt No: ' . $item->ft->recipt_no;
} }
return trim($narr); return implode(' ', array_filter($narr));
} }
/** /**