Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local> Co-authored-by: ISMAIL MASSERAN <topaz@ISMAILs-Macbook.local> Reviewed-on: #11
This commit was merged in pull request #11.
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
@extends('layouts.app_operasi')
|
||||
@section('content')
|
||||
@php
|
||||
$pendingCount = collect($lines)->whereIn('status', ['IN_BATCH', 'OPS_REVIEW'])->count();
|
||||
$approvedCount = collect($lines)->where('status', 'APPROVED')->count();
|
||||
$cawName = $cawangan_info['nama'] ?? $cawangan_info['namacaw'] ?? $kodcaw;
|
||||
@endphp
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ route('pembiayaan.online.operasi') }}">Pembiayaan Online</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Batch</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('message'))
|
||||
<div class="alert alert-success">{{ session('message') }}</div>
|
||||
@endif
|
||||
@if(session()->has('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-3"><b>Batch No</b><br>{{ $batch['batch_no'] ?? '-' }}</div>
|
||||
<div class="col-md-3"><b>Cawangan</b><br>{{ $cawName }} <small class="text-muted">({{ $kodcaw }})</small></div>
|
||||
<div class="col-md-2"><b>Tarikh</b><br>{{ $batch['tarikh'] ?? '-' }}</div>
|
||||
<div class="col-md-2"><b>Slot</b><br>{{ $batch['slot'] ?? '-' }}</div>
|
||||
<div class="col-md-2"><b>Status</b><br>{{ $batch['status'] ?? '-' }}</div>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<div class="col-md-3"><b>Bilangan</b><br>{{ $batch['bilangan'] ?? count($lines) }}</div>
|
||||
<div class="col-md-3"><b>Jumlah</b><br>RM {{ number_format((float)($batch['jumlah_keseluruhan'] ?? 0), 2) }}</div>
|
||||
<div class="col-md-3"><b>Dihantar Oleh</b><br>{{ $batch['pc_submitted_by'] ?? '-' }}</div>
|
||||
<div class="col-md-3"><b>Dihantar Pada</b><br>{{ $batch['submitted_at'] ?? '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header d-flex justify-content-between align-items-center flex-wrap">
|
||||
<h5 class="mb-0">Senarai Dalam Batch</h5>
|
||||
<div class="mt-2 mt-md-0">
|
||||
<a href="{{ route('pembiayaan.online.operasi') }}" class="btn btn-secondary btn-sm">Kembali</a>
|
||||
@if($pendingCount > 0)
|
||||
<form method="post"
|
||||
action="{{ route('pembiayaan.online.operasi.approve.batch', ['kodcaw' => $kodcaw, 'batchId' => $batch['id']]) }}"
|
||||
class="d-inline"
|
||||
onsubmit="return confirm('Luluskan semua {{ $pendingCount }} rekod menunggu dalam batch ini?');">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-success btn-sm">Lulus Semua Menunggu ({{ $pendingCount }})</button>
|
||||
</form>
|
||||
@endif
|
||||
@if($approvedCount > 0)
|
||||
<button type="button" class="btn btn-dark btn-sm" data-toggle="modal" data-target="#paidBatchModal">
|
||||
Tanda PAID Batch ({{ $approvedCount }})
|
||||
</button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body table-responsive">
|
||||
<table class="table table-striped table-sm text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Status</th>
|
||||
<th>SAG</th>
|
||||
<th>Pelanggan</th>
|
||||
<th>No KP</th>
|
||||
<th>Bank</th>
|
||||
<th>No Akaun</th>
|
||||
<th>Nama Akaun</th>
|
||||
<th>Pinjaman (RM)</th>
|
||||
<th>Rujukan Bayaran</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($lines as $line)
|
||||
@php
|
||||
$st = $line['status'] ?? '';
|
||||
$badge = 'badge-secondary';
|
||||
if ($st === 'APPROVED') $badge = 'badge-success';
|
||||
elseif ($st === 'PAID') $badge = 'badge-dark';
|
||||
elseif ($st === 'REJECTED_PC') $badge = 'badge-danger';
|
||||
elseif (in_array($st, ['IN_BATCH', 'OPS_REVIEW'], true)) $badge = 'badge-primary';
|
||||
@endphp
|
||||
<tr>
|
||||
<td><span class="badge {{ $badge }}">{{ $st ?: '-' }}</span></td>
|
||||
<td>{{ $line['norujukan'] ?? '-' }}</td>
|
||||
<td class="text-left">{{ $line['nama_pelanggan'] ?? '-' }}</td>
|
||||
<td>{{ $line['nokp'] ?? '-' }}</td>
|
||||
<td>{{ $line['nama_bank'] ?? $line['kodbank'] ?? '-' }}</td>
|
||||
<td>{{ $line['noakaun'] ?? '-' }}</td>
|
||||
<td class="text-left">{{ $line['nama_akaun'] ?? '-' }}</td>
|
||||
<td class="text-right">{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}</td>
|
||||
<td>{{ $line['no_rujukan_bayaran'] ?? '-' }}</td>
|
||||
<td class="text-nowrap">
|
||||
@if(in_array($st, ['IN_BATCH', 'OPS_REVIEW'], true))
|
||||
<form method="post"
|
||||
action="{{ route('pembiayaan.online.operasi.approve', ['kodcaw' => $kodcaw, 'id' => $line['id']]) }}"
|
||||
class="d-inline"
|
||||
onsubmit="return confirm('Luluskan rekod {{ $line['norujukan'] ?? '' }}?');">
|
||||
@csrf
|
||||
<input type="hidden" name="batch_id" value="{{ $batch['id'] }}">
|
||||
<button type="submit" class="btn btn-success btn-sm">Lulus</button>
|
||||
</form>
|
||||
<button type="button"
|
||||
class="btn btn-danger btn-sm btn-reject"
|
||||
data-id="{{ $line['id'] }}"
|
||||
data-norujukan="{{ $line['norujukan'] ?? '' }}">
|
||||
Tolak
|
||||
</button>
|
||||
@elseif($st === 'APPROVED')
|
||||
<button type="button"
|
||||
class="btn btn-dark btn-sm btn-paid"
|
||||
data-id="{{ $line['id'] }}"
|
||||
data-norujukan="{{ $line['norujukan'] ?? '' }}">
|
||||
PAID + Bukti
|
||||
</button>
|
||||
<button type="button"
|
||||
class="btn btn-outline-danger btn-sm btn-reject"
|
||||
data-id="{{ $line['id'] }}"
|
||||
data-norujukan="{{ $line['norujukan'] ?? '' }}">
|
||||
Tolak
|
||||
</button>
|
||||
@elseif($st === 'PAID')
|
||||
<span class="text-muted small">Selesai</span>
|
||||
@else
|
||||
<span class="text-muted small">-</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="10">Tiada rekod dalam batch.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Reject modal --}}
|
||||
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form method="post" id="rejectForm" action="">
|
||||
@csrf
|
||||
<input type="hidden" name="batch_id" value="{{ $batch['id'] }}">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Tolak Rekod — <span id="rejectNorujukan"></span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label>Sebab Tolak <span class="text-danger">*</span></label>
|
||||
<textarea name="reject_reason" id="rejectReason" class="form-control" rows="3" required
|
||||
placeholder="Contoh: No akaun tidak sepadan / dokumen tidak lengkap"></textarea>
|
||||
</div>
|
||||
<p class="small text-muted mb-0">Rekod akan dikembalikan ke queue PC untuk semakan semula.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-danger">Tolak</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Paid line modal --}}
|
||||
<div class="modal fade" id="paidModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form method="post" id="paidForm" action="" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="batch_id" value="{{ $batch['id'] }}">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Tanda PAID — <span id="paidNorujukan"></span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label>No. Rujukan Bayaran <span class="text-danger">*</span></label>
|
||||
<input type="text" name="no_rujukan_bayaran" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Tarikh Bayaran</label>
|
||||
<input type="date" name="tarikh_bayaran" class="form-control" value="{{ date('Y-m-d') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Bukti Bayaran <span class="text-danger">*</span></label>
|
||||
<input type="file" name="bukti" class="form-control-file" accept=".pdf,.jpg,.jpeg,.png,.gif" required>
|
||||
<small class="text-muted">PDF / imej slip pindahan bank</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-dark">Simpan PAID</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Paid batch modal --}}
|
||||
<div class="modal fade" id="paidBatchModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form method="post"
|
||||
action="{{ route('pembiayaan.online.operasi.paid.batch', ['kodcaw' => $kodcaw, 'batchId' => $batch['id']]) }}"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Tanda PAID Semua APPROVED ({{ $approvedCount }})</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="small text-muted">Satu no. rujukan + bukti akan diguna untuk semua rekod APPROVED dalam batch ini.</p>
|
||||
<div class="form-group">
|
||||
<label>No. Rujukan Bayaran <span class="text-danger">*</span></label>
|
||||
<input type="text" name="no_rujukan_bayaran" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Tarikh Bayaran</label>
|
||||
<input type="date" name="tarikh_bayaran" class="form-control" value="{{ date('Y-m-d') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Bukti Bayaran <span class="text-danger">*</span></label>
|
||||
<input type="file" name="bukti" class="form-control-file" accept=".pdf,.jpg,.jpeg,.png,.gif" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-dark">Simpan PAID Batch</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$('.btn-reject').on('click', function () {
|
||||
var id = $(this).data('id');
|
||||
$('#rejectForm').attr(
|
||||
'action',
|
||||
"{{ url('/pembiayaan-online/operasi/' . $kodcaw . '/lines') }}/" + id + "/reject"
|
||||
);
|
||||
$('#rejectNorujukan').text($(this).data('norujukan'));
|
||||
$('#rejectReason').val('');
|
||||
$('#rejectModal').modal('show');
|
||||
});
|
||||
|
||||
$('.btn-paid').on('click', function () {
|
||||
var id = $(this).data('id');
|
||||
$('#paidForm').attr(
|
||||
'action',
|
||||
"{{ url('/pembiayaan-online/operasi/' . $kodcaw . '/lines') }}/" + id + "/paid"
|
||||
);
|
||||
$('#paidNorujukan').text($(this).data('norujukan'));
|
||||
$('#paidModal').modal('show');
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,152 @@
|
||||
@extends('layouts.app_operasi')
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ route('pembiayaan.online.operasi') }}">Pembiayaan Online</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">EOD Modal Online</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('message'))
|
||||
<div class="alert alert-success">{{ session('message') }}</div>
|
||||
@endif
|
||||
@if(session()->has('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-3">
|
||||
<div class="card"><div class="card-body text-center">
|
||||
<div class="text-muted">Tarikh</div>
|
||||
<h4 class="mb-0">{{ $tarikh }}</h4>
|
||||
</div></div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card"><div class="card-body text-center">
|
||||
<div class="text-muted">Masih Dibuka</div>
|
||||
<h4 class="mb-0 text-warning">{{ $summary['open'] ?? 0 }}</h4>
|
||||
</div></div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card"><div class="card-body text-center">
|
||||
<div class="text-muted">Sudah Ditutup</div>
|
||||
<h4 class="mb-0 text-success">{{ $summary['closed'] ?? 0 }}</h4>
|
||||
</div></div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card"><div class="card-body text-center">
|
||||
<div class="text-muted">Belum Ada Rekod</div>
|
||||
<h4 class="mb-0 text-muted">{{ $summary['missing'] ?? 0 }}</h4>
|
||||
</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-body d-flex flex-wrap justify-content-between align-items-center">
|
||||
<form method="get" action="{{ route('pembiayaan.online.operasi.eod') }}" class="form-inline mb-2 mb-md-0">
|
||||
<label class="mr-2">Tarikh</label>
|
||||
<input type="date" name="tarikh" class="form-control mr-2" value="{{ $tarikh }}">
|
||||
<button type="submit" class="btn btn-primary">Tapis</button>
|
||||
<a href="{{ route('pembiayaan.online.operasi.topup') }}" class="btn btn-outline-secondary ml-2">Top-up</a>
|
||||
</form>
|
||||
@if(($summary['open'] ?? 0) > 0)
|
||||
<form method="post" action="{{ route('pembiayaan.online.operasi.eod.closeall') }}"
|
||||
onsubmit="return confirm('Tutup SEMUA modal online yang masih dibuka untuk {{ $tarikh }}?');">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-dark">Tutup Semua (EOD)</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Status Modal Online Mengikut Cawangan</h5>
|
||||
</div>
|
||||
<div class="card-body table-responsive">
|
||||
<table class="table table-striped table-hover table-sm text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Cawangan</th>
|
||||
<th>Had</th>
|
||||
<th>Tambah</th>
|
||||
<th>Digunakan</th>
|
||||
<th>Kurang (EOD)</th>
|
||||
<th>Baki</th>
|
||||
<th>Status</th>
|
||||
<th>Ditutup Oleh</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($rows as $row)
|
||||
@php
|
||||
$closed = (int)($row['ditutup'] ?? 0) === 1;
|
||||
$missing = !empty($row['missing']);
|
||||
@endphp
|
||||
<tr class="{{ $closed ? '' : ($missing ? 'table-secondary' : 'table-warning') }}">
|
||||
<td class="text-left">
|
||||
<div>{{ $row['cawangan_nama'] ?? '-' }}</div>
|
||||
<small class="text-muted">{{ $row['kodcaw'] ?? '' }}</small>
|
||||
</td>
|
||||
<td class="text-right">{{ number_format((float)($row['had'] ?? 0), 2) }}</td>
|
||||
<td class="text-right">{{ number_format((float)($row['tambah'] ?? 0), 2) }}</td>
|
||||
<td class="text-right">{{ number_format((float)($row['digunakan'] ?? 0), 2) }}</td>
|
||||
<td class="text-right">{{ number_format((float)($row['kurang'] ?? 0), 2) }}</td>
|
||||
<td class="text-right">
|
||||
@if($missing)
|
||||
—
|
||||
@else
|
||||
{{ number_format((float)($row['baki'] ?? 0), 2) }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($closed)
|
||||
<span class="badge badge-success">DITUTUP</span>
|
||||
@elseif($missing)
|
||||
<span class="badge badge-secondary">TIADA</span>
|
||||
@else
|
||||
<span class="badge badge-warning">DIBUKA</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="small">
|
||||
@if($closed)
|
||||
{{ $row['ditutup_oleh'] ?? '-' }}<br>
|
||||
{{ $row['ditutup_at'] ?? '' }}
|
||||
@else
|
||||
—
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($closed)
|
||||
<span class="text-muted small">OK</span>
|
||||
@elseif($missing)
|
||||
<span class="text-muted small">Tiada had</span>
|
||||
@else
|
||||
<form method="post"
|
||||
action="{{ route('pembiayaan.online.operasi.eod.close', ['kodcaw' => $row['kodcaw']]) }}"
|
||||
class="d-inline"
|
||||
onsubmit="return confirm('Tutup modal online {{ $row['kodcaw'] }}?');">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-sm btn-dark">Tutup</button>
|
||||
</form>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="9">Tiada data cawangan.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,102 @@
|
||||
@extends('layouts.app_operasi')
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Pembiayaan Online — Operasi</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('message'))
|
||||
<div class="alert alert-success">{{ session('message') }}</div>
|
||||
@endif
|
||||
@if(session()->has('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<form method="get" action="{{ route('pembiayaan.online.operasi') }}" class="form-inline">
|
||||
<label class="mr-2">Status</label>
|
||||
<select name="status" class="form-control mr-3">
|
||||
@foreach(['SUBMITTED' => 'Menunggu (SUBMITTED)', 'PARTIAL' => 'Separa (PARTIAL)', 'OPS_DONE' => 'Selesai Lulus (OPS_DONE)', 'PAID' => 'Dibayar (PAID)', 'all' => 'Semua'] as $val => $label)
|
||||
<option value="{{ $val }}" {{ ($status ?? 'SUBMITTED') === $val ? 'selected' : '' }}>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<label class="mr-2">Tarikh</label>
|
||||
<input type="date" name="tarikh" class="form-control mr-3" value="{{ $tarikh ?? '' }}">
|
||||
<button type="submit" class="btn btn-primary">Tapis</button>
|
||||
<a href="{{ route('pembiayaan.online.operasi') }}" class="btn btn-secondary ml-2">Reset</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Senarai Batch Pembiayaan Online</h5>
|
||||
<div>
|
||||
<a href="{{ route('pembiayaan.online.operasi.topup') }}" class="btn btn-sm btn-warning">Modal Online</a>
|
||||
<a href="{{ route('pembiayaan.online.operasi.eod') }}" class="btn btn-sm btn-dark">EOD</a>
|
||||
<span class="text-muted ml-2">{{ count($batches) }} batch</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body table-responsive">
|
||||
<table class="table table-striped table-hover table-sm text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Batch No</th>
|
||||
<th>Cawangan</th>
|
||||
<th>Tarikh</th>
|
||||
<th>Slot</th>
|
||||
<th>Bil</th>
|
||||
<th>Jumlah (RM)</th>
|
||||
<th>Status</th>
|
||||
<th>Dihantar Oleh</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($batches as $batch)
|
||||
@php
|
||||
$st = $batch['status'] ?? '';
|
||||
$badge = 'badge-secondary';
|
||||
if ($st === 'SUBMITTED') $badge = 'badge-primary';
|
||||
elseif ($st === 'PARTIAL') $badge = 'badge-warning';
|
||||
elseif ($st === 'OPS_DONE') $badge = 'badge-success';
|
||||
elseif ($st === 'PAID') $badge = 'badge-dark';
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ $batch['batch_no'] ?? '-' }}</td>
|
||||
<td class="text-left">
|
||||
<div>{{ $batch['cawangan_nama'] ?? '-' }}</div>
|
||||
<small class="text-muted">{{ $batch['kodcaw'] ?? '' }}</small>
|
||||
</td>
|
||||
<td>{{ $batch['tarikh'] ?? '-' }}</td>
|
||||
<td>{{ $batch['slot'] ?? '-' }}</td>
|
||||
<td>{{ $batch['bilangan'] ?? 0 }}</td>
|
||||
<td class="text-right">{{ number_format((float)($batch['jumlah_keseluruhan'] ?? 0), 2) }}</td>
|
||||
<td><span class="badge {{ $badge }}">{{ $st ?: '-' }}</span></td>
|
||||
<td>{{ $batch['pc_submitted_by'] ?? '-' }}</td>
|
||||
<td>
|
||||
<a class="btn btn-sm btn-info"
|
||||
href="{{ route('pembiayaan.online.operasi.batch', ['kodcaw' => $batch['kodcaw'], 'batchId' => $batch['id']]) }}">
|
||||
Semak
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="9">Tiada batch untuk tapisan ini.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,198 @@
|
||||
@extends('layouts.app_operasi')
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ route('pembiayaan.online.operasi') }}">Pembiayaan Online</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Tambah Modal Online</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('message'))
|
||||
<div class="alert alert-success">{{ session('message') }}</div>
|
||||
@endif
|
||||
@if(session()->has('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<form method="get" action="{{ route('pembiayaan.online.operasi.topup') }}" class="form-inline">
|
||||
<label class="mr-2">Status</label>
|
||||
<select name="status" class="form-control mr-3">
|
||||
<option value="PENDING" {{ ($status ?? 'PENDING') === 'PENDING' ? 'selected' : '' }}>PENDING</option>
|
||||
<option value="APPROVED" {{ ($status ?? '') === 'APPROVED' ? 'selected' : '' }}>APPROVED</option>
|
||||
<option value="REJECTED" {{ ($status ?? '') === 'REJECTED' ? 'selected' : '' }}>REJECTED</option>
|
||||
<option value="all" {{ ($status ?? '') === 'all' ? 'selected' : '' }}>Semua</option>
|
||||
</select>
|
||||
<label class="mr-2">Tarikh</label>
|
||||
<input type="date" name="tarikh" class="form-control mr-3" value="{{ $tarikh ?? '' }}">
|
||||
<button type="submit" class="btn btn-primary">Tapis</button>
|
||||
<a href="{{ route('pembiayaan.online.operasi.topup') }}" class="btn btn-secondary ml-2">Reset</a>
|
||||
<a href="{{ route('pembiayaan.online.operasi') }}" class="btn btn-outline-secondary ml-2">Batch Online</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Permohonan Had / Tambah Modal Online</h5>
|
||||
<span class="text-muted">{{ count($requests) }} rekod</span>
|
||||
</div>
|
||||
<div class="card-body table-responsive">
|
||||
<table class="table table-striped table-hover table-sm text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Cawangan</th>
|
||||
<th>Tarikh</th>
|
||||
<th>Amaun (RM)</th>
|
||||
<th>Dimohon Oleh</th>
|
||||
<th>Status</th>
|
||||
<th>Nota</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($requests as $req)
|
||||
@php
|
||||
$st = $req['status'] ?? '';
|
||||
$badge = 'badge-secondary';
|
||||
if ($st === 'PENDING') $badge = 'badge-warning';
|
||||
elseif ($st === 'APPROVED') $badge = 'badge-success';
|
||||
elseif ($st === 'REJECTED') $badge = 'badge-danger';
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ $req['id'] ?? '-' }}</td>
|
||||
<td class="text-left">
|
||||
<div>{{ $req['cawangan_nama'] ?? '-' }}</div>
|
||||
<small class="text-muted">{{ $req['kodcaw'] ?? '' }}</small>
|
||||
</td>
|
||||
<td>{{ $req['tarikh'] ?? '-' }}</td>
|
||||
<td class="text-right">{{ number_format((float)($req['amaun'] ?? 0), 2) }}</td>
|
||||
<td>{{ $req['dimohon_oleh'] ?? '-' }}</td>
|
||||
<td><span class="badge {{ $badge }}">{{ $st ?: '-' }}</span></td>
|
||||
<td class="text-left small">{{ $req['nota'] ?? '-' }}</td>
|
||||
<td class="text-nowrap">
|
||||
@if($st === 'PENDING')
|
||||
<button type="button"
|
||||
class="btn btn-success btn-sm btn-approve-topup"
|
||||
data-id="{{ $req['id'] }}"
|
||||
data-kodcaw="{{ $req['kodcaw'] ?? '' }}"
|
||||
data-cawangan="{{ $req['cawangan_nama'] ?? ($req['kodcaw'] ?? '') }}"
|
||||
data-amaun="{{ number_format((float)($req['amaun'] ?? 0), 2, '.', '') }}">
|
||||
Lulus
|
||||
</button>
|
||||
<button type="button"
|
||||
class="btn btn-danger btn-sm btn-reject-topup"
|
||||
data-id="{{ $req['id'] }}"
|
||||
data-kodcaw="{{ $req['kodcaw'] ?? '' }}"
|
||||
data-amaun="{{ number_format((float)($req['amaun'] ?? 0), 2) }}">
|
||||
Tolak
|
||||
</button>
|
||||
@else
|
||||
<small class="text-muted">{{ $req['diluluskan_oleh'] ?? '-' }}</small>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="8">Tiada permohonan untuk tapisan ini.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="approveTopupModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form method="post" id="approveTopupForm" action="">
|
||||
@csrf
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Lulus Permohonan Modal</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="mb-3">
|
||||
Cawangan: <b id="approveCawangan"></b>
|
||||
(<span id="approveKodcaw"></span>)<br>
|
||||
Amaun dimohon: RM <b id="approveAmaunDimohon"></b>
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label>Amaun diluluskan (RM) <span class="text-danger">*</span></label>
|
||||
<input type="number" name="amaun" id="approveAmaun" class="form-control"
|
||||
min="0.01" step="0.01" required>
|
||||
<small class="form-text text-muted">Boleh tukar amaun sebelum lulus.</small>
|
||||
</div>
|
||||
<div class="form-group mb-0">
|
||||
<label>Nota (pilihan)</label>
|
||||
<textarea name="nota" class="form-control" rows="3" placeholder="Catatan kelulusan"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-success">Lulus</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="rejectTopupModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form method="post" id="rejectTopupForm" action="">
|
||||
@csrf
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Tolak Permohonan Modal</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="mb-2">
|
||||
Cawangan: <b id="rejectKodcaw"></b><br>
|
||||
Amaun: RM <b id="rejectAmaun"></b>
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label>Nota (pilihan)</label>
|
||||
<textarea name="nota" class="form-control" rows="3" placeholder="Sebab tolak"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-danger">Tolak</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$('.btn-approve-topup').on('click', function () {
|
||||
var id = $(this).data('id');
|
||||
var amaun = $(this).data('amaun');
|
||||
$('#approveTopupForm').attr('action', "{{ url('/pembiayaan-online/operasi/topup') }}/" + id + "/approve");
|
||||
$('#approveCawangan').text($(this).data('cawangan'));
|
||||
$('#approveKodcaw').text($(this).data('kodcaw'));
|
||||
$('#approveAmaunDimohon').text(Number(amaun).toLocaleString('en-MY', { minimumFractionDigits: 2, maximumFractionDigits: 2 }));
|
||||
$('#approveAmaun').val(amaun);
|
||||
$('#approveTopupForm textarea[name="nota"]').val('');
|
||||
$('#approveTopupModal').modal('show');
|
||||
});
|
||||
|
||||
$('.btn-reject-topup').on('click', function () {
|
||||
var id = $(this).data('id');
|
||||
$('#rejectTopupForm').attr('action', "{{ url('/pembiayaan-online/operasi/topup') }}/" + id + "/reject");
|
||||
$('#rejectKodcaw').text($(this).data('kodcaw'));
|
||||
$('#rejectAmaun').text($(this).data('amaun'));
|
||||
$('#rejectTopupModal').modal('show');
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user