From 29e5923465b0d15f26e72ea3902d0efed5d28d44 Mon Sep 17 00:00:00 2001 From: Nur Izzati Date: Thu, 7 Aug 2025 11:44:56 +0800 Subject: [PATCH] update stok audit khas blast sms) --- app/Http/Controllers/StokAuditController.php | 97 +++++++++++++------- 1 file changed, 66 insertions(+), 31 deletions(-) diff --git a/app/Http/Controllers/StokAuditController.php b/app/Http/Controllers/StokAuditController.php index 1ec14a1..0f23e61 100644 --- a/app/Http/Controllers/StokAuditController.php +++ b/app/Http/Controllers/StokAuditController.php @@ -51,16 +51,49 @@ class StokAuditController extends Controller // dd($request->kodcaw); $daritempoh = $request->daritempoh; $hinggatempoh = $request->hinggatempoh; - $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $request->kodcaw)->first(); + // Query asal gadai $audit = Gadai::on($cawangan['mysql']) - ->where([['tagpalsu','=',0],['tempoh','>=',$daritempoh],['tempoh','<=',$hinggatempoh],['sttebus','=',''],['taglel','=',0]]) + ->where([ + ['tagpalsu', '=', 0], + ['tempoh', '>=', $daritempoh], + ['tempoh', '<=', $hinggatempoh], + ['sttebus', '=', ''], + ['taglel', '=', 0], + ]) ->orderBy('t_gadai', 'ASC') ->orderBy('sirig', 'ASC'); - // ->get(); - // dd($audit); - $arraynorujukan = $audit->pluck('norujukan')->toArray(); - $rekodaudit = $audit->get(); + + // Dapatkan tarikh terkini untuk trans_type 'T' dan 'A' + $tarikhTerkiniT = Transaction::on('mysql7') + ->where('trans_type', 'T') + ->max('created_at'); + + $tarikhTerkiniA = Transaction::on('mysql7') + ->where('trans_type', 'A') + ->max('created_at'); + + // Filter audit berdasarkan tiada transaksi T/A pada tarikh terkini + $rekodaudit = $audit->get()->filter(function ($item) use ($cawangan, $tarikhTerkiniT, $tarikhTerkiniA) { + $adaTebusTerkini = Transaction::on('mysql7') + ->where('norujukan', $item->norujukan) + ->where('trans_type', 'T') + ->whereDate('created_at', '>=', date('Y-m-d', strtotime($tarikhTerkiniT))) + ->exists(); + + $adaAnsuranTerkini = Transaction::on('mysql7') + ->where('norujukan', $item->norujukan) + ->where('trans_type', 'A') + ->whereDate('created_at', '>=', date('Y-m-d', strtotime($tarikhTerkiniA))) + ->exists(); + + return !$adaTebusTerkini && !$adaAnsuranTerkini; + })->values(); + + // Gunakan hanya norujukan yang dah ditapis + $arraynorujukan = $rekodaudit->pluck('norujukan')->toArray(); + $gadainokp = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $arraynorujukan) ->select('nokp') ->groupBy('nokp') @@ -68,28 +101,23 @@ class StokAuditController extends Controller // dd($gadainokp); - foreach($gadainokp as $index1=>$cal){ - $customer = Customer::on('mysql7')->where('kpbaru','=',$cal['nokp']) - ->orWhere('kplama','=',$cal['nokp']) + foreach ($gadainokp as $index1 => $cal) { + $customer = Customer::on('mysql7')->where('kpbaru', '=', $cal['nokp']) + ->orWhere('kplama', '=', $cal['nokp']) ->first(); $listsag = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $arraynorujukan) - // ->where('nokp','=',$cal['nokp']) - ->where('nokp', 'like', '%'.$cal['nokp'].'%') + ->where('nokp', 'like', '%' . $cal['nokp'] . '%') ->get(); - foreach($listsag as $index2=>$cal2){ - - if($cal2){ + $checkingnokp = null; + foreach ($listsag as $index2 => $cal2) { + if ($cal2) { $checkingnokp = BlastWasap::on('mysql7') - ->where('nokp','=',$cal['nokp']) - ->where('norujukan','=',$cal2['norujukan']) - ->where('kodcaw','=',$kodcaw) + ->where('nokp', '=', $cal['nokp']) + ->where('norujukan', '=', $cal2['norujukan']) + ->where('kodcaw', '=', $kodcaw) ->first(); - - // $gadainokp[$index1]['blasted'] = $checkingnokp; - - } } @@ -97,17 +125,24 @@ class StokAuditController extends Controller $gadainokp[$index1]['listsag'] = $listsag; $gadainokp[$index1]['blasted'] = $checkingnokp; } - - $totalrekod = $audit->sum('pinjaman'); - $totalberat = $audit->sum('berat'); - $totalnilaimarhun = $audit->sum('nilaimarhun'); - $totalpinjaman = $audit->sum('pinjaman'); - $totalbakipjm = $audit->sum('bakipjm'); - $totaltunggakan = $audit->sum('tunggakan'); + // Total dikira berdasarkan hasil audit yang telah ditapis + $totalrekod = $rekodaudit->sum('pinjaman'); + $totalberat = $rekodaudit->sum('berat'); + $totalnilaimarhun = $rekodaudit->sum('nilaimarhun'); + $totalpinjaman = $rekodaudit->sum('pinjaman'); + $totalbakipjm = $rekodaudit->sum('bakipjm'); + $totaltunggakan = $rekodaudit->sum('tunggakan'); - $arrayrekod = ['rekod' => $gadainokp, 'total' => $totalrekod,'totalberat' => $totalberat,'totalnilaimarhun' => $totalnilaimarhun,'totalpinjaman'=>$totalpinjaman,'totalbakipjm'=>$totalbakipjm,'totaltunggakan'=>$totaltunggakan]; - // dd($arrayrekod); - return response()->json($arrayrekod,200); + $arrayrekod = [ + 'rekod' => $gadainokp, + 'total' => $totalrekod, + 'totalberat' => $totalberat, + 'totalnilaimarhun' => $totalnilaimarhun, + 'totalpinjaman' => $totalpinjaman, + 'totalbakipjm' => $totalbakipjm, + 'totaltunggakan' => $totaltunggakan, + ]; + return response()->json($arrayrekod, 200); }