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();
$ansuran_data = Transaction::on('mysql7') public function getLaporanAnsuranUjrah($kodcaw, Request $request)
->select('transaction.norujukan', {
'trans.tarikh_bayaran', $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first();
'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();
$ansuran = []; // 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);
if($ansuran_data){ // Tambah filter berdasarkan jenis
foreach($ansuran_data as $index=>$ansuranData){ if ($request->jenis == 'arrahnpay') {
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan',$ansuranData['norujukan'])->first(); $query->where('transaction.teller', '=', 'Online');
} elseif ($request->jenis == 'kaunter') {
$query->where('transaction.teller', '!=', 'Online');
}
array_push($ansuran,[ // Dapatkan data selepas filter
"norujukan" => $ansuranData['norujukan'], $ansuran_data = $query
"tarikh_bayaran" => $ansuranData['tarikh_bayaran'], ->orderBy('transaction.teller')
"nokp" => $ansuranData['nokp'], ->orderBy('trans.tarikh_bayaran')
"kodcaw" => $ansuranData['kodcaw'], ->get();
"trans_type" => $ansuranData['trans_type'],
"nama" => $ansuranData['nama'], $ansuran = [];
"tempoh" => $gadai['tempoh'],
"bakipjm" => $gadai['bakipjm'], // Loop data dan tambahkan maklumat dari jadual gadai
"bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'], if ($ansuran_data) {
"duit_masuk" => $ansuranData['duit_masuk'], foreach ($ansuran_data as $index => $ansuranData) {
"bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'], $gadai = Gadai::on($cawangan['mysql'])->where('norujukan', $ansuranData['norujukan'])->first();
"teller" => $ansuranData['teller'],
"ansuranujrah" => $ansuranData['ujrah'], array_push($ansuran, [
"ansuranonepercent" => $ansuranData['onepercent'], "norujukan" => $ansuranData['norujukan'],
"t_gadai" => $gadai['t_gadai'], "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) { 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();