Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local> Co-authored-by: ISMAIL MASSERAN <topaz@ISMAILs-Macbook.local> Co-authored-by: nurafrinaalimi16 <nurafrinaalimi16@gmail.com> Reviewed-on: #15
This commit was merged in pull request #15.
This commit is contained in:
@@ -306,7 +306,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var ppc = "{{ Auth::user()->name }}";
|
||||
var ic_asal = "{{ $customer_info['kpbaru'] != null ? $customer_info['kpbaru'] : $customer_info['kplama'] }}"
|
||||
|
||||
|
||||
@@ -48,6 +48,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
</script>
|
||||
@endsection
|
||||
@@ -26,7 +26,7 @@
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
@php $auth_user = Auth::user();@endphp
|
||||
<input type="hidden" id="api" value="{{ $api_url }}"/>
|
||||
<input type="hidden" id="api" value="{{ api_url_for_browser() }}"/>
|
||||
<div class="col-md-12">
|
||||
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
</div>
|
||||
<script>
|
||||
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tableaddtunai = $('#tableaddtunai').DataTable({
|
||||
@@ -558,9 +558,8 @@
|
||||
|
||||
function cetaklaporanalirantunai()
|
||||
{
|
||||
let urlroute = '{{ route("laporan.alirantunai") }}';
|
||||
|
||||
window.location.href = urlroute;
|
||||
let urlroute = '{{ route("laporan.alirantunai") }}';
|
||||
window.location.href = api_url + urlroute;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="{{ asset('img/icon_pkb.png') }}">
|
||||
|
||||
<title>arOS v2.2</title>
|
||||
<title>arOS {{ config('app.version') }}</title>
|
||||
|
||||
<style>
|
||||
@keyframes slide {
|
||||
@@ -82,7 +82,7 @@
|
||||
<div class="card-header pb-0 text-left">
|
||||
<div style="display: flex; justify-content:space-between; align-items:center">
|
||||
<h1 class="font-weight-bolder text-info text-gradient" style="word-break: break-word; white-space: nowrap;">
|
||||
Kaunter arOS v2.2
|
||||
Kaunter arOS {{ config('app.version') }}
|
||||
</h1>
|
||||
<img src="{{ asset('img/icon_pkb.png') }}" alt="logo-arrahn" style="width: 85px; margin-left: 30px;">
|
||||
</div>
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
|
||||
|
||||
<script>
|
||||
var api_url = "{{ $api_url }}";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
// var kodcaw = "{{ $kodcaw }}";
|
||||
// var notisid = "{{ $notisid }}";
|
||||
//var nokp = "{{ $noic }}";
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -413,7 +413,7 @@
|
||||
|
||||
<script>
|
||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
|
||||
|
||||
@@ -1099,7 +1099,7 @@
|
||||
|
||||
|
||||
let pertambahpinjaman = "{{ $pertambahpinjaman }}";
|
||||
var api = '<?php echo $api_url ?>';
|
||||
var api = "{{ api_url_for_browser() }}";
|
||||
let nw = 0;
|
||||
let jenisAT = 'none';
|
||||
|
||||
|
||||
@@ -542,7 +542,7 @@
|
||||
|
||||
<script>
|
||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
@props([
|
||||
'id',
|
||||
'columns' => [],
|
||||
'exportable' => true,
|
||||
'filename' => '',
|
||||
'skipExport' => ['Bil', 'Cetak'],
|
||||
])
|
||||
|
||||
<style>
|
||||
.erahn-datatable {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
.erahn-datatable .dataTables_wrapper {
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.erahn-datatable table {
|
||||
width: 100% !important;
|
||||
margin: 0;
|
||||
}
|
||||
.erahn-datatable table th,
|
||||
.erahn-datatable table td {
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.erahn-datatable .dt-buttons {
|
||||
margin: 0 0 8px 8px;
|
||||
}
|
||||
.erahn-datatable .dt-button {
|
||||
border: 0;
|
||||
border-radius: 4px;
|
||||
padding: 6px 12px;
|
||||
margin-left: 4px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
background: #17a2b8;
|
||||
color: #fff;
|
||||
}
|
||||
.erahn-datatable .dt-button:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
.erahn-datatable .buttons-excel {
|
||||
background: #28a745;
|
||||
}
|
||||
.erahn-datatable .buttons-csv {
|
||||
background: #6c757d;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
if (typeof window.initErahnDatatable !== 'function') {
|
||||
window.initErahnDatatable = function (selector, options) {
|
||||
var $table = $(selector);
|
||||
var exportable = $table.data('exportable');
|
||||
var filename = $table.data('export-filename') || $table.attr('id') || 'export';
|
||||
var defaults = {
|
||||
scrollX: true,
|
||||
autoWidth: false,
|
||||
language: {
|
||||
emptyTable: 'Tiada rekod'
|
||||
}
|
||||
};
|
||||
|
||||
if ((exportable === undefined || exportable === 1 || exportable === true) &&
|
||||
$.fn.dataTable && $.fn.dataTable.Buttons) {
|
||||
defaults.dom = 'lBfrtip';
|
||||
defaults.buttons = [
|
||||
{
|
||||
extend: 'excelHtml5',
|
||||
text: 'Excel',
|
||||
className: 'buttons-excel',
|
||||
title: filename,
|
||||
filename: filename,
|
||||
exportOptions: {
|
||||
columns: ':not(.no-export)',
|
||||
format: {
|
||||
body: function (data) {
|
||||
return $('<div>').html(data).text().replace(/\s+/g, ' ').trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
extend: 'csvHtml5',
|
||||
text: 'CSV',
|
||||
className: 'buttons-csv',
|
||||
bom: true,
|
||||
title: filename,
|
||||
filename: filename,
|
||||
exportOptions: {
|
||||
columns: ':not(.no-export)',
|
||||
format: {
|
||||
body: function (data) {
|
||||
return $('<div>').html(data).text().replace(/\s+/g, ' ').trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
return $table.DataTable($.extend(true, {}, defaults, options || {}));
|
||||
};
|
||||
}
|
||||
if (typeof window.adjustErahnDatatables !== 'function') {
|
||||
window.adjustErahnDatatables = function () {
|
||||
if (!$.fn.dataTable) {
|
||||
return;
|
||||
}
|
||||
setTimeout(function () {
|
||||
$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();
|
||||
}, 50);
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="erahn-datatable">
|
||||
<table
|
||||
id="{{ $id }}"
|
||||
{{ $attributes->merge(['class' => 'table table-striped table-hover nowrap']) }}
|
||||
style="width:100%"
|
||||
data-exportable="{{ $exportable ? 1 : 0 }}"
|
||||
data-export-filename="{{ $filename !== '' ? $filename : $id }}"
|
||||
>
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
@foreach ($columns as $column)
|
||||
<th @if(in_array($column, $skipExport, true)) class="no-export" @endif>{{ $column }}</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
{{ $slot }}
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,44 @@
|
||||
@props([
|
||||
'showCopies' => true,
|
||||
])
|
||||
|
||||
<style>
|
||||
.print-footer {
|
||||
margin-top: 14px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #222;
|
||||
}
|
||||
.print-footer .copies {
|
||||
margin-top: 10px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.print-footer .copies span {
|
||||
display: inline-block;
|
||||
border: 1px solid #111;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
margin-right: 4px;
|
||||
vertical-align: -1px;
|
||||
}
|
||||
.print-footer .notes {
|
||||
margin-top: 10px;
|
||||
font-size: 9.5px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.print-footer .notes b { font-size: 10px; }
|
||||
.print-footer .notes p { margin: 2px 0; }
|
||||
</style>
|
||||
|
||||
<div {{ $attributes->merge(['class' => 'print-footer']) }}>
|
||||
@if($showCopies)
|
||||
<div class="copies">
|
||||
Salinan: <span></span> Kad Pengenalan <span></span> Akaun Bank/ Slip/ Penyata Bank
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if(trim($slot) !== '')
|
||||
<div class="notes">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@@ -0,0 +1,101 @@
|
||||
@props([
|
||||
'cawangan' => '',
|
||||
'kodcaw' => '',
|
||||
'alamat1' => '',
|
||||
'alamat2' => '',
|
||||
'notel' => '',
|
||||
'tarikh' => '',
|
||||
'norujukan' => '',
|
||||
'rujukanLabel' => 'No. Rujukan SAG',
|
||||
'showDummyBadge' => false,
|
||||
])
|
||||
|
||||
<style>
|
||||
.print-header {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
||||
align-items: start;
|
||||
column-gap: 12px;
|
||||
border-bottom: 2px solid #111;
|
||||
padding-bottom: 8px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #111;
|
||||
}
|
||||
.print-header .org {
|
||||
min-width: 0;
|
||||
}
|
||||
.print-header .org p {
|
||||
margin: 0;
|
||||
font-size: 10px;
|
||||
line-height: 1.35;
|
||||
}
|
||||
.print-header .org .name {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.print-header .logos {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
padding-top: 2px;
|
||||
}
|
||||
.print-header .logos img {
|
||||
display: block;
|
||||
height: 40px;
|
||||
width: auto;
|
||||
max-width: 70px;
|
||||
object-fit: contain;
|
||||
}
|
||||
.print-header .meta {
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.print-header .meta .label { color: #444; }
|
||||
.print-header .dummy-badge {
|
||||
display: inline-block;
|
||||
margin-top: 4px;
|
||||
padding: 1px 6px;
|
||||
border: 1px solid #c0392b;
|
||||
color: #c0392b;
|
||||
font-size: 9px;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.08em;
|
||||
}
|
||||
@media print {
|
||||
.print-header .dummy-badge { display: none !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div {{ $attributes->merge(['class' => 'print-header']) }}>
|
||||
<div class="org">
|
||||
<p class="name">KOPERASI PERMODALAN KELANTAN BERHAD (D-5-0228)</p>
|
||||
<p>Ar-Rahn {{ $cawangan }}</p>
|
||||
<p>{{ $alamat1 }}</p>
|
||||
<p>{{ $alamat2 }}</p>
|
||||
<p>Tel: {{ $notel }}</p>
|
||||
</div>
|
||||
<div class="logos">
|
||||
<img src="{{ asset('img/kopkb.png') }}" alt="KPKB">
|
||||
<img src="{{ asset('img/logo-arrahn.jpeg') }}" alt="Ar-Rahn">
|
||||
</div>
|
||||
<div class="meta">
|
||||
@if($kodcaw || $cawangan)
|
||||
<div>
|
||||
<span class="label">Cawangan</span><br>
|
||||
<b>{{ trim(implode(' — ', array_filter([$kodcaw, $cawangan]))) }}</b>
|
||||
</div>
|
||||
@endif
|
||||
@if($tarikh)
|
||||
<div style="{{ ($kodcaw || $cawangan) ? 'margin-top:6px' : '' }}"><span class="label">Tarikh</span><br><b>{{ $tarikh }}</b></div>
|
||||
@endif
|
||||
@if($norujukan)
|
||||
<div style="margin-top:6px"><span class="label">{{ $rujukanLabel }}</span><br><b>{{ $norujukan }}</b></div>
|
||||
@endif
|
||||
{{ $slot }}
|
||||
@if($showDummyBadge)
|
||||
<div class="dummy-badge">CONTOH SAHAJA</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,25 @@
|
||||
<style>
|
||||
.print-watermark {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 12px;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
}
|
||||
.print-watermark img {
|
||||
height: 160px;
|
||||
max-width: 240px;
|
||||
object-fit: contain;
|
||||
opacity: 0.12;
|
||||
-webkit-print-color-adjust: exact;
|
||||
print-color-adjust: exact;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="print-watermark" aria-hidden="true">
|
||||
<img src="{{ asset('img/logo_kad.jpeg') }}" alt="">
|
||||
<img src="{{ asset('img/logo-arrahn.jpeg') }}" alt="">
|
||||
</div>
|
||||
@@ -210,15 +210,17 @@
|
||||
<div class="modal fade" id="daftar_pelanggan_mykad_reader" tabindex="-1" data-backdrop="static" aria-labelledby="ModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<form id="form-mykad-reader" action="{{ route('customer.store') }}" onsubmit="verifycustomerMyKadReader()" method="POST">
|
||||
@csrf
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="ModalLabel">Daftar Pelanggan</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('customer.store') }}" onsubmit="verifycustomerMyKadReader()" method="POST">
|
||||
@csrf
|
||||
<div class="row form-group">
|
||||
<div class="col-md-12 d-flex justify-content-center pb-3 d-none" id="photo-mykad-container">
|
||||
<img src="{{ asset('img/spinner-loader.gif') }}" alt="" id="photo-mykad" width="150" height="200" object-fit="cover">
|
||||
<input type="hidden" name="photo_base64" id="photo_base64" value="">
|
||||
<input type="hidden" name="photo_mime" id="photo_mime" value="">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row form-group">
|
||||
@@ -473,7 +475,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
var blacklist_search = "<?php echo $blacklist_search ?>";
|
||||
@@ -811,6 +813,8 @@
|
||||
|
||||
function verifycustomerMyKadReader(){
|
||||
|
||||
copyMykadPhotoFromImage();
|
||||
|
||||
let myKadModal = $('#daftar_pelanggan_mykad_reader');
|
||||
|
||||
// Construct URLSearchParams object instance from current URL querystring.
|
||||
@@ -1277,8 +1281,7 @@
|
||||
let wakil_caricustomer_endpoint = "{{ route('wakil.caricustomer') }}";
|
||||
let mykad_reader_driver_endpoint = "{{ route('mykadreader.driver') }}";
|
||||
</script>
|
||||
<script src="{{ asset('js/iris-mykad-websocket-client-api.js') }}"></script>
|
||||
<script src="{{ asset('js/mykad-reader-customer.js') }}"></script>
|
||||
<script src="{{ asset('js/mykad-reader-customer.js') }}?v=4"></script>
|
||||
<script src="{{ asset('js/postcode-concerns.js') }}"></script>
|
||||
@endpush
|
||||
|
||||
|
||||
@@ -21,6 +21,22 @@
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('message'))
|
||||
<div class="alert alert-success">{{ session('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if(!empty($customer_info['photo_base64']))
|
||||
<div class="form-group row col-md-12">
|
||||
<div class="col-md-12 d-flex justify-content-center pb-3">
|
||||
<img src="data:{{ $customer_info['photo_mime'] ?? 'image/jpeg' }};base64,{{ $customer_info['photo_base64'] }}"
|
||||
alt="Gambar MyKad"
|
||||
width="120"
|
||||
height="160"
|
||||
style="object-fit: cover;">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group row col-md-12">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group row">
|
||||
@@ -422,7 +438,7 @@
|
||||
|
||||
<script>
|
||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
var min_komoditi = "{{ $min_komoditi }}";
|
||||
|
||||
@@ -229,15 +229,17 @@
|
||||
<div class="modal fade" id="daftar_pelanggan_mykad_reader" tabindex="-1" data-backdrop="static" aria-labelledby="ModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<form id="form-mykad-reader" action="{{ route('customer.store') }}" onsubmit="verifycustomerMyKadReader()" method="POST">
|
||||
@csrf
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="ModalLabel">Daftar Pelanggan</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('customer.store') }}" onsubmit="verifycustomerMyKadReader()" method="POST">
|
||||
@csrf
|
||||
<div class="row form-group">
|
||||
<div class="col-md-12 d-flex justify-content-center pb-3 d-none" id="photo-mykad-container">
|
||||
<img src="{{ asset('img/spinner-loader.gif') }}" alt="" id="photo-mykad" width="150" height="200" object-fit="cover">
|
||||
<input type="hidden" name="photo_base64" id="photo_base64" value="">
|
||||
<input type="hidden" name="photo_mime" id="photo_mime" value="">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row form-group">
|
||||
@@ -495,15 +497,14 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = @json($api_url ?? '');
|
||||
var search = @json($search ?? false);
|
||||
var type_id = @json($idtype ?? '');
|
||||
var isAnggota = @json($isAnggota ?? false);
|
||||
var isPelanggan = @json($isPelanggan ?? false);
|
||||
var blacklist_search = @json($blacklist_search ?? false);
|
||||
var showAssignAnggotaBtn = @json($showAssignAnggotaBtn ?? false);
|
||||
var showDaftarPelangganBtn = @json($showDaftarPelangganBtn ?? false);
|
||||
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
var blacklist_search = "<?php echo $blacklist_search ?>";
|
||||
$(document).ready(function(){
|
||||
// Datepicker
|
||||
$('#passport_tarikh_lahir').datepicker({
|
||||
@@ -525,38 +526,36 @@ var api_url = @json($api_url ?? '');
|
||||
});
|
||||
|
||||
// Logik amaran SweetAlert
|
||||
if("{{ auth()->user()->cawangan }}" == 'X0301'){
|
||||
if (search === true) {
|
||||
if (blacklist_search === true) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Amaran!',
|
||||
text: 'Pelanggan telah disenarai hitamkan dari Pembiayaan.'
|
||||
});
|
||||
}
|
||||
else if (isAnggota && !isPelanggan) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Anggota Belum Didaftarkan!',
|
||||
text: 'Pelanggan ini adalah anggota koperasi tetapi belum berdaftar sebagai pelanggan.'
|
||||
});
|
||||
}
|
||||
else if (isPelanggan && !isAnggota) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Pelanggan Bukan Anggota!',
|
||||
text: 'Pelanggan ini berdaftar tetapi belum menjadi anggota koperasi.'
|
||||
});
|
||||
}
|
||||
else if (!isAnggota && !isPelanggan) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Pelanggan Tiada Dalam Rekod!',
|
||||
text: 'Sila Daftar Pelanggan.'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if (search === true) {
|
||||
if (blacklist_search === true) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Amaran!',
|
||||
text: 'Pelanggan telah disenarai hitamkan dari Pembiayaan.'
|
||||
});
|
||||
}
|
||||
else if (isAnggota && !isPelanggan) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Anggota Belum Didaftarkan!',
|
||||
text: 'Pelanggan ini adalah anggota koperasi tetapi belum berdaftar sebagai pelanggan.'
|
||||
});
|
||||
}
|
||||
else if (isPelanggan && !isAnggota) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Pelanggan Bukan Anggota!',
|
||||
text: 'Pelanggan ini berdaftar tetapi belum menjadi anggota koperasi.'
|
||||
});
|
||||
}
|
||||
else if (!isAnggota && !isPelanggan) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Pelanggan Tiada Dalam Rekod!',
|
||||
text: 'Sila Daftar Pelanggan.'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -893,6 +892,8 @@ var api_url = @json($api_url ?? '');
|
||||
|
||||
function verifycustomerMyKadReader(){
|
||||
|
||||
copyMykadPhotoFromImage();
|
||||
|
||||
let myKadModal = $('#daftar_pelanggan_mykad_reader');
|
||||
|
||||
// Construct URLSearchParams object instance from current URL querystring.
|
||||
@@ -1418,8 +1419,7 @@ document.getElementsByName('form-store')[0].addEventListener('keypress', functio
|
||||
let wakil_caricustomer_endpoint = "{{ route('wakil.caricustomer') }}";
|
||||
let mykad_reader_driver_endpoint = "{{ route('mykadreader.driver') }}";
|
||||
</script>
|
||||
<script src="{{ asset('js/iris-mykad-websocket-client-api.js') }}"></script>
|
||||
<script src="{{ asset('js/mykad-reader-customer.js') }}"></script>
|
||||
<script src="{{ asset('js/mykad-reader-customer.js') }}?v=4"></script>
|
||||
<script src="{{ asset('js/postcode-concerns.js') }}"></script>
|
||||
@endpush
|
||||
|
||||
|
||||
@@ -22,6 +22,22 @@
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('message'))
|
||||
<div class="alert alert-success">{{ session('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if(!empty($customer_info['photo_base64']))
|
||||
<div class="form-group row col-md-12">
|
||||
<div class="col-md-12 d-flex justify-content-center pb-3">
|
||||
<img src="data:{{ $customer_info['photo_mime'] ?? 'image/jpeg' }};base64,{{ $customer_info['photo_base64'] }}"
|
||||
alt="Gambar MyKad"
|
||||
width="120"
|
||||
height="160"
|
||||
style="object-fit: cover;">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group row col-md-12">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group row">
|
||||
@@ -75,7 +91,8 @@
|
||||
->json();
|
||||
@endphp
|
||||
<input type="text" class="form-control" name="outstanding_semasa"
|
||||
id="outstanding_semasa" readonly value="{{ number_format($outstanding_semasa, 2) }}">
|
||||
id="outstanding_semasa" readonly
|
||||
value="{{ number_format($outstanding_semasa, 2) }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -154,10 +171,15 @@
|
||||
<i class="fas fa-info-circle me-1"></i> Maklumat Pelanggan
|
||||
</button>
|
||||
|
||||
<button class="btn btn-info d-flex align-items-center" data-toggle="modal"
|
||||
data-target="#export_maklumat_modal" style="margin-right: 12px;">
|
||||
<i class="fas fa-print me-1"></i> Cetak Maklumat Pelanggan
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
<!-- Butang Assign Sebagai Anggota -->
|
||||
@if (isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn && auth()->user()->cawangan == 'X0301')
|
||||
@if (isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn)
|
||||
<div class="m-0 p-2">
|
||||
<button type="button" class="btn btn-success d-flex align-items-center"
|
||||
data-noic="{{ $noic }}" onclick="assignAnggota(this)">
|
||||
@@ -230,7 +252,6 @@
|
||||
|
||||
// 4️⃣ Hantar permohonan ke backend (Laravel)
|
||||
const response = await fetch("{{ route('operasi.createkelulusan-anggota') }}", {
|
||||
|
||||
method: 'POST',
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
@@ -238,15 +259,14 @@
|
||||
},
|
||||
body: JSON.stringify({
|
||||
mohon: "Assign Anggota",
|
||||
noic: noic,
|
||||
nokp: noic,
|
||||
norujukan: norujukan,
|
||||
komen: komen,
|
||||
teller: "{{ Auth::user()->name }}",
|
||||
tagoperasi: 1 // 1 = tunggu kelulusan operasi
|
||||
})
|
||||
|
||||
console.log(`Response: ${response}`);
|
||||
});
|
||||
console.log(`Response: ${response}`);
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
@@ -348,7 +368,7 @@
|
||||
</div>
|
||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
||||
@php
|
||||
$activate_tab = request()->session()->pull('activate_tab', 'SAG_lama');
|
||||
$activate_tab = request()->session()->pull('activate_tab', 'SAG_baru');
|
||||
|
||||
$activate_tab_SAG_baru = $activate_tab === 'SAG_baru' ? 'active' : '';
|
||||
$aria_selected_SAG_baru = $activate_tab === 'SAG_baru' ? 'true' : 'false';
|
||||
@@ -363,173 +383,123 @@
|
||||
data-toggle="tab" href="#nav-tawarruq" role="tab" aria-controls="nav-tawarruq"
|
||||
aria-selected="{{ $aria_selected_SAG_baru }}">SAG Baru</a>
|
||||
<a class="nav-item nav-link {{ $activate_tab_SAG_lama }}" " id="nav-xtawarruq-tab" data-toggle="tab" href="#nav-xtawarruq" role="tab" aria-controls="nav-xtawarruq" aria-selected="{{ $aria_selected_SAG_lama }}"><span id="textnavsag">SAG Lama</span></a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="tab-content" id="navtawarruqdannottawarruq">
|
||||
<div class="tab-pane fade {{ $activate_pane_SAG_baru }}" id="nav-tawarruq" role="tabpanel" aria-labelledby="nav-tawarruq-tab">
|
||||
<x-datatable
|
||||
id="myTable"
|
||||
filename="SAG_Baru"
|
||||
:columns="['Bil', 'No Rujukan', 'Tarikh Pembiayaan', 'Tarikh Matang', 'Baki Harga Jualan', 'Baki Pembiayaan', 'Margin', 'Tempoh', 'Keuntungan', 'Lelong', 'Borang Online']"
|
||||
/>
|
||||
</div>
|
||||
<div class="tab-pane fade {{ $activate_pane_SAG_lama }}" id="nav-xtawarruq" role="tabpanel" aria-labelledby="nav-xtawarruq-tab">
|
||||
<x-datatable
|
||||
id="xtawarruq"
|
||||
filename="SAG_Lama"
|
||||
:columns="['Bil', 'No Rujukan', 'Tarikh Pembiayaan', 'Tarikh Matang', 'Baki Harga Jualan', 'Baki Pembiayaan', 'Margin', 'Tempoh', 'Keuntungan', 'Lelong', 'Borang Online']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="tab-content" id="navtawarruqdannottawarruq">
|
||||
<div class="tab-pane fade {{ $activate_pane_SAG_baru }}" id="nav-tawarruq" role="tabpanel" aria-labelledby="nav-tawarruq-tab">
|
||||
<table class="table table-striped table-hover" id="myTable">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
<th>Tarikh Pembiayaan</th>
|
||||
<th>Tarikh Matang</th>
|
||||
<th>Baki Harga Jualan</th>
|
||||
<th>Baki Pembiayaan</th>
|
||||
<th>Margin</th>
|
||||
<th>Tempoh</th>
|
||||
<th>Keuntungan</th>
|
||||
<th>Lelong</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tab-pane fade {{ $activate_pane_SAG_lama }}" id="nav-xtawarruq" role="tabpanel" aria-labelledby="nav-xtawarruq-tab">
|
||||
<table id="xtawarruq" class="table table-striped table-hover">
|
||||
<thead class="thead-dark">
|
||||
{{-- <tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
<th>Tarikh Gadai</th>
|
||||
<th>Tarikh Matang</th>
|
||||
<th>Pembiayaan</th>
|
||||
<th>Margin</th>
|
||||
<th>Tempoh</th>
|
||||
<th>Lelong</th>
|
||||
</tr> --}}
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
<th>Tarikh Pembiayaan</th>
|
||||
<th>Tarikh Matang</th>
|
||||
<th>Baki Harga Jualan</th>
|
||||
<th>Baki Pembiayaan</th>
|
||||
<th>Margin</th>
|
||||
<th>Tempoh</th>
|
||||
<th>Keuntungan</th>
|
||||
<th>Lelong</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
{{-- Sudah Tebus --}}
|
||||
|
||||
<x-datatable
|
||||
id="dahtebusTable"
|
||||
filename="SAG_Sudah_Tebus"
|
||||
:columns="['Bil', 'No Rujukan', 'Tarikh Penyelesaian Pembiayaan', 'Baki Pembiayaan', 'Margin', 'Tempoh']"
|
||||
/>
|
||||
|
||||
<x-datatable
|
||||
id="lelongTable"
|
||||
filename="SAG_Lelong"
|
||||
:columns="['Bil', 'No Rujukan', 'Tarikh Lelong', 'Tarikh Tuntut', 'Pembiayaan', 'Harga Jual', 'Jum Tuntut/Bayar', 'Keuntungan', 'Caj Lelong', 'Status Tuntutan', 'Cetak']"
|
||||
/>
|
||||
|
||||
<div class="text-center">
|
||||
<button class="btn btn-primary" onclick="ubahfunc(this)" id="button-edit-gadaian">Ubah</button>
|
||||
<button class="btn btn-primary" onclick="hapusfunc()">Hapus</button>
|
||||
<button class="btn btn-primary" onclick="histfunc()">Rekod Pembiayaan</button>
|
||||
<button class="btn btn-primary" onclick="removeansuran(this)" id="button-remove-ansuran">Hapus Ansuran</button>
|
||||
<button class="btn btn-info" type="button" onclick="cetakBorangOnlineSelected()">Cetak Borang Online</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- Sudah Tebus --}}
|
||||
|
||||
<table id="dahtebusTable" class="table table-striped table-hover">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
<th>Tarikh Penyelesaian Pembiayaan</th>
|
||||
<th>Baki Pembiayaan</th>
|
||||
<th>Margin</th>
|
||||
<th>Tempoh</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
<table id="lelongTable" class="table table-striped table-hover">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
<th>Tarikh Lelong</th>
|
||||
<th>Tarikh Tuntut</th>
|
||||
<th>Pembiayaan</th>
|
||||
<th>Harga Jual</th>
|
||||
<th>Jum Tuntut/Bayar</th>
|
||||
<th>Keuntungan</th>
|
||||
<th>Caj Lelong</th>
|
||||
<th>Status Tuntutan</th>
|
||||
<th>Cetak</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
<div class="text-center">
|
||||
<button class="btn btn-primary" onclick="ubahfunc(this)" id="button-edit-gadaian">Ubah</button>
|
||||
<button class="btn btn-primary" onclick="hapusfunc()">Hapus</button>
|
||||
<button class="btn btn-primary" onclick="histfunc()">Rekod Pembiayaan</button>
|
||||
<button class="btn btn-primary" onclick="removeansuran(this)" id="button-remove-ansuran">Hapus Ansuran</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="customer_detail" tabindex="-1" aria-labelledby="customer_detailLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="customer_detailLabel">Maklumat Pelanggan</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="kemaskiniform">
|
||||
<div class='row form-group'>
|
||||
<div class='col-md-6'>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
Nama
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="customer_detail" tabindex="-1" aria-labelledby="customer_detailLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="customer_detailLabel">Maklumat Pelanggan</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="kemaskiniform">
|
||||
<div class='row form-group'>
|
||||
<div class='col-md-6'>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
Nama
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='nama' id='nama' value="{{ $customer_info['nama'] }}" class='form-control'>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='nama' id='nama' value="{{ $customer_info['nama'] }}" class='form-control'>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No KP
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='icno' id='icno' value="{{ $customer_info['kpbaru'] ? $customer_info['kpbaru'] : $customer_info['kplama'] }}" class='form-control'>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No KP
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No Pelanggan
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='nopelanggan' id='nopelanggan' value="{{ $customer_info['nopelanggan'] }}" class='form-control'>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='icno' id='icno' value="{{ $customer_info['kpbaru'] ? $customer_info['kpbaru'] : $customer_info['kplama'] }}" class='form-control'>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No Telefon 1
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='' id='telefon' value="{{ $customer_info['telefon'] ? $customer_info['telefon'] : '' }}" class='form-control'>
|
||||
<span id="errortelefon" style="color:red;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No Pelanggan
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No Telefon 2
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='telefon2' id='telefon2' value="{{ $customer_info['telefon2'] ? $customer_info['telefon2'] : '' }}" class='form-control'>
|
||||
<span id="errortelefon2" style="color:red;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='nopelanggan' id='nopelanggan' value="{{ $customer_info['nopelanggan'] }}" class='form-control'>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No Telefon 1
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='' id='telefon' value="{{ $customer_info['telefon'] ? $customer_info['telefon'] : '' }}" class='form-control'>
|
||||
<span id="errortelefon" style="color:red;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
No Telefon 2
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
<input type="text" readonly name='telefon2' id='telefon2' value="{{ $customer_info['telefon2'] ? $customer_info['telefon2'] : '' }}" class='form-control'>
|
||||
<span id="errortelefon2" style="color:red;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
Bank
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
@php
|
||||
$bank = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get($api_url . '/api/bank')
|
||||
->json();
|
||||
@endphp
|
||||
<select class="form-control" name="kodbank" data-placeholder="Pilih Bank" id="kodbank" disabled="true">
|
||||
<option value="-" selected disabled>-</option>
|
||||
@foreach ($bank as $banks)
|
||||
<div class='form-group row col-md-12'>
|
||||
<div class='col-md-5'>
|
||||
Bank
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
@php
|
||||
$bank = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get($api_url . '/api/bank')
|
||||
->json();
|
||||
@endphp
|
||||
<select class="form-control" name="kodbank" data-placeholder="Pilih Bank" id="kodbank" disabled="true">
|
||||
<option value="-" selected disabled>-</option>
|
||||
@foreach ($bank as $banks)
|
||||
<option value="{{ $banks['abbreviation'] }}"
|
||||
{{ $banks['abbreviation'] == $customer_info['kodbank'] ? 'selected' : '' }}>
|
||||
{{ $banks['name'] }}</option>
|
||||
@@ -670,6 +640,33 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="export_maklumat_modal" tabindex="-1" aria-labelledby="export_maklumat_modalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered" style="max-width: 920px;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="export_maklumat_modalLabel">Eksport Maklumat Pelanggan</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body p-0" style="height: 80vh; background: #e8eaed;">
|
||||
<iframe id="export_maklumat_iframe"
|
||||
src="about:blank"
|
||||
title="Maklumat Pelanggan"
|
||||
style="width: 100%; height: 100%; border: 0;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$('#export_maklumat_modal').on('show.bs.modal', function () {
|
||||
$('#export_maklumat_iframe').attr('src', '{{ route('customer.print.maklumat', ['noic' => $noic]) }}');
|
||||
});
|
||||
$('#export_maklumat_modal').on('hidden.bs.modal', function () {
|
||||
$('#export_maklumat_iframe').attr('src', 'about:blank');
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="modal fade" id="opt_modal" tabindex="-1" aria-labelledby="opt_modalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-lg">
|
||||
<div class="modal-content">
|
||||
@@ -714,90 +711,94 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid'); ?>";
|
||||
var api_url = "<?php echo $api_url; ?>";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
var min_komoditi = "{{ $min_komoditi }}";
|
||||
$('#daftar_gadai').on('click', function() {
|
||||
$("#daftar_gadai").prop('disabled', true);
|
||||
var noic = $('#noic').val();
|
||||
var iclama = "{{ $customer_info['kplama'] }}";
|
||||
var icbaru = "{{ $customer_info['kpbaru'] }}";
|
||||
var outstanding_semasa = "{{ $outstanding_semasa }}";
|
||||
<script>
|
||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
var min_komoditi = "{{ $min_komoditi }}";
|
||||
$('#daftar_gadai').on('click', function() {
|
||||
$("#daftar_gadai").prop('disabled', true);
|
||||
var noic = $('#noic').val();
|
||||
var iclama = "{{ $customer_info['kplama'] }}";
|
||||
var icbaru = "{{ $customer_info['kpbaru'] }}";
|
||||
var outstanding_semasa = "{{ $outstanding_semasa }}";
|
||||
event.preventDefault();
|
||||
if (outstanding_semasa >= 300000) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Had Pembiayaan',
|
||||
text: 'Outstanding Pembiayaan Pelanggan Telah Melebihi Had'
|
||||
});
|
||||
$("#daftar_gadai").prop('disabled', false);
|
||||
event.preventDefault();
|
||||
if (outstanding_semasa >= 300000) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Had Pembiayaan',
|
||||
text: 'Outstanding Pembiayaan Pelanggan Telah Melebihi Had'
|
||||
});
|
||||
$("#daftar_gadai").prop('disabled', false);
|
||||
event.preventDefault();
|
||||
return false;
|
||||
} else {
|
||||
$.ajax({
|
||||
method: 'get',
|
||||
url: api_url + '/api/komuditi/check',
|
||||
success: function(data) {
|
||||
var check_komuditi = Object.keys(data).length;
|
||||
if (check_komuditi == 0) {
|
||||
return false;
|
||||
} else {
|
||||
$.ajax({
|
||||
method: 'get',
|
||||
url: api_url + '/api/komuditi/check',
|
||||
success: function(data) {
|
||||
var check_komuditi = Object.keys(data).length;
|
||||
if (check_komuditi == 0) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Unit Komoditi Berbaki Minima',
|
||||
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
||||
});
|
||||
$("#daftar_gadai").prop('disabled', false);
|
||||
event.preventDefault();
|
||||
return false;
|
||||
} else {
|
||||
if (Number(data['unit_komuditi']) <= min_komoditi) {
|
||||
$("#daftar_gadai").prop('disabled', false);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Unit Komoditi Berbaki Minima',
|
||||
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
||||
});
|
||||
$("#daftar_gadai").prop('disabled', false);
|
||||
event.preventDefault();
|
||||
return false;
|
||||
} else {
|
||||
if (Number(data['unit_komuditi']) <= min_komoditi) {
|
||||
$("#daftar_gadai").prop('disabled', false);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Unit Komoditi Berbaki Minima',
|
||||
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
||||
});
|
||||
event.preventDefault();
|
||||
return false;
|
||||
if (icbaru.length > 0) {
|
||||
window.location.href =
|
||||
"{{ route('gadaian', ['noic' => $customer_info['kpbaru']]) }}";
|
||||
} else {
|
||||
if (icbaru.length > 0) {
|
||||
window.location.href =
|
||||
"{{ route('gadaian', ['noic' => $customer_info['kpbaru']]) }}";
|
||||
} else {
|
||||
window.location.href =
|
||||
"{{ route('gadaian', ['noic' => $customer_info['kplama']]) }}";
|
||||
}
|
||||
window.location.href =
|
||||
"{{ route('gadaian', ['noic' => $customer_info['kplama']]) }}";
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('a[data-toggle="tab"]').on('shown.bs.tab', function () {
|
||||
if (typeof adjustErahnDatatables === 'function') {
|
||||
adjustErahnDatatables();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
|
||||
// here is the new selected tab id
|
||||
var selectedTabId = e.target.id;
|
||||
|
||||
});
|
||||
|
||||
var tablegadai = $('#myTable').DataTable({
|
||||
"scrollX": false,
|
||||
order: [
|
||||
[1, 'desc']
|
||||
var tablegadai = initErahnDatatable('#myTable', {
|
||||
order: [[1, 'desc']],
|
||||
columnDefs: [
|
||||
{ targets: 0, orderable: false, width: '40px' },
|
||||
{ targets: -1, orderable: false, searchable: false, width: '70px' }
|
||||
]
|
||||
});
|
||||
|
||||
var xtawarruq = $('#xtawarruq').DataTable({
|
||||
"scrollX": false
|
||||
var xtawarruq = initErahnDatatable('#xtawarruq', {
|
||||
columnDefs: [
|
||||
{ targets: 0, orderable: false, width: '40px' }
|
||||
]
|
||||
});
|
||||
|
||||
var tabledahtebus = $('#dahtebusTable').DataTable({});
|
||||
var tabledahtebus = initErahnDatatable('#dahtebusTable');
|
||||
|
||||
var tablelelong = $('#lelongTable').DataTable({
|
||||
"scrollX": false
|
||||
var tablelelong = initErahnDatatable('#lelongTable', {
|
||||
columnDefs: [
|
||||
{ targets: -1, orderable: false, searchable: false, width: '80px' }
|
||||
]
|
||||
});
|
||||
|
||||
var historybayarandatatable = $('#tablehistorybayaran').DataTable({
|
||||
@@ -812,6 +813,41 @@
|
||||
minimumFractionDigits: 2
|
||||
});
|
||||
|
||||
function urlBorangOnline(norujukan) {
|
||||
return '{{ url("/gadai/borang-pengesahan-online") }}/' + encodeURIComponent(norujukan);
|
||||
}
|
||||
|
||||
function cetakBorangOnlineCell(gadai_detail) {
|
||||
var cara = String(gadai_detail['cara_terima'] || '').toUpperCase();
|
||||
if (cara !== 'ONLINE') {
|
||||
return '';
|
||||
}
|
||||
return '<a class="btn btn-sm btn-info" href="' + urlBorangOnline(gadai_detail['norujukan']) +
|
||||
'" target="_blank" title="Cetak borang pengesahan online"><i class="fas fa-print"></i></a>';
|
||||
}
|
||||
|
||||
function cetakBorangOnlineSelected() {
|
||||
var selected = $('input[name="belum"]:checked');
|
||||
if (!selected.length) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Sila pilih SAG',
|
||||
text: 'Pilih pembiayaan untuk cetak borang pengesahan.'
|
||||
});
|
||||
return;
|
||||
}
|
||||
var cara = String(selected.data('cara-terima') || '').toUpperCase();
|
||||
if (cara !== 'ONLINE') {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Bukan pembiayaan online',
|
||||
text: 'Borang ini hanya untuk SAG yang terima pembiayaan secara online.'
|
||||
});
|
||||
return;
|
||||
}
|
||||
window.open(urlBorangOnline(selected.val()), '_blank');
|
||||
}
|
||||
|
||||
function getGadaiByNorujukan(norujukan) {
|
||||
console.log(norujukan);
|
||||
let gadai_tawarruq = fetch(api_url + '/api/gadai/norujukan/' + norujukan);
|
||||
@@ -971,7 +1007,7 @@
|
||||
var channel = pusher.subscribe(
|
||||
'notice-kelulusan');
|
||||
channel.bind('my-kelulusan', function(
|
||||
data) {
|
||||
data) {
|
||||
|
||||
|
||||
if (data.norujukan ==
|
||||
@@ -995,7 +1031,7 @@
|
||||
},
|
||||
success: function(
|
||||
data
|
||||
) {
|
||||
) {
|
||||
location
|
||||
.reload();
|
||||
|
||||
@@ -1004,17 +1040,18 @@
|
||||
xhr,
|
||||
status,
|
||||
error
|
||||
) {
|
||||
) {
|
||||
var err =
|
||||
eval(
|
||||
"(" +
|
||||
xhr
|
||||
.responseText +
|
||||
")"
|
||||
);
|
||||
);
|
||||
alert
|
||||
(xhr
|
||||
.responseText);
|
||||
.responseText
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -1212,8 +1249,8 @@
|
||||
|
||||
let table_norujukan = gadai_detail["norujukan"];
|
||||
tablegadai.row.add([
|
||||
'<input type="radio" value=' + gadai_detail["norujukan"] +
|
||||
' name="belum"/>',
|
||||
'<input type="radio" value="' + gadai_detail["norujukan"] +
|
||||
'" name="belum" data-cara-terima="' + (gadai_detail['cara_terima'] || '') + '"/>',
|
||||
'<a href="#" onclick="checkserah(this)" data-pinjaman=' +
|
||||
gadai_detail['pinjaman'] + ' data-hargajualan=' +
|
||||
gadai_detail['hargajualan'] + ' data-norujukan=' +
|
||||
@@ -1230,6 +1267,7 @@
|
||||
'RM ' + formatter.format(upahsemasa['pendapatan']),
|
||||
'<div style="white-space: nowrap; color:red; font-weight: bolder">' +
|
||||
taglel + '</div>',
|
||||
cetakBorangOnlineCell(gadai_detail),
|
||||
]).draw();
|
||||
}
|
||||
} else if (jenistebus == "sudah_tebus") {
|
||||
@@ -1242,7 +1280,7 @@
|
||||
'RM ' + formatter.format(gadai_detail['bakipjm']),
|
||||
(((Number(gadai_detail['pinjaman']) / Number(gadai_detail[
|
||||
'nilaimarhun'])) * 100).toFixed(2)).toLocaleString(
|
||||
"en-GB") + '%',
|
||||
"en-GB") + '%',
|
||||
gadai_detail['tempoh']
|
||||
]).draw();
|
||||
} else if (jenistebus == "lelong") {
|
||||
@@ -1273,7 +1311,7 @@
|
||||
'<a href="#" onclick="checktuntutbaki(this)" data-norujukan=' +
|
||||
gadai_detail['norujukan'] + ' data-tarikhtuntut=' +
|
||||
gadai_detail['trkhtuntut'] + '>' + gadai_detail[
|
||||
'norujukan'] + '</a>',
|
||||
'norujukan'] + '</a>',
|
||||
gadai_detail['t_lelong'],
|
||||
gadai_detail['trkhtuntut'],
|
||||
'RM ' + formatter.format(gadai_detail['pinjaman']),
|
||||
@@ -1290,7 +1328,7 @@
|
||||
'<a href="#" onclick="checktuntutbaki(this)" data-norujukan=' +
|
||||
gadai_detail['norujukan'] + ' data-tarikhtuntut=' +
|
||||
gadai_detail['trkhtuntut'] + '>' + gadai_detail[
|
||||
'norujukan'] + '</a>',
|
||||
'norujukan'] + '</a>',
|
||||
gadai_detail['t_lelong'],
|
||||
gadai_detail['trkhtuntut'],
|
||||
'RM ' + formatter.format(gadai_detail['pinjaman']),
|
||||
@@ -1549,6 +1587,9 @@
|
||||
success: function(data) {
|
||||
$('#myTable').parents('div.dataTables_wrapper').first().show();
|
||||
gadaiTable(data, "belum_tebus");
|
||||
if (typeof adjustErahnDatatables === 'function') {
|
||||
adjustErahnDatatables();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2164,10 +2205,10 @@
|
||||
cancelButtonText: 'Salah',
|
||||
reverseButtons: true
|
||||
}).then((
|
||||
result) => {
|
||||
result) => {
|
||||
if (result
|
||||
.isConfirmed
|
||||
) {
|
||||
) {
|
||||
|
||||
$.ajax({
|
||||
method: 'put',
|
||||
@@ -2181,11 +2222,11 @@
|
||||
},
|
||||
success: function(
|
||||
data
|
||||
) {
|
||||
) {
|
||||
|
||||
if (data ===
|
||||
1
|
||||
) {
|
||||
) {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berjaya!',
|
||||
@@ -2220,7 +2261,7 @@
|
||||
Swal
|
||||
.DismissReason
|
||||
.cancel
|
||||
) {
|
||||
) {
|
||||
PengesahanAkhirWakil
|
||||
.fire(
|
||||
'Batal',
|
||||
@@ -2242,12 +2283,12 @@
|
||||
daftarwakilfunction
|
||||
(amaun,
|
||||
norujukan
|
||||
);
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(xhr, status,
|
||||
error) {
|
||||
error) {
|
||||
var err = eval("(" + xhr
|
||||
.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
@@ -2479,7 +2520,7 @@
|
||||
success: function(data) {},
|
||||
error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText +
|
||||
")");
|
||||
")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
@@ -2527,7 +2568,7 @@
|
||||
location
|
||||
.reload();
|
||||
}
|
||||
);
|
||||
);
|
||||
} else {
|
||||
swalWithBootstrapButtons
|
||||
.fire(
|
||||
@@ -2540,7 +2581,7 @@
|
||||
location
|
||||
.reload();
|
||||
}
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -2554,10 +2595,10 @@
|
||||
xhr
|
||||
.responseText +
|
||||
")"
|
||||
);
|
||||
);
|
||||
alert(xhr
|
||||
.responseText
|
||||
);
|
||||
);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
@@ -2716,10 +2757,10 @@
|
||||
'Maklumat Pembiayaan telah dihapuskan.',
|
||||
'success'
|
||||
).then(
|
||||
function() {
|
||||
location
|
||||
.reload();
|
||||
});
|
||||
function() {
|
||||
location
|
||||
.reload();
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -2805,6 +2846,9 @@
|
||||
url: api_url + "/api/customers/" + noic + "/gadai/belum_tebus/" + kodcaw,
|
||||
success: function(data) {
|
||||
gadaiTable(data, "belum_tebus");
|
||||
if (typeof adjustErahnDatatables === 'function') {
|
||||
adjustErahnDatatables();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,354 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ms">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Dummy — Borang Kelulusan Batch Pembiayaan Online</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #e8eaed;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #111;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
padding: 10px 16px;
|
||||
background: #1f3a5f;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
}
|
||||
.toolbar b { letter-spacing: 0.04em; }
|
||||
.toolbar .hint { opacity: 0.85; }
|
||||
.toolbar button {
|
||||
border: 0;
|
||||
background: #fff;
|
||||
color: #1f3a5f;
|
||||
font-weight: bold;
|
||||
padding: 8px 16px;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.sheet-wrap {
|
||||
padding: 24px 0 48px;
|
||||
}
|
||||
|
||||
.sheet {
|
||||
width: 210mm;
|
||||
min-height: 297mm;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
padding: 14mm 12mm 16mm;
|
||||
box-shadow: 0 2px 12px rgba(0,0,0,.18);
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
margin: 14px 0 4px;
|
||||
}
|
||||
.title h1 {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.title p {
|
||||
margin: 4px 0 0;
|
||||
font-size: 10px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-top: 12px;
|
||||
}
|
||||
.section-title {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
background: #eef1f4;
|
||||
border: 1px solid #111;
|
||||
border-bottom: 0;
|
||||
padding: 5px 8px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
table.fields {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 11px;
|
||||
}
|
||||
table.fields th,
|
||||
table.fields td {
|
||||
border: 1px solid #111;
|
||||
padding: 6px 8px;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
table.fields th {
|
||||
width: 22%;
|
||||
font-weight: normal;
|
||||
background: #fafbfc;
|
||||
color: #222;
|
||||
}
|
||||
table.fields td.amt {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
|
||||
table.lines {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 9.5px;
|
||||
}
|
||||
table.lines th,
|
||||
table.lines td {
|
||||
border: 1px solid #111;
|
||||
padding: 4px 5px;
|
||||
vertical-align: top;
|
||||
}
|
||||
table.lines thead th {
|
||||
background: #eef1f4;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
font-size: 8.5px;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
table.lines td.num { text-align: center; }
|
||||
table.lines td.amt { text-align: right; white-space: nowrap; }
|
||||
table.lines tfoot td {
|
||||
font-weight: bold;
|
||||
background: #fafbfc;
|
||||
}
|
||||
|
||||
.akuan {
|
||||
font-size: 11px;
|
||||
line-height: 1.55;
|
||||
border: 1px solid #111;
|
||||
padding: 10px 12px;
|
||||
}
|
||||
.akuan ol {
|
||||
margin: 6px 0 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.akuan li { margin-bottom: 4px; }
|
||||
|
||||
.signs {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.sign-box {
|
||||
border: 1px solid #111;
|
||||
min-height: 160px;
|
||||
padding: 8px 10px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.sign-box .role {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding-bottom: 4px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.sign-line {
|
||||
margin-top: 72px;
|
||||
border-top: 1px solid #111;
|
||||
padding-top: 6px;
|
||||
}
|
||||
.sign-line p { margin: 2px 0; }
|
||||
|
||||
@page {
|
||||
size: A4;
|
||||
margin: 10mm;
|
||||
}
|
||||
|
||||
@media print {
|
||||
body { background: #fff; }
|
||||
.toolbar { display: none !important; }
|
||||
.sheet-wrap { padding: 0; }
|
||||
.sheet {
|
||||
width: auto;
|
||||
min-height: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@php
|
||||
$cawangan = 'KOTA BHARU 2';
|
||||
$kodcaw = 'KB2';
|
||||
$alamat1 = 'Lot 123, Jalan Sultan Yahya Petra';
|
||||
$alamat2 = '15200 Kota Bharu, Kelantan';
|
||||
$notel = '09-123 4567';
|
||||
$tarikh = '03/09/2026';
|
||||
$batchNo = 'KB2-PO-20260903-B1-001';
|
||||
$slot = 'BATCH1';
|
||||
$status = 'SUBMITTED';
|
||||
$dihantarOleh = 'NUR AINA BINTI HASSAN';
|
||||
$dihantarPada = '03/09/2026 10:42';
|
||||
$opsBy = 'MOHD FAIZ BIN ISMAIL';
|
||||
|
||||
$lines = [
|
||||
['norujukan' => 'KB2-260903-0001', 'nama' => 'AHMAD BIN ABDULLAH', 'nokp' => '900101-03-1234', 'bank' => 'MAYBANK', 'noakaun' => '123456789012', 'nama_akaun' => 'AHMAD BIN ABDULLAH', 'pinjaman' => 15000.00],
|
||||
['norujukan' => 'KB2-260903-0004', 'nama' => 'SITI MARIAM BINTI YUSOF', 'nokp' => '850215-03-5678', 'bank' => 'CIMB', 'noakaun' => '800123456789', 'nama_akaun' => 'SITI MARIAM BINTI YUSOF', 'pinjaman' => 8200.50],
|
||||
['norujukan' => 'KB2-260903-0007', 'nama' => 'MOHD RAZAK BIN ALI', 'nokp' => '780930-03-1122', 'bank' => 'BANK ISLAM', 'noakaun' => '140234567890', 'nama_akaun' => 'MOHD RAZAK BIN ALI', 'pinjaman' => 5000.00],
|
||||
['norujukan' => 'KB2-260903-0010', 'nama' => 'FATIMAH BINTI OMAR', 'nokp' => '920408-03-3344', 'bank' => 'RHB', 'noakaun' => '212345678901', 'nama_akaun' => 'FATIMAH BINTI OMAR', 'pinjaman' => 12500.00],
|
||||
['norujukan' => 'KB2-260903-0012', 'nama' => 'HASSAN BIN IBRAHIM', 'nokp' => '700112-03-5566', 'bank' => 'MAYBANK', 'noakaun' => '156789012345', 'nama_akaun' => 'HASSAN BIN IBRAHIM', 'pinjaman' => 3400.00],
|
||||
];
|
||||
$jumlah = array_sum(array_column($lines, 'pinjaman'));
|
||||
@endphp
|
||||
|
||||
<div class="toolbar">
|
||||
<div>
|
||||
<b>DUMMY FORM</b>
|
||||
<span class="hint"> — reka bentuk borang kelulusan batch pembiayaan online (Operasi). Data ini contoh sahaja.</span>
|
||||
</div>
|
||||
<button type="button" onclick="window.print()">Cetak / Pratinjau</button>
|
||||
</div>
|
||||
|
||||
<div class="sheet-wrap">
|
||||
<div class="sheet">
|
||||
<x-print.header
|
||||
:cawangan="$cawangan"
|
||||
:kodcaw="$kodcaw"
|
||||
:alamat1="$alamat1"
|
||||
:alamat2="$alamat2"
|
||||
:notel="$notel"
|
||||
:tarikh="$tarikh"
|
||||
:norujukan="$batchNo"
|
||||
rujukan-label="No. Batch"
|
||||
:show-dummy-badge="true"
|
||||
/>
|
||||
|
||||
<div class="title">
|
||||
<h1>Borang Kelulusan Pembiayaan Online<br>Senarai Batch Pembayaran</h1>
|
||||
<p>Untuk semakan Operasi dan kelulusan Pengurus Besar. Bukan untuk tandatangan pelanggan.</p>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">A. Maklumat Batch</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>No. Batch</th>
|
||||
<td>{{ $batchNo }}</td>
|
||||
<th>Cawangan</th>
|
||||
<td>{{ $kodcaw }} — {{ $cawangan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Tarikh / Slot</th>
|
||||
<td>{{ $tarikh }} · {{ $slot }}</td>
|
||||
<th>Status Batch</th>
|
||||
<td>{{ $status }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Dihantar Oleh (PC)</th>
|
||||
<td>{{ $dihantarOleh }}</td>
|
||||
<th>Dihantar Pada</th>
|
||||
<td>{{ $dihantarPada }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Bilangan Rekod</th>
|
||||
<td>{{ count($lines) }}</td>
|
||||
<th>Jumlah Keseluruhan</th>
|
||||
<td class="amt">RM {{ number_format($jumlah, 2) }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">B. Senarai Penerima Dalam Batch</div>
|
||||
<table class="lines">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:4%">Bil</th>
|
||||
<th style="width:14%">No. SAG</th>
|
||||
<th>Pelanggan</th>
|
||||
<th style="width:13%">No. KP</th>
|
||||
<th style="width:11%">Bank</th>
|
||||
<th style="width:13%">No. Akaun</th>
|
||||
<th>Nama Akaun</th>
|
||||
<th style="width:12%">Pinjaman (RM)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($lines as $i => $line)
|
||||
<tr>
|
||||
<td class="num">{{ $i + 1 }}</td>
|
||||
<td class="num">{{ $line['norujukan'] }}</td>
|
||||
<td>{{ $line['nama'] }}</td>
|
||||
<td class="num">{{ $line['nokp'] }}</td>
|
||||
<td>{{ $line['bank'] }}</td>
|
||||
<td class="num">{{ $line['noakaun'] }}</td>
|
||||
<td>{{ $line['nama_akaun'] }}</td>
|
||||
<td class="amt">{{ number_format($line['pinjaman'], 2) }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="7" style="text-align:right">JUMLAH</td>
|
||||
<td class="amt">{{ number_format($jumlah, 2) }}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">C. Pengesahan Operasi</div>
|
||||
<div class="akuan">
|
||||
Dengan ini disahkan bahawa senarai di Bahagian B telah disemak dan amaun pembiayaan
|
||||
sebanyak <b>RM {{ number_format($jumlah, 2) }}</b> ({{ count($lines) }} rekod)
|
||||
bagi batch <b>{{ $batchNo }}</b> cawangan <b>{{ $cawangan }}</b> adalah lengkap
|
||||
untuk proses pembayaran ke akaun bank pelanggan.
|
||||
<ol>
|
||||
<li>Maklumat SAG, nama, no. KP, bank dan no. akaun telah disemak terhadap rekod sistem.</li>
|
||||
<li>Pembayaran akan dikreditkan ke akaun penerima seperti senarai, bukan tunai di kaunter.</li>
|
||||
<li>Sebarang ralat akaun yang dikesan selepas kelulusan hendaklah dilaporkan serta-merta.</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="signs">
|
||||
<div class="sign-box">
|
||||
<div class="role">Tandatangan Operasi</div>
|
||||
<div class="sign-line">
|
||||
<p>Nama: {{ $opsBy }}</p>
|
||||
<p>Jawatan: Operasi</p>
|
||||
<p>Tarikh: {{ $tarikh }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sign-box">
|
||||
<div class="role">Pengurus Besar</div>
|
||||
<div class="sign-line">
|
||||
<p>Nama:</p>
|
||||
<p>Cop / Paraf:</p>
|
||||
<p>Tarikh:</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<x-print.footer :show-copies="false">
|
||||
<b>Nota:</b>
|
||||
<p>1. Borang ini dicetak dari skrin Operasi — Pembiayaan Online (Batch) untuk kelulusan pembayaran.</p>
|
||||
<p>2. Hanya dua tandatangan diperlukan: Operasi dan Pengurus Besar.</p>
|
||||
<p>3. Simpan salinan bersama bukti pindahan bank selepas status PAID.</p>
|
||||
</x-print.footer>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,322 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ms">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Dummy — Borang Pengesahan Pembiayaan Online</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #e8eaed;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #111;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
padding: 10px 16px;
|
||||
background: #1f3a5f;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
}
|
||||
.toolbar b { letter-spacing: 0.04em; }
|
||||
.toolbar .hint { opacity: 0.85; }
|
||||
.toolbar button {
|
||||
border: 0;
|
||||
background: #fff;
|
||||
color: #1f3a5f;
|
||||
font-weight: bold;
|
||||
padding: 8px 16px;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.sheet-wrap {
|
||||
padding: 24px 0 48px;
|
||||
}
|
||||
|
||||
.sheet {
|
||||
width: 210mm;
|
||||
min-height: 297mm;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
padding: 14mm 14mm 16mm;
|
||||
box-shadow: 0 2px 12px rgba(0,0,0,.18);
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
margin: 14px 0 4px;
|
||||
}
|
||||
.title h1 {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.title p {
|
||||
margin: 4px 0 0;
|
||||
font-size: 10px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-top: 12px;
|
||||
}
|
||||
.section-title {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
background: #eef1f4;
|
||||
border: 1px solid #111;
|
||||
border-bottom: 0;
|
||||
padding: 5px 8px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
table.fields {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 11px;
|
||||
}
|
||||
table.fields th,
|
||||
table.fields td {
|
||||
border: 1px solid #111;
|
||||
padding: 6px 8px;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
table.fields th {
|
||||
width: 28%;
|
||||
font-weight: normal;
|
||||
background: #fafbfc;
|
||||
color: #222;
|
||||
}
|
||||
table.fields td.amt {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
|
||||
.akuan {
|
||||
font-size: 11px;
|
||||
line-height: 1.55;
|
||||
border: 1px solid #111;
|
||||
padding: 10px 12px;
|
||||
}
|
||||
.akuan ol {
|
||||
margin: 6px 0 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.akuan li { margin-bottom: 4px; }
|
||||
|
||||
.signs {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
gap: 10px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.sign-box {
|
||||
border: 1px solid #111;
|
||||
min-height: 150px;
|
||||
padding: 8px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.sign-box .role {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding-bottom: 4px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.sign-line {
|
||||
margin-top: 62px;
|
||||
border-top: 1px solid #111;
|
||||
padding-top: 6px;
|
||||
}
|
||||
.sign-line p { margin: 2px 0; }
|
||||
|
||||
@page {
|
||||
size: A4;
|
||||
margin: 10mm;
|
||||
}
|
||||
|
||||
@media print {
|
||||
body { background: #fff; }
|
||||
.toolbar { display: none !important; }
|
||||
.sheet-wrap { padding: 0; }
|
||||
.sheet {
|
||||
width: auto;
|
||||
min-height: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@php
|
||||
// Dummy data — replace later with real gadai / customer / bank values
|
||||
$cawangan = 'KOTA BHARU 2';
|
||||
$kodcaw = 'KB2';
|
||||
$alamat1 = 'Lot 123, Jalan Sultan Yahya Petra';
|
||||
$alamat2 = '15200 Kota Bharu, Kelantan';
|
||||
$notel = '09-123 4567';
|
||||
$norujukan = 'KB2-260903-0001';
|
||||
$tarikh = '03/09/2026';
|
||||
$teller = 'SITI AMINAH BINTI ALI';
|
||||
$nama = 'AHMAD BIN ABDULLAH';
|
||||
$nokp = '900101-03-1234';
|
||||
$nopelanggan = 'KB2001234';
|
||||
$telefon = '012-3456789';
|
||||
$pinjaman = '15,000.00';
|
||||
$bank = 'Malayan Banking Berhad (MAYBANK)';
|
||||
$noakaun = '123456789012';
|
||||
$nama_akaun = 'AHMAD BIN ABDULLAH';
|
||||
@endphp
|
||||
|
||||
<div class="toolbar">
|
||||
<div>
|
||||
<b>DUMMY FORM</b>
|
||||
<span class="hint"> — reka bentuk borang pengesahan pembiayaan online. Data ini contoh sahaja.</span>
|
||||
</div>
|
||||
<button type="button" onclick="window.print()">Cetak / Pratinjau</button>
|
||||
</div>
|
||||
|
||||
<div class="sheet-wrap">
|
||||
<div class="sheet">
|
||||
<x-print.header
|
||||
:cawangan="$cawangan"
|
||||
:kodcaw="$kodcaw"
|
||||
:alamat1="$alamat1"
|
||||
:alamat2="$alamat2"
|
||||
:notel="$notel"
|
||||
:tarikh="$tarikh"
|
||||
:show-dummy-badge="true"
|
||||
/>
|
||||
|
||||
<div class="title">
|
||||
<h1>Borang Pengesahan Penerimaan Pembiayaan<br>Secara Online (Akaun Bank)</h1>
|
||||
<p>Untuk diisi dan ditandatangani oleh pelanggan semasa transaksi gadai.</p>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">A. Maklumat Pelanggan</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>Nama Pelanggan</th>
|
||||
<td colspan="3">{{ $nama }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>No. MyKad / Passport</th>
|
||||
<td>{{ $nokp }}</td>
|
||||
<th style="width:22%">No. Pelanggan</th>
|
||||
<td>{{ $nopelanggan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>No. Telefon</th>
|
||||
<td>{{ $telefon }}</td>
|
||||
<th>Cawangan</th>
|
||||
<td>{{ $cawangan }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">B. Maklumat Pembiayaan</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>No. Surat Akuan Gadai</th>
|
||||
<td>{{ $norujukan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Amaun Pembiayaan</th>
|
||||
<td class="amt">RM {{ $pinjaman }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Cara Terima Pembiayaan</th>
|
||||
<td>Online (kredit ke akaun bank) — bukan tunai</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Teller</th>
|
||||
<td>{{ $teller }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">C. Maklumat Akaun Bank Penerima</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>Nama Bank</th>
|
||||
<td>{{ $bank }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>No. Akaun</th>
|
||||
<td>{{ $noakaun }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Nama Pemegang Akaun</th>
|
||||
<td>{{ $nama_akaun }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">D. Akuan Pelanggan</div>
|
||||
<div class="akuan">
|
||||
Saya, <b>{{ $nama }}</b> (No. KP: <b>{{ $nokp }}</b>), dengan ini mengesahkan bahawa:
|
||||
<ol>
|
||||
<li>Maklumat akaun bank di Bahagian C adalah benar, tepat, dan milik saya sendiri.</li>
|
||||
<li>Saya memohon supaya amaun pembiayaan gadai sebanyak <b>RM {{ $pinjaman }}</b> dikreditkan ke akaun tersebut dan <b>bukan</b> diterima secara tunai.</li>
|
||||
<li>Saya faham kredit ke akaun tertakluk kepada semakan Pengurus Cawangan dan proses pembayaran pihak Koperasi.</li>
|
||||
<li>Saya bertanggungjawab sepenuhnya jika maklumat akaun tidak tepat, dan tidak akan menuntut ganti rugi atas kelewatan atau ralat yang berpunca daripadanya.</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="signs">
|
||||
<div class="sign-box">
|
||||
<div class="role">Tandatangan Pelanggan</div>
|
||||
<div class="sign-line">
|
||||
<p>Nama: {{ $nama }}</p>
|
||||
<p>No. KP: {{ $nokp }}</p>
|
||||
<p>Tarikh: {{ $tarikh }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sign-box">
|
||||
<div class="role">Tandatangan Teller</div>
|
||||
<div class="sign-line">
|
||||
<p>Nama: {{ $teller }}</p>
|
||||
<p>Cop / Paraf:</p>
|
||||
<p>Tarikh: {{ $tarikh }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sign-box">
|
||||
<div class="role">Pengurus Cawangan</div>
|
||||
<div class="sign-line">
|
||||
<p>Nama:</p>
|
||||
<p>Cop cawangan:</p>
|
||||
<p>Tarikh:</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<x-print.footer>
|
||||
<b>Nota:</b>
|
||||
<p>1. Borang ini dicetak semasa pelanggan memilih cara terima pembiayaan secara Online.</p>
|
||||
<p>2. Pembiayaan akan dikreditkan ke akaun selepas semakan PC. Pelanggan tidak menerima wang tunai di kaunter.</p>
|
||||
<p>3. Sila pastikan nama pemegang akaun sepadan dengan nama pelanggan pada MyKad.</p>
|
||||
</x-print.footer>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,292 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ms">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Dummy — Maklumat Pelanggan</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #e8eaed;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #111;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
padding: 10px 16px;
|
||||
background: #1f3a5f;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
}
|
||||
.toolbar b { letter-spacing: 0.04em; }
|
||||
.toolbar .hint { opacity: 0.85; }
|
||||
.toolbar button {
|
||||
border: 0;
|
||||
background: #fff;
|
||||
color: #1f3a5f;
|
||||
font-weight: bold;
|
||||
padding: 8px 16px;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.sheet-wrap {
|
||||
padding: 24px 0 48px;
|
||||
}
|
||||
|
||||
.sheet {
|
||||
width: 210mm;
|
||||
min-height: 297mm;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
padding: 14mm 14mm 16mm;
|
||||
box-shadow: 0 2px 12px rgba(0,0,0,.18);
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
margin: 14px 0 4px;
|
||||
}
|
||||
.title h1 {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.title p {
|
||||
margin: 4px 0 0;
|
||||
font-size: 10px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.identity {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 32mm;
|
||||
gap: 12px;
|
||||
align-items: start;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.photo-box {
|
||||
width: 32mm;
|
||||
text-align: center;
|
||||
}
|
||||
.photo-box img {
|
||||
display: block;
|
||||
width: 32mm;
|
||||
height: 42mm;
|
||||
object-fit: cover;
|
||||
border: 1px solid #111;
|
||||
background: #eef1f4;
|
||||
}
|
||||
.photo-box .caption {
|
||||
margin-top: 4px;
|
||||
font-size: 8.5px;
|
||||
color: #444;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-top: 12px;
|
||||
}
|
||||
.section-title {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
background: #eef1f4;
|
||||
border: 1px solid #111;
|
||||
border-bottom: 0;
|
||||
padding: 5px 8px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
table.fields {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 11px;
|
||||
}
|
||||
table.fields th,
|
||||
table.fields td {
|
||||
border: 1px solid #111;
|
||||
padding: 6px 8px;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
table.fields th {
|
||||
width: 28%;
|
||||
font-weight: normal;
|
||||
background: #fafbfc;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
@page {
|
||||
size: A4;
|
||||
margin: 10mm;
|
||||
}
|
||||
|
||||
@media print {
|
||||
body { background: #fff; }
|
||||
.toolbar { display: none !important; }
|
||||
.sheet-wrap { padding: 0; }
|
||||
.sheet {
|
||||
width: auto;
|
||||
min-height: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@php
|
||||
$cawangan = 'KOTA BHARU 2';
|
||||
$kodcaw = 'KB2';
|
||||
$alamat1 = 'Lot 123, Jalan Sultan Yahya Petra';
|
||||
$alamat2 = '15200 Kota Bharu, Kelantan';
|
||||
$notel = '09-123 4567';
|
||||
$tarikh = now()->format('d/m/Y');
|
||||
|
||||
$nama = 'AHMAD BIN ABDULLAH';
|
||||
$nokp = '900101-03-1234';
|
||||
$nopelanggan = 'KB2001234';
|
||||
$telefon = '012-3456789';
|
||||
$telefon2 = '09-765 4321';
|
||||
$alamat = 'Lot 45, Kampung Sireh';
|
||||
$poskod = '15050';
|
||||
$daerah = 'Kota Bharu';
|
||||
$negeri = 'Kelantan';
|
||||
$bank = 'Malayan Banking Berhad (MAYBANK)';
|
||||
$noakaun = '123456789012';
|
||||
$pekerjaan = 'Kakitangan Kerajaan';
|
||||
$nota = 'Pelanggan tetap cawangan KB2.';
|
||||
$status = 'Anggota Koperasi';
|
||||
|
||||
$photo_svg = '<svg xmlns="http://www.w3.org/2000/svg" width="240" height="320" viewBox="0 0 240 320">'
|
||||
. '<rect fill="#d9dee5" width="240" height="320"/>'
|
||||
. '<circle cx="120" cy="118" r="52" fill="#8b949e"/>'
|
||||
. '<ellipse cx="120" cy="286" rx="90" ry="92" fill="#8b949e"/>'
|
||||
. '</svg>';
|
||||
$photo_src = 'data:image/svg+xml;base64,' . base64_encode($photo_svg);
|
||||
@endphp
|
||||
|
||||
<div class="toolbar">
|
||||
<div>
|
||||
<b>DUMMY FORM</b>
|
||||
<span class="hint"> — reka bentuk cetakan A4 maklumat pelanggan. Data ini contoh sahaja.</span>
|
||||
</div>
|
||||
<button type="button" onclick="window.print()">Cetak / Pratinjau</button>
|
||||
</div>
|
||||
|
||||
<div class="sheet-wrap">
|
||||
<div class="sheet">
|
||||
<x-print.header
|
||||
:cawangan="$cawangan"
|
||||
:kodcaw="$kodcaw"
|
||||
:alamat1="$alamat1"
|
||||
:alamat2="$alamat2"
|
||||
:notel="$notel"
|
||||
:tarikh="$tarikh"
|
||||
:norujukan="$nopelanggan"
|
||||
rujukan-label="No. Pelanggan"
|
||||
:show-dummy-badge="true"
|
||||
/>
|
||||
|
||||
<div class="title">
|
||||
<h1>Maklumat Pelanggan</h1>
|
||||
<p>Salinan maklumat pengenalan diri pelanggan untuk rujukan cawangan.</p>
|
||||
</div>
|
||||
|
||||
<div class="identity">
|
||||
<div>
|
||||
<div class="section-title">A. Pengenalan Diri</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>Nama</th>
|
||||
<td>{{ $nama }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>No. Kad Pengenalan</th>
|
||||
<td>{{ $nokp }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>No. Pelanggan</th>
|
||||
<td>{{ $nopelanggan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Status</th>
|
||||
<td>{{ $status }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="photo-box">
|
||||
<img src="{{ $photo_src }}" alt="Gambar MyKad">
|
||||
<div class="caption">Gambar MyKad</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">B. Maklumat Hubungan & Alamat</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>No. Telefon 1</th>
|
||||
<td>{{ $telefon }}</td>
|
||||
<th style="width:22%">No. Telefon 2</th>
|
||||
<td>{{ $telefon2 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Alamat</th>
|
||||
<td colspan="3">{{ $alamat }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Poskod</th>
|
||||
<td>{{ $poskod }}</td>
|
||||
<th>Daerah</th>
|
||||
<td>{{ $daerah }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Negeri</th>
|
||||
<td colspan="3">{{ $negeri }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">C. Bank & Pekerjaan</div>
|
||||
<table class="fields">
|
||||
<tr>
|
||||
<th>Bank</th>
|
||||
<td colspan="3">{{ $bank }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>No. Akaun</th>
|
||||
<td colspan="3">{{ $noakaun }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Pekerjaan</th>
|
||||
<td colspan="3">{{ $pekerjaan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Nota</th>
|
||||
<td colspan="3">{{ $nota }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<x-print.footer :show-copies="false">
|
||||
<b>Nota:</b>
|
||||
<p>1. Borang ini dicetak dari skrin Maklumat Pelanggan untuk rujukan cawangan.</p>
|
||||
<p>2. Gambar diambil daripada rekod MyKad pelanggan dalam sistem.</p>
|
||||
</x-print.footer>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -34,7 +34,7 @@
|
||||
getPusherResponse();
|
||||
|
||||
async function getPusherResponse(){
|
||||
let api_url = "<?php echo $api_url ?>";
|
||||
let api_url = "{{ api_url_for_browser() }}";
|
||||
const jsonData = {
|
||||
norujukan: "{{ $errorapproval['norujukan'] }}",
|
||||
kodcaw: "{{ Auth::user()->cawangan }}",
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
$('form input').keydown(function (e) {
|
||||
if (e.keyCode == 13) {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
@endphp
|
||||
@endif
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
$('form input').keydown(function (e) {
|
||||
if (e.keyCode == 13) {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
</div>
|
||||
<script src="{{ asset('js/rounded-methods.js') }}"></script>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw_ujrah = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$('form input').keydown(function (e) {
|
||||
@@ -768,7 +768,7 @@
|
||||
|
||||
// Call API to get specific MaxMutuEmas data by karat
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/specific',
|
||||
type: 'GET',
|
||||
data: { karat: karat, nilaimarhun: nm },
|
||||
success: function(response) {
|
||||
@@ -1816,7 +1816,7 @@
|
||||
rowsData.forEach((rowData) => {
|
||||
// Call API to get margin data for each individual item
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/specific',
|
||||
type: 'GET',
|
||||
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
||||
success: function(response) {
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
<div class="form-group row col-12">
|
||||
<input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}">
|
||||
<input type="hidden" name="nokp" id="nokp" value="{{ $customer_info['kpbaru'] }}">
|
||||
<input type="hidden" name="tag_anggota" id="tag_anggota" value="{{ $customer_info['tag_anggota'] ?? 0 }}">
|
||||
|
||||
</div>
|
||||
<div class="col-12 mb-2">
|
||||
@@ -217,6 +218,68 @@
|
||||
</div>
|
||||
</diV>
|
||||
</div>
|
||||
<div class="col-12" id="cara_terima_section" style="display:none;">
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">
|
||||
Cara Terima Pembiayaan
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="cara_terima" id="cara_terima_tunai" value="TUNAI" checked>
|
||||
<label class="form-check-label" for="cara_terima_tunai">Tunai</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="cara_terima" id="cara_terima_online" value="ONLINE">
|
||||
<label class="form-check-label" for="cara_terima_online">Online (Akaun Bank)</label>
|
||||
</div>
|
||||
<small class="form-text text-muted">Pilihan Online untuk pembiayaan RM5,000 – RM50,000 sahaja.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div id="bank_online_section" style="display:none;">
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">Modal Online</div>
|
||||
<div class="col-md-9">
|
||||
<div id="modal_online_status" class="mb-1">Memeriksa baki...</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">Bank</div>
|
||||
<div class="col-md-4">
|
||||
@php
|
||||
$banks_list = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get($api_url . '/api/bank')
|
||||
->json();
|
||||
@endphp
|
||||
<select class="form-control" name="kodbank" id="gadai_kodbank">
|
||||
<option value="">-- Pilih Bank --</option>
|
||||
@foreach ($banks_list as $banks)
|
||||
<option value="{{ $banks['abbreviation'] }}"
|
||||
{{ ($customer_info['kodbank'] ?? '') == $banks['abbreviation'] ? 'selected' : '' }}
|
||||
data-nama="{{ $banks['name'] }}">
|
||||
{{ $banks['name'] }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">No. Akaun</div>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="noakaun" id="gadai_noakaun"
|
||||
value="{{ $customer_info['noakaun'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">Nama Akaun</div>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control" name="nama_akaun" id="gadai_nama_akaun"
|
||||
value="{{ $customer_info['nama'] ?? '' }}">
|
||||
<input type="hidden" name="nama_bank" id="gadai_nama_bank" value="">
|
||||
<input type="hidden" name="nama_pelanggan" value="{{ $customer_info['nama'] ?? '' }}">
|
||||
<input type="hidden" name="nopelanggan" id="nopelanggan" value="{{ $customer_info['nopelanggan'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<input type="text" name="norujukan_gadai" id="norujukan_gadai" value="{{ $norujukan }}" hidden>
|
||||
<input type="text" name="marhun_detail" id="marhun_detail" value="" hidden>
|
||||
@@ -227,6 +290,7 @@
|
||||
<input type="text" name="nokp" id="nokp" value="{{ !empty($customer_info['kpbaru']) ? $customer_info['kpbaru'] : ($customer_info['kplama'] ?? '') }}" hidden>
|
||||
<a href="{{ route('gadai.batal',['norujukan'=>$norujukan]) }}" class="float-right btn btn-danger mr-2">Batal</a>
|
||||
<input type="submit" name="terima_gadai" id="terima_gadai" class="float-right btn btn-primary mr-2" value="Terima">
|
||||
<button type="button" id="cetak_borang_online" class="float-right btn btn-info mr-2" style="display:none;">Cetak Borang</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -331,7 +395,7 @@
|
||||
@endif
|
||||
<script src="{{ asset('js/rounded-methods.js') }}"></script>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw_ujrah = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
$('form input').keydown(function (e) {
|
||||
if (e.keyCode == 13) {
|
||||
@@ -630,18 +694,23 @@
|
||||
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api_url + '/api/kadarujrah',
|
||||
async:false,
|
||||
data:{
|
||||
'nokp': $('#nokp').val(),
|
||||
'nilaimarhun' : total_nilai_marhun,
|
||||
'kodcaw' : kodcaw_ujrah
|
||||
},
|
||||
success:function(data){
|
||||
kadarupah = data;
|
||||
}
|
||||
});
|
||||
method:'GET',
|
||||
url: api_url + '/api/kadarujrah',
|
||||
async:false,
|
||||
data:{
|
||||
'nokp': $('#nokp').val(),
|
||||
'nilaimarhun' : total_nilai_marhun,
|
||||
'kodcaw' : kodcaw_ujrah
|
||||
},
|
||||
success:function(data){
|
||||
kadarupah = data;
|
||||
|
||||
// Jika anggota (tag_anggota = 1), kadar ujrah dipaksa 0.00
|
||||
if(Number($('#tag_anggota').val()) === 1){
|
||||
kadarupah = 0;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#total_nilai_marhun').val(formatter.format(total_nilai_marhun));
|
||||
$('#marhun_detail').val(marhun_details);
|
||||
@@ -684,6 +753,7 @@
|
||||
var nokp = $('#nokp').val();
|
||||
//console.log('DEBUG NOKP:', nokp, kadarupah);
|
||||
|
||||
toggleCaraTerima(pinjaman);
|
||||
|
||||
// var keuntungan_sebulan = pinjaman * kadarupah;
|
||||
// var keuntungan_6bln = keuntungan_sebulan * 6;
|
||||
@@ -1195,9 +1265,207 @@
|
||||
.then(response => response.json());
|
||||
}
|
||||
|
||||
function toggleCaraTerima(pinjaman) {
|
||||
if (pinjaman >= 5000 && pinjaman <= 50000) {
|
||||
$('#cara_terima_section').show();
|
||||
toggleBankOnlineSection();
|
||||
} else {
|
||||
$('#cara_terima_section').hide();
|
||||
$('#bank_online_section').hide();
|
||||
$('#cetak_borang_online').hide();
|
||||
$('#cara_terima_tunai').prop('checked', true);
|
||||
}
|
||||
}
|
||||
|
||||
function toggleBankOnlineSection() {
|
||||
if ($('input[name="cara_terima"]:checked').val() === 'ONLINE') {
|
||||
$('#bank_online_section').show();
|
||||
$('#cetak_borang_online').show();
|
||||
var nama = $('#gadai_kodbank option:selected').data('nama') || '';
|
||||
$('#gadai_nama_bank').val(nama);
|
||||
refreshModalOnlineStatus();
|
||||
} else {
|
||||
$('#bank_online_section').hide();
|
||||
$('#cetak_borang_online').hide();
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('change', 'input[name="cara_terima"]', function () {
|
||||
toggleBankOnlineSection();
|
||||
});
|
||||
|
||||
$(document).on('change', '#gadai_kodbank', function () {
|
||||
$('#gadai_nama_bank').val($('#gadai_kodbank option:selected').data('nama') || '');
|
||||
});
|
||||
|
||||
$(document).on('click', '#cetak_borang_online', function () {
|
||||
var kodbank = $('#gadai_kodbank').val();
|
||||
var noakaun = ($('#gadai_noakaun').val() || '').trim();
|
||||
var namaAkaun = ($('#gadai_nama_akaun').val() || '').trim();
|
||||
var namaBank = $('#gadai_kodbank option:selected').data('nama') || $('#gadai_nama_bank').val() || '';
|
||||
var pinjaman = String($('#pinjaman').val() || '').replace(/,/g, '');
|
||||
|
||||
if (!kodbank || !noakaun) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Maklumat bank tidak lengkap',
|
||||
text: 'Sila lengkapkan bank dan no. akaun sebelum cetak borang. Anda boleh betulkan dan cetak semula tanpa tekan Terima.'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
var form = $('<form>', {
|
||||
method: 'POST',
|
||||
action: '{{ route("gadai.print.borang.online.preview") }}',
|
||||
target: '_blank'
|
||||
});
|
||||
form.append($('<input>', { type: 'hidden', name: '_token', value: '{{ csrf_token() }}' }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'norujukan', value: $('#norujukan_gadai').val() || $('#norujukan').val() || '' }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'nokp', value: $('#nokp').val() || '' }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'nopelanggan', value: $('#nopelanggan').val() || '' }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'nama_pelanggan', value: $('input[name="nama_pelanggan"]').val() || '' }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'pinjaman', value: pinjaman }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'kodbank', value: kodbank }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'nama_bank', value: namaBank }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'noakaun', value: noakaun }));
|
||||
form.append($('<input>', { type: 'hidden', name: 'nama_akaun', value: namaAkaun }));
|
||||
form.appendTo('body').trigger('submit').remove();
|
||||
});
|
||||
|
||||
async function getModalOnline() {
|
||||
let kodcaw = $('#kodcaw').val();
|
||||
let apiUrl = api_url + '/api/modal-online/' + kodcaw;
|
||||
return $.ajax({
|
||||
method: 'GET',
|
||||
url: apiUrl,
|
||||
dataType: 'json',
|
||||
});
|
||||
}
|
||||
|
||||
async function refreshModalOnlineStatus() {
|
||||
var $el = $('#modal_online_status');
|
||||
$el.removeClass('text-success text-danger text-warning text-muted').addClass('text-muted').text('Memeriksa baki...');
|
||||
try {
|
||||
var modal = await getModalOnline();
|
||||
var pending = modal.pending_request || null;
|
||||
var closed = Number(modal.ditutup || 0) === 1;
|
||||
var missing = !!modal.missing;
|
||||
var baki = Number(modal.baki || 0);
|
||||
var had = Number(modal.had || 0) + Number(modal.tambah || 0);
|
||||
|
||||
if (closed) {
|
||||
$el.removeClass('text-muted').addClass('text-danger')
|
||||
.text('Modal online hari ini sudah ditutup (EOD). Gadai online tidak dibenarkan.');
|
||||
return modal;
|
||||
}
|
||||
|
||||
if (pending) {
|
||||
$el.removeClass('text-muted').addClass('text-warning')
|
||||
.text('Menunggu kelulusan Operasi: RM ' + formatter.format(Number(pending.amaun || 0)) +
|
||||
' (' + (pending.dimohon_oleh || '-') + ').');
|
||||
} else if (missing) {
|
||||
$el.removeClass('text-muted').addClass('text-danger')
|
||||
.text('Belum ada had hari ini. Sila hubungi PC.');
|
||||
} else {
|
||||
$el.removeClass('text-muted').addClass('text-success')
|
||||
.text('Baki RM ' + formatter.format(baki) + ' / Had RM ' + formatter.format(had));
|
||||
}
|
||||
return modal;
|
||||
} catch (e) {
|
||||
$el.removeClass('text-muted').addClass('text-danger').text('Gagal semak modal online.');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async function checkDisbursementFloat(pinjaman) {
|
||||
var cara = $('input[name="cara_terima"]:checked').val() || 'TUNAI';
|
||||
if (!(pinjaman >= 5000 && pinjaman <= 50000)) {
|
||||
cara = 'TUNAI';
|
||||
}
|
||||
|
||||
if (cara === 'ONLINE') {
|
||||
var kodbank = $('#gadai_kodbank').val();
|
||||
var noakaun = ($('#gadai_noakaun').val() || '').trim();
|
||||
$('#gadai_nama_bank').val($('#gadai_kodbank option:selected').data('nama') || '');
|
||||
if (!kodbank || !noakaun) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Sila lengkapkan maklumat bank untuk pembayaran online.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
var modal;
|
||||
try {
|
||||
modal = await getModalOnline();
|
||||
} catch (e) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Gagal semak modal online. Sila cuba lagi.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Number(modal.ditutup || 0) === 1) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Modal online hari ini sudah ditutup (EOD). Sila pilih Tunai.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
if (modal.pending_request) {
|
||||
Swal.fire({
|
||||
icon: 'info',
|
||||
title: 'Menunggu Operasi',
|
||||
text: 'Permohonan RM ' + formatter.format(Number(modal.pending_request.amaun || 0)) +
|
||||
' masih PENDING. Sila tunggu kelulusan Operasi atau pilih Tunai.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
if (modal.missing) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Belum ada had modal online hari ini. Sila hubungi PC.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Number(modal.baki || 0) < pinjaman) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Baki modal online tidak mencukupi. Sila hubungi PC untuk mohon tambah modal, atau pilih Tunai.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
let dataCawangan = await getDataCawangan();
|
||||
let bakiAkhir = dataCawangan.baki;
|
||||
if (bakiAkhir < pinjaman) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Baki Akhir Tunai Lebih Rendah Daripada Nilai Marhun Yang Ingin Digadaikan. Sila Tambah Pendahuluan di Laman Aliran Tunai Segera. '
|
||||
});
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
async function verifyGadai(func){
|
||||
$("#terima_gadai").prop('disabled', true);
|
||||
event.preventDefault();
|
||||
if (typeof event !== 'undefined' && event && event.preventDefault) {
|
||||
event.preventDefault();
|
||||
}
|
||||
var kodcaw = $('#kodcaw').val();
|
||||
var nokp = $('#nokp').val();
|
||||
var nopelanggan = $('#nopelanggan').val();
|
||||
@@ -1224,23 +1492,16 @@
|
||||
title: 'Amaran!',
|
||||
text: 'Pembiayaan Tidak Lengkap'
|
||||
});
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
let dataCawangan = await getDataCawangan();
|
||||
let bakiAkhir = dataCawangan.baki;
|
||||
|
||||
if(bakiAkhir < pinjaman){
|
||||
let floatOk = await checkDisbursementFloat(pinjaman);
|
||||
if (!floatOk) {
|
||||
$("#terima_gadai").prop('disabled', false);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran!',
|
||||
text: 'Baki Akhir Tunai Lebih Rendah Daripada Nilai Marhun Yang Ingin Digadaikan. Sila Tambah Pendahuluan di Laman Aliran Tunai Segera. '
|
||||
});
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}else{
|
||||
}
|
||||
|
||||
if(true){
|
||||
|
||||
if($.isNumeric(pinjaman) == false){
|
||||
$("#terima_gadai").prop('disabled', false);
|
||||
@@ -1981,7 +2242,7 @@
|
||||
rowsData.forEach((rowData) => {
|
||||
// Call API to get margin data for each individual item
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/specific',
|
||||
type: 'GET',
|
||||
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
||||
success: function(response) {
|
||||
|
||||
@@ -262,6 +262,10 @@
|
||||
<a href="{{ url('pendahuluanserahan') }}"
|
||||
class="btn btn-info btn-lg btn-block mb-3">Pendahuluan - Serahan</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<a href="{{ route('pembiayaan.online.pc') }}"
|
||||
class="btn btn-info btn-lg btn-block mb-3">Pembiayaan Online</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<a href="{{ route('khazanah.indexwakil') }}"
|
||||
class="btn btn-info btn-lg btn-block mb-3">Surat Wakil</a>
|
||||
@@ -320,7 +324,7 @@
|
||||
});
|
||||
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
const initialambilan = [
|
||||
|
||||
@@ -14,13 +14,16 @@
|
||||
</nav>
|
||||
|
||||
<div class="card-body text-center">
|
||||
<a href="{{ route('operasi.kelulusananggota') }}" class="btn btn-info btn-lg">Kelulusan Anggota</a>
|
||||
<a href="{{ route('operasi.kelulusan') }}" class="btn btn-info btn-lg">Kelulusan</a>
|
||||
<a href="{{ route('daftar.kakitangan') }}" class="btn btn-info btn-lg">Kakitangan</a>
|
||||
<a href="{{ route('parameter') }}" class="btn btn-info btn-lg">Parameter</a>
|
||||
<a href="{{ route('komuditi') }}" class="btn btn-info btn-lg">Komoditi</a>
|
||||
<a href="{{ route('perubatan') }}" class="btn btn-info btn-lg">Perubatan</a>
|
||||
<a href="{{ route('operasi.laporan.audit') }}" class="btn btn-info btn-lg">Laporan Audit</a>
|
||||
<a href="{{ route('operasi.kelulusananggota') }}" class="btn btn-info btn-lg d-inline-block m-1">Kelulusan Anggota</a>
|
||||
<a href="{{ route('operasi.kelulusan') }}" class="btn btn-info btn-lg d-inline-block m-1">Kelulusan</a>
|
||||
<a href="{{ route('pembiayaan.online.operasi') }}" class="btn btn-info btn-lg d-inline-block m-1">Pembiayaan Online</a>
|
||||
<a href="{{ route('pembiayaan.online.operasi.topup') }}" class="btn btn-info btn-lg d-inline-block m-1">Modal Online</a>
|
||||
<a href="{{ route('pembiayaan.online.operasi.eod') }}" class="btn btn-info btn-lg d-inline-block m-1">EOD Modal Online</a>
|
||||
<a href="{{ route('daftar.kakitangan') }}" class="btn btn-info btn-lg d-inline-block m-1">Kakitangan</a>
|
||||
<a href="{{ route('parameter') }}" class="btn btn-info btn-lg d-inline-block m-1">Parameter</a>
|
||||
<a href="{{ route('komuditi') }}" class="btn btn-info btn-lg d-inline-block m-1">Komoditi</a>
|
||||
<a href="{{ route('perubatan') }}" class="btn btn-info btn-lg d-inline-block m-1">Perubatan</a>
|
||||
<a href="{{ route('operasi.laporan.audit') }}" class="btn btn-info btn-lg d-inline-block m-1">Laporan Audit</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var cawangan = "{{ Auth::user()->cawangan }}";
|
||||
var teller = "{{ Auth::user()->name }}";
|
||||
|
||||
|
||||
@@ -18,10 +18,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
function pelangganclick()
|
||||
{
|
||||
// $getTunai2=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/GetCurrentTunai/'.$auth_user['cawangan'],['kodlaluan' => $kodlaluan])->json();
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
const d = new Date();
|
||||
let tahunsemasa = d.getFullYear();
|
||||
let pusherenv = "{{ env('PUSHER_APP_KEY') }}";
|
||||
let api_url = "{{ $api_url }}";
|
||||
let api_url = "{{ api_url_for_browser() }}";
|
||||
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
minimumFractionDigits: 2
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var cawangan = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var ppc = "{{ Auth::user()->name }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
"scrollX": true
|
||||
});
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
@@ -271,7 +271,7 @@
|
||||
|
||||
async function updatelulus(e)
|
||||
{
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
const { value: katalaluan } = await Swal.fire({
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(document).ready( function () {
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tabletebus = $('#myTable').DataTable({
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablebatalgadai = $('#myTable').DataTable({
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablegadai = $('#myTable').DataTable({
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(document).ready( function () {
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(document).ready( function () {
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablebatalgadai = $('#myTable').DataTable({
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
// alert(btoa(api_url));
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tabletebus = $('#myTable').DataTable({
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var panjartebus = $('#myTable').DataTable({
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(document).ready( function () {
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(document).ready( function () {
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tabletuntutbaki = $('#myTable').DataTable({
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var advansurtable = $('#myTable').DataTable({
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tabletebus = $('#myTable').DataTable({
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablegadai = $('#myTable').DataTable({
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
</div>
|
||||
<script src="{{ asset('js/main.js') }}"></script>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(".modal.fade").on("show.bs.modal", function(e) {
|
||||
@@ -1087,7 +1087,7 @@
|
||||
if (suratBtn) {
|
||||
const norujukan = suratBtn.getAttribute('data-norujukan');
|
||||
|
||||
let gadaianDetail = await fetch("{{ config('api.url') }}" + `/api/gadai/norujukankodcaw/${kodcaw}/${norujukan}`)
|
||||
let gadaianDetail = await fetch("{{ api_url_for_browser() }}" + `/api/gadai/norujukankodcaw/${kodcaw}/${norujukan}`)
|
||||
.then(response => response.json());
|
||||
|
||||
askOperasiApproval(gadaianDetail[0][0]);
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
]
|
||||
});
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
"ordering": false
|
||||
});
|
||||
|
||||
var api_url = '{{ $api_url }}';
|
||||
var api_url = '{{ api_url_for_browser() }}';
|
||||
|
||||
$('#PermohonanWang').on('hidden.bs.modal', function (e) {
|
||||
$(this)
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
"ordering": false
|
||||
});
|
||||
|
||||
var api_url = '{{ $api_url }}';
|
||||
var api_url = '{{ api_url_for_browser() }}';
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
<script>
|
||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
|
||||
var cawangan = "{{ Auth::user()->cawangan }}";
|
||||
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var ppc = "{{ Auth::user()->name }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
|
||||
@@ -466,7 +466,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||
var ppc = "{{ Auth::user()->name }}";
|
||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
var search = "<?php echo $search ?>";
|
||||
var type_id = "<?php echo $idtype ?>";
|
||||
$(document).ready(function(){
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
@if(Auth::user()->roles == 'ppc' || Auth::user()->roles == 'pc')
|
||||
<script>
|
||||
window.api = "{{ config('api.url') }}";
|
||||
window.api = "{{ api_url_for_browser() }}";
|
||||
window.kodcaw = "{{ Auth::user()->cawangan }}";
|
||||
window.apikey = "{{ env('PUSHER_APP_KEY') }}";
|
||||
</script>
|
||||
@@ -199,7 +199,7 @@
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
|
||||
@include('layouts.partials.impersonation_nav')
|
||||
|
||||
@php $auth_user = Auth::user(); @endphp
|
||||
@if ($auth_user['roles'] == 'ppc' || $auth_user['roles'] == 'pc')
|
||||
@@ -381,6 +381,7 @@
|
||||
<a class="dropdown-item" href="{{ route('profile') }}">
|
||||
{{ __('Profile') }}
|
||||
</a>
|
||||
@if(!(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated()))
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
@@ -390,6 +391,7 @@
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -105,6 +105,7 @@
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
@include('layouts.partials.impersonation_nav')
|
||||
<!-- <li class="nav-item dropdown" style="margin-right:10px;">
|
||||
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
||||
<i id="bell" class="fa fa-bell"></i>
|
||||
@@ -143,6 +144,7 @@
|
||||
<a class="dropdown-item" href="{{ route('profile') }}">
|
||||
{{ __('Profile') }}
|
||||
</a>
|
||||
@if(!(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated()))
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
@@ -152,6 +154,7 @@
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
@include('layouts.partials.impersonation_nav')
|
||||
<li class="nav-item dropdown" style="margin-right:10px;">
|
||||
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
||||
<i id="bell" class="fa fa-bell"></i>
|
||||
@@ -233,6 +234,7 @@
|
||||
<a class="dropdown-item" href="{{ route('profile') }}">
|
||||
{{ __('Profile') }}
|
||||
</a>
|
||||
@if(!(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated()))
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
@@ -242,6 +244,7 @@
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
@if(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated())
|
||||
<li class="nav-item" style="margin-right:10px;">
|
||||
<form method="post" action="{{ route('impersonate.leave') }}" class="m-0">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-sm btn-warning" title="Stop impersonate">
|
||||
Keluar Penyamaran
|
||||
</button>
|
||||
</form>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
var api = '<?php echo $api_url ?>';
|
||||
var api = "{{ api_url_for_browser() }}";
|
||||
let nw = 0;
|
||||
|
||||
function wakilfunction(e)
|
||||
@@ -536,7 +536,7 @@ function ubahwakil(e)
|
||||
{
|
||||
|
||||
let norujukan = $('#norujukan').val();
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
let nowakil = nw;
|
||||
let jenis = '';
|
||||
|
||||
@@ -627,7 +627,7 @@ function ubahwakil(e)
|
||||
|
||||
|
||||
let norujukan = $('#norujukan').val();
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
let nowakil = 0;
|
||||
let jenis = '';
|
||||
let mohon = '';
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
var api = '<?php echo $api_url ?>';
|
||||
var api = "{{ api_url_for_browser() }}";
|
||||
let nw = 0;
|
||||
|
||||
function wakilfunction(e)
|
||||
@@ -565,7 +565,7 @@ function ubahwakil(e)
|
||||
{
|
||||
|
||||
let norujukan = $('#norujukan').val();
|
||||
let api = "{{ config('api.url') }}";
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
let nowakil = nw;
|
||||
let jenis = '';
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ $(document).ready(function()
|
||||
function carila()
|
||||
{
|
||||
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var api_url = "{{ api_url_for_browser() }}";
|
||||
|
||||
var noic = $('#noic').val();
|
||||
|
||||
|
||||
@@ -43,9 +43,6 @@
|
||||
<b>Cawangan</b>
|
||||
</div>
|
||||
<div class='col-md-7'>
|
||||
@php
|
||||
$cawangan_all = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/cawangan')->json();
|
||||
@endphp
|
||||
<select class="form-control" name="cawangan" data-placeholder="Pilih Cawangan" id="cawangan">
|
||||
<option disabled selected value> -- Pilih Cawangan -- </option>
|
||||
<option value="operasi">Operasi</option>
|
||||
@@ -106,56 +103,12 @@
|
||||
<div class="card-body text-center">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table id="rekod_kakitangan" class="table table-striped table-hover">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>Nama Staff</th>
|
||||
<th>Jawatan</th>
|
||||
<th>Cawangan</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($kakitangan as $index=>$staff)
|
||||
@if($staff->roles != 'admin')
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $staff->name }}</td>
|
||||
<td>{{ strtoupper($staff->roles) }}</td>
|
||||
<td>
|
||||
@if($staff->cawangan == 'operasi' || $staff->cawangan == 'callcenter' || $staff->cawangan == 'admin')
|
||||
{{ ucwords($staff->cawangan) }}
|
||||
@else
|
||||
@php
|
||||
$cawangan_staff = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $staff->cawangan)->json();
|
||||
echo (isset($cawangan_staff['details_caw'])) ? ucwords($cawangan_staff['details_caw']) : 'test';
|
||||
@endphp
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($auth_user->roles == 'operasi')
|
||||
<a href="{{ route('kakitangan.tukartaraf',['id'=>$staff->id]) }}" class="btn btn-warning" title="Tukar Taraf"><i class="material-icons">edit</i></a>
|
||||
<a href="{{ route('kakitangan.tukarcawangan',['id'=>$staff->id]) }}" class="btn btn-info" title="Tukar Cawangan"><i class="material-icons">work</i></a>
|
||||
<a href="{{ route('operasi.kakitangan.edit',['id'=>$staff->id]) }}" class="btn btn-success" title="Edit Maklumat"><i class="material-icons">settings</i></a>
|
||||
<button type="button" class="btn btn-danger btn-delete" data-roles="{{ $auth_user->roles }}" data-staff-id="{{ $staff->id }}" data-token="{{ csrf_token() }}" title="Delete Kakitangan"><i class="material-icons">delete</i></button>
|
||||
@elseif($auth_user->roles == 'admin')
|
||||
{{-- <form method="post" action="{{ route('admin.kakitangan.delete') }}">
|
||||
{{ @csrf_field() }} --}}
|
||||
<input type="hidden" name="staff_id" value="{{ $staff->id }}"/>
|
||||
<a href="{{ route('admin.kakitangan.tukartaraf',['id'=>$staff->id]) }}" class="btn btn-warning" title="Tukar Taraf"><i class="material-icons">edit</i></a>
|
||||
<a href="{{ route('admin.kakitangan.tukarcawangan',['id'=>$staff->id]) }}" class="btn btn-info" title="Tukar Cawangan"><i class="material-icons">work</i></a>
|
||||
<a href="{{ route('admin.kakitangan.edit',['id'=>$staff->id]) }}" class="btn btn-success" title="Edit Maklumat"><i class="material-icons">settings</i></a>
|
||||
<a href="{{ route('admin.kakitangan.resetcredentials',['id'=>$staff->id]) }}" class="btn btn-primary" title="Reset Password"><i class="material-icons">restore</i></a>
|
||||
<button type="button" class="btn btn-danger btn-delete" data-staff-id="{{ $staff->id }}" data-token="{{ csrf_token() }}" title="Delete Kakitangan"><i class="material-icons">delete</i></button>
|
||||
{{-- </form> --}}
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<x-datatable
|
||||
id="rekod_kakitangan"
|
||||
filename="Senarai_Kakitangan"
|
||||
:columns="['Bil', 'Tindakan', 'Nama Staff', 'Jawatan', 'Role Harian', 'Role Asal', 'Cawangan']"
|
||||
:skipExport="['Bil', 'Tindakan']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -164,8 +117,72 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
@php
|
||||
$isOperasi = $auth_user->roles == 'operasi';
|
||||
$canImpersonate = app()->environment(['local', 'staging'])
|
||||
&& $auth_user->roles === 'admin'
|
||||
&& !(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated());
|
||||
@endphp
|
||||
|
||||
var tablerekod = $('#rekod_kakitangan').DataTable();
|
||||
function escapeHtml(value) {
|
||||
return $('<div>').text(value == null ? '' : String(value)).html();
|
||||
}
|
||||
|
||||
function staffTindakanHtml(staff) {
|
||||
var id = staff.id;
|
||||
var html = '';
|
||||
|
||||
html += '<a href="' + staffRoutes.tukarTaraf.replace('__ID__', id) + '" class="btn btn-warning" title="Tukar Taraf"><i class="material-icons">edit</i></a> ';
|
||||
html += '<a href="' + staffRoutes.tukarCawangan.replace('__ID__', id) + '" class="btn btn-info" title="Tukar Cawangan"><i class="material-icons">work</i></a> ';
|
||||
html += '<a href="' + staffRoutes.edit.replace('__ID__', id) + '" class="btn btn-success" title="Edit Maklumat"><i class="material-icons">settings</i></a> ';
|
||||
|
||||
if (authRole === 'admin') {
|
||||
html += '<a href="' + staffRoutes.reset.replace('__ID__', id) + '" class="btn btn-primary" title="Reset Password"><i class="material-icons">restore</i></a> ';
|
||||
}
|
||||
|
||||
if (canImpersonate && id !== authUserId) {
|
||||
html += '<form method="post" action="' + staffRoutes.impersonate.replace('__ID__', id) + '" style="display:inline;">' +
|
||||
csrfField +
|
||||
'<button type="button" class="btn btn-secondary btn-impersonate" data-staff-name="' + escapeHtml(staff.name) + '" title="Impersonate"><i class="material-icons">supervised_user_circle</i></button>' +
|
||||
'</form> ';
|
||||
}
|
||||
|
||||
html += '<button type="button" class="btn btn-danger btn-delete" data-roles="' + authRole + '" data-staff-id="' + id + '" title="Delete Kakitangan"><i class="material-icons">delete</i></button>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
var authRole = @json($auth_user->roles);
|
||||
var authUserId = @json($auth_user->id);
|
||||
var canImpersonate = @json($canImpersonate);
|
||||
var csrfField = '<input type="hidden" name="_token" value="' + @json(csrf_token()) + '">';
|
||||
var staffRoutes = {
|
||||
tukarTaraf: @json($isOperasi ? route('kakitangan.tukartaraf', ['id' => '__ID__']) : route('admin.kakitangan.tukartaraf', ['id' => '__ID__'])),
|
||||
tukarCawangan: @json($isOperasi ? route('kakitangan.tukarcawangan', ['id' => '__ID__']) : route('admin.kakitangan.tukarcawangan', ['id' => '__ID__'])),
|
||||
edit: @json($isOperasi ? route('operasi.kakitangan.edit', ['id' => '__ID__']) : route('admin.kakitangan.edit', ['id' => '__ID__'])),
|
||||
reset: @json(route('admin.kakitangan.resetcredentials', ['id' => '__ID__'])),
|
||||
impersonate: @json(route('impersonate.start', ['id' => '__ID__']))
|
||||
};
|
||||
|
||||
var tablerekod = initErahnDatatable('#rekod_kakitangan', {
|
||||
columnDefs: [
|
||||
{ targets: 0, orderable: false, width: '40px' },
|
||||
{ targets: 1, orderable: false, searchable: false }
|
||||
]
|
||||
});
|
||||
|
||||
$.each(@json($kakitangan_rows), function (index, staff) {
|
||||
tablerekod.row.add([
|
||||
index + 1,
|
||||
staffTindakanHtml(staff),
|
||||
escapeHtml(staff.name),
|
||||
escapeHtml(staff.roles),
|
||||
escapeHtml(staff.role_harian),
|
||||
escapeHtml(staff.role_asal),
|
||||
escapeHtml(staff.cawangan)
|
||||
]);
|
||||
});
|
||||
tablerekod.draw();
|
||||
|
||||
$("#rekod_kakitangan").on('click', ".btn-delete", function(){
|
||||
//$('.btn-delete').on('click', function(){
|
||||
@@ -223,6 +240,27 @@
|
||||
}).catch(swal.noop)
|
||||
});
|
||||
|
||||
$("#rekod_kakitangan").on('click', ".btn-impersonate", function(){
|
||||
var form = $(this).closest('form');
|
||||
var staffName = $(this).data('staff-name');
|
||||
|
||||
Swal.fire({
|
||||
title: 'Menyamar sebagai ' + staffName + '?',
|
||||
text: "Anda akan log masuk sebagai " + staffName + ".",
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonClass: 'btn btn-secondary',
|
||||
cancelButtonClass: 'btn btn-warning',
|
||||
confirmButtonText: 'Ya, menyamar',
|
||||
cancelButtonText: 'Batal!',
|
||||
buttonsStyling: false
|
||||
}).then(function(result) {
|
||||
if (result.isConfirmed) {
|
||||
form.submit();
|
||||
}
|
||||
}).catch(swal.noop)
|
||||
});
|
||||
|
||||
function verifyregister(){
|
||||
var cawangan = $('#cawangan').val();
|
||||
var role = $('#role').val();
|
||||
|
||||
@@ -85,7 +85,7 @@ $(document).ready(function() {
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/update',
|
||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/update',
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
success: function(response) {
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
</div>
|
||||
<script>
|
||||
|
||||
let api_url = "{{ $api_url }}";
|
||||
let api_url = "{{ api_url_for_browser() }}";
|
||||
|
||||
var tableemas = $('#table-emas').DataTable({
|
||||
"scrollX": true
|
||||
|
||||
@@ -236,8 +236,8 @@
|
||||
"scrollX": true
|
||||
});
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
|
||||
let api = "{{ api_url_for_browser() }}";
|
||||
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
minimumFractionDigits: 2
|
||||
});
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
let api_url = "{{ $api_url }}";
|
||||
let api_url = "{{ api_url_for_browser() }}";
|
||||
|
||||
var tablerekod = $('#rekod_komuditi').DataTable( {
|
||||
"pageLength": 1000,
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let api_url = "{{ $api_url }}";
|
||||
let api_url = "{{ api_url_for_browser() }}";
|
||||
var tablerekod = $('#rekod_komoditi').DataTable();
|
||||
$('#tarikh_rekod').datepicker({
|
||||
format: 'dd/mm/yyyy',
|
||||
|
||||
@@ -0,0 +1,276 @@
|
||||
@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['details_caw'] ?? $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.batch.print', ['kodcaw' => $kodcaw, 'batchId' => $batch['id']]) }}"
|
||||
class="btn btn-outline-dark btn-sm"
|
||||
target="_blank">
|
||||
Cetak Borang
|
||||
</a>
|
||||
<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
|
||||
@@ -0,0 +1,65 @@
|
||||
@extends('layouts.app')
|
||||
@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.pc') }}">Pembiayaan Online</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Batch</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<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-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 class="col-md-3"><b>Jumlah</b><br>RM {{ number_format((float)($batch['jumlah_keseluruhan'] ?? 0), 2) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between">
|
||||
<h5 class="mb-0">Senarai Dalam Batch</h5>
|
||||
<a href="{{ route('pembiayaan.online.pc') }}" class="btn btn-secondary btn-sm">Kembali</a>
|
||||
</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>Pinjaman (RM)</th>
|
||||
<th>Rujukan Bayaran</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($lines as $line)
|
||||
<tr>
|
||||
<td>{{ $line['status'] ?? '-' }}</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-right">{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}</td>
|
||||
<td>{{ $line['no_rujukan_bayaran'] ?? '-' }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,187 @@
|
||||
@extends('layouts.app')
|
||||
@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.pc') }}">Pembiayaan Online</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Tally PAID</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-4">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Bilangan PAID</div>
|
||||
<h4 class="mb-0">{{ $bilangan }} rekod</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Jumlah Pinjaman</div>
|
||||
<h4 class="mb-0">RM {{ number_format((float) $jumlah, 2) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Tapisan</div>
|
||||
<h4 class="mb-0">
|
||||
@if(($blastFilter ?? '0') === '0') Belum Blast
|
||||
@elseif(($blastFilter ?? '') === '1') Sudah Blast
|
||||
@else Semua
|
||||
@endif
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<form method="get" action="{{ route('pembiayaan.online.pc.paid') }}" class="form-inline">
|
||||
<label class="mr-2">Status Blast</label>
|
||||
<select name="blast_sent" class="form-control mr-3">
|
||||
<option value="0" {{ ($blastFilter ?? '0') === '0' ? 'selected' : '' }}>Belum blast / belum selesai semak</option>
|
||||
<option value="1" {{ ($blastFilter ?? '') === '1' ? 'selected' : '' }}>Sudah selesai</option>
|
||||
<option value="all" {{ ($blastFilter ?? '') === 'all' ? 'selected' : '' }}>Semua PAID</option>
|
||||
</select>
|
||||
<button type="submit" class="btn btn-primary">Tapis</button>
|
||||
<a href="{{ route('pembiayaan.online.pc') }}" class="btn btn-secondary ml-2">Kembali Queue</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center flex-wrap">
|
||||
<h5 class="mb-0">Senarai Pembiayaan Online — PAID</h5>
|
||||
<button type="button" class="btn btn-success btn-sm mt-2 mt-md-0" id="btnMarkBlast" disabled>
|
||||
Sahkan Tally / Selesai
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="small text-muted">
|
||||
Semak jumlah & bukti bayaran sepadan dengan pelanggan. Setelah semak, tanda selesai.
|
||||
(WhatsApp/SMS blast boleh disambung kemudian — butang ini menanda rekod sebagai selesai semak.)
|
||||
</p>
|
||||
<form id="formMarkBlast" method="post" action="{{ route('pembiayaan.online.pc.blast') }}">
|
||||
@csrf
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-hover table-sm text-center" id="paidTable">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>
|
||||
@if(($blastFilter ?? '0') !== '1')
|
||||
<input type="checkbox" id="checkAll">
|
||||
@endif
|
||||
</th>
|
||||
<th>Blast</th>
|
||||
<th>SAG</th>
|
||||
<th>Pelanggan</th>
|
||||
<th>No KP</th>
|
||||
<th>Bank</th>
|
||||
<th>No Akaun</th>
|
||||
<th>Pinjaman (RM)</th>
|
||||
<th>Rujukan Bayaran</th>
|
||||
<th>Tarikh Bayaran</th>
|
||||
<th>Paid At</th>
|
||||
<th>Bukti</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($lines as $line)
|
||||
@php $blasted = (int)($line['blast_sent'] ?? 0) === 1; @endphp
|
||||
<tr class="{{ $blasted ? '' : 'table-warning' }}">
|
||||
<td>
|
||||
@if(!$blasted)
|
||||
<input type="checkbox" class="row-check" name="ids[]" value="{{ $line['id'] }}">
|
||||
@else
|
||||
—
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($blasted)
|
||||
<span class="badge badge-success">SELESAI</span>
|
||||
@else
|
||||
<span class="badge badge-warning">BELUM</span>
|
||||
@endif
|
||||
</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-right">{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}</td>
|
||||
<td>{{ $line['no_rujukan_bayaran'] ?? '-' }}</td>
|
||||
<td>{{ $line['tarikh_bayaran'] ?? '-' }}</td>
|
||||
<td class="small">{{ $line['paid_at'] ?? '-' }}</td>
|
||||
<td>
|
||||
@if(!empty($line['bukti_file_id']))
|
||||
<a class="btn btn-sm btn-info"
|
||||
href="{{ route('pembiayaan.online.pc.bukti', ['id' => $line['id']]) }}"
|
||||
target="_blank" rel="noopener">
|
||||
Lihat
|
||||
</a>
|
||||
@else
|
||||
<span class="text-muted small">Tiada</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="12">Tiada rekod PAID untuk tapisan ini.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
@if(count($lines) > 0)
|
||||
<tfoot>
|
||||
<tr class="font-weight-bold">
|
||||
<td colspan="7" class="text-right">Jumlah dipaparkan</td>
|
||||
<td class="text-right">{{ number_format((float) $jumlah, 2) }}</td>
|
||||
<td colspan="4"></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function syncBlastButton() {
|
||||
var n = $('.row-check:checked').length;
|
||||
$('#btnMarkBlast').prop('disabled', n === 0);
|
||||
$('#btnMarkBlast').text(n ? ('Sahkan Tally / Selesai (' + n + ')') : 'Sahkan Tally / Selesai');
|
||||
}
|
||||
|
||||
$('#checkAll').on('change', function () {
|
||||
$('.row-check').prop('checked', this.checked);
|
||||
syncBlastButton();
|
||||
});
|
||||
|
||||
$(document).on('change', '.row-check', syncBlastButton);
|
||||
|
||||
$('#btnMarkBlast').on('click', function () {
|
||||
if ($('.row-check:checked').length === 0) return;
|
||||
if (!confirm('Sahkan tally untuk rekod dipilih? Rekod akan ditanda selesai semak/blast.')) return;
|
||||
$('#formMarkBlast').submit();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,304 @@
|
||||
@extends('layouts.app')
|
||||
@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</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="mb-3">
|
||||
<a href="{{ route('pembiayaan.online.pc.paid') }}" class="btn btn-success">
|
||||
Tally PAID / Blast
|
||||
</a>
|
||||
<a href="{{ route('pembiayaan.online.pc.topup') }}" class="btn btn-warning">
|
||||
Had / Modal Online
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@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
|
||||
|
||||
@php
|
||||
$isMissing = !empty($modal['missing']);
|
||||
$isClosed = (int)($modal['ditutup'] ?? 0) === 1;
|
||||
$pendingReq = $modal['pending_request'] ?? null;
|
||||
if (is_object($pendingReq)) {
|
||||
$pendingReq = json_decode(json_encode($pendingReq), true);
|
||||
}
|
||||
@endphp
|
||||
|
||||
@if($isClosed)
|
||||
<div class="alert alert-dark">Modal online hari ini sudah ditutup (EOD).</div>
|
||||
@elseif($isMissing)
|
||||
<div class="alert alert-warning mb-3">
|
||||
Belum ada had modal online hari ini.
|
||||
@if($pendingReq)
|
||||
Permohonan RM {{ number_format((float)($pendingReq['amaun'] ?? 0), 2) }}
|
||||
daripada {{ $pendingReq['dimohon_oleh'] ?? '-' }} masih <b>PENDING</b>.
|
||||
@else
|
||||
Mohon had di
|
||||
<a href="{{ route('pembiayaan.online.pc.topup') }}">Had Modal Online</a>.
|
||||
@endif
|
||||
</div>
|
||||
@elseif($pendingReq)
|
||||
<div class="alert alert-info mb-3">
|
||||
Permohonan tambah RM {{ number_format((float)($pendingReq['amaun'] ?? 0), 2) }}
|
||||
daripada {{ $pendingReq['dimohon_oleh'] ?? '-' }} menunggu kelulusan Operasi.
|
||||
<a href="{{ route('pembiayaan.online.pc.topup') }}">Semak</a>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Modal Online Hari Ini</div>
|
||||
<h4 class="mb-0">
|
||||
@if(!empty($modal['missing']))
|
||||
Belum ada had
|
||||
@else
|
||||
Baki RM {{ number_format((float)($modal['baki'] ?? 0), 2) }}
|
||||
@endif
|
||||
</h4>
|
||||
<small>
|
||||
@if(!empty($modal['missing']))
|
||||
Tunggu kelulusan Operasi
|
||||
@else
|
||||
Digunakan RM {{ number_format((float)($modal['digunakan'] ?? 0), 2) }}
|
||||
/ Had RM {{ number_format((float)($modal['had'] ?? 0) + (float)($modal['tambah'] ?? 0), 2) }}
|
||||
@endif
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Queue PC</div>
|
||||
<h4 class="mb-0">{{ count($lines) }} rekod</h4>
|
||||
<small>Jumlah RM {{ number_format((float)($queue['jumlah'] ?? 0), 2) }}</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Slot Cadangan</div>
|
||||
<h4 class="mb-0">{{ $slot['slot'] ?? '-' }}</h4>
|
||||
<small>{{ $slot['nota'] ?? '' }}</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Senarai Menunggu (PENDING / REJECTED)</h5>
|
||||
<button type="button" class="btn btn-primary" id="btnSubmitBatch" disabled>Hantar Batch ke Operasi</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="formSubmitBatch" method="post" action="{{ route('pembiayaan.online.pc.submit') }}">
|
||||
@csrf
|
||||
<input type="hidden" name="slot" value="{{ $slot['slot'] ?? 'BATCH1' }}">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-hover table-sm text-center" id="queueTable">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th><input type="checkbox" id="checkAll"></th>
|
||||
<th>Status</th>
|
||||
<th>SAG</th>
|
||||
<th>Pelanggan</th>
|
||||
<th>No KP</th>
|
||||
<th>Bank</th>
|
||||
<th>No Akaun</th>
|
||||
<th>Pinjaman (RM)</th>
|
||||
<th>Sebab Tolak</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($lines as $line)
|
||||
<tr class="{{ ($line['status'] ?? '') === 'REJECTED_PC' ? 'table-warning' : '' }}">
|
||||
<td>
|
||||
<input type="checkbox" class="row-check" name="ids[]" value="{{ $line['id'] }}">
|
||||
</td>
|
||||
<td>
|
||||
@if(($line['status'] ?? '') === 'REJECTED_PC')
|
||||
<span class="badge badge-danger">REJECTED</span>
|
||||
@else
|
||||
<span class="badge badge-secondary">PENDING</span>
|
||||
@endif
|
||||
</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-right">{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}</td>
|
||||
<td class="text-left small">{{ $line['reject_reason'] ?? '-' }}</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-info btn-edit"
|
||||
data-id="{{ $line['id'] }}"
|
||||
data-kodbank="{{ $line['kodbank'] ?? '' }}"
|
||||
data-noakaun="{{ $line['noakaun'] ?? '' }}"
|
||||
data-namaakaun="{{ $line['nama_akaun'] ?? '' }}"
|
||||
data-namabank="{{ $line['nama_bank'] ?? '' }}"
|
||||
data-nota="{{ $line['nota'] ?? '' }}"
|
||||
data-norujukan="{{ $line['norujukan'] ?? '' }}">
|
||||
Edit
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="10">Tiada rekod dalam queue.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Sejarah Batch</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-hover table-sm text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Batch No</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)
|
||||
<tr>
|
||||
<td>{{ $batch['batch_no'] ?? '-' }}</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-info">{{ $batch['status'] ?? '-' }}</span></td>
|
||||
<td>{{ $batch['pc_submitted_by'] ?? '-' }}</td>
|
||||
<td>
|
||||
<a class="btn btn-sm btn-secondary"
|
||||
href="{{ route('pembiayaan.online.pc.batch', ['batchId' => $batch['id']]) }}">
|
||||
Lihat
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="8">Belum ada batch.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Edit modal --}}
|
||||
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form method="post" id="editForm" action="">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Kemaskini Bank — <span id="editNorujukan"></span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label>Bank</label>
|
||||
<select name="kodbank" id="editKodbank" class="form-control" required>
|
||||
<option value="">-- Pilih Bank --</option>
|
||||
@foreach($banks as $bank)
|
||||
<option value="{{ $bank['abbreviation'] }}" data-nama="{{ $bank['name'] }}">
|
||||
{{ $bank['name'] }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<input type="hidden" name="nama_bank" id="editNamabank">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>No. Akaun</label>
|
||||
<input type="text" name="noakaun" id="editNoakaun" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Nama Akaun</label>
|
||||
<input type="text" name="nama_akaun" id="editNamaakaun" class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Nota</label>
|
||||
<textarea name="nota" id="editNota" class="form-control" rows="2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function syncSubmitButton() {
|
||||
var n = $('.row-check:checked').length;
|
||||
$('#btnSubmitBatch').prop('disabled', n === 0);
|
||||
$('#btnSubmitBatch').text(n ? ('Hantar Batch ke Operasi (' + n + ')') : 'Hantar Batch ke Operasi');
|
||||
}
|
||||
|
||||
$('#checkAll').on('change', function () {
|
||||
$('.row-check').prop('checked', this.checked);
|
||||
syncSubmitButton();
|
||||
});
|
||||
|
||||
$(document).on('change', '.row-check', syncSubmitButton);
|
||||
|
||||
$('#btnSubmitBatch').on('click', function () {
|
||||
if ($('.row-check:checked').length === 0) return;
|
||||
if (!confirm('Hantar rekod dipilih ke Operasi?')) return;
|
||||
$('#formSubmitBatch').submit();
|
||||
});
|
||||
|
||||
$('.btn-edit').on('click', function () {
|
||||
var id = $(this).data('id');
|
||||
$('#editForm').attr('action', "{{ url('/pembiayaan-online/pc/lines') }}/" + id);
|
||||
$('#editNorujukan').text($(this).data('norujukan'));
|
||||
$('#editKodbank').val($(this).data('kodbank'));
|
||||
$('#editNoakaun').val($(this).data('noakaun'));
|
||||
$('#editNamaakaun').val($(this).data('namaakaun'));
|
||||
$('#editNamabank').val($(this).data('namabank'));
|
||||
$('#editNota').val($(this).data('nota'));
|
||||
$('#editModal').modal('show');
|
||||
});
|
||||
|
||||
$('#editKodbank').on('change', function () {
|
||||
$('#editNamabank').val($('#editKodbank option:selected').data('nama') || '');
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,215 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
@php
|
||||
$isClosed = (int)($modal['ditutup'] ?? 0) === 1;
|
||||
$isMissing = !empty($isMissing) || !empty($modal['missing']);
|
||||
$pendingRequest = $pendingRequest ?? ($modal['pending_request'] ?? null);
|
||||
@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.pc') }}">Pembiayaan Online</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Had 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
|
||||
|
||||
@if($isClosed)
|
||||
<div class="alert alert-dark">
|
||||
Modal online hari ini <b>sudah ditutup (EOD)</b>
|
||||
oleh {{ $modal['ditutup_oleh'] ?? '-' }}
|
||||
pada {{ $modal['ditutup_at'] ?? '-' }}.
|
||||
Esok PC perlu mohon had baru daripada Operasi.
|
||||
</div>
|
||||
@elseif($isMissing)
|
||||
<div class="alert alert-warning">
|
||||
Belum ada had modal online hari ini.
|
||||
Mohon amaun di bawah. Operasi akan luluskan permohonan.
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if($hasPending && $pendingRequest)
|
||||
<div class="alert alert-info">
|
||||
Permohonan PENDING RM {{ number_format((float)($pendingRequest['amaun'] ?? 0), 2) }}
|
||||
daripada {{ $pendingRequest['dimohon_oleh'] ?? '-' }}.
|
||||
Menunggu kelulusan Operasi.
|
||||
</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">Baki Hari Ini</div>
|
||||
<h4 class="mb-0">
|
||||
@if($isMissing)
|
||||
—
|
||||
@else
|
||||
RM {{ number_format((float)($modal['baki'] ?? 0), 2) }}
|
||||
@endif
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Had Asas</div>
|
||||
<h4 class="mb-0">
|
||||
@if($isMissing)
|
||||
—
|
||||
@else
|
||||
RM {{ number_format((float)($modal['had'] ?? 0), 2) }}
|
||||
@endif
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Tambah Diluluskan</div>
|
||||
<h4 class="mb-0">RM {{ number_format((float)($modal['tambah'] ?? 0), 2) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="text-muted">Digunakan</div>
|
||||
<h4 class="mb-0">RM {{ number_format((float)($modal['digunakan'] ?? 0), 2) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-5 mb-3">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">{{ $isMissing ? 'Mohon Had Modal Online' : 'Mohon Tambah Modal Online' }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if($isClosed)
|
||||
<div class="alert alert-secondary mb-0">
|
||||
Tidak boleh mohon selepas EOD.
|
||||
</div>
|
||||
@else
|
||||
@if($hasPending)
|
||||
<div class="alert alert-warning">
|
||||
Masih ada permohonan <b>PENDING</b>. Tunggu kelulusan Operasi sebelum mohon lagi.
|
||||
</div>
|
||||
@endif
|
||||
<form method="post" action="{{ route('pembiayaan.online.pc.topup.request') }}">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>Amaun (RM) <span class="text-danger">*</span></label>
|
||||
<input type="number" name="amaun" class="form-control" min="1" step="0.01"
|
||||
value="{{ old('amaun') }}" required {{ $hasPending ? 'disabled' : '' }}>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Nota</label>
|
||||
<textarea name="nota" class="form-control" rows="3"
|
||||
placeholder="{{ $isMissing ? 'Contoh: Had awal hari ini' : 'Contoh: Modal online hampir habis' }}"
|
||||
{{ $hasPending ? 'disabled' : '' }}>{{ old('nota') }}</textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" {{ $hasPending ? 'disabled' : '' }}>
|
||||
Hantar Permohonan
|
||||
</button>
|
||||
<a href="{{ route('pembiayaan.online.pc') }}" class="btn btn-secondary">Kembali</a>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Tutup Modal Online (EOD)</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="small text-muted">
|
||||
Tutup hari ini: baki yang tidak digunakan akan dikembalikan,
|
||||
dan tiada lagi gadai online / permohonan untuk hari ini.
|
||||
Esok mohon had baru daripada Operasi.
|
||||
</p>
|
||||
@if($isClosed)
|
||||
<button type="button" class="btn btn-dark" disabled>Sudah Ditutup</button>
|
||||
@elseif($isMissing)
|
||||
<button type="button" class="btn btn-dark" disabled>Tiada rekod untuk ditutup</button>
|
||||
@else
|
||||
<form method="post" action="{{ route('pembiayaan.online.pc.topup.close') }}"
|
||||
onsubmit="return confirm('Tutup modal online hari ini? Baki RM {{ number_format((float)($modal['baki'] ?? 0), 2) }} akan dikembalikan.');">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-dark">Tutup Modal Online Hari Ini</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-7 mb-3">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center flex-wrap">
|
||||
<h5 class="mb-0">Permohonan PC</h5>
|
||||
<form method="get" class="form-inline mt-2 mt-md-0">
|
||||
<select name="status" class="form-control form-control-sm mr-2" onchange="this.form.submit()">
|
||||
<option value="all" {{ ($status ?? '') === 'all' || ($status ?? '') === '' ? 'selected' : '' }}>Semua</option>
|
||||
<option value="PENDING" {{ ($status ?? '') === 'PENDING' ? 'selected' : '' }}>PENDING</option>
|
||||
<option value="APPROVED" {{ ($status ?? '') === 'APPROVED' ? 'selected' : '' }}>APPROVED</option>
|
||||
<option value="REJECTED" {{ ($status ?? '') === 'REJECTED' ? 'selected' : '' }}>REJECTED</option>
|
||||
</select>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body table-responsive">
|
||||
<table class="table table-striped table-sm text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Tarikh</th>
|
||||
<th>Amaun (RM)</th>
|
||||
<th>Status</th>
|
||||
<th>Dimohon Oleh</th>
|
||||
<th>Diluluskan Oleh</th>
|
||||
<th>Nota</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['tarikh'] ?? '-' }}</td>
|
||||
<td class="text-right">{{ number_format((float)($req['amaun'] ?? 0), 2) }}</td>
|
||||
<td><span class="badge {{ $badge }}">{{ $st ?: '-' }}</span></td>
|
||||
<td>{{ $req['dimohon_oleh'] ?? '-' }}</td>
|
||||
<td>{{ $req['diluluskan_oleh'] ?? '-' }}</td>
|
||||
<td class="text-left small">{{ $req['nota'] ?? '-' }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="6">Belum ada permohonan.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -340,7 +340,7 @@
|
||||
"ordering": false
|
||||
});
|
||||
|
||||
var api = '<?php echo $api_url ?>';
|
||||
var api = "{{ api_url_for_browser() }}";
|
||||
let nw = 0;
|
||||
|
||||
$('input[type="checkbox"]').hide();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user