Experiment/merge annur (#20)
Build Docker Image / build-frontend (push) Successful in 55s

Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local>
Reviewed-on: #20
This commit was merged in pull request #20.
This commit is contained in:
2026-09-20 12:49:39 +08:00
parent 8a2bae7a88
commit 918502b504
30 changed files with 1011 additions and 190 deletions
+1 -1
View File
@@ -412,7 +412,7 @@
</div>
<script>
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
var api_url = "{{ api_url_for_browser() }}";
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
+1 -1
View File
@@ -541,7 +541,7 @@
</div>
<script>
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
var api_url = "{{ api_url_for_browser() }}";
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
@@ -131,7 +131,8 @@
@endforeach
</tr>
</thead>
<tbody></tbody>
{{ $slot }}
<tbody>
{{ $slot }}
</tbody>
</table>
</div>
+1 -1
View File
@@ -437,7 +437,7 @@
</div>
<script>
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
var api_url = "{{ api_url_for_browser() }}";
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
+20 -5
View File
@@ -390,14 +390,14 @@
<x-datatable
id="myTable"
filename="SAG_Baru"
:columns="['Bil', 'No Rujukan', 'Tarikh Pembiayaan', 'Tarikh Matang', 'Baki Harga Jualan', 'Baki Pembiayaan', 'Margin', 'Tempoh', 'Keuntungan', 'Lelong', 'Borang Online']"
:columns="['Bil', 'No Rujukan', 'Cara Terima', 'Tarikh Pembiayaan', 'Tarikh Matang', 'Baki Harga Jualan', 'Baki Pembiayaan', 'Margin', 'Tempoh', 'Keuntungan', 'Lelong', 'Borang Online']"
/>
</div>
<div class="tab-pane fade {{ $activate_pane_SAG_lama }}" id="nav-xtawarruq" role="tabpanel" aria-labelledby="nav-xtawarruq-tab">
<x-datatable
id="xtawarruq"
filename="SAG_Lama"
:columns="['Bil', 'No Rujukan', 'Tarikh Pembiayaan', 'Tarikh Matang', 'Baki Harga Jualan', 'Baki Pembiayaan', 'Margin', 'Tempoh', 'Keuntungan', 'Lelong', 'Borang Online']"
:columns="['Bil', 'No Rujukan', 'Cara Terima', 'Tarikh Pembiayaan', 'Tarikh Matang', 'Baki Harga Jualan', 'Baki Pembiayaan', 'Margin', 'Tempoh', 'Keuntungan', 'Lelong', 'Borang Online']"
/>
</div>
</div>
@@ -712,11 +712,12 @@
</div>
<script>
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? 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 }}";
console.log('test api_arrahnbid: ', api_arrahnbid);
$('#daftar_gadai').on('click', function() {
$("#daftar_gadai").prop('disabled', true);
var noic = $('#noic').val();
@@ -817,6 +818,10 @@
return '{{ url("/gadai/borang-pengesahan-online") }}/' + encodeURIComponent(norujukan);
}
function formatCaraTerima(value) {
return String(value || 'TUNAI').toUpperCase() === 'ONLINE' ? 'Online' : 'Tunai';
}
function cetakBorangOnlineCell(gadai_detail) {
var cara = String(gadai_detail['cara_terima'] || '').toUpperCase();
if (cara !== 'ONLINE') {
@@ -1133,6 +1138,13 @@
text: 'Pembiayaan Sedang Dilelong..'
});
}
},
error: function() {
Swal.fire({
icon: 'error',
title: 'Amaran',
text: 'Tidak dapat semak status lelong. Sila cuba semula.'
});
}
});
@@ -1198,13 +1210,14 @@
let table_norujukan = gadai_detail["norujukan"];
if (gadai_detail["percentpinj"] != 0)
xtawarruq.row.add([
'<input type="radio" value=' + gadai_detail["norujukan"] +
' name="belum"/>',
'<input type="radio" value="' + gadai_detail["norujukan"] +
'" name="belum" data-cara-terima="' + (gadai_detail['cara_terima'] || '') + '"/>',
'<a href="#" onclick="checkserah(this)" data-pinjaman=' +
gadai_detail['pinjaman'] + ' data-hargajualan=' +
gadai_detail['hargajualan'] + ' data-norujukan=' +
gadai_detail['norujukan'] + ' data-url=' + urlroute + '>' +
gadai_detail['norujukan'] + '</a>',
formatCaraTerima(gadai_detail['cara_terima']),
gadai_detail['t_gadai'],
tarikh_matang,
'RM ' + formatter.format(gadai_detail['bakihargajualan']),
@@ -1216,6 +1229,7 @@
'RM ' + formatter.format(upahsemasa),
'<div style="white-space: nowrap; color:red; font-weight: bolder">' +
taglel + '</div>',
cetakBorangOnlineCell(gadai_detail),
]).draw();
} else {
var taglel = '';
@@ -1256,6 +1270,7 @@
gadai_detail['hargajualan'] + ' data-norujukan=' +
gadai_detail['norujukan'] + ' data-url=' + urlroute + '>' +
gadai_detail['norujukan'] + '</a>',
formatCaraTerima(gadai_detail['cara_terima']),
gadai_detail['t_gadai'],
tarikh_matang,
'RM ' + formatter.format(gadai_detail['bakihargajualan']),
@@ -243,7 +243,7 @@
</tr>
<tr>
<th>Cara Terima Pembiayaan</th>
<td>Online (kredit ke akaun bank) — bukan tunai</td>
<td>Atas Talian (Online)</td>
</tr>
<tr>
<th>Teller</th>
+36 -1
View File
@@ -29,6 +29,7 @@
<div class="form-group row col-12">
<input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}">
<input type="hidden" id="pembiayaan_online_enabled" value="{{ !empty(($cawangan_info['features'] ?? [])['pembiayaan_online']) ? '1' : '0' }}">
<input type="hidden" id="rebet_annur_enabled" value="{{ !empty(($cawangan_info['features'] ?? [])['rebet_annur']) ? '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 }}">
@@ -186,6 +187,19 @@
</div>
</diV>
</div>
@if(!empty(($cawangan_info['features'] ?? [])['rebet_annur']))
<div class="col-4">
<div class="form-group row">
<div class="col-md-6">
Kadar Rebet
</div>
<div class="col-md-6">
<input type="text" class="form-control" readonly name="rebate" id="rebate">
<input type="text" class="form-control" readonly name="kadar_rebate" id="kadar_rebate">
</div>
</div>
</div>
@endif
<div class="col-4">
<div class="form-group row">
<div class="col-md-6">
@@ -789,6 +803,26 @@
$('#ujrah').val(formatter.format(getRoundedMethod(array_keuntungan['ujrah']).toFixed(2)));
$('#onepercent').val(formatter.format(getRoundedMethod(array_keuntungan['onepercent']).toFixed(2)));
if ($('#rebet_annur_enabled').val() === '1') {
var rebate, kadar_rebate;
if (pinjaman < 20000) {
rebate = keuntungan_sebulan * 0.05;
kadar_rebate = 5;
} else if (pinjaman >= 20000 && pinjaman <= 50000) {
rebate = keuntungan_sebulan * 0.10;
kadar_rebate = 10;
} else if (pinjaman > 50000 && pinjaman <= 100000) {
rebate = keuntungan_sebulan * 0.15;
kadar_rebate = 15;
} else {
rebate = keuntungan_sebulan * 0.20;
kadar_rebate = 20;
}
rebate = getRoundedMethod(rebate);
$('#rebate').val(formatter.format(rebate.toFixed(2)));
$('#kadar_rebate').val(formatter.format(kadar_rebate.toFixed(2)) + ' %');
}
});
const formatter = new Intl.NumberFormat('en-US', {
@@ -1268,7 +1302,8 @@
function toggleCaraTerima(pinjaman) {
var pembiayaanOnlineEnabled = $('#pembiayaan_online_enabled').val() === '1';
if (pembiayaanOnlineEnabled && pinjaman >= 5000 && pinjaman <= 50000) {
// MIN PINJAMAN = 1.00
if (pembiayaanOnlineEnabled && pinjaman >= 1 && pinjaman <= 50000) {
$('#cara_terima_section').show();
toggleBankOnlineSection();
} else {
+1 -1
View File
@@ -414,7 +414,7 @@
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var ppc = "{{ Auth::user()->name }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
@@ -52,6 +52,7 @@
<th>No K/P</th>
<th>Tarikh Pembiayaan</th>
<th>No Rujukan</th>
<th>Cara Terima</th>
<th>Pembiayaan (RM)</th>
<th>Keuntungan Lain-lain Caj (RM) </th>
<th>Keuntungan 1% (RM)</th>
@@ -61,7 +62,7 @@
</tr>
</thead>
<tfoot class="thead-dark">
<th colspan="5">TOTAL</th>
<th colspan="6">TOTAL</th>
<th id="pinjamantotal"></th>
<th id="ujrahtotal"></th>
<th id="onepercenttotal"></th>
@@ -300,6 +301,10 @@
total_upah12 += upah12;
var caraTerima = String(gadai['cara_terima'] || 'TUNAI').toUpperCase() === 'ONLINE'
? 'Online'
: 'Tunai';
// Pastikan semua nilai ada sebelum add row
tablegadai.row.add([
counter,
@@ -307,6 +312,7 @@
gadai['nokp'] || '-',
gadai['t_gadai'] || '-',
gadai['norujukan'] || '-',
caraTerima,
formatter.format(pinjaman),
formatter.format(ujrah * 12),
formatter.format(onepercent * 12),
+1 -1
View File
@@ -103,7 +103,7 @@
<script>
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
var api_url = "{{ api_url_for_browser() }}";
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
+1 -1
View File
@@ -414,7 +414,7 @@
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var ppc = "{{ Auth::user()->name }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
+1 -1
View File
@@ -470,7 +470,7 @@
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
var ppc = "{{ Auth::user()->name }}";
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
var api_arrahnbid = @json($cawangan_info['api_arrahnbid'] ?? config('app.api_arrahnbid'));
@@ -67,91 +67,114 @@
@endif
</div>
</div>
<div class="card-body table-responsive">
<table class="table table-striped table-sm text-center">
<thead class="thead-dark">
<div class="card-body">
<x-datatable
id="batch_lines"
class="table-sm text-center"
:filename="'Batch_' . ($batch['batch_no'] ?? $batch['id'])"
:columns="['Bil', 'Status', 'SAG', 'Pelanggan', 'No KP', 'Bank', 'No Akaun', 'Nama Akaun', 'Pinjaman (RM)', 'Rujukan Bayaran', 'Dokumen', 'Tindakan']"
:skipExport="['Dokumen', 'Tindakan']"
>
@foreach($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>
<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>
<td>{{ $loop->iteration }}</td>
<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">
<button type="button"
class="btn btn-sm btn-outline-dark btn-preview-sag"
data-url="{{ route('pembiayaan.online.operasi.sag', ['kodcaw' => $kodcaw, 'id' => $line['id']]) }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
SAG
</button>
@if(!empty($line['bukti_akaun_file_id']))
<a class="btn btn-sm btn-outline-primary"
href="{{ route('pembiayaan.online.operasi.bukti.akaun', ['kodcaw' => $kodcaw, 'id' => $line['id']]) }}"
target="_blank">
Slip Bank
</a>
@else
<span class="text-muted small">Tiada slip</span>
@endif
</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>
</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>
@endforeach
</x-datatable>
</div>
</div>
</div>
</div>
</div>
{{-- SAG preview modal --}}
<div class="modal fade" id="sagPreviewModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document" style="max-width:1140px;">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Pratinjau SAG — <span id="sagPreviewTitle"></span></h5>
<button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
</div>
<div class="modal-body p-2">
<iframe id="sagPreviewFrame" title="Pratinjau SAG" src="about:blank"
style="width:100%;height:75vh;border:1px solid #dee2e6;background:#f8f9fa;"></iframe>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Tutup</button>
</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">
@@ -252,7 +275,28 @@
</div>
<script>
$('.btn-reject').on('click', function () {
var table = initErahnDatatable('#batch_lines', {
columnDefs: [
{ targets: 0, orderable: false, searchable: false, width: '40px' },
{ targets: [10, 11], orderable: false, searchable: false }
]
});
table.on('draw.dt', function () {
table.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw();
$('#batch_lines').on('click', '.btn-preview-sag', function () {
$('#sagPreviewTitle').text($(this).data('norujukan') || '');
$('#sagPreviewFrame').attr('src', $(this).data('url'));
$('#sagPreviewModal').modal('show');
});
$('#sagPreviewModal').on('hidden.bs.modal', function () {
$('#sagPreviewFrame').attr('src', 'about:blank');
});
$('#batch_lines').on('click', '.btn-reject', function () {
var id = $(this).data('id');
$('#rejectForm').attr(
'action',
@@ -263,7 +307,7 @@
$('#rejectModal').modal('show');
});
$('.btn-paid').on('click', function () {
$('#batch_lines').on('click', '.btn-paid', function () {
var id = $(this).data('id');
$('#paidForm').attr(
'action',
@@ -40,6 +40,7 @@
<th>No Akaun</th>
<th>Pinjaman (RM)</th>
<th>Rujukan Bayaran</th>
<th>Dokumen</th>
</tr>
</thead>
<tbody>
@@ -53,6 +54,23 @@
<td>{{ $line['noakaun'] ?? '-' }}</td>
<td class="text-right">{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}</td>
<td>{{ $line['no_rujukan_bayaran'] ?? '-' }}</td>
<td class="text-nowrap">
<button type="button"
class="btn btn-sm btn-outline-dark btn-preview-sag"
data-url="{{ route('pembiayaan.online.pc.sag', ['id' => $line['id']]) }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
SAG
</button>
@if(!empty($line['bukti_akaun_file_id']))
<a class="btn btn-sm btn-outline-primary"
href="{{ route('pembiayaan.online.pc.bukti.akaun', ['id' => $line['id']]) }}"
target="_blank">
Slip Bank
</a>
@else
<span class="text-muted small">Tiada slip</span>
@endif
</td>
</tr>
@endforeach
</tbody>
@@ -62,4 +80,32 @@
</div>
</div>
</div>
<div class="modal fade" id="sagPreviewModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document" style="max-width:1140px;">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Pratinjau SAG — <span id="sagPreviewTitle"></span></h5>
<button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
</div>
<div class="modal-body p-2">
<iframe id="sagPreviewFrame" title="Pratinjau SAG" src="about:blank"
style="width:100%;height:75vh;border:1px solid #dee2e6;background:#f8f9fa;"></iframe>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Tutup</button>
</div>
</div>
</div>
</div>
<script>
$('.btn-preview-sag').on('click', function () {
$('#sagPreviewTitle').text($(this).data('norujukan') || '');
$('#sagPreviewFrame').attr('src', $(this).data('url'));
$('#sagPreviewModal').modal('show');
});
$('#sagPreviewModal').on('hidden.bs.modal', function () {
$('#sagPreviewFrame').attr('src', 'about:blank');
});
</script>
@endsection
@@ -33,6 +33,9 @@
if (is_object($pendingReq)) {
$pendingReq = json_decode(json_encode($pendingReq), true);
}
$lineRows = collect($lines);
$verifiedCount = $lineRows->where('status', 'VERIFIED_PC')->count();
$unverifiedCount = $lineRows->count() - $verifiedCount;
@endphp
@if($isClosed)
@@ -84,7 +87,11 @@
<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>
<small>
{{ $verifiedCount }} sudah sah
/ {{ $unverifiedCount }} belum semak
&middot; Jumlah RM {{ number_format((float)($queue['jumlah'] ?? 0), 2) }}
</small>
</div>
</div>
</div>
@@ -101,10 +108,14 @@
<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>
<h5 class="mb-0">Senarai Menunggu (PENDING / REJECTED / SAH)</h5>
<button type="button" class="btn btn-primary" id="btnSubmitBatch" disabled>Hantar Batch ke Operasi</button>
</div>
<div class="card-body">
<p class="small text-muted">
Semak setiap rekod <b>satu-satu</b> (maklumat pelanggan, bank, amaun).
Hanya rekod berstatus <span class="badge badge-success">SAH</span> boleh dipilih dan dihantar ke Operasi.
</p>
<form id="formSubmitBatch" method="post" action="{{ route('pembiayaan.online.pc.submit') }}">
@csrf
<input type="hidden" name="slot" value="{{ $slot['slot'] ?? 'BATCH1' }}">
@@ -112,7 +123,7 @@
<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><input type="checkbox" id="checkAll" title="Pilih semua yang sudah sah"></th>
<th>Status</th>
<th>SAG</th>
<th>Pelanggan</th>
@@ -126,15 +137,31 @@
</thead>
<tbody>
@forelse($lines as $line)
<tr class="{{ ($line['status'] ?? '') === 'REJECTED_PC' ? 'table-warning' : '' }}">
@php
$st = $line['status'] ?? '';
$isVerified = $st === 'VERIFIED_PC';
$isRejected = $st === 'REJECTED_PC';
$bankOk = !empty($line['kodbank']) && !empty($line['noakaun']);
@endphp
<tr class="{{ $isRejected ? 'table-warning' : ($isVerified ? 'table-success' : '') }}">
<td>
<input type="checkbox" class="row-check" name="ids[]" value="{{ $line['id'] }}">
<input type="checkbox"
class="row-check"
name="ids[]"
value="{{ $line['id'] }}"
{{ $isVerified ? '' : 'disabled' }}
title="{{ $isVerified ? '' : 'Sahkan rekod ini dahulu' }}">
</td>
<td>
@if(($line['status'] ?? '') === 'REJECTED_PC')
@if($isRejected)
<span class="badge badge-danger">REJECTED</span>
@elseif($isVerified)
<span class="badge badge-success">SAH</span>
@if(!empty($line['pc_verified_by']))
<div class="small text-muted">{{ $line['pc_verified_by'] }}</div>
@endif
@else
<span class="badge badge-secondary">PENDING</span>
<span class="badge badge-secondary">BELUM SEMAK</span>
@endif
</td>
<td>{{ $line['norujukan'] ?? '-' }}</td>
@@ -144,7 +171,33 @@
<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>
<td class="text-nowrap">
@if($isVerified)
<button type="button"
class="btn btn-sm btn-outline-secondary btn-unverify"
data-id="{{ $line['id'] }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
Batal
</button>
@else
<button type="button"
class="btn btn-sm btn-success btn-verify"
{{ $bankOk ? '' : 'disabled' }}
title="{{ $bankOk ? 'Semak maklumat pelanggan' : 'Lengkapkan maklumat bank dahulu' }}"
data-id="{{ $line['id'] }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}"
data-nama="{{ $line['nama_pelanggan'] ?? '' }}"
data-nokp="{{ $line['nokp'] ?? '' }}"
data-namabank="{{ $line['nama_bank'] ?? $line['kodbank'] ?? '' }}"
data-noakaun="{{ $line['noakaun'] ?? '' }}"
data-namaakaun="{{ $line['nama_akaun'] ?? '' }}"
data-pinjaman="{{ number_format((float)($line['pinjaman'] ?? 0), 2) }}"
data-nota="{{ $line['nota'] ?? '' }}"
data-sebab="{{ $line['reject_reason'] ?? '' }}"
data-bukti-akaun="{{ $line['bukti_akaun_file_id'] ?? '' }}">
Semak
</button>
@endif
<button type="button" class="btn btn-sm btn-info btn-edit"
data-id="{{ $line['id'] }}"
data-kodbank="{{ $line['kodbank'] ?? '' }}"
@@ -152,7 +205,8 @@
data-namaakaun="{{ $line['nama_akaun'] ?? '' }}"
data-namabank="{{ $line['nama_bank'] ?? '' }}"
data-nota="{{ $line['nota'] ?? '' }}"
data-norujukan="{{ $line['norujukan'] ?? '' }}">
data-norujukan="{{ $line['norujukan'] ?? '' }}"
data-bukti-akaun="{{ $line['bukti_akaun_file_id'] ?? '' }}">
Edit
</button>
</td>
@@ -166,6 +220,9 @@
</table>
</div>
</form>
<form id="formUnverify" method="post" action="" class="d-none">
@csrf
</form>
</div>
</div>
@@ -221,8 +278,8 @@
{{-- 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="">
<div class="modal-dialog modal-xl" role="document" style="max-width:1140px;">
<form method="post" id="editForm" action="" enctype="multipart/form-data">
@csrf
@method('PUT')
<div class="modal-content">
@@ -231,29 +288,50 @@
<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 class="row">
<div class="col-md-4">
<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>Slip Bank / Bukti Akaun</label>
<input type="file" name="bukti_akaun" id="editBuktiAkaun" class="form-control-file"
accept=".pdf,.jpg,.jpeg,.png,.gif">
<div id="editBuktiAkaunExisting" class="mt-2" style="display:none;">
<a href="#" id="editBuktiAkaunLink" class="btn btn-sm btn-outline-primary" target="_blank">
Lihat slip sedia ada
</a>
</div>
<small class="text-muted">PDF / imej slip akaun bank pelanggan (maks 4MB)</small>
</div>
<div class="form-group">
<label>Nota</label>
<textarea name="nota" id="editNota" class="form-control" rows="2"></textarea>
</div>
<p class="small text-muted mb-0">Jika rekod sudah SAH, simpan akan batal semakan. Sila semak semula sebelum hantar.</p>
</div>
<div class="col-md-8">
<label class="d-block">Pratinjau SAG</label>
<iframe id="editSagFrame" title="Pratinjau SAG" src="about:blank"
style="width:100%;height:70vh;border:1px solid #dee2e6;background:#f8f9fa;"></iframe>
</div>
</div>
</div>
<div class="modal-footer">
@@ -265,26 +343,149 @@
</div>
</div>
{{-- Verify one-by-one modal --}}
<div class="modal fade" id="verifyModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document" style="max-width:1140px;">
<form method="post" id="verifyForm" action="">
@csrf
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Semak Rekod — <span id="verifyNorujukan"></span></h5>
<button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
</div>
<div class="modal-body">
<p class="small text-muted">Bandingkan maklumat pelanggan dengan SAG / slip bank sebelum sahkan.</p>
<div class="row">
<div class="col-md-4">
<table class="table table-sm table-bordered mb-3">
<tr>
<th style="width:40%">SAG</th>
<td id="verifySag"></td>
</tr>
<tr>
<th>Pelanggan</th>
<td id="verifyNama"></td>
</tr>
<tr>
<th>No KP</th>
<td id="verifyNokp"></td>
</tr>
<tr>
<th>Bank</th>
<td id="verifyBank"></td>
</tr>
<tr>
<th>No Akaun</th>
<td id="verifyNoakaun"></td>
</tr>
<tr>
<th>Nama Akaun</th>
<td id="verifyNamaakaun"></td>
</tr>
<tr>
<th>Pinjaman</th>
<td>RM <span id="verifyPinjaman"></span></td>
</tr>
<tr>
<th>Nota</th>
<td id="verifyNota"></td>
</tr>
</table>
<div class="alert alert-warning py-2" id="verifySebabBox" style="display:none;">
<b>Sebab tolak Operasi:</b>
<div id="verifySebab"></div>
</div>
<div class="form-check mb-3">
<input type="checkbox" class="form-check-input" id="verifyConfirm" required>
<label class="form-check-label" for="verifyConfirm">
Saya sahkan maklumat pelanggan, bank dan amaun adalah betul.
</label>
</div>
<a href="#" id="verifyBuktiAkaunLink" class="btn btn-sm btn-outline-primary" target="_blank" style="display:none;">
Lihat Slip Bank
</a>
</div>
<div class="col-md-8">
<label class="d-block">Pratinjau SAG</label>
<iframe id="verifySagFrame" title="Pratinjau SAG" src="about:blank"
style="width:100%;height:70vh;border:1px solid #dee2e6;background:#f8f9fa;"></iframe>
</div>
</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">Sahkan Rekod Ini</button>
</div>
</div>
</form>
</div>
</div>
<script>
function syncSubmitButton() {
var n = $('.row-check:checked').length;
var n = $('.row-check:not(:disabled):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);
$('.row-check:not(:disabled)').prop('checked', this.checked);
syncSubmitButton();
});
$(document).on('change', '.row-check', syncSubmitButton);
$(document).on('change', '.row-check', function () {
var enabled = $('.row-check:not(:disabled)');
$('#checkAll').prop('checked', enabled.length > 0 && enabled.filter(':checked').length === enabled.length);
syncSubmitButton();
});
$('#btnSubmitBatch').on('click', function () {
if ($('.row-check:checked').length === 0) return;
if (!confirm('Hantar rekod dipilih ke Operasi?')) return;
if ($('.row-check:not(:disabled):checked').length === 0) return;
if (!confirm('Hantar rekod yang sudah disahkan ke Operasi?')) return;
$('#formSubmitBatch').submit();
});
$('.btn-unverify').on('click', function () {
var id = $(this).data('id');
var sag = $(this).data('norujukan') || '';
if (!confirm('Batal semakan ' + sag + '? Rekod ini tidak boleh dihantar sehingga disemak semula.')) return;
$('#formUnverify').attr('action', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/unverify");
$('#formUnverify').submit();
});
$('.btn-verify').on('click', function () {
var id = $(this).data('id');
var sebab = $(this).data('sebab') || '';
$('#verifyForm').attr('action', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/verify");
$('#verifyNorujukan').text($(this).data('norujukan'));
$('#verifySag').text($(this).data('norujukan') || '-');
$('#verifyNama').text($(this).data('nama') || '-');
$('#verifyNokp').text($(this).data('nokp') || '-');
$('#verifyBank').text($(this).data('namabank') || '-');
$('#verifyNoakaun').text($(this).data('noakaun') || '-');
$('#verifyNamaakaun').text($(this).data('namaakaun') || '-');
$('#verifyPinjaman').text($(this).data('pinjaman') || '0.00');
$('#verifyNota').text($(this).data('nota') || '-');
if (sebab) {
$('#verifySebab').text(sebab);
$('#verifySebabBox').show();
} else {
$('#verifySebabBox').hide();
}
$('#verifyConfirm').prop('checked', false);
$('#verifySagFrame').attr('src', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/sag");
if ($(this).data('buktiAkaun')) {
$('#verifyBuktiAkaunLink').attr('href', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/bukti-akaun").show();
} else {
$('#verifyBuktiAkaunLink').hide();
}
$('#verifyModal').modal('show');
});
$('#verifyModal').on('hidden.bs.modal', function () {
$('#verifySagFrame').attr('src', 'about:blank');
});
$('.btn-edit').on('click', function () {
var id = $(this).data('id');
$('#editForm').attr('action', "{{ url('/pembiayaan-online/pc/lines') }}/" + id);
@@ -294,9 +495,21 @@
$('#editNamaakaun').val($(this).data('namaakaun'));
$('#editNamabank').val($(this).data('namabank'));
$('#editNota').val($(this).data('nota'));
$('#editBuktiAkaun').val('');
$('#editSagFrame').attr('src', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/sag");
if ($(this).data('buktiAkaun')) {
$('#editBuktiAkaunLink').attr('href', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/bukti-akaun");
$('#editBuktiAkaunExisting').show();
} else {
$('#editBuktiAkaunExisting').hide();
}
$('#editModal').modal('show');
});
$('#editModal').on('hidden.bs.modal', function () {
$('#editSagFrame').attr('src', 'about:blank');
});
$('#editKodbank').on('change', function () {
$('#editNamabank').val($('#editKodbank option:selected').data('nama') || '');
});
@@ -326,6 +326,16 @@
<input type="text" id="jumlahtelahdibayar" class="form-control" readonly/>
</div>
</div>
@if(!empty(($cawangan_info['features'] ?? [])['rebet_annur']))
<div class="form-group row">
<div class="col-4">
REBET DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahDiskaun" value="{{ number_format($gadai['diskaun'] ?? 0, 2) }}" class="form-control" readonly/>
</div>
</div>
@endif
</div>
</div>
@@ -441,6 +451,16 @@
<input type="text" id="jumlahupah" class="form-control" readonly/>
</div>
</div>
@if(!empty(($cawangan_info['features'] ?? [])['rebet_annur']))
<div class="form-group row">
<div class="col-4">
REBET DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahDiskaun" value="{{ number_format($gadai['diskaun'] ?? 0, 2) }}" class="form-control" readonly/>
</div>
</div>
@endif
<div id="divbakipinjaman">
<div class="form-group row">
@@ -467,6 +487,17 @@
<input type="text" id="jumlahtelahdibayar" class="form-control" readonly/>
</div>
</div>
@if(!empty(($cawangan_info['features'] ?? [])['rebet_annur']))
<div class="form-group row">
<div class="col-4">
REBET DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahDiskaun" value="{{ number_format($gadai['diskaun'] ?? 0, 2) }}" class="form-control" readonly/>
</div>
</div>
@endif
<div class="form-group row" id="divbayaran">
@@ -214,8 +214,7 @@
/>
<div class="title">
<h1>Borang Kelulusan Pembiayaan Online<br>Senarai Batch Pembayaran</h1>
<p>Untuk semakan Operasi dan kelulusan Pengurus Besar. Bukan untuk tandatangan pelanggan.</p>
<h1>Borang Kelulusan Batch Pembiayaan Online</h1>
</div>
<div class="section">
@@ -298,8 +297,8 @@
bagi batch <b>{{ $batchNo }}</b> cawangan <b>{{ $cawangan }}</b> adalah lengkap
untuk proses pembayaran ke akaun bank pelanggan.
<ol>
<li>Maklumat SAG, nama, no. KP, bank dan no. akaun telah disemak terhadap rekod sistem.</li>
<li>Pembayaran akan dikreditkan ke akaun penerima seperti senarai, bukan tunai di kaunter.</li>
<li>Maklumat SAG, nama, no. KP, bank dan no. akaun telah disemak didalam sistem.</li>
<li>Pembayaran akan dikreditkan ke akaun penerima seperti didalam senarai.</li>
<li>Sebarang ralat akaun yang dikesan selepas kelulusan hendaklah dilaporkan serta-merta.</li>
</ol>
</div>
@@ -318,18 +317,11 @@
<div class="role">Pengurus Besar</div>
<div class="sign-line">
<p>Nama:</p>
<p>Cop / Paraf:</p>
<p>Cop:</p>
<p>Tarikh:</p>
</div>
</div>
</div>
<x-print.footer :show-copies="false">
<b>Nota:</b>
<p>1. Borang ini dicetak dari skrin Operasi — Pembiayaan Online (Batch) untuk kelulusan pembayaran.</p>
<p>2. Hanya dua tandatangan diperlukan: Operasi dan Pengurus Besar.</p>
<p>3. Simpan salinan bersama bukti pindahan bank selepas status PAID.</p>
</x-print.footer>
</div>
</div>
</body>
@@ -108,6 +108,19 @@
letter-spacing: 0.02em;
}
.copies {
margin-top: 12px;
font-size: 10px;
}
.copies span {
display: inline-block;
border: 1px solid #111;
width: 11px;
height: 11px;
margin-right: 4px;
vertical-align: -1px;
}
.akuan {
font-size: 11px;
line-height: 1.55;
@@ -121,10 +134,8 @@
.akuan li { margin-bottom: 4px; }
.signs {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 10px;
margin-top: 16px;
max-width: 34%;
}
.sign-box {
border: 1px solid #111;
@@ -214,7 +225,7 @@
<div class="section-title">B. Maklumat Pembiayaan</div>
<table class="fields">
<tr>
<th>No. Surat Akuan Gadai</th>
<th>No. Surat Akuan Gadaian (SAG)</th>
<td>{{ $norujukan }}</td>
</tr>
<tr>
@@ -222,8 +233,8 @@
<td class="amt">RM {{ $pinjaman }}</td>
</tr>
<tr>
<th>Cara Terima Pembiayaan</th>
<td>Online (kredit ke akaun bank) — bukan tunai</td>
<th>Cara Pembiayaan</th>
<td>Atas Talian (Online)</td>
</tr>
<tr>
<th>Teller</th>
@@ -250,15 +261,19 @@
</table>
</div>
<div class="copies">
Salinan: <span></span> Kad Pengenalan &nbsp;&nbsp; <span></span> Akaun Bank/ Slip/ Penyata Bank
</div>
<div class="section">
<div class="section-title">D. Akuan Pelanggan</div>
<div class="akuan">
Saya, <b>{{ $nama }}</b> (No. KP: <b>{{ $nokp }}</b>), dengan ini mengesahkan bahawa:
<ol>
<li>Maklumat akaun bank di Bahagian C adalah benar, tepat, dan milik saya sendiri.</li>
<li>Saya memohon supaya amaun pembiayaan gadai sebanyak <b>RM {{ $pinjaman }}</b> dikreditkan ke akaun tersebut dan <b>bukan</b> diterima secara tunai.</li>
<li>Saya faham kredit ke akaun tertakluk kepada semakan Pengurus Cawangan dan proses pembayaran pihak Koperasi.</li>
<li>Saya bertanggungjawab sepenuhnya jika maklumat akaun tidak tepat, dan tidak akan menuntut ganti rugi atas kelewatan atau ralat yang berpunca daripadanya.</li>
<li>Saya bersetuju menerima pembayaran pembiayaan Ar-Rahn KoPKB sebanyak <b>RM {{ $pinjaman }}</b> secara atas talian (Online) ke akaun tersebut.</li>
<li>Saya memahami bahawa pihak Ar-Rahn KoPKB tidak akan bertanggungjawab atas sebarang kesilapan akibat maklumat akaun yang diberikan oleh saya.</li>
<li>Saya mengesahkan bahawa segala maklumat yang diberikan adalah benar dan tepat.</li>
</ol>
</div>
</div>
@@ -272,29 +287,13 @@
<p>Tarikh: {{ $tarikh }}</p>
</div>
</div>
<div class="sign-box">
<div class="role">Tandatangan Teller</div>
<div class="sign-line">
<p>Nama: {{ $teller }}</p>
<p>Cop / Paraf:</p>
<p>Tarikh: {{ $tarikh }}</p>
</div>
</div>
<div class="sign-box">
<div class="role">Pengurus Cawangan</div>
<div class="sign-line">
<p>Nama:</p>
<p>Cop cawangan:</p>
<p>Tarikh:</p>
</div>
</div>
</div>
<x-print.footer>
<x-print.footer :show-copies="false">
<b>Nota:</b>
<p>1. Borang ini dicetak semasa pelanggan memilih cara terima pembiayaan secara Online.</p>
<p>2. Pembiayaan akan dikreditkan ke akaun selepas semakan PC. Pelanggan tidak menerima wang tunai di kaunter.</p>
<p>3. Sila pastikan nama pemegang akaun sepadan dengan nama pelanggan pada MyKad.</p>
<p>1. Pembayaran hanya dibuat ke akaun pelanggan sendiri.</p>
<p>2. Sebarang pembetulan maklumat hendaklah disahkan semula oleh pelanggan.</p>
<p>3. Borang ini hendaklah dilampirkan bersama dokumen transaksi gadaian untuk tujuan audit dan rekod.</p>
</x-print.footer>
</div>
</div>
@@ -1,3 +1,4 @@
@php $rebetAnnur = !empty(($cawangan_info['features'] ?? [])['rebet_annur']); @endphp
<style>
#header {
font-family: Arial, Helvetica, sans-serif;
@@ -219,6 +220,7 @@
<tr>
<th>Bil</th>
<th>Norujukan</th>
<th>Cara Terima</th>
<th>Nama</th>
<th>Alamat</th>
<th>No K/P</th>
@@ -230,6 +232,9 @@
<th>Lain-Lain Caj (RM)</th>
<th>Keuntungan 1% (RM)</th>
<th>Keuntungan</th>
@if($rebetAnnur)
<th>Diskaun Rebet</th>
@endif
<th>Peratus (%)</th>
</tr>
@php
@@ -241,6 +246,7 @@
$bil = 0;
$full_total_ujrah = 0;
$full_total_onepercent = 0;
$totaldiskaun = 0;
@endphp
@foreach($gadai as $index=>$item)
@@ -251,12 +257,13 @@
$totalupah += $item['upah12'];
$full_total_ujrah += $item['ujrah']*12;
$full_total_onepercent += $item['onepercent']*12;
$totaldiskaun += $item['diskaun'] ?? 0;
@endphp
@if($index > 0)
@if($item['teller'] != $gadai[$index - 1]['teller'])
<tr>
<td colspan=10>Teller : <b>{{ $item['teller'] }}</b></td>
<td colspan=11>Teller : <b>{{ $item['teller'] }}</b></td>
</tr>
@php
$totalpinjamanteller = 0;
@@ -264,12 +271,13 @@
$totalberatteller = 0;
$totalujrah = 0;
$totalonepercent = 0;
$totaldiskaunteller = 0;
@endphp
@endif
@else
<tr>
<td colspan=10>Teller : <b>{{ $item['teller'] }}</b></td>
<td colspan=11>Teller : <b>{{ $item['teller'] }}</b></td>
</tr>
@php
$totalpinjamanteller = 0;
@@ -278,6 +286,7 @@
$totalupah12 = 0;
$totalujrah = 0;
$totalonepercent= 0;
$totaldiskaunteller = 0;
@endphp
@endif
@@ -303,6 +312,9 @@
<td>{{ number_format($item['ujrah']*12,2) }}</td>
<td>{{ number_format($item['onepercent']*12,2) }}</td>
<td>{{ number_format($item['upah12'],2) }}</td>
@if($rebetAnnur)
<td>{{ number_format($item['diskaun'] ?? 0,2) }}</td>
@endif
<td>{{ $item['percentpinj'] }}</td>
</tr>
@php $counter++; @endphp
@@ -313,6 +325,7 @@
$totalupah12 += $item['upah12'];
$totalujrah += $item['ujrah']*12;
$totalonepercent += $item['onepercent']*12;
$totaldiskaunteller += $item['diskaun'] ?? 0;
@endphp
@@ -320,13 +333,16 @@
@if($item['teller'] != $gadai[$index + 1]['teller'])
@php if($item['teller'] != '')$bil += ($counter-1); @endphp
<tr>
<td colspan="7"><b>{{ $counter-1 }}</b> Jumlah surat bagi teller : <b>{{ $item['teller'] }}</b></td>
<td colspan="8"><b>{{ $counter-1 }}</b> Jumlah surat bagi teller : <b>{{ $item['teller'] }}</b></td>
<td><b>{{ number_format($totalberatteller,2) }} </b></td>
<td><b>{{ number_format($totalnmteller,2) }} </b></td>
<td><b>{{ number_format($totalpinjamanteller,2) }} </b></td>
<td><b>{{ number_format($totalujrah,2) }}</b></td>
<td><b>{{ number_format($totalonepercent,2) }}</b></td>
<td><b>{{ number_format($totalupah12,2) }} </b></td>
@if($rebetAnnur)
<td><b>{{ number_format($totaldiskaunteller,2) }} </b></td>
@endif
</tr>
@@ -337,19 +353,23 @@
$totalnmteller = 0;
$totalujrah = 0;
$totalonepercent = 0;
$totaldiskaunteller = 0;
@endphp
@endif
@else
@php $bil += ($counter-1); @endphp
<tr>
<td colspan="7"><b>{{ $counter-1 }}</b> Jumlah surat bagi teller : <b>{{ $item['teller'] }}</b></td>
<td colspan="8"><b>{{ $counter-1 }}</b> Jumlah surat bagi teller : <b>{{ $item['teller'] }}</b></td>
<td><b>{{ number_format($totalberatteller,2) }} </b></td>
<td><b>{{ number_format($totalnmteller,2) }} </b></td>
<td><b>{{ number_format($totalpinjamanteller,2) }} </b></td>
<td><b>{{ number_format($totalujrah,2) }}</b></td>
<td><b>{{ number_format($totalonepercent,2) }}</b></td>
<td><b>{{ number_format($totalupah12,2) }} </b></td>
@if($rebetAnnur)
<td><b>{{ number_format($totaldiskaunteller,2) }} </b></td>
@endif
</tr>
@endif
@@ -1,3 +1,4 @@
@php $rebetAnnur = !empty(($cawangan_info['features'] ?? [])['rebet_annur']); @endphp
<style>
#header {
font-family: Arial, Helvetica, sans-serif;
@@ -241,6 +242,9 @@
<th>B.Pembiayaan(RM)</th>
<th>Lain-Lain Caj (RM)</th>
<th>Untung 1% (RM)</th>
@if($rebetAnnur)
<th>Diskaun Rebet (RM)</th>
@endif
<th>Pendapatan(RM)</th>
<th>Bayaran(RM)</th>
<th>Jumlah(RM)</th>
@@ -254,6 +258,7 @@
$totalupah = 0;
$totalujrah = 0;
$totalonepercent = 0;
$totaldiskaunrebate = 0;
@endphp
@foreach ($tebus as $index => $item)
@@ -266,6 +271,7 @@
$totalnm += $item['nilaimarhun'];
$totalujrah += $item['ujrah'];
$totalonepercent += $item['onepercent'];
$totaldiskaunrebate += $item['diskaun_rebate'] ?? 0;
@endphp
@@ -282,6 +288,7 @@
$totalbayaranteller = 0;
$totalujrahteller = 0;
$totalonepercentteller = 0;
$totaldiskaunrebateteller = 0;
@endphp
@endif
@else
@@ -297,6 +304,7 @@
$totaljumlahteller = 0;
$totalujrahteller = 0;
$totalonepercentteller = 0;
$totaldiskaunrebateteller = 0;
@endphp
@endif
@@ -336,6 +344,9 @@
</td>
<td>{{ number_format($item['ujrah'], 2) }}</td>
<td>{{ number_format($item['onepercent'], 2) }}</td>
@if($rebetAnnur)
<td>{{ number_format($item['diskaun_rebate'] ?? 0, 2) }}</td>
@endif
{{-- <td>{{ number_format($item['bakiupah'], 2) }}</td> --}}
<td>
@php
@@ -371,6 +382,7 @@
$totalbayaranteller += $item['bakipjm']; //
$totalujrahteller += $item['ujrah'];
$totalonepercentteller += $item['onepercent'];
$totaldiskaunrebateteller += $item['diskaun_rebate'] ?? 0;
@endphp
@php
@@ -388,6 +400,9 @@
<td><b>{{ number_format($totalpinjamanteller, 2) }} </b></td>
<td><b>{{ number_format($totalujrahteller, 2) }} </b></td>
<td><b>{{ number_format($totalonepercentteller, 2) }} </b></td>
@if($rebetAnnur)
<td><b>{{ number_format($totaldiskaunrebateteller ?? 0, 2) }} </b></td>
@endif
<td><b>{{ number_format($totalupahteller, 2) }} </b></td>
<td><b>{{ number_format($totalbayaranteller, 2) }} </b></td>
<td><b>{{ number_format($totaljumlahteller, 2) }} </b></td>
@@ -402,6 +417,7 @@
$totaljumlahteller = 0;
$totalujrahteller = 0;
$totalonepercentteller = 0;
$totaldiskaunrebateteller = 0;
@endphp
@endif
@else
@@ -412,6 +428,9 @@
<td><b>{{ number_format($totalpinjamanteller, 2) }} </b></td>
<td><b>{{ number_format($totalujrahteller, 2) }} </b></td>
<td><b>{{ number_format($totalonepercentteller, 2) }} </b></td>
@if($rebetAnnur)
<td><b>{{ number_format($totaldiskaunrebateteller ?? 0, 2) }} </b></td>
@endif
<td><b>{{ number_format($totalupahteller, 2) }} </b></td>
<td><b>{{ number_format($totalbayaranteller, 2) }} </b></td>
<td><b>{{ number_format($totaljumlahteller, 2) }} </b></td>
@@ -652,6 +652,13 @@
{{ number_format($penebusan['onepercent'] + $penebusan['ujrah'], 2) }}</strong>
</td>
</tr>
@if(!empty(($cawangan_info['features'] ?? [])['rebet_annur']))
<tr>
<td style="width:10px">(-) Diskaun Promosi</td>
<td style="width:10px">: RM
{{ number_format($gadai['diskaun'] ?? 0, 2) }} </td>
</tr>
@endif
<tr>
<td></td>
</tr>
@@ -885,6 +892,13 @@
{{ number_format($penebusan['onepercent'] + $penebusan['ujrah'], 2) }}</strong>
</td>
</tr>
@if(!empty(($cawangan_info['features'] ?? [])['rebet_annur']))
<tr>
<td style="width:10px">(-) Diskaun Promosi</td>
<td style="width:10px">: RM
{{ number_format($gadai['diskaun'] ?? 0, 2) }} </td>
</tr>
@endif
<tr>
<td></td>
</tr>
+3
View File
@@ -6,6 +6,9 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
if (window.self !== window.top) {
return;
}
window.print();
window.onfocus=function(){ window.close();}
});
@@ -395,6 +395,9 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
if (window.self !== window.top) {
return;
}
window.print();
window.onfocus = function() {
window.close();