Merged in bugfixlaporanansuran (pull request #333)

fix seperate laporan ansuran pembiayaan
This commit is contained in:
Ain Izazi Aziz
2025-08-04 01:58:35 +00:00
+173 -62
View File
@@ -998,77 +998,188 @@ class GadaiController extends Controller
return response()->json($ansuran); 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') // Bina query asas dahulu
->select('transaction.norujukan', $query = Transaction::on('mysql7')
'trans.tarikh_bayaran', ->select(
'transaction.nokp', 'transaction.norujukan',
'transaction.kodcaw', 'trans.tarikh_bayaran',
'transaction.trans_type', 'transaction.nokp',
'cust.nama','trans.bayaran_pembiayaan', 'transaction.kodcaw',
'transaction.duit_masuk', 'transaction.trans_type',
'trans.bayaran_keuntungan', 'cust.nama',
'transaction.teller', 'trans.bayaran_pembiayaan',
'trans.ujrah', 'transaction.duit_masuk',
'trans.onepercent') 'trans.bayaran_keuntungan',
->leftJoin('transaksi_keuntungan as trans', function($join) 'transaction.teller',
{ 'trans.ujrah',
$join->on('transaction.norujukan', '=', 'trans.norujukan'); 'trans.onepercent'
$join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); )
}) ->leftJoin('transaksi_keuntungan as trans', function ($join) {
->leftJoin('customer as cust', function($join) $join->on('transaction.norujukan', '=', 'trans.norujukan');
{ $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran');
$join->on('transaction.nokp', '=', 'cust.kpbaru'); })
$join->orOn('transaction.nokp', '=', 'cust.kplama'); ->leftJoin('customer as cust', function ($join) {
}) $join->on('transaction.nokp', '=', 'cust.kpbaru');
->where('transaction.kodcaw','=',$kodcaw) $join->orOn('transaction.nokp', '=', 'cust.kplama');
->where('transaction.trans_type','=','A') })
->whereDate('transaction.created_at', '>=', $request->mula) ->where('transaction.kodcaw', '=', $kodcaw)
->whereDate('transaction.created_at', '<=', $request->akhir) ->where('transaction.trans_type', '=', 'A')
->orderBy('transaction.teller') ->whereDate('transaction.created_at', '>=', $request->mula)
->orderBy('trans.tarikh_bayaran') ->whereDate('transaction.created_at', '<=', $request->akhir);
->get();
$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){ // Dapatkan data selepas filter
foreach($ansuran_data as $index=>$ansuranData){ $ansuran_data = $query
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan',$ansuranData['norujukan'])->first(); ->orderBy('transaction.teller')
->orderBy('trans.tarikh_bayaran')
->get();
array_push($ansuran,[ $ansuran = [];
"norujukan" => $ansuranData['norujukan'],
"tarikh_bayaran" => $ansuranData['tarikh_bayaran'], // Loop data dan tambahkan maklumat dari jadual gadai
"nokp" => $ansuranData['nokp'], if ($ansuran_data) {
"kodcaw" => $ansuranData['kodcaw'], foreach ($ansuran_data as $index => $ansuranData) {
"trans_type" => $ansuranData['trans_type'], $gadai = Gadai::on($cawangan['mysql'])->where('norujukan', $ansuranData['norujukan'])->first();
"nama" => $ansuranData['nama'],
"tempoh" => $gadai['tempoh'], array_push($ansuran, [
"bakipjm" => $gadai['bakipjm'], "norujukan" => $ansuranData['norujukan'],
"bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'], "tarikh_bayaran" => $ansuranData['tarikh_bayaran'],
"duit_masuk" => $ansuranData['duit_masuk'], "nokp" => $ansuranData['nokp'],
"bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'], "kodcaw" => $ansuranData['kodcaw'],
"teller" => $ansuranData['teller'], "trans_type" => $ansuranData['trans_type'],
"ansuranujrah" => $ansuranData['ujrah'], "nama" => $ansuranData['nama'],
"ansuranonepercent" => $ansuranData['onepercent'], "tempoh" => optional($gadai)->tempoh,
"t_gadai" => $gadai['t_gadai'], "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) { return $compare_teller;
$compare_teller = strcmp($a['teller'], $b['teller']); });
if ($compare_teller === 0) { return response()->json($ansuran);
return strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran']); }
}
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){ public function getAnsuranSummary($kodcaw,Request $request){
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();