Merged in izzati-feat-laporan-lelong-admin (pull request #265)
tambah function laporan lelong admin
This commit is contained in:
@@ -32,6 +32,8 @@ use App\Services\RingkasanHarianServices;
|
|||||||
use App\Services\OnePercentServices;
|
use App\Services\OnePercentServices;
|
||||||
use App\Services\MasterServices;
|
use App\Services\MasterServices;
|
||||||
use App\Support\v2\Calculation;
|
use App\Support\v2\Calculation;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
|
|
||||||
use Log;
|
use Log;
|
||||||
use DB;
|
use DB;
|
||||||
@@ -1772,5 +1774,113 @@ class LelongController extends Controller
|
|||||||
return response()->json($tuntutbaki,200);
|
return response()->json($tuntutbaki,200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function LaporanLelong(Request $request)
|
||||||
|
{
|
||||||
|
// Validate required input
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'kodcaw' => 'required|string',
|
||||||
|
'tarikhmula' => 'required|date',
|
||||||
|
'tarikhhingga' => 'required|date|after_or_equal:tarikhmula',
|
||||||
|
'batchno' => 'nullable|string'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
return response()->json(['error' => $validator->errors()], 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get cawangan details
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
if (!$cawangan) {
|
||||||
|
return response()->json(['error' => 'Invalid kodcaw'], 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Query lelong data
|
||||||
|
$lelong_query = Lelong::on($cawangan['mysql'])
|
||||||
|
->leftJoin('gadai', 'gadai.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->join('lelmarhun', 'lelmarhun.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->join('pembeli', 'pembeli.nopembeli', '=', 'lelong.nopembeli')
|
||||||
|
->whereBetween('lelong.t_lelong', [$request->tarikhmula, $request->tarikhhingga]);
|
||||||
|
|
||||||
|
// Optional: Filter by batch number
|
||||||
|
if ($request->has('batchno') && !empty($request->batchno)) {
|
||||||
|
$lelong_query->where('lelong.batchno', $request->batchno);
|
||||||
|
}
|
||||||
|
// dd($lelong_query);
|
||||||
|
// Select required fields
|
||||||
|
$lelong_data = $lelong_query->select(
|
||||||
|
'lelong.batchno', 'lelong.t_lelong', 'gadai.t_gadai', 'gadai.nokp', 'lelong.pinjaman',
|
||||||
|
'lelong.baki', 'lelong.norujukan', 'gadai.marhun', 'lelong.nilaimarhun',
|
||||||
|
'lelong.bakiupah', 'lelong.cajlelong', 'lelong.hargajual', 'lelong.hargaasas',
|
||||||
|
'pembeli.nama', 'pembeli.nokp AS nokppembeli', 'lelong.tagujrah', 'lelong.ujrah',
|
||||||
|
'lelong.onepercent', 'lelong.teller'
|
||||||
|
)
|
||||||
|
->orderBy('lelong.t_lelong')
|
||||||
|
->get();
|
||||||
|
// dd($lelong_data);
|
||||||
|
|
||||||
|
// If no data found, return a message
|
||||||
|
if ($lelong_data->isEmpty()) {
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'Tiada lelongan dalam tarikh dipilih.',
|
||||||
|
'data' => [],
|
||||||
|
'totals' => [
|
||||||
|
'total_pinjaman' => 0,
|
||||||
|
'total_nilaimarhun' => 0,
|
||||||
|
'total_keuntungan' => 0,
|
||||||
|
'total_onepercent' => 0,
|
||||||
|
'total_ujrah' => 0,
|
||||||
|
'total_cajlelong' => 0,
|
||||||
|
'total_hargajual' => 0,
|
||||||
|
'total_baki' => 0,
|
||||||
|
'total_hargaasas' => 0
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate totals safely (prevent null values)
|
||||||
|
$totals = [
|
||||||
|
'total_pinjaman' => $lelong_data->sum(fn($item) => $item->pinjaman ?? 0),
|
||||||
|
'total_nilaimarhun' => $lelong_data->sum(fn($item) => $item->nilaimarhun ?? 0),
|
||||||
|
'total_keuntungan' => $lelong_data->sum(fn($item) => $item->bakiupah ?? 0),
|
||||||
|
'total_onepercent' => $lelong_data->sum(fn($item) => $item->onepercent ?? 0),
|
||||||
|
'total_ujrah' => $lelong_data->sum(fn($item) => $item->ujrah ?? 0),
|
||||||
|
'total_cajlelong' => $lelong_data->sum(fn($item) => $item->cajlelong ?? 0),
|
||||||
|
'total_hargajual' => $lelong_data->sum(fn($item) => $item->hargajual ?? 0),
|
||||||
|
'total_baki' => $lelong_data->sum(fn($item) => $item->baki ?? 0),
|
||||||
|
'total_hargaasas' => $lelong_data->sum(fn($item) => $item->hargaasas ?? 0)
|
||||||
|
];
|
||||||
|
|
||||||
|
$tarikh_lelongs = $lelong_data->pluck('t_lelong')->first(); // Get first date
|
||||||
|
|
||||||
|
// Return JSON response
|
||||||
|
return response()->json([
|
||||||
|
'data' => $lelong_data,
|
||||||
|
'totals' => $totals,
|
||||||
|
'tarikh_lelong' => $tarikh_lelongs
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function LookupBatchLel($kodcaw,Request $request)
|
||||||
|
{
|
||||||
|
$harini = Carbon::now();
|
||||||
|
$harini = new Carbon;
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||||
|
|
||||||
|
$batchlel = BatchLel::on($cawangan['mysql'])
|
||||||
|
->select('batchno','tarikh')
|
||||||
|
->when($kodcaw, function ($query, $kodcaw) {
|
||||||
|
return $query->where('kodcaw', $kodcaw);
|
||||||
|
})
|
||||||
|
->orderBy('tarikh', 'DESC')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return response()->json($batchlel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -448,6 +448,10 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
$router->get('lookupalasan',['uses' => 'PolisController@LookupAlasan']);
|
$router->get('lookupalasan',['uses' => 'PolisController@LookupAlasan']);
|
||||||
$router->get('polis/laporan',['uses' => 'PolisController@LaporanPolis']);
|
$router->get('polis/laporan',['uses' => 'PolisController@LaporanPolis']);
|
||||||
|
|
||||||
|
//laporanlelong adminportal
|
||||||
|
$router->get('laporan/lelong',['uses' => 'LelongController@LaporanLelong']);
|
||||||
|
$router->get('lookupbatchlel/{kodcaw}',['uses' => 'LelongController@LookupBatchLel']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user