Explore/ismail (#17)
Co-authored-by: ISMAIL MASSERAN <topaz@ISMAILs-Macbook.local> Co-authored-by: nurafrinaalimi16 <nurafrinaalimi16@gmail.com> Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local> Reviewed-on: #17 Co-authored-by: ismailmasseran <ismail@koppkb.com> Co-committed-by: ismailmasseran <ismail@koppkb.com>
This commit was merged in pull request #17.
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
<div class="form-group row col-12">
|
||||
<input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}">
|
||||
<input type="hidden" id="pembiayaan_online_enabled" value="{{ !empty(($cawangan_info['features'] ?? [])['pembiayaan_online']) ? '1' : '0' }}">
|
||||
<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 }}">
|
||||
|
||||
@@ -218,6 +219,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>
|
||||
@@ -228,6 +291,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>
|
||||
@@ -332,7 +396,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) {
|
||||
@@ -690,6 +754,7 @@
|
||||
var nokp = $('#nokp').val();
|
||||
//console.log('DEBUG NOKP:', nokp, kadarupah);
|
||||
|
||||
toggleCaraTerima(pinjaman);
|
||||
|
||||
// var keuntungan_sebulan = pinjaman * kadarupah;
|
||||
// var keuntungan_6bln = keuntungan_sebulan * 6;
|
||||
@@ -1201,9 +1266,208 @@
|
||||
.then(response => response.json());
|
||||
}
|
||||
|
||||
function toggleCaraTerima(pinjaman) {
|
||||
var pembiayaanOnlineEnabled = $('#pembiayaan_online_enabled').val() === '1';
|
||||
if (pembiayaanOnlineEnabled && 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();
|
||||
@@ -1230,23 +1494,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);
|
||||
@@ -1987,7 +2244,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) {
|
||||
|
||||
Reference in New Issue
Block a user