Explore/ismail (#5)
Build Docker Image / build-frontend (push) Successful in 42s

Co-authored-by: ISMAIL MASSERAN <topaz@ISMAILs-Macbook.local>
Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local>
Reviewed-on: #5
This commit was merged in pull request #5.
This commit is contained in:
2026-08-27 10:40:03 +08:00
parent 1f8642e230
commit 46b41331d2
120 changed files with 3111 additions and 198 deletions
@@ -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'] }}"
+1 -1
View File
@@ -48,6 +48,6 @@
</div>
</div>
<script>
var api_url = "<?php echo $api_url ?>";
var api_url = "{{ api_url_for_browser() }}";
</script>
@endsection
+4 -5
View File
@@ -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;
}
+2 -2
View File
@@ -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 }}";
+1 -1
View File
@@ -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(){
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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'] }}";
+1 -1
View File
@@ -473,7 +473,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 ?>";
+1 -1
View File
@@ -422,7 +422,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 }}";
+4 -5
View File
@@ -495,15 +495,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({
+22 -16
View File
@@ -230,7 +230,6 @@
// 4️⃣ Hantar permohonan ke backend (Laravel)
const response = await fetch("{{ route('operasi.createkelulusan-anggota') }}", {
method: 'POST',
headers: {
"Content-Type": "application/json",
@@ -238,15 +237,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();
@@ -714,18 +712,26 @@
</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({
+1 -1
View File
@@ -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 }}",
+1 -1
View File
@@ -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();
+1 -1
View File
@@ -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();
+3 -3
View File
@@ -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) {
+232 -15
View File
@@ -217,6 +217,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>
@@ -331,7 +393,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) {
@@ -684,6 +746,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 +1258,170 @@
.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();
$('#cara_terima_tunai').prop('checked', true);
}
}
function toggleBankOnlineSection() {
if ($('input[name="cara_terima"]:checked').val() === 'ONLINE') {
$('#bank_online_section').show();
var nama = $('#gadai_kodbank option:selected').data('nama') || '';
$('#gadai_nama_bank').val(nama);
refreshModalOnlineStatus();
} else {
$('#bank_online_section').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') || '');
});
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 +1448,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 +2198,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({
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 }}";
+1 -1
View File
@@ -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(){
+1 -1
View File
@@ -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'] }}";
+2 -2
View File
@@ -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({
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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'] }}";
+1 -1
View File
@@ -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(){
+1 -1
View File
@@ -179,7 +179,7 @@
<script>
var api_url = "<?php echo $api_url ?>";
var api_url = "{{ api_url_for_browser() }}";
var cawangan = "{{ Auth::user()->cawangan }}";
+1 -1
View File
@@ -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'] }}";
+1 -1
View File
@@ -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'] }}";
+1 -1
View File
@@ -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(){
+4 -2
View File
@@ -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 = '';
+2 -2
View File
@@ -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();
@@ -138,6 +138,19 @@
<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>
@if(
app()->environment(['local', 'staging'])
&&
in_array($auth_user->roles, ['admin'])
&& $staff->roles != 'admin'
&& $staff->id != $auth_user->id
&& !(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated())
)
<form method="post" action="{{ route('impersonate.start', ['id' => $staff->id]) }}" style="display:inline;">
@csrf
<button type="button" class="btn btn-secondary btn-impersonate" data-staff-name="{{ $staff->name }}" title="Impersonate"><i class="material-icons">supervised_user_circle</i></button>
</form>
@endif
<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') }}">
@@ -147,6 +160,18 @@
<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>
@if(
app()->environment(['local', 'staging'])
&&
$staff->roles != 'admin'
&& $staff->id != $auth_user->id
&& !(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated())
)
<form method="post" action="{{ route('impersonate.start', ['id' => $staff->id]) }}" style="display:inline;">
@csrf
<button type="button" class="btn btn-secondary btn-impersonate" data-staff-name="{{ $staff->name }}" title="Impersonate"><i class="material-icons">supervised_user_circle</i></button>
</form>
@endif
<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
@@ -223,6 +248,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 Kakitangan?',
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) {
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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,271 @@
@extends('layouts.app_operasi')
@section('content')
@php
$pendingCount = collect($lines)->whereIn('status', ['IN_BATCH', 'OPS_REVIEW'])->count();
$approvedCount = collect($lines)->where('status', 'APPROVED')->count();
$cawName = $cawangan_info['nama'] ?? $cawangan_info['namacaw'] ?? $kodcaw;
@endphp
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-md-12">
<nav aria-label="breadcrumb">
<ol class="breadcrumb pb-3">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li>
<li class="breadcrumb-item"><a href="{{ route('pembiayaan.online.operasi') }}">Pembiayaan Online</a></li>
<li class="breadcrumb-item active" aria-current="page">Batch</li>
</ol>
</nav>
@if(session()->has('message'))
<div class="alert alert-success">{{ session('message') }}</div>
@endif
@if(session()->has('error'))
<div class="alert alert-danger">{{ session('error') }}</div>
@endif
<div class="card mb-3">
<div class="card-body">
<div class="row">
<div class="col-md-3"><b>Batch No</b><br>{{ $batch['batch_no'] ?? '-' }}</div>
<div class="col-md-3"><b>Cawangan</b><br>{{ $cawName }} <small class="text-muted">({{ $kodcaw }})</small></div>
<div class="col-md-2"><b>Tarikh</b><br>{{ $batch['tarikh'] ?? '-' }}</div>
<div class="col-md-2"><b>Slot</b><br>{{ $batch['slot'] ?? '-' }}</div>
<div class="col-md-2"><b>Status</b><br>{{ $batch['status'] ?? '-' }}</div>
</div>
<div class="row mt-3">
<div class="col-md-3"><b>Bilangan</b><br>{{ $batch['bilangan'] ?? count($lines) }}</div>
<div class="col-md-3"><b>Jumlah</b><br>RM {{ number_format((float)($batch['jumlah_keseluruhan'] ?? 0), 2) }}</div>
<div class="col-md-3"><b>Dihantar Oleh</b><br>{{ $batch['pc_submitted_by'] ?? '-' }}</div>
<div class="col-md-3"><b>Dihantar Pada</b><br>{{ $batch['submitted_at'] ?? '-' }}</div>
</div>
</div>
</div>
<div class="card mb-3">
<div class="card-header d-flex justify-content-between align-items-center flex-wrap">
<h5 class="mb-0">Senarai Dalam Batch</h5>
<div class="mt-2 mt-md-0">
<a href="{{ route('pembiayaan.online.operasi') }}" class="btn btn-secondary btn-sm">Kembali</a>
@if($pendingCount > 0)
<form method="post"
action="{{ route('pembiayaan.online.operasi.approve.batch', ['kodcaw' => $kodcaw, 'batchId' => $batch['id']]) }}"
class="d-inline"
onsubmit="return confirm('Luluskan semua {{ $pendingCount }} rekod menunggu dalam batch ini?');">
@csrf
<button type="submit" class="btn btn-success btn-sm">Lulus Semua Menunggu ({{ $pendingCount }})</button>
</form>
@endif
@if($approvedCount > 0)
<button type="button" class="btn btn-dark btn-sm" data-toggle="modal" data-target="#paidBatchModal">
Tanda PAID Batch ({{ $approvedCount }})
</button>
@endif
</div>
</div>
<div class="card-body table-responsive">
<table class="table table-striped table-sm text-center">
<thead class="thead-dark">
<tr>
<th>Status</th>
<th>SAG</th>
<th>Pelanggan</th>
<th>No KP</th>
<th>Bank</th>
<th>No Akaun</th>
<th>Nama Akaun</th>
<th>Pinjaman (RM)</th>
<th>Rujukan Bayaran</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
@forelse($lines as $line)
@php
$st = $line['status'] ?? '';
$badge = 'badge-secondary';
if ($st === 'APPROVED') $badge = 'badge-success';
elseif ($st === 'PAID') $badge = 'badge-dark';
elseif ($st === 'REJECTED_PC') $badge = 'badge-danger';
elseif (in_array($st, ['IN_BATCH', 'OPS_REVIEW'], true)) $badge = 'badge-primary';
@endphp
<tr>
<td><span class="badge {{ $badge }}">{{ $st ?: '-' }}</span></td>
<td>{{ $line['norujukan'] ?? '-' }}</td>
<td class="text-left">{{ $line['nama_pelanggan'] ?? '-' }}</td>
<td>{{ $line['nokp'] ?? '-' }}</td>
<td>{{ $line['nama_bank'] ?? $line['kodbank'] ?? '-' }}</td>
<td>{{ $line['noakaun'] ?? '-' }}</td>
<td class="text-left">{{ $line['nama_akaun'] ?? '-' }}</td>
<td class="text-right">{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}</td>
<td>{{ $line['no_rujukan_bayaran'] ?? '-' }}</td>
<td class="text-nowrap">
@if(in_array($st, ['IN_BATCH', 'OPS_REVIEW'], true))
<form method="post"
action="{{ route('pembiayaan.online.operasi.approve', ['kodcaw' => $kodcaw, 'id' => $line['id']]) }}"
class="d-inline"
onsubmit="return confirm('Luluskan rekod {{ $line['norujukan'] ?? '' }}?');">
@csrf
<input type="hidden" name="batch_id" value="{{ $batch['id'] }}">
<button type="submit" class="btn btn-success btn-sm">Lulus</button>
</form>
<button type="button"
class="btn btn-danger btn-sm btn-reject"
data-id="{{ $line['id'] }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
Tolak
</button>
@elseif($st === 'APPROVED')
<button type="button"
class="btn btn-dark btn-sm btn-paid"
data-id="{{ $line['id'] }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
PAID + Bukti
</button>
<button type="button"
class="btn btn-outline-danger btn-sm btn-reject"
data-id="{{ $line['id'] }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
Tolak
</button>
@elseif($st === 'PAID')
<span class="text-muted small">Selesai</span>
@else
<span class="text-muted small">-</span>
@endif
</td>
</tr>
@empty
<tr>
<td colspan="10">Tiada rekod dalam batch.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{{-- Reject modal --}}
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<form method="post" id="rejectForm" action="">
@csrf
<input type="hidden" name="batch_id" value="{{ $batch['id'] }}">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tolak Rekod <span id="rejectNorujukan"></span></h5>
<button type="button" class="close" data-dismiss="modal"><span>&times;</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>&times;</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>&times;</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>&times;</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>&times;</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 &amp; 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>&times;</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();
+1 -1
View File
@@ -371,7 +371,7 @@
"ordering": false
});
var api = '<?php echo $api_url ?>';
var api = "{{ api_url_for_browser() }}";
let nw = 0;
$('input[type="checkbox"]').hide();
@@ -470,7 +470,7 @@
"ordering": false
});
var api = '<?php echo $api_url ?>';
var api = "{{ api_url_for_browser() }}";
let nw = 0;
let jenisAT = 'none';
@@ -652,7 +652,7 @@
"ordering": false
});
var api = '<?php echo $api_url ?>';
var api = "{{ api_url_for_browser() }}";
let nw = 0;
let jenisAT = 'none';
+2 -2
View File
@@ -1130,7 +1130,7 @@
let pertambahpinjaman = "{{ $pertambahpinjaman }}";
var api = '<?php echo $api_url ?>';
var api = "{{ api_url_for_browser() }}";
let nw = 0;
let jenisAT = 'none';
@@ -1813,7 +1813,7 @@
});
try {
const pampasanListResponse = await fetch(`{{ config('api.url') }}/api/palsu/laporan?${params}`, {
const pampasanListResponse = await fetch(`{{ api_url_for_browser() }}/api/palsu/laporan?${params}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
@@ -634,7 +634,7 @@
<tr>
<td style="width:10px">(-) Rebat Untung</td>
<td style="width:10px">: RM
{{ number_format($keuntungan_rebate,2) }}
{{ number_format($totalrebate['onepercent'], 2) }}
</td>
</tr>
<tr>
@@ -644,7 +644,7 @@
<tr>
<td style="width:10px">(-) Rebat Lain-Lain Caj</td>
<td style="width:10px">: RM
{{ number_format($ujrah_rebate, 2) }} </td>
{{ number_format($totalrebate['ujrah'], 2) }} </td>
</tr>
<tr>
<td style="width:10px">Jumlah Keuntungan + Lain-Lain Caj</td>
@@ -867,7 +867,7 @@
<tr>
<td style="width:10px">(-) Rebat Untung</td>
<td style="width:10px">: RM
{{ number_format($keuntungan_rebate, 2) }}
{{ number_format($totalrebate['onepercent'], 2) }}
</td>
</tr>
<tr>
@@ -877,7 +877,7 @@
<tr>
<td style="width:10px">(-) Rebat Lain-Lain Caj</td>
<td style="width:10px">: RM
{{ number_format($ujrah_rebate, 2) }} </td>
{{ number_format($totalrebate['ujrah'], 2) }} </td>
</tr>
<tr>
<td style="width:10px">Jumlah Keuntungan + Lain-Lain Caj</td>