Add reporting saringan gadaian untuk tebus gadai balik v3

This commit is contained in:
Amirah
2025-12-14 13:24:19 +08:00
parent 6fd2a1864a
commit 07be5c5175
6 changed files with 406 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Illuminate\Support\Facades\Http;
class GadaianDetailExport implements FromView
{
protected $kodcaw;
protected $startDate;
protected $endDate;
public function __construct($kodcaw, $startDate, $endDate)
{
$this->kodcaw = $kodcaw;
$this->startDate = $startDate;
$this->endDate = $endDate;
}
public function view(): View
{
$hostname = config('api.url');
$gadaian = Http::get($hostname . '/api/reports/saringan/gadaian', [
'startDate' => $this->startDate,
'endDate' => $this->endDate,
])->json();
$branch = collect($gadaian)->firstWhere('kodcaw', $this->kodcaw);
$details = collect($branch['details'] ?? [])
->sort(function ($a, $b) {
$aTag = isset($a['taglel_lama']) && $a['taglel_lama'] == 1 ? 0 : 1;
$bTag = isset($b['taglel_lama']) && $b['taglel_lama'] == 1 ? 0 : 1;
if ($aTag !== $bTag) {
return $aTag <=> $bTag;
}
return ($a['t_gadai'] ?? '') <=> ($b['t_gadai'] ?? '');
})
->values()
->all();
$total_berat = collect($details)->sum('berat');
$total_nm = collect($details)->sum('nilaimarhun');
$total_pinjam = collect($details)->sum('pinjaman');
return view('reports.saringan-gadaian.excel', compact(
'details',
'total_berat',
'total_nm',
'total_pinjam',
'branch'
));
}
}
@@ -0,0 +1,112 @@
<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\GadaianDetailExport;
class SaringanGadaianController extends Controller
{
public function index(Request $request)
{
$current = Carbon::now();
$getReportDate = function ($date_string) use ($current) {
return $date_string ? $date_string : $current->toDateString();
};
$request->hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
$gadaian = Http::get($request->hostname . '/api/reports/saringan/gadaian', [
'startDate' => $startDate,
'endDate' => $endDate,
])->json();
return view('reports.saringan-gadaian.index', compact('gadaian', 'startDate', 'endDate'));
}
public function exportExcel(Request $request, $kodcaw)
{
$startDate = $request->startDate ?? now()->startOfMonth()->toDateString();
$endDate = $request->endDate ?? now()->endOfMonth()->toDateString();
$fileName = "Saringan_Gadaian_{$kodcaw}_{$startDate}_to_{$endDate}.xlsx";
return Excel::download(new GadaianDetailExport($kodcaw, $startDate, $endDate), $fileName);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
@@ -104,6 +104,12 @@
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Transaksi Segera(By Masa)</h2>
</a>
</div>
<div
class="bg-white ml-2 shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<a href="{{ route('reports.saringan-gadaian.index', ['startDate' => now()->toDateString(), 'endDate' => now()->toDateString()]) }}" class="">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Saringan Gadaian</h2>
</a>
</div>
</div>
</div>
</div>
@@ -0,0 +1,39 @@
<table>
<thead>
<tr>
<th>Bil</th>
<th>No Rujukan Tebus</th>
<th>No Rujukan Gadai Balik</th>
<th>No KP</th>
<th>Berat (g)</th>
<th>Nilai Marhun (RM)</th>
<th>Pinjaman (RM)</th>
<th>Tag Lelong</th>
<th>Tarikh Gadai</th>
</tr>
</thead>
<tbody>
@foreach ($details as $i => $item)
<tr>
<td>{{ $i + 1 }}</td>
<td>{{ $item['norujukan_tebus'] }}</td>
<td>{{ $item['norujukan_gadai_balik'] }}</td>
<td>{{ $item['nokp'] }}</td>
<td>{{ number_format($item['berat'], 2) }}</td>
<td>{{ number_format($item['nilaimarhun'], 2) }}</td>
<td>{{ number_format($item['pinjaman'], 2) }}</td>
<td>{{ isset($item['taglel_lama']) && $item['taglel_lama'] == 1 ? 'Ya' : 'Tidak' }}</td>
<td>{{ $item['t_gadai'] }}</td>
</tr>
@endforeach
<!-- Total Row -->
<tr>
<td colspan="4" style="font-weight:bold;">Jumlah Keseluruhan</td>
<td>{{ number_format($total_berat, 2) }}</td>
<td>{{ number_format($total_nm, 2) }}</td>
<td>{{ number_format($total_pinjam, 2) }}</td>
<td></td>
</tr>
</tbody>
</table>
@@ -0,0 +1,185 @@
@extends('layouts.app')
@section('content')
<div class="bg-gray-900 opacity-50 hidden fixed inset-0 z-10" id="sidebarBackdrop"></div>
<div id="main-content" class="h-full w-full bg-gray-50 relative overflow-y-auto">
<main>
<div class="pt-6 px-4">
<breadcrumb
:items="[{ 'title': 'Laporan Keseluruhan', 'icon': 'fas fa-users', 'url': '{{ route('reports') }}' },
{ 'title': 'Gadaian', 'icon': 'fas fa-users' }]">
</breadcrumb>
<div class="container">
<div class="flex w-full">
<div class="xl:w-2/3 2xl:w-1/2 p-8 mx-auto">
<div class="bg-yellow-600 text-gray-200 text-lg px-6 py-4 rounded-t-lg"><a href="/reports"
class="router-link-active"><i class="fas fa-backspace text-white"></i></a> <span
class="text-center mx-auto text-white font-bold">Laporan Saringan Pembiayaan</span></div>
<form method="get" id="formgadaian" action="{{ route('reports.saringan-gadaian.index') }}">
<div class="rounded bg-white shadow p-6">
<div class="pb-6"><label for="username"
class="font-semibold text-gray-700 block pb-1">Tarikh</label>
<div class="flex">
<span
class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap"
style="background-color: rgb(249, 250, 251);">Mula</span>
<input id="tarikhmula" name="startDate" type="date"
value="{{ request()->startDate ?? $startDate }}"
class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2">
<span
class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap"
style="background-color: rgb(249, 250, 251);">Hingga</span>
<input id="tarikhhingga" name="endDate" type="date"
value="{{ request()->endDate ?? $endDate }}"
class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2">
<button
class="border border-yellow-600 text-yellow-600 font-montserrat py-2 px-8 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300 ml-5">
<i class="fas fa-magnifying-glass mr-2"></i>Search
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div kodcaw="operasi">
<div>
<!---->
<!---->
</div>
<div>
<!---->
<!---->
</div>
<div class="flex justify-between mb-2">
</div>
<table class="min-w-full leading-normal">
<thead class="text-center">
<tr>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
No
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Kod Cawangan
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Cawangan
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Bil Pembiayaan
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Berat (g)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Nilai Marhun(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Pinjaman(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Action
</th>
</tr>
</thead>
@php
$totalbilgadai = 0;
$totalberat = 0;
$totalnm = 0;
$totalpinjaman = 0;
@endphp
<tbody>
@forelse ($gadaian as $gadai)
@php
$totalbilgadai += $gadai['total_gadai_balik'];
$totalberat += $gadai['sum_berat'];
$totalnm += $gadai['sum_nilai_marhun'];
$totalpinjaman += $gadai['sum_pinjaman'];
@endphp
<tr>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ $loop->iteration }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ $gadai['kodcaw'] }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ $gadai['details_caw'] }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ $gadai['total_gadai_balik'] }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ number_format($gadai['sum_berat'], 2) }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ number_format($gadai['sum_nilai_marhun'], 2) }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">{{ number_format($gadai['sum_pinjaman'], 2) }}</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="ml-3">
<a href="{{ route('reports.gadaian.cawangan.excel', [$gadai['kodcaw'], 'startDate' => request()->startDate, 'endDate' => request()->endDate]) }}"
target="_blank" rel="noopener noreferrer"
class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<i class="fas fa-download mr-2"></i>Download
</a>
</div>
</td>
</tr>
@empty
<tr>
<td colspan="8"
class="px-5 py-5 border-b border-gray-200 bg-white text-sm text-center">
Data not available
</td>
</tr>
@endforelse
<tr>
<td colspan="3" class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
Jumlah Keseluruhan
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
{{ $totalbilgadai }}
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
{{ number_format($totalberat, 2) }}
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
{{ number_format($totalnm, 2) }}
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
{{ number_format($totalpinjaman, 2) }}
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm"></td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
@include('layouts.footer')
</div>
@endsection
+4
View File
@@ -13,6 +13,7 @@ use App\Http\Controllers\Reports\OutstandingController;
use App\Http\Controllers\Reports\PetibesiController;
use App\Http\Controllers\Reports\AnalisaController;
use App\Http\Controllers\Reports\BakiLelongController;
use App\Http\Controllers\SaringanGadaianController;
use Illuminate\Support\Facades\Route;
Route::middleware(['roleChecker:admin,akaun,operasi,kpo,callcenter, null'])->group(function () {
@@ -45,4 +46,7 @@ Route::middleware(['roleChecker:admin,akaun,operasi,kpo,callcenter, null'])->gro
Route::get('gadaitebus', [GadaianController::class, 'gadaitebus'])->name('reports.gadaitebus.index');
Route::get('gadaitebusmasa', [GadaianController::class, 'gadaitebusmasa'])->name('reports.gadaitebusmasa.index');
Route::get('gadaitebusmasa/{kod_cawangan}', [GadaianController::class, 'downloadGadaiTebusMasaCawanganExcel'])->name('reports.gadaitebusmasa.cawangan.excel');
Route::get('saringan-gadaian-index', [SaringanGadaianController::class, 'index'])->name('reports.saringan-gadaian.index');
Route::get('saringan-gadaian-excel/{kodcaw}', [SaringanGadaianController::class, 'exportExcel'])->name('reports.gadaian.cawangan.excel');
});