feat(webstatement): tambah console command dan perbaikan field required untuk laporan closing balance

Menambahkan fitur command line untuk generate laporan closing balance sekaligus memperbaiki pengisian field yang required di database.

Perubahan yang dilakukan:
- Membuat command `webstatement:generate-closing-balance-report` dengan parameter:
  - `account_number`: nomor rekening (required)
  - `period`: format tanggal YYYYMMDD (required)
  - `--user_id=`: ID user (optional, default 1)
- Menambahkan field `report_date` dengan konversi dari parameter `period` menggunakan Carbon
- Menambahkan field `created_by` dan `updated_by` untuk kebutuhan audit trail
- Menambahkan field `ip_address` dan `user_agent` dengan default 'console' untuk identifikasi proses non-web
- Memperbaiki validasi parameter dengan regex dan proper escaping
- Menghindari error SQLSTATE[23502] terkait field not null di database schema
- Menggunakan database transaction untuk menjaga konsistensi data
- Mengupdate fungsi `closing_balance_report_logs` untuk menyimpan semua field yang dibutuhkan
- Integrasi dengan `GenerateClosingBalanceReportJob` untuk pemrosesan laporan secara background
- Menambahkan logging komprehensif untuk monitoring `report_date` dan proses lainnya
- Mendukung eksekusi manual dan penjadwalan via Laravel scheduler
- Kompatibel dengan proses laporan closing balance via web dan CLI

Tujuan perubahan:
- Mempermudah proses generate laporan closing balance melalui CLI secara manual atau terjadwal
- Memastikan seluruh field wajib di `closing_balance_report_logs` terisi dengan benar
- Menyediakan audit trail lengkap dan logging yang detail untuk proses via console
- Meningkatkan keandalan sistem dengan validasi dan error handling yang lebih baik
This commit is contained in:
Daeng Deni Mardaeni
2025-07-17 21:42:11 +07:00
parent 3beaf78872
commit 3c01c1728c
5 changed files with 250 additions and 20 deletions

View File

@@ -29,7 +29,7 @@ class LaporanClosingBalanceController extends Controller
public function index()
{
Log::info('Mengakses halaman laporan closing balance');
return view('webstatement::closing-balance-reports.index');
return view('webstatement::laporan-closing-balance.index');
}
/**
@@ -92,7 +92,7 @@ class LaporanClosingBalanceController extends Controller
'period' => $period
]);
return redirect()->route('closing-balance-reports.index')
return redirect()->route('laporan-closing-balance.index')
->with('success', 'Permintaan laporan closing balance berhasil dibuat dan sedang diproses.');
} catch (Exception $e) {
@@ -117,7 +117,7 @@ class LaporanClosingBalanceController extends Controller
public function create()
{
Log::info('Menampilkan form pembuatan laporan closing balance');
return view('webstatement::closing-balance-reports.create');
return view('webstatement::laporan-closing-balance.create');
}
/**
@@ -133,7 +133,7 @@ class LaporanClosingBalanceController extends Controller
]);
$closingBalanceReport->load(['user', 'creator', 'authorizer']);
return view('webstatement::closing-balance-reports.show', compact('closingBalanceReport'));
return view('webstatement::laporan-closing-balance.show', compact('closingBalanceReport'));
}
/**
@@ -242,7 +242,7 @@ class LaporanClosingBalanceController extends Controller
'status' => $request->authorization_status
]);
return redirect()->route('closing-balance-reports.show', $closingBalanceReport->id)
return redirect()->route('laporan-closing-balance.show', $closingBalanceReport->id)
->with('success', "Permintaan laporan closing balance berhasil {$statusText}.");
} catch (Exception $e) {