feat(webstatement): ubah filter product_code 6021 berdasarkan ctdesc
Mengubah logika filter untuk product_code 6021 agar hanya mengecualikan yang memiliki ctdesc 'gold', sementara product_code 6021 dengan ctdesc lainnya tetap diproses. Perubahan yang dilakukan: - Menghapus '6021' dari array whereNotIn product_code yang mengecualikan semua - Menambahkan filter kondisional kompleks menggunakan nested where clause - Implementasi logika: (product_code != '6021') OR (product_code = '6021' AND ctdesc != 'gold') - Menambahkan logging detail untuk tracking filter khusus yang diterapkan - Memperbarui dokumentasi function untuk menjelaskan logika bisnis baru - Menambahkan informasi filter khusus dalam log hasil pengambilan data Dengan perubahan ini: - Product_code 6021 dengan ctdesc 'gold' akan dikecualikan dari biaya admin - Product_code 6021 dengan ctdesc selain 'gold' tetap dikenakan biaya admin - Product_code lainnya (6002, 6004, 6042, 6031) tetap dikecualikan sepenuhnya - Meningkatkan fleksibilitas dalam pengelolaan biaya berdasarkan jenis kartu
This commit is contained in:
@@ -159,23 +159,53 @@
|
||||
|
||||
/**
|
||||
* Get eligible ATM cards from database
|
||||
* Mengambil data kartu ATM yang memenuhi syarat untuk dikenakan biaya admin
|
||||
* dengan filter khusus untuk mengecualikan product_code 6021 yang ctdesc nya gold
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
private function getEligibleAtmCards()
|
||||
{
|
||||
// Log: Memulai proses pengambilan data kartu ATM yang eligible
|
||||
Log::info('Starting to fetch eligible ATM cards', [
|
||||
'periode' => $this->periode
|
||||
]);
|
||||
|
||||
$cardTypes = array_keys($this->getDefaultFees());
|
||||
|
||||
return Atmcard::where('crsts', 1)
|
||||
->whereNotNull('accflag')
|
||||
->where('accflag', '!=', '')
|
||||
->where('flag','')
|
||||
->whereNotNull('branch')
|
||||
->where('branch', '!=', '')
|
||||
->whereNotNull('currency')
|
||||
->where('currency', '!=', '')
|
||||
->whereIn('ctdesc', $cardTypes)
|
||||
->get();
|
||||
$query = Atmcard::where('crsts', 1)
|
||||
->whereNotNull('accflag')
|
||||
->where('accflag', '!=', '')
|
||||
->where('flag','')
|
||||
->whereNotNull('branch')
|
||||
->where('branch', '!=', '')
|
||||
->whereNotNull('currency')
|
||||
->where('currency', '!=', '')
|
||||
->whereIn('ctdesc', $cardTypes)
|
||||
->whereNotIn('product_code',['6002','6004','6042','6031']) // Hapus 6021 dari sini
|
||||
->where('branch','!=','ID0019999')
|
||||
// Filter khusus: Kecualikan product_code 6021 yang ctdesc nya gold
|
||||
->where(function($subQuery) {
|
||||
$subQuery->where('product_code', '!=', '6021')
|
||||
->orWhere(function($nestedQuery) {
|
||||
$nestedQuery->where('product_code', '6021')
|
||||
->where('ctdesc', '!=', 'gold');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
$cards = $query->get();
|
||||
|
||||
// Log: Hasil pengambilan data kartu ATM
|
||||
Log::info('Eligible ATM cards fetched successfully', [
|
||||
'total_cards' => $cards->count(),
|
||||
'periode' => $this->periode,
|
||||
'excluded_product_codes' => ['6002','6004','6042','6031'],
|
||||
'special_filter' => 'product_code 6021 dengan ctdesc gold dikecualikan'
|
||||
]);
|
||||
|
||||
return $cards;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user