From 2aff9629815691fddc6af2e2919aa6ca52bf42ff Mon Sep 17 00:00:00 2001 From: Nisha Muhd Date: Tue, 6 Jan 2026 12:52:02 +0800 Subject: [PATCH] laporan_rumusan_wtd --- app/Http/Controllers/WTDController.php | 87 ++++++++++++++++++++++++++ routes/web.php | 4 +- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/WTDController.php b/app/Http/Controllers/WTDController.php index fe12c2b..cfd1511 100644 --- a/app/Http/Controllers/WTDController.php +++ b/app/Http/Controllers/WTDController.php @@ -5,8 +5,10 @@ namespace App\Http\Controllers; use App\WTDDraft; use App\TuntutBaki; use App\Cawangan; +use App\Customer; use Illuminate\Http\Request; use Carbon\Carbon; +use App\Helper; use Illuminate\Support\Facades\Http; @@ -34,4 +36,89 @@ class WTDController extends Controller return response()->json($tuntutbaki); } + + public function getSummaryWtd(Request $request){ + + $startDate = $request->startDate ?? now()->startOfMonth()->toDateString(); + $endDate = $request->endDate ?? now()->endOfMonth()->toDateString(); + + $active_dbs = Helper::getActiveCawanganDbConnection(); + + $cawangan = Cawangan::select('kodcaw', 'details_caw', 'mysql') + ->whereIn('mysql', $active_dbs) + ->get(); + + $responses = []; + + foreach ($cawangan as $caw) { + + $db = $caw->mysql; + + $tuntutbaki = TuntutBaki::on($db) + ->join('serahbaki', 'serahbaki.t_jual', '=', 'tuntutbaki.tarikh') + ->join('gadai', 'gadai.norujukan', '=', 'tuntutbaki.norujukan') + ->whereBetween('tuntutbaki.tarikh', [$startDate, $endDate]) + ->where('tuntutbaki.teller', 'DM') + ->where('serahbaki.aktif', 1) + ->selectRaw(" + gadai.nokp as nokp, + tuntutbaki.norujukan as norujukan, + tuntutbaki.jumlah as jumlah, + serahbaki.batchno as batchno, + serahbaki.t_jual as t_jual, + serahbaki.t_htr_ag as t_htr_ag + ") + ->orderByRaw('CAST(serahbaki.batchno AS UNSIGNED)') + ->orderBy('tuntutbaki.norujukan') + ->get(); + + $nokps = $tuntutbaki + ->pluck('nokp') + ->filter() // elak null + //->unique() + ->values(); + + $customers = Customer::on('mysql7') + ->whereIn('kplama', $nokps) + ->orWhereIn('kpbaru', $nokps) + ->get() + ->keyBy(function ($item) { + return $item->kpbaru ?: $item->kplama; + }); + + $wtd_det = []; + + foreach ($tuntutbaki as $tuntut) { + + $nokp = $tuntut->nokp; + $cust = $customers->get($nokp); + + $wtd_det[] = [ + "norujukan" => $tuntut->norujukan, + "nokp" => $nokp, + "jumlah" => (float) $tuntut->jumlah, + "batchno" => $tuntut->batchno, + "t_proses" => $tuntut->t_jual, + "t_htr_ag" => $tuntut->t_htr_ag, + "nama_cust" => $cust->nama ?? null, + ]; + } + + $details = collect($wtd_det) + ->values() + ->all(); + + $responses[] = [ + 'kodcaw' => $caw->kodcaw, + 'details_caw' => $caw->details_caw, + // WEB + 'jumlah_surat' => count($details), + 'sum_baki' => collect($details)->sum('jumlah'), + // EXCEL + 'details' => $details, + ]; + } + return response()->json($responses); + + } } diff --git a/routes/web.php b/routes/web.php index dcafcdc..c0b35af 100644 --- a/routes/web.php +++ b/routes/web.php @@ -896,11 +896,11 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->get('wtd/rekodSimulasi',['uses'=>'AdminPageController@RekodSimulasiWTD']); $router->post('wtd/prosesSimulasi',['uses'=>'AdminPageController@ProsesSimulasiWTD']); $router->post('wtd/pengesahanSimulasi',['uses'=>'AdminPageController@PengesahanSimulasiWTD']); - $router->post('wtd/simulasiToDraft',['uses'=>'AdminPageController@SimulasiToDraft']); - $router->post('wtd/simulasiBaru',['uses'=>'AdminPageController@SimulasiBaru']); + //laporan wtd + $router->get('wtd/summaryWtd', ['uses' => 'WTDController@getSummaryWtd']); $router->get('audit/keuntungansebenar',['uses'=>'AdminPageController@KeuntunganSebenarExport']); $router->get('laporan/aging',['uses'=>'AdminPageController@LaporanAging']);