✨ feat(webstatement): dukung endPeriod dan format folder baru untuk statement
- Ubah konstruksi path SFTP dan storage lokal agar konsisten dengan format folder baru `YYYYMMDD.YYYYMMDD`
- Tambahkan dukungan periode akhir (`endPeriod`) pada alur cetak dan ekspor statement, lengkap dengan propagasi ke view dan log
- Perkuat logging di controller dan job untuk audit proses, serta sesuaikan penamaan file pada jalur PRINT
Rincian Perubahan
- PrintStatementController.php
- Ganti path SFTP awal dari `{$period_from}/{$branch_code}/{$account_number}_{$period_from}.pdf` menjadi:
- `{$periodPath}/PRINT/{$branch_code}/{$account_number}.1.pdf` pada cek file awal
- Gunakan `$periodPath = formatPeriodForFolder($statement->period_from)` untuk semua referensi path
- Iterasi ketersediaan periode:
- Gunakan `formatPeriodForFolder($periodFormatted)` saat membentuk `periodPath` dalam loop bulan
- Generate atau fetch statement:
- Ubah path menjadi `{$periodPath}/{$branch_code}/{$account_number}_{$period}.pdf` untuk konsistensi
- ZIP multi-periode:
- Cari file ZIP pada `statements/{$periodPath}/multi_account/{$statementId}` sesuai format folder baru
- Variabel periode:
- Tambahkan `$endPeriod = $statement->period_to ?? $period` dan propagasikan ke:
- Pemanggilan `generateStatementPdf($norek, $period, $endPeriod, ...)`
- View `statements.stmt` melalui `compact(..., 'endPeriod')`
- Perbarui logging untuk menampilkan `endPeriod`
- Generate PDF:
- Tandai storage path menjadi `statements/{$periodPath}/{$norek}`
- Ubah signature: `generateStatementPdf($norek, $period, $endPeriod, ...)`
- Akses file lokal/SFTP:
- Ubah path storage menjadi `statements/{$periodPath}/{$account->branch_code}/{$filename}`
- Penyesuaian delete path: `statements/{$periodPath}/{$norek}/{$filename}`
- ExportStatementPeriodJob.php
- Tambah properti dan parameter konstruktor: `$endPeriod`
- Ubah inisialisasi periode:
- Ganti `calculatePeriodDates()` menjadi `formatPeriodForFolder()` (metode internal yang menetapkan `startDate` dan `endDate`)
- Jika `$endPeriod` diisi, jadikan akhir bulan dari `endPeriod` sebagai `endDate` pemrosesan
- Render view:
- Tambahkan `endPeriod` ke `compact(...)` agar view mengetahui batas periode akhir
- Storage path:
- Gunakan `formatPeriodForFolder($this->period)` untuk path `statements/{$periodPath}/{$account->branch_code}`
- Controller dispatch:
- Ubah pemanggilan job menjadi `ExportStatementPeriodJob::dispatch($statementId, $accountNumber, $period, $endPeriod, $balance, $clientName)`
- resources/views/statements/stmt.blade.php
- Periode:
- Hitung `periodDates` via `calculatePeriodDates($period)`
- Jika `endPeriod` ada, gunakan `calculatePeriodDates($endPeriod)` sebagai referensi `endDate`
- Data customer:
- Gunakan `$customer` langsung, bukan `$account->customer`
- Kondisional alamat berdasarkan `stmt_sent_type == 'BY.MAIL.TO.DOM.ADDR'`:
- Utamakan `l_dom_street` jika tersedia, fallback ke `address`
- Susun RT/RW/kelurahan/kota/provinsi/kode pos sesuai preferensi pengiriman
- Format angka:
- Penyesuaian spasi dan casting `(float)` untuk konsistensi number_format
- Logging:
- Tambahkan informasi hasil perhitungan period dates untuk audit
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
@section('content')
|
||||
<div class="grid grid-cols-8 gap-5">
|
||||
<div class="col-span-2 card">
|
||||
<div class="col-span-2 bg-gray-100 card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Request Print Stetement</h3>
|
||||
</div>
|
||||
@@ -71,10 +71,6 @@
|
||||
{{ in_array('BY.MAIL.TO.KTP.ADDR', old('stmt_sent_type', $statement->stmt_sent_type ?? [])) ? 'selected' : '' }}>
|
||||
BY MAIL TO KTP ADDR
|
||||
</option>
|
||||
<option value="NO.PRINT"
|
||||
{{ in_array('NO.PRINT', old('stmt_sent_type', $statement->stmt_sent_type ?? [])) ? 'selected' : '' }}>
|
||||
NO PRINT
|
||||
</option>
|
||||
<option value="PRINT"
|
||||
{{ in_array('PRINT', old('stmt_sent_type', $statement->stmt_sent_type ?? [])) ? 'selected' : '' }}>
|
||||
PRINT
|
||||
|
||||
Reference in New Issue
Block a user