feat(webstatement): implementasi pemrosesan multi account statement berdasarkan stmt_sent_type

- Modifikasi method printStatementRekening untuk mendukung request_type multi_account
- Tambah method processMultiAccountStatement untuk mengambil data account berdasarkan branch_code dan stmt_sent_type
- Tambah method processSingleAccountStatement untuk memisahkan logika single account
- Implementasi GenerateMultiAccountPdfJob untuk generate PDF multiple account secara parallel
- Tambah fungsi generateAccountPdf untuk generate PDF per account dengan Browsershot
- Tambah fungsi createZipFile untuk mengompres multiple PDF menjadi satu ZIP file
- Tambah method downloadMultiAccountZip untuk download ZIP file hasil pemrosesan
- Implementasi validasi stmt_sent_type dengan support JSON array format
- Tambah logging komprehensif untuk monitoring proses multi account
- Tambah error handling dengan database transaction rollback
- Update PrintStatementLog dengan informasi target_accounts dan status pemrosesan
- Tambah rute baru untuk download ZIP file multi account
- Support untuk pemrosesan chunk account untuk optimasi memory usage
- Implementasi status tracking untuk success_count dan failed_count
- Tambah validasi keberadaan account berdasarkan kriteria yang ditentukan
This commit is contained in:
Daeng Deni Mardaeni
2025-07-09 17:51:57 +07:00
parent 51697f017e
commit 8ee0dd2218
5 changed files with 620 additions and 24 deletions

View File

@@ -33,7 +33,7 @@ class ExportStatementPeriodJob implements ShouldQueue
protected $startDate;
protected $endDate;
protected $toCsv;
protected $statement;
protected $statementId;
/**
* Create a new job instance.
@@ -44,9 +44,9 @@ class ExportStatementPeriodJob implements ShouldQueue
* @param string $client
* @param string $disk
*/
public function __construct($statement, string $account_number, string $period, string $saldo, string $client = '', string $disk = 'local', bool $toCsv = true)
public function __construct(int $statementId, string $account_number, string $period, string $saldo, string $client = '', string $disk = 'local', bool $toCsv = true)
{
$this->statement = $statement;
$this->statementId = $statementId;
$this->account_number = $account_number;
$this->period = $period;
$this->saldo = $saldo;
@@ -172,7 +172,7 @@ class ExportStatementPeriodJob implements ShouldQueue
});
if($entry){
$printLog = PrintStatementLog::find($this->statement->id);
$printLog = PrintStatementLog::find($this->statementId);
if($printLog){
$printLog->update(['is_generated' => true]);
}