From 428792ed1b7e926bc92271fa4a1cf1a2586e6948 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 8 Jul 2025 14:12:51 +0700 Subject: [PATCH] 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 --- app/Jobs/GenerateBiayaKartuCsvJob.php | 50 +++++++++++++++++++++------ 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/app/Jobs/GenerateBiayaKartuCsvJob.php b/app/Jobs/GenerateBiayaKartuCsvJob.php index cb13989..0924108 100644 --- a/app/Jobs/GenerateBiayaKartuCsvJob.php +++ b/app/Jobs/GenerateBiayaKartuCsvJob.php @@ -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; } /**