diff --git a/app/Http/Controllers/PembiayaanOnlineController.php b/app/Http/Controllers/PembiayaanOnlineController.php
index 18ea958c..a8a24bfb 100644
--- a/app/Http/Controllers/PembiayaanOnlineController.php
+++ b/app/Http/Controllers/PembiayaanOnlineController.php
@@ -156,7 +156,6 @@ class PembiayaanOnlineController extends Controller
'kodbank' => $request->input('kodbank'),
'noakaun' => $request->input('noakaun'),
'nama_bank' => $request->input('nama_bank'),
- 'nama_akaun' => $request->input('nama_akaun'),
'nota' => $request->input('nota'),
'update_customer_bank' => true,
];
@@ -174,6 +173,19 @@ class PembiayaanOnlineController extends Controller
$payload['bukti_akaun_type'] = $file->getMimeType() ?: 'application/octet-stream';
}
+ if ($request->hasFile('borang')) {
+ $file = $request->file('borang');
+ if (!$file->isValid()) {
+ return redirect()->back()->with('error', 'Fail borang pengesahan tidak sah.');
+ }
+ if ($file->getSize() > 4 * 1024 * 1024) {
+ return redirect()->back()->with('error', 'Saiz fail maksimum 4MB.');
+ }
+ $payload['borang_data'] = base64_encode(file_get_contents($file->getRealPath()));
+ $payload['borang_filename'] = $file->getClientOriginalName();
+ $payload['borang_type'] = $file->getMimeType() ?: 'application/octet-stream';
+ }
+
$res = $this->api()
->asForm()
->put($api_url . '/api/pembiayaan-online/' . $kodcaw . '/lines/' . $id, $payload);
@@ -394,6 +406,22 @@ class PembiayaanOnlineController extends Controller
return $this->streamBase64File($file, 'slip-bank-' . $id);
}
+ /**
+ * PC: view uploaded Borang Pengesahan Penerimaan Pembiayaan Secara Atas Talian.
+ */
+ public function viewBorang($id)
+ {
+ $this->abortUnlessPembiayaanOnline();
+ return $this->streamLineFile(
+ $this->kodcaw(),
+ $id,
+ '/borang',
+ 'Borang pengesahan tidak dijumpai.',
+ 'Fail borang pengesahan kosong.',
+ 'borang-pengesahan-' . $id
+ );
+ }
+
/**
* PC: view SAG for a queue line (does not mark SAG as printed).
*/
@@ -426,6 +454,21 @@ class PembiayaanOnlineController extends Controller
return $this->streamBase64File($file, 'slip-bank-' . $id);
}
+ /**
+ * Operasi: view uploaded Borang Pengesahan Penerimaan Pembiayaan Secara Atas Talian.
+ */
+ public function operasiViewBorang($kodcaw, $id)
+ {
+ return $this->streamLineFile(
+ $kodcaw,
+ $id,
+ '/borang',
+ 'Borang pengesahan tidak dijumpai.',
+ 'Fail borang pengesahan kosong.',
+ 'borang-pengesahan-' . $id
+ );
+ }
+
/**
* Operasi: view SAG for a batch line.
*/
@@ -434,6 +477,26 @@ class PembiayaanOnlineController extends Controller
return $this->renderLineSag($kodcaw, $id);
}
+ protected function streamLineFile($kodcaw, $id, $path, $missingMessage, $emptyMessage, $fallbackName)
+ {
+ $res = $this->api()
+ ->get(config('api.url') . '/api/pembiayaan-online/' . $kodcaw . '/lines/' . $id . $path);
+
+ if (!$res->successful()) {
+ $body = $res->json();
+ $msg = is_array($body) && isset($body['message']) ? $body['message'] : $missingMessage;
+ return redirect()->back()->with('error', $msg);
+ }
+
+ $payload = $res->json();
+ $file = $payload['file'] ?? null;
+ if (!$file || empty($file['data'])) {
+ return redirect()->back()->with('error', $emptyMessage);
+ }
+
+ return $this->streamBase64File($file, $fallbackName);
+ }
+
protected function streamBase64File(array $file, $fallbackName)
{
$raw = $file['data'];
diff --git a/resources/views/pembiayaan_online/operasi/batch.blade.php b/resources/views/pembiayaan_online/operasi/batch.blade.php
index 402f70c7..62ca9d12 100644
--- a/resources/views/pembiayaan_online/operasi/batch.blade.php
+++ b/resources/views/pembiayaan_online/operasi/batch.blade.php
@@ -74,7 +74,7 @@
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']"
+ :columns="['Bil', 'Status', 'SAG', 'Pelanggan', 'No KP', 'Bank', 'No Akaun', 'Pinjaman (RM)', 'Rujukan Bayaran', 'Dokumen', 'Tindakan']"
:skipExport="['Dokumen', 'Tindakan']"
>
@foreach($lines as $line)
@@ -94,7 +94,6 @@
{{ $line['nokp'] ?? '-' }} |
{{ $line['nama_bank'] ?? $line['kodbank'] ?? '-' }} |
{{ $line['noakaun'] ?? '-' }} |
- {{ $line['nama_akaun'] ?? '-' }} |
{{ number_format((float)($line['pinjaman'] ?? 0), 2) }} |
{{ $line['no_rujukan_bayaran'] ?? '-' }} |
@@ -113,6 +112,13 @@
@else
Tiada slip
@endif
+ @if(!empty($line['borang_file_id']))
+
+ Borang Pengesahan
+
+ @endif
|
@if(in_array($st, ['IN_BATCH', 'OPS_REVIEW'], true))
diff --git a/resources/views/pembiayaan_online/pc/batch.blade.php b/resources/views/pembiayaan_online/pc/batch.blade.php
index c7245caa..b6105b3e 100644
--- a/resources/views/pembiayaan_online/pc/batch.blade.php
+++ b/resources/views/pembiayaan_online/pc/batch.blade.php
@@ -70,6 +70,13 @@
@else
Tiada slip
@endif
+ @if(!empty($line['borang_file_id']))
+
+ Borang Pengesahan
+
+ @endif
|
@endforeach
diff --git a/resources/views/pembiayaan_online/pc/senarai.blade.php b/resources/views/pembiayaan_online/pc/senarai.blade.php
index 2840c22d..d2bff4df 100644
--- a/resources/views/pembiayaan_online/pc/senarai.blade.php
+++ b/resources/views/pembiayaan_online/pc/senarai.blade.php
@@ -274,11 +274,11 @@
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'] ?? '' }}">
+ data-bukti-akaun="{{ $line['bukti_akaun_file_id'] ?? '' }}"
+ data-borang-file="{{ $line['borang_file_id'] ?? '' }}">
Semak
@endif
@@ -286,11 +286,11 @@
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'] ?? '' }}"
- data-bukti-akaun="{{ $line['bukti_akaun_file_id'] ?? '' }}">
+ data-bukti-akaun="{{ $line['bukti_akaun_file_id'] ?? '' }}"
+ data-borang-file="{{ $line['borang_file_id'] ?? '' }}">
Edit
@@ -390,10 +390,6 @@
-
-
-
-
PDF / imej slip akaun bank pelanggan (maks 4MB)
+
@@ -462,10 +469,6 @@
No Akaun |
|
-
- | Nama Akaun |
- |
-
| Pinjaman |
RM |
@@ -485,9 +488,12 @@
Saya sahkan maklumat pelanggan, bank dan amaun adalah betul.
-
+
Lihat Bukti Akaun Bank
+
+ Lihat Borang Pengesahan
+
@@ -576,7 +582,6 @@
$('#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) {
@@ -592,6 +597,11 @@
} else {
$('#verifyBuktiAkaunLink').hide();
}
+ if ($(this).data('borangFile')) {
+ $('#verifyBorangLink').attr('href', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/borang").show();
+ } else {
+ $('#verifyBorangLink').hide();
+ }
$('#verifyModal').modal('show');
});
@@ -605,10 +615,10 @@
$('#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'));
$('#editBuktiAkaun').val('');
+ $('#editBorang').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");
@@ -616,6 +626,12 @@
} else {
$('#editBuktiAkaunExisting').hide();
}
+ if ($(this).data('borangFile')) {
+ $('#editBorangLink').attr('href', "{{ url('/pembiayaan-online/pc/lines') }}/" + id + "/borang");
+ $('#editBorangExisting').show();
+ } else {
+ $('#editBorangExisting').hide();
+ }
$('#editModal').modal('show');
});
diff --git a/resources/views/print/borang_batch_pembiayaan_online.blade.php b/resources/views/print/borang_batch_pembiayaan_online.blade.php
index 977bddb7..9ba46d28 100644
--- a/resources/views/print/borang_batch_pembiayaan_online.blade.php
+++ b/resources/views/print/borang_batch_pembiayaan_online.blade.php
@@ -258,7 +258,7 @@
No. KP |
Bank |
No. Akaun |
- Nama Akaun |
+ No. Telefon |
Pinjaman (RM) |
@@ -271,7 +271,7 @@
{{ $line['nokp'] ?? '-' }} |
{{ $line['nama_bank'] ?? ($line['kodbank'] ?? '-') }} |
{{ $line['noakaun'] ?? '-' }} |
-
{{ $line['nama_akaun'] ?? '-' }} |
+
{{ !empty($line['telefon']) ? $line['telefon'] : '-' }} |
{{ number_format((float) ($line['pinjaman'] ?? 0), 2) }} |
@empty
@@ -306,7 +306,7 @@
-
Tandatangan Operasi
+
Disemak oleh
Nama: {{ $opsBy }}
Jawatan: Operasi
@@ -314,10 +314,10 @@
-
Pengurus Besar
+
Disahkan oleh
Nama:
-
Cop:
+
Jawatan:
Tarikh:
diff --git a/routes/web.php b/routes/web.php
index 64bf6c4c..55286f3f 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -212,6 +212,7 @@ Route::put('/pembiayaan-online/pc/lines/{id}',['as'=>'pembiayaan.online.pc.updat
Route::post('/pembiayaan-online/pc/lines/{id}/verify',['as'=>'pembiayaan.online.pc.verify','uses'=>'PembiayaanOnlineController@verifyLine'])->middleware('auth','khazanah');
Route::post('/pembiayaan-online/pc/lines/{id}/unverify',['as'=>'pembiayaan.online.pc.unverify','uses'=>'PembiayaanOnlineController@unverifyLine'])->middleware('auth','khazanah');
Route::get('/pembiayaan-online/pc/lines/{id}/bukti-akaun',['as'=>'pembiayaan.online.pc.bukti.akaun','uses'=>'PembiayaanOnlineController@viewBuktiAkaun'])->middleware('auth','khazanah');
+Route::get('/pembiayaan-online/pc/lines/{id}/borang',['as'=>'pembiayaan.online.pc.borang','uses'=>'PembiayaanOnlineController@viewBorang'])->middleware('auth','khazanah');
Route::get('/pembiayaan-online/pc/lines/{id}/sag',['as'=>'pembiayaan.online.pc.sag','uses'=>'PembiayaanOnlineController@viewSag'])->middleware('auth','khazanah');
Route::post('/pembiayaan-online/pc/batches/submit',['as'=>'pembiayaan.online.pc.submit','uses'=>'PembiayaanOnlineController@submitBatch'])->middleware('auth','khazanah');
Route::get('/pembiayaan-online/pc/batches/{batchId}',['as'=>'pembiayaan.online.pc.batch','uses'=>'PembiayaanOnlineController@showBatch'])->middleware('auth','khazanah');
@@ -238,6 +239,7 @@ Route::post('/pembiayaan-online/operasi/{kodcaw}/batches/{batchId}/approve',['as
Route::post('/pembiayaan-online/operasi/{kodcaw}/lines/{id}/paid',['as'=>'pembiayaan.online.operasi.paid','uses'=>'PembiayaanOnlineController@operasiMarkPaid'])->middleware('auth','operasi');
Route::post('/pembiayaan-online/operasi/{kodcaw}/batches/{batchId}/paid',['as'=>'pembiayaan.online.operasi.paid.batch','uses'=>'PembiayaanOnlineController@operasiMarkPaidBatch'])->middleware('auth','operasi');
Route::get('/pembiayaan-online/operasi/{kodcaw}/lines/{id}/bukti-akaun',['as'=>'pembiayaan.online.operasi.bukti.akaun','uses'=>'PembiayaanOnlineController@operasiViewBuktiAkaun'])->middleware('auth','operasi');
+Route::get('/pembiayaan-online/operasi/{kodcaw}/lines/{id}/borang',['as'=>'pembiayaan.online.operasi.borang','uses'=>'PembiayaanOnlineController@operasiViewBorang'])->middleware('auth','operasi');
Route::get('/pembiayaan-online/operasi/{kodcaw}/lines/{id}/sag',['as'=>'pembiayaan.online.operasi.sag','uses'=>'PembiayaanOnlineController@operasiViewSag'])->middleware('auth','operasi');
Route::get('/permohonan/rekod',['as'=>'permohonan.rekod','uses' => 'KhazanahController@RekodPermohonan'])->middleware('auth','khazanah');
Route::post('/permohonan/simpan',['as'=>'permohonan.simpan','uses' => 'KhazanahController@SimpanPermohonan'])->middleware('auth','khazanah');