fix seperate laporan ansuran pembiayaan

This commit is contained in:
Ain Izazi
2025-08-04 09:38:49 +08:00
parent c8c8e5cfca
commit bbcfd96173
+173 -62
View File
@@ -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();