hapus ansuran extended for audit trail and box comment

This commit is contained in:
Hafifie PKB
2025-06-30 13:40:53 +08:00
parent 8a3598fa24
commit 00c4b9d55e
8 changed files with 191 additions and 48 deletions
+5 -1
View File
@@ -857,7 +857,11 @@ class GadaianController extends Controller
'nilaimarhun' => $nilaimarhun,
'berat' => $berat,
'margin' => $percentpinj,
'teller' => $auth_user['name']
'teller' => $auth_user['name'],
'komen' => $request->komen,
'status' => $request->status,
'ansuran' => $request->ansuran,
'tagoperasi' => ($request->tagoperasi) ? $request->tagoperasi : 0,
])->json();
event(new StatusLiked($auth_user['cawangan'],$auth_user['name']));
@@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\CustomerService;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use PDO;
class HapusAnsuranController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function createApproval(Request $request)
{
$auth_user = Auth::user();
$api_url = config('api.url');
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$norujukan = $request->norujukan;
$komen = $request->komen;
$marg = $request->margin;
$ber = $request->berat;
$nm = $request->nilaimarhun;
$status = $request->status;
$jumpinjam = $request->jumpinjam;
$teller = $request->teller;
$ansuran = $request->ansuran;
// Get the approval data
$approvalData = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/hapusansuran/create', [
'cawangan' => $auth_user['cawangan'],
"norujukan" => $norujukan,
"komen" => $komen,
"margin" => $marg,
"berat" => $ber,
"nilaimarhun" => $nm,
"status" => $status,
"jumpinjam" => $jumpinjam,
"teller" => $teller,
"ansuran" => $ansuran,
])
->json();
if (isset($approvalData['status']) && $approvalData['status'] === 'success') {
Session::flash('success', 'Kelulusan berjaya dibuat.');
return redirect()->route('operasi.kelulusan');
} else {
Session::flash('error', 'Gagal membuat kelulusan. Sila cuba lagi.');
return redirect()->back();
}
}
}
+4 -8
View File
@@ -575,15 +575,9 @@ class KhazanahController extends Controller
{
$auth_user = Auth::user();
$api_url = config('api.url');
$norujukan = $request->norujukan;
$pelulus = $request->pelulus;
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$getlulus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/GetLulus/'. $auth_user['cawangan'],['norujukan' => $norujukan])->json();
if($request->khazanah != null)
{
if($request->batal != null)
@@ -592,7 +586,8 @@ class KhazanahController extends Controller
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/kepohonan/' . $auth_user['cawangan'] . '/' . $norujukan,[
"pembatalan" => $request->batal,
"komen" => $request->komenubahhapus,
"khazanah" => $request->khazanah
"khazanah" => $request->khazanah,
"recno" => isset($request->recno) ? $request->recno : null,
])->json();
if($updatelulus)
@@ -602,7 +597,8 @@ class KhazanahController extends Controller
}else{
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/kepohonan/' . $auth_user['cawangan'] . '/' . $norujukan,[
"khazanah" => $request->khazanah
"khazanah" => $request->khazanah,
"recno" => isset($request->recno) ? $request->recno : null,
])->json();
if($updatelulus)
+45 -18
View File
@@ -16,6 +16,7 @@ use Illuminate\Support\Facades\Hash;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
class OperasiController extends Controller
{
@@ -40,6 +41,11 @@ class OperasiController extends Controller
{
array_push($arraykelulusan,["cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'],"namateller" => $kel['teller'], 'siri' => $kel['siri'] , "norujukan" => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'],'komen' => $kel['komen'], 'nilaimarhun' => ($kel['nilaimarhun'] ?? '-'), 'berat' => ($kel['berat'] ?? '-'),'margin' => ($kel['margin'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['pelulus']]);
}
foreach($lulus['kelulusanMohonid'] as $index=>$mohon)
{
array_push($arraykelulusan,["mohonid" => true,"ansuran" => $mohon['ansuran'],"cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'],"namateller" => $mohon['teller'], 'recno' => $mohon['recno'] , "norujukan" => $mohon['norujukan'], 'pinjaman' => $mohon['pinjaman'],'komen' => $mohon['katalaluan'], 'nilaimarhun' => ($mohon['nilaimarhun'] ?? '-'), 'berat' => ($mohon['berat'] ?? '-'),'margin' => ($mohon['margin'] ?? '-'), 'status' => ($mohon['mohon'] ?? '-')]);
}
}
@@ -80,16 +86,27 @@ class OperasiController extends Controller
if($request->pembatalan == null)
{
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan,[
"komen" => $request->komenkelulusan,
'siri' => $request->siri
])->json();
if(!$request->taglulus){
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan,[
"komen" => $request->komenkelulusan,
'siri' => $request->siri
])->json();
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan,[
'sahkan' => 1,
'namaoperasi' => $request->namaoperasi,
'siri' => $request->siri
])->json();
}else{
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateHapusAnsuran',[
'siri' => $request->siri,
"kodcaw" => $request->kodcaw,
"norujukan" => $request->norujukan,
'namaoperasi' => $request->namaoperasi,
'sahkan' => 1,
])->json();
}
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan,[
'sahkan' => 1,
'namaoperasi' => $request->namaoperasi,
'siri' => $request->siri
])->json();
if($updatelulus)
{
@@ -98,16 +115,26 @@ class OperasiController extends Controller
}
else
{
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan,[
"komen" => $request->komenkelulusan,
'siri' => $request->siri
])->json();
if(!$request->taglulus){
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan,[
"komen" => $request->komenkelulusan,
'siri' => $request->siri
])->json();
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan,[
'sahkan' => 2,
'namaoperasi' => $request->namaoperasi,
'siri' => $request->siri
])->json();
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan,[
'sahkan' => 2,
'namaoperasi' => $request->namaoperasi,
'siri' => $request->siri
])->json();
}else{
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateHapusAnsuran',[
'siri' => $request->siri,
"kodcaw" => $request->kodcaw,
"norujukan" => $request->norujukan,
'namaoperasi' => $request->namaoperasi,
'sahkan' => 2,
])->json();
}
if($updatelulus)
{
@@ -119,6 +119,10 @@
</div>
</div>
<div class="col-md-4">Agama</div>
@php
$ugama = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/ugama')->json();
$ugama = [];
@endphp
<div class="col-md-8">
<select class="form-control" name="agama" id="agama">
<option selected value="01">Islam</option>
@@ -150,6 +154,10 @@
<div class="col-md-4">Umur</div>
<div class="col-md-8"><input class="form-control" type="text" name="age" id="age" readonly></div>
<div class="col-md-4">Bangsa</div>
@php
$bangsa = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bangsa')->json();
$bangsa = [];
@endphp
<div class="col-md-8">
<select class="form-control" name="bangsa" id="bangsa">
<option value="M">Melayu</option>
+36 -10
View File
@@ -2778,7 +2778,7 @@
try{
let response = await getKelulusanKhazanahOperasi('Hapus Ansuran',ansid);
let response = await getKelulusanKhazanahOperasi('Hapus Ansuran',ansid,ansuranlatest);
let pusherresponse = await PusherResponse(ansid,response,ansuranlatest['created_at'],ansuranlatest['id']);
}catch(error){
@@ -2798,8 +2798,8 @@
.then(response => response[0][0]);
}
async function getKelulusanKhazanahOperasi(textstatus = 'none',norujukan){
async function getKelulusanKhazanahOperasi(textstatus = 'none',norujukan,ansuranlatest = null){
const swalWithBootstrapButtons = Swal.mixin({
customClass: {
confirmButton: 'btn btn-success',
@@ -2827,8 +2827,29 @@
let marg = gadai.percentpinj;
let status = textstatus;
let jumpinjam = gadai.pinjaman;
let ansuran = ansuranlatest ? ansuranlatest['bakihargajualan'] - gadai.bakihargajualan : 0;
let teller = "{{ Auth::user()->name }}";
let comment = Swal.fire({
title: 'Sila Masukkan Komen',
input: 'text',
inputPlaceholder: 'Komen',
showCancelButton: true,
confirmButtonText: 'Hantar',
cancelButtonText: 'Batal',
inputValidator: (value) => {
if (!value) {
return 'Sila masukkan komen!';
}
}
});
let komen = await comment.then((result) => {
if (result.isConfirmed) {
return result.value;
}
});
Swal.fire({
title: 'Tunggu Pengesahan Daripada Khazanah-Operasi.',
icon: 'info',
@@ -2846,18 +2867,21 @@
let requestdata = {
"_token": "{{ csrf_token() }}",
"mohon" : "Hapus Ansuran",
"norujukan" : norujukan,
"komen" : '',
"komen" : komen,
"margin" : marg,
"berat" : ber,
"nilaimarhun" : nm,
"status" : status,
"jumpinjam" : jumpinjam,
"teller" : teller
"teller" : teller,
"ansuran" : ansuran,
"tagoperasi" : 1
};
siricreated = await fetch("{{ route('operasi.createkelulusan') }}",{
siricreated = await fetch("{{ route('teller.createkelulusan') }}",{
method: 'POST',
headers: {
"Content-Type": "application/json",
@@ -2866,8 +2890,8 @@
})
.then(response => response.json())
.then(response => {return response});
return siricreated;
return siricreated;
}else if (result.dismiss === Swal.DismissReason.cancel){
console.log('gagal');
@@ -2892,12 +2916,14 @@
encrypted: true
});
let recno = (siricreated && typeof siricreated === 'object' && 'id' in siricreated) ? siricreated['id'] : siricreated;
let teller = "{{ Auth::user()->name }}";
let kodcaw = "{{ Auth::user()->cawangan }}";
var channel = pusher.subscribe('notice-kelulusan');
channel.bind('my-kelulusan', function(data) {
if(data.norujukan == norujukan && data.siri == siricreated && data.teller == teller)
console.log(data,siricreated,teller,norujukan);
if(data.norujukan == norujukan && data.siri == recno && data.teller == teller)
{
if(data.kelulusan == 'lulus')
{
+19 -8
View File
@@ -112,11 +112,12 @@
<th>No Rujukan</th>
<th>Teller</th>
<th>Status</th>
<th>Nilai Pembiayaan (RM)</th>
<th>Nilai Marhun (RM)</th>
<th>Berat</th>
<th>Margin</th>
<th>Tindakan</th>
<th width="10%">Nilai Pembiayaan (RM)</th>
<th width="10%">Ansuran (RM)</th>
<th width="10%">Nilai Marhun (RM)</th>
<th width="10%">Berat</th>
<th width="10%">Margin</th>
<th width="10%">Tindakan</th>
</tr>
</thead>
<tbody>
@@ -133,6 +134,7 @@
<td>{{ $k['teller'] }}</td>
<td>{{ $k['status'] }}</td>
<td>{{ Helper::formatNumber($k['jumpinj']) }}</td>
<td></td>
<td>{{ Helper::formatNumber($k['nilaimarhun']) }}</td>
<td>{{ $k['berat'] }}</td>
<td>{{ $k['margin'] }}</td>
@@ -141,11 +143,12 @@
</tr>
@endforeach
@foreach($kelulusanmohonid as $index=>$km)
<tr>
<tr data-recno="{{ $km['recno'] }}" data-tagoperasi = "{{ $km['tagoperasi'] }}">
<td><a href="#" data-toggle="modal" data-target="#kelulusanmodal" data-norujukan="{{ $km['norujukan'] }}">{{ $km['norujukan'] }} </a></td>
<td>{{ $km['teller'] }}</td>
<td>{{ $km['mohon'] }}</td>
<td>{{ Helper::formatNumber($km['pinjaman']) }}</td>
<td>{{ Helper::formatNumber($km['ansuran']) }}</td>
<td>{{ Helper::formatNumber($km['nilaimarhun']) }}</td>
<td>{{ $km['berat'] }}</td>
<td>{{ $km['margin'] }}</td>
@@ -514,6 +517,8 @@
let norujukan = $(e).data('norujukan');
let teller = $(e).closest('tr').children('td:eq(1)').text();
let namakhazanah = "{{ $auth_user = Auth::user()->name }}";
let recno = $(e).closest('tr').data('recno');
let tagoperasi = $(e).closest('tr').data('tagoperasi');
teller = String(teller);
@@ -524,7 +529,9 @@
"_token": "{{ csrf_token() }}",
"norujukan" : norujukan,
"khazanah" : namakhazanah,
'teller' : teller
'teller' : teller,
"recno" : recno,
"tagoperasi" : tagoperasi,
},
success:function(data){
@@ -593,6 +600,8 @@
let norujukan = $(e).data('norujukan');
let namakhazanah = "{{ $auth_user = Auth::user()->name }}";
let teller = $(e).closest('tr').children('td:eq(1)').text();
let recno = $(e).closest('tr').data('recno');
let tagoperasi = $(e).closest('tr').data('tagoperasi');
teller = String(teller);
@@ -605,7 +614,9 @@
"khazanah" : namakhazanah,
"komenubahhapus" : komenkelulusan,
"batal" : 'batal',
'teller' : teller
'teller' : teller,
"recno" : recno,
"tagoperasi" : tagoperasi
},
success:function(data){
+11 -3
View File
@@ -81,7 +81,7 @@
</div>
<div class="container">
<div class="container col-12">
<div class="row justify-content-center">
<div class="col-md-12">
<div class="card">
@@ -113,6 +113,7 @@
<th>Komen</th>
<th>Status</th>
<th>Nilai Pembiayaan</th>
<th>Ansuran</th>
<th>Nilai Marhun</th>
<th>Berat</th>
<th>Margin</th>
@@ -128,11 +129,16 @@
<th>{{ $k['komen'] }}</th>
<td>{{ $k['status'] }}</td>
<td>{{ number_format($k['pinjaman'],2) }}</td>
@if(isset($k['ansuran']) && $k['ansuran'] != 0)
<td>{{ number_format($k['ansuran'],2) }}</td>
@else
<td></td>
@endif
<td>{{ $k['nilaimarhun'] }}</td>
<td>{{ $k['berat'] }}</td>
<td>{{ $k['margin'] }}</td>
<td><button class="btn btn-primary mr-2" onclick="updatelulus(this)" data-kodcaw="{{ $k['cawangankod'] }}" data-pelulus="{{ $k['pelulus'] }}" data-norujukan="{{ $k['norujukan'] }}" data-siri="{{ $k['siri'] }}"><i class="fas fa-thumbs-up"></i></button>
<button class="btn btn-danger" onclick="updatebatal(this)" data-kodcaw="{{ $k['cawangankod'] }}" data-norujukan="{{ $k['norujukan'] }}" data-pelulus="{{ $k['pelulus'] }}" data-siri="{{ $k['siri'] }}" ><i class="fas fa-thumbs-down"></i></button></td>
<td><button class="btn btn-primary mr-2" onclick="updatelulus(this)" data-taglulus="{{ isset($k['mohonid']) ? true : false }}" data-kodcaw="{{ $k['cawangankod'] }}" data-norujukan="{{ $k['norujukan'] }}" data-siri="{{ isset($k['siri']) ? $k['siri'] : $k['recno'] }}"><i class="fas fa-thumbs-up"></i></button>
<button class="btn btn-danger" onclick="updatebatal(this)" data-taglulus="{{ isset($k['mohonid']) ? true : false }}" data-kodcaw="{{ $k['cawangankod'] }}" data-norujukan="{{ $k['norujukan'] }}" data-siri="{{ isset($k['siri']) ? $k['siri'] : $k['recno'] }}" ><i class="fas fa-thumbs-down"></i></button></td>
</tr>
@endforeach
</tbody>
@@ -346,6 +352,7 @@
let siri = $(e).data('siri');
let namaoperasi = "{{ Auth::user()->name }}";
let teller = $(e).closest('tr').children('td:eq(2)').text();
let taglulus = $(e).data('taglulus');
teller = String(teller);
@@ -354,6 +361,7 @@
url: "{{ route('operasi.updatekelulusan') }}",
data: {
"_token": "{{ csrf_token() }}",
"taglulus" : taglulus,
"norujukan" : norujukan,
"kodcaw" : cawangankod,
"komenkelulusan" : komenkelulusan,