diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index 9b6e47f..b55b17a 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -998,77 +998,188 @@ class GadaiController extends Controller return response()->json($ansuran); } - public function getLaporanAnsuranUjrah($kodcaw,Request $request){ - $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + public function getLaporanAnsuranUjrah($kodcaw, Request $request) +{ + $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first(); - $ansuran_data = Transaction::on('mysql7') - ->select('transaction.norujukan', - 'trans.tarikh_bayaran', - 'transaction.nokp', - 'transaction.kodcaw', - 'transaction.trans_type', - 'cust.nama','trans.bayaran_pembiayaan', - 'transaction.duit_masuk', - 'trans.bayaran_keuntungan', - 'transaction.teller', - 'trans.ujrah', - 'trans.onepercent') - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->leftJoin('customer as cust', function($join) - { - $join->on('transaction.nokp', '=', 'cust.kpbaru'); - $join->orOn('transaction.nokp', '=', 'cust.kplama'); - }) - ->where('transaction.kodcaw','=',$kodcaw) - ->where('transaction.trans_type','=','A') - ->whereDate('transaction.created_at', '>=', $request->mula) - ->whereDate('transaction.created_at', '<=', $request->akhir) - ->orderBy('transaction.teller') - ->orderBy('trans.tarikh_bayaran') - ->get(); + // Bina query asas dahulu + $query = Transaction::on('mysql7') + ->select( + 'transaction.norujukan', + 'trans.tarikh_bayaran', + 'transaction.nokp', + 'transaction.kodcaw', + 'transaction.trans_type', + 'cust.nama', + 'trans.bayaran_pembiayaan', + 'transaction.duit_masuk', + 'trans.bayaran_keuntungan', + 'transaction.teller', + 'trans.ujrah', + 'trans.onepercent' + ) + ->leftJoin('transaksi_keuntungan as trans', function ($join) { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->leftJoin('customer as cust', function ($join) { + $join->on('transaction.nokp', '=', 'cust.kpbaru'); + $join->orOn('transaction.nokp', '=', 'cust.kplama'); + }) + ->where('transaction.kodcaw', '=', $kodcaw) + ->where('transaction.trans_type', '=', 'A') + ->whereDate('transaction.created_at', '>=', $request->mula) + ->whereDate('transaction.created_at', '<=', $request->akhir); - $ansuran = []; + // Tambah filter berdasarkan jenis + if ($request->jenis == 'arrahnpay') { + $query->where('transaction.teller', '=', 'Online'); + } elseif ($request->jenis == 'kaunter') { + $query->where('transaction.teller', '!=', 'Online'); + } - if($ansuran_data){ - foreach($ansuran_data as $index=>$ansuranData){ - $gadai = Gadai::on($cawangan['mysql'])->where('norujukan',$ansuranData['norujukan'])->first(); + // Dapatkan data selepas filter + $ansuran_data = $query + ->orderBy('transaction.teller') + ->orderBy('trans.tarikh_bayaran') + ->get(); - array_push($ansuran,[ - "norujukan" => $ansuranData['norujukan'], - "tarikh_bayaran" => $ansuranData['tarikh_bayaran'], - "nokp" => $ansuranData['nokp'], - "kodcaw" => $ansuranData['kodcaw'], - "trans_type" => $ansuranData['trans_type'], - "nama" => $ansuranData['nama'], - "tempoh" => $gadai['tempoh'], - "bakipjm" => $gadai['bakipjm'], - "bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'], - "duit_masuk" => $ansuranData['duit_masuk'], - "bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'], - "teller" => $ansuranData['teller'], - "ansuranujrah" => $ansuranData['ujrah'], - "ansuranonepercent" => $ansuranData['onepercent'], - "t_gadai" => $gadai['t_gadai'], - ]); - } + $ansuran = []; + + // Loop data dan tambahkan maklumat dari jadual gadai + if ($ansuran_data) { + foreach ($ansuran_data as $index => $ansuranData) { + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan', $ansuranData['norujukan'])->first(); + + array_push($ansuran, [ + "norujukan" => $ansuranData['norujukan'], + "tarikh_bayaran" => $ansuranData['tarikh_bayaran'], + "nokp" => $ansuranData['nokp'], + "kodcaw" => $ansuranData['kodcaw'], + "trans_type" => $ansuranData['trans_type'], + "nama" => $ansuranData['nama'], + "tempoh" => optional($gadai)->tempoh, + "bakipjm" => optional($gadai)->bakipjm, + "bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'], + "duit_masuk" => $ansuranData['duit_masuk'], + "bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'], + "teller" => $ansuranData['teller'], + "ansuranujrah" => $ansuranData['ujrah'], + "ansuranonepercent" => $ansuranData['onepercent'], + "t_gadai" => optional($gadai)->t_gadai, + ]); + } + } + + // Susun ikut teller dan tarikh bayar + usort($ansuran, function ($a, $b) { + $compare_teller = strcmp($a['teller'], $b['teller']); + + if ($compare_teller === 0) { + return strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran']); } - usort($ansuran, function ($a, $b) { - $compare_teller = strcmp($a['teller'], $b['teller']); + return $compare_teller; + }); - if ($compare_teller === 0) { - return strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran']); - } + return response()->json($ansuran); +} - return $compare_teller; - }); - return response()->json($ansuran); - } +// public function getLaporanAnsuranUjrah($kodcaw, Request $request) +// { + // $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first(); + // $semuaDescpt = Transaction::on('mysql7') + // ->where('kodcaw', '=', $kodcaw) + // ->pluck('descpt'); + + // dd($semuaDescpt); + + // Dapatkan connection cawangan +// $connection = $cawangan['mysql']; + +// // Mula query utama ansuran +// $query = Transaction::on('mysql7') +// ->select( +// 'transaction.norujukan', +// 'trans.tarikh_bayaran', +// 'transaction.nokp', +// 'transaction.kodcaw', +// 'transaction.trans_type', +// 'cust.nama', +// 'trans.bayaran_pembiayaan', +// 'transaction.duit_masuk', +// 'trans.bayaran_keuntungan', +// 'transaction.teller', +// 'trans.ujrah', +// 'trans.onepercent' +// ) +// ->leftJoin('transaksi_keuntungan as trans', function ($join) { +// $join->on('transaction.norujukan', '=', 'trans.norujukan'); +// $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); +// }) +// ->leftJoin('customer as cust', function ($join) { +// $join->on('transaction.nokp', '=', 'cust.kpbaru'); +// $join->orOn('transaction.nokp', '=', 'cust.kplama'); +// }) +// ->where('transaction.kodcaw', '=', $kodcaw) +// ->where('transaction.trans_type', '=', 'A') +// ->whereDate('transaction.created_at', '>=', $request->mula) +// ->whereDate('transaction.created_at', '<=', $request->akhir); + + +// // 💡 Tambah filter ikut jenis +// if ($request->jenis == 'online') { +// $query->where('transaction.descpt', 'LIKE', 'Laporan Ansuran Pembiayaan (Arrahn Pay)%'); +// } elseif ($request->jenis == 'kaunter') { +// $query->where('transaction.descpt', 'LIKE', 'Laporan Ansuran Pembiayaan (Kaunter aros)%'); +// } else { +// $query->where('transaction.descpt', 'LIKE', 'Laporan Ansuran Pembiayaan%'); +// } + +// // Order by +// $query->orderBy('transaction.teller')->orderBy('trans.tarikh_bayaran'); + +// // Dapatkan data +// $ansuran_data = $query->get(); + +// // Proses data +// $ansuran = []; +// if ($ansuran_data) { +// foreach ($ansuran_data as $index => $ansuranData) { +// $gadai = Gadai::on($connection)->where('norujukan', $ansuranData['norujukan'])->first(); + +// array_push($ansuran, [ +// "norujukan" => $ansuranData['norujukan'], +// "tarikh_bayaran" => $ansuranData['tarikh_bayaran'], +// "nokp" => $ansuranData['nokp'], +// "kodcaw" => $ansuranData['kodcaw'], +// "trans_type" => $ansuranData['trans_type'], +// "nama" => $ansuranData['nama'], +// "tempoh" => $gadai['tempoh'] ?? null, +// "bakipjm" => $gadai['bakipjm'] ?? null, +// "bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'], +// "duit_masuk" => $ansuranData['duit_masuk'], +// "bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'], +// "teller" => $ansuranData['teller'], +// "ansuranujrah" => $ansuranData['ujrah'], +// "ansuranonepercent" => $ansuranData['onepercent'], +// "t_gadai" => $gadai['t_gadai'] ?? null, +// ]); +// } +// } + +// // Susun data +// usort($ansuran, function ($a, $b) { +// $compare_teller = strcmp($a['teller'], $b['teller']); +// return $compare_teller === 0 +// ? strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran']) +// : $compare_teller; +// }); + +// return response()->json($ansuran); +// } public function getAnsuranSummary($kodcaw,Request $request){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();