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)
{
$narr = '';
$narr = [];
// Check if transaction exists before accessing its properties
if ($item->transaction) {
if ($item->transaction->narr_type) {
$narr .= $item->transaction->stmt_narr . ' ';
$narr .= $this->getFormatNarrative($item->transaction->narr_type, $item);
} else {
$narr .= $item->transaction->stmt_narr . ' ';
if ($item->transaction->stmt_narr) {
$narr[] = $item->transaction->stmt_narr;
}
} else {
// Fallback description if transaction is null
$narr .= '';
if ($item->narrativ) {
$narr[] = $item->narrativ;
}
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) {
$narr .= 'Receipt No: ' . $item->ft->recipt_no;
$narr[] = 'Receipt No: ' . $item->ft->recipt_no;
}
return trim($narr);
return implode(' ', array_filter($narr));
}
/**