Perbaikan masalah duplikasi pada laporan penutupan saldo dengan pendekatan hash unik dan query insert yang toleran terhadap duplikasi. Perubahan: - Tambah kolom `unique_hash` pada tabel `processed_closing_balances` (via migrasi `2025_07_31_035159_add_unique_hash_field_to_processed_closing_balances_table.php`) - Tambah field `unique_hash` ke `$fillable` pada model `ProcessedClosingBalance` - Update logika generate unique key di `prepareProcessedClosingBalanceData()` menggunakan `md5(trans_reference + '_' + amount_lcy)` - Query pencarian duplikasi berdasarkan `unique_hash`, bukan `trans_reference` saja - Ganti `insert()` dengan `insertOrIgnore()` untuk mencegah error saat insert duplikat data Dampak: - Duplikasi data dihindari secara efektif lewat hash unik - Tidak ada error meski data duplicate ditemukan, karena query otomatis mengabaikannya - `trans_reference` yang sama tetap valid selama nilai `amount_lcy` berbeda - Data laporan lebih konsisten dan terhindar dari konflik constraint
49 lines
1.0 KiB
PHP
49 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace Modules\Webstatement\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class ProcessedClosingBalance extends Model
|
|
{
|
|
protected $fillable = [
|
|
'account_number',
|
|
'period',
|
|
'group_name',
|
|
'sequence_no',
|
|
'trans_reference',
|
|
'booking_date',
|
|
'transaction_date',
|
|
'amount_lcy',
|
|
'debit_acct_no',
|
|
'debit_value_date',
|
|
'debit_amount',
|
|
'credit_acct_no',
|
|
'bif_rcv_acct',
|
|
'bif_rcv_name',
|
|
'credit_value_date',
|
|
'credit_amount',
|
|
'at_unique_id',
|
|
'bif_ref_no',
|
|
'atm_order_id',
|
|
'recipt_no',
|
|
'api_iss_acct',
|
|
'api_benff_acct',
|
|
'authoriser',
|
|
'remarks',
|
|
'payment_details',
|
|
'ref_no',
|
|
'merchant_id',
|
|
'term_id',
|
|
'closing_balance',
|
|
'unique_hash',
|
|
];
|
|
|
|
protected $casts = [
|
|
'amount_lcy' => 'decimal:2',
|
|
'debit_amount' => 'decimal:2',
|
|
'credit_amount' => 'decimal:2',
|
|
'closing_balance' => 'decimal:2'
|
|
];
|
|
}
|