Merge remote-tracking branch 'origin/production' into rebate-anggota
This commit is contained in:
+67
-4
@@ -1,20 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use DateTime;
|
||||
|
||||
class Helper
|
||||
{
|
||||
|
||||
public static function formatNumber($amount)
|
||||
{
|
||||
$formattedAmount = number_format($amount, 2, '.', ',');
|
||||
|
||||
return $formattedAmount;
|
||||
return number_format($amount, 2, '.', ',');
|
||||
}
|
||||
|
||||
public static function formatDate($date_string)
|
||||
{
|
||||
return (new DateTime($date_string))->format("d-m-Y");
|
||||
}
|
||||
|
||||
public static function terbilangBm(int $number): string
|
||||
{
|
||||
$units = [
|
||||
0 => 'kosong',
|
||||
1 => 'satu',
|
||||
2 => 'dua',
|
||||
3 => 'tiga',
|
||||
4 => 'empat',
|
||||
5 => 'lima',
|
||||
6 => 'enam',
|
||||
7 => 'tujuh',
|
||||
8 => 'lapan',
|
||||
9 => 'sembilan',
|
||||
10 => 'sepuluh',
|
||||
11 => 'sebelas'
|
||||
];
|
||||
|
||||
if ($number < 0) return 'negatif ' . self::terbilangBm(abs($number));
|
||||
if ($number < 12) return $units[$number];
|
||||
if ($number < 20) return self::terbilangBm($number - 10) . ' belas';
|
||||
if ($number < 100) {
|
||||
$tens = intdiv($number, 10);
|
||||
$rest = $number % 10;
|
||||
return self::terbilangBm($tens) . ' puluh' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
||||
}
|
||||
if ($number < 200) return 'seratus' . ($number > 100 ? ' ' . self::terbilangBm($number - 100) : '');
|
||||
if ($number < 1000) {
|
||||
$hundreds = intdiv($number, 100);
|
||||
$rest = $number % 100;
|
||||
return self::terbilangBm($hundreds) . ' ratus' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
||||
}
|
||||
if ($number < 2000) return 'seribu' . ($number > 1000 ? ' ' . self::terbilangBm($number - 1000) : '');
|
||||
if ($number < 1000000) {
|
||||
$thousands = intdiv($number, 1000);
|
||||
$rest = $number % 1000;
|
||||
return self::terbilangBm($thousands) . ' ribu' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
||||
}
|
||||
if ($number < 1000000000) {
|
||||
$millions = intdiv($number, 1000000);
|
||||
$rest = $number % 1000000;
|
||||
return self::terbilangBm($millions) . ' juta' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
||||
}
|
||||
return 'terlalu besar';
|
||||
}
|
||||
|
||||
public static function ringgitTerbilang($amount, bool $tambahSahaja = true): string
|
||||
{
|
||||
$formatted = number_format((float)$amount, 2, '.', '');
|
||||
[$ringgitStr, $senStr] = explode('.', $formatted);
|
||||
|
||||
$ringgit = (int)$ringgitStr;
|
||||
$sen = (int)$senStr;
|
||||
|
||||
$parts = [];
|
||||
$parts[] = self::terbilangBm($ringgit) . ' ringgit';
|
||||
|
||||
if ($sen > 0) {
|
||||
$parts[] = 'dan ' . self::terbilangBm($sen) . ' sen';
|
||||
} elseif ($tambahSahaja) {
|
||||
$parts[] = 'sahaja';
|
||||
}
|
||||
|
||||
return trim(preg_replace('/\s+/', ' ', implode(' ', $parts)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\User;
|
||||
use App\Cawangan;
|
||||
use Carbon\Carbon;
|
||||
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 Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
|
||||
|
||||
class AliranTunaiController extends Controller
|
||||
@@ -599,7 +601,7 @@ class AliranTunaiController extends Controller
|
||||
return response($updateTunai);
|
||||
}
|
||||
|
||||
public function LaporanAliranTunai($teller)
|
||||
public function LaporanAliranTunai($teller, Request $request)
|
||||
{
|
||||
$auth_user = Auth::user();
|
||||
$api_url = config('api.url');
|
||||
@@ -611,8 +613,6 @@ class AliranTunaiController extends Controller
|
||||
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
|
||||
$cawangan_detail=$cawangan[0];
|
||||
|
||||
$tarikh_cetak = $current->toDateString();
|
||||
|
||||
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
|
||||
|
||||
$alirantunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/GetCurrentTunai/' . $auth_user['cawangan'],['kodlaluan' => $auth_user['name']])->json();
|
||||
@@ -621,7 +621,67 @@ class AliranTunaiController extends Controller
|
||||
|
||||
$teller = $auth_user['name'];
|
||||
|
||||
return view('aliran_tunai.laporan.laporanalirantunai',compact('tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail','addtunai','alirantunai','teller'));
|
||||
$bakiLelong = Http::withOptions(['verify' =>config('app.api_verify')])->get(config('api.url') . '/api/lelong/bakilelongbyteller/'.$auth_user['cawangan'],[
|
||||
'tarikh' => $request->datetimepicker1
|
||||
])->json();
|
||||
|
||||
return view('aliran_tunai.laporan.laporanalirantunai',compact('tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail','addtunai','alirantunai','teller', 'bakiLelong'));
|
||||
}
|
||||
|
||||
public function laporanAliranTunaiTeller()
|
||||
{
|
||||
$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();
|
||||
|
||||
return view('khazanah.laporan.alirantunai', compact('api_url', 'cawangan_info'));
|
||||
}
|
||||
|
||||
public function cetakLaporanAliranTunaiTeller(Request $request)
|
||||
{
|
||||
$api_url = config('api_url');
|
||||
$auth_user = Auth::user();
|
||||
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
$tarikh_cetak = $current->toDateString();
|
||||
if($request->datetimepicker1 == null){
|
||||
$tarikh = $current->toDateString();
|
||||
}else{
|
||||
$split_date = explode('-',$request->datetimepicker1);
|
||||
$tarikh = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
|
||||
}
|
||||
|
||||
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
|
||||
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
|
||||
$cawangan_detail=$cawangan[0];
|
||||
|
||||
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan/',['kodlaluan' => $auth_user['name']])->json();
|
||||
|
||||
$teller = $auth_user['name'];
|
||||
|
||||
$bakiLelong = Http::withOptions(['verify' =>config('app.api_verify')])->get(config('api.url') . '/api/lelong/bakilelongbyteller/'.$auth_user['cawangan'],[
|
||||
'tarikh' => $tarikh,
|
||||
'kodlaluan' => $auth_user['name']
|
||||
])->json();
|
||||
|
||||
$tunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getTunaiByTarikh/',[
|
||||
'kodlaluan' => $auth_user['name'],
|
||||
'kodcaw' => $auth_user['cawangan'],
|
||||
'tarikh' => $tarikh
|
||||
])->json();
|
||||
|
||||
if(!$tunai)
|
||||
{
|
||||
return redirect()->back()->with('errormessage', 'Tiada data pada tarikh tersebut.');
|
||||
}
|
||||
|
||||
$jumlahTambah = $tunai['tambah'] + $tunai['masuk'] + $bakiLelong['rugi_lelong'];
|
||||
$jumlahTolak = $tunai['kurang'] + $tunai['keluar'] + $bakiLelong['baki_lelong'];
|
||||
|
||||
return view('aliran_tunai.laporan.laporanalirantunai',compact('tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail','addtunai','tunai','teller', 'bakiLelong', 'jumlahTambah', 'jumlahTolak'));
|
||||
}
|
||||
|
||||
public function LaporanTunaiTeller(Request $request){
|
||||
|
||||
@@ -4417,4 +4417,274 @@ class KhazanahController extends Controller
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public function pampasanDetail($id)
|
||||
{
|
||||
$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();
|
||||
|
||||
$gadai = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/gadai/norujukan/' . '011237' . '/' . $id)
|
||||
->json();
|
||||
|
||||
$gadai_info = is_array($gadai) && isset($gadai[0]) ? $gadai[0] : $gadai;
|
||||
|
||||
$customer_info = null;
|
||||
if(isset($gadai_info['nokp'])) {
|
||||
$customer = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/customers/' . $gadai_info['nokp'])
|
||||
->json();
|
||||
|
||||
$customer_info = null;
|
||||
if (isset($gadai_info['nokp'])) {
|
||||
$customer = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/customers/' . $gadai_info['nokp'])
|
||||
->json();
|
||||
|
||||
$customer_info = is_array($customer) && isset($customer[0]) ? $customer[0] : $customer;
|
||||
}
|
||||
|
||||
|
||||
$barang_kes = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/palsu/laporan/', ['kodcaw' => $auth_user['cawangan']])
|
||||
->json();
|
||||
|
||||
// You may need to adjust the array index if the API returns an array of results
|
||||
$gadai_info = is_array($gadai) && isset($gadai[0]) ? $gadai[0] : $gadai;
|
||||
// $pampasan_info = is_array($pampasan) && isset($pampasan[0]) ? $pampasan[0] : $pampasan;
|
||||
|
||||
$barang_kes_collection = collect($barang_kes);
|
||||
$barang_kes_info = $barang_kes_collection->where('norujukan', '=', $id)->first();
|
||||
|
||||
$customer_info = null;
|
||||
if (isset($gadai_info['nokp'])) {
|
||||
$customer = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/customers/' . $gadai_info['nokp'])
|
||||
->json();
|
||||
|
||||
$customer_info = is_array($customer) && isset($customer[0]) ? $customer[0] : $customer;
|
||||
}
|
||||
|
||||
$denominasi = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/DenominasiController/' . $auth_user['cawangan'])->json();
|
||||
|
||||
if (sizeof($denominasi) == 0) {
|
||||
$denominasi = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/DenominasiCreate/' . $auth_user['cawangan'])->json();
|
||||
} else {
|
||||
$denominasi = $denominasi[0];
|
||||
}
|
||||
|
||||
$pampasan = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/pampasan', ['kodcaw' => '011237', 'norujukan' => $id])
|
||||
->json()['data'][0];
|
||||
|
||||
$baucerno = $pampasan['baucerno'];
|
||||
$nilaimarhun = $barang_kes_info['nilaimarhun'] ?? 0;
|
||||
$pembiayaan = $barang_kes_info['pembiayaan'] ?? 0;
|
||||
$untung = $barang_kes_info['untung'] ?? 0;
|
||||
|
||||
|
||||
$jumlah_tebus = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/tebus/norujukan/' . $auth_user['cawangan'] . '/' . $id)
|
||||
->json()[0]['bakipjm'];
|
||||
|
||||
$jumlah_pampasan = $nilaimarhun - $pembiayaan - $untung;
|
||||
|
||||
$jumlahPanjar = $jumlah_tebus + $jumlah_pampasan;
|
||||
|
||||
return view('khazanah.pampasan_detail', compact('gadai_info', 'barang_kes_info', 'cawangan_info', 'customer_info', 'baucerno', 'denominasi', 'jumlah_pampasan', 'jumlah_tebus', 'jumlahPanjar'));
|
||||
}
|
||||
}
|
||||
|
||||
public function initiatePampasan(Request $request)
|
||||
{
|
||||
$norujukan = $request->input('norujukan');
|
||||
$teller = auth()->user()->name;
|
||||
$kodcaw = auth()->user()->cawangan;
|
||||
$baucerno = $this->generateBaucer($kodcaw);
|
||||
|
||||
$response = Http::post(config('api.url') . '/api/pampasan/initiatePampasan', [
|
||||
'norujukan' => $norujukan,
|
||||
'kodcaw' => $kodcaw,
|
||||
'teller' => $teller,
|
||||
'baucerno' => $baucerno,
|
||||
]);
|
||||
|
||||
if ($response->failed()) {
|
||||
throw new \Exception("HTTP error! status: " . $response->status(), 1);
|
||||
}
|
||||
|
||||
$result = $response->json();
|
||||
|
||||
// $jumlah_pampasan = $nilaimarhun - $pembiayaan - $untung;
|
||||
// $jumlahTebus = $pembiayaan + $untung;
|
||||
// $jumlahPanjar = $jumlah_pampasan + $jumlahTebus;
|
||||
|
||||
//return view('khazanah.pampasan_detail', compact('gadai_info', 'pampasan_info', 'cawangan_info', 'customer_info','baucerno', 'denominasi','jumlah_pampasan', 'jumlahTebus', 'jumlahPanjar') );
|
||||
return response()->json($result);
|
||||
}
|
||||
|
||||
public function generateBaucer($kodcaw)
|
||||
{
|
||||
$data = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url').'/api/SenaraiPanjar/list/' . $kodcaw)
|
||||
->json();
|
||||
|
||||
$today = now();
|
||||
$dd = $today->format('d');
|
||||
$mm = $today->format('m');
|
||||
$yy = $today->format('y');
|
||||
|
||||
$recno = $data['recno'] ?? 0;
|
||||
|
||||
$baucerno = 'B' . $yy . $mm . $dd . '-' . str_pad($recno, 4, '0', STR_PAD_LEFT);
|
||||
|
||||
return $baucerno;
|
||||
}
|
||||
|
||||
public function terimaPampasan(Request $request)
|
||||
{
|
||||
$responsePampasan = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->post(config('api.url') . '/api/pampasan/terimaPampasan',[
|
||||
"norujukan" => $request->norujukan,
|
||||
"kodcaw" => auth()->user()->cawangan,
|
||||
"jumlah_pampasan" => $request->jumlahpampasan,
|
||||
"teller" => auth()->user()->name,
|
||||
"denominasi" => $request->denominasi,
|
||||
]
|
||||
)->json();
|
||||
|
||||
$jumlahTebus = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/tebus/norujukan/' . auth()->user()->cawangan .'/'.$request->norujukan)->json()[0]['bakipjm'];
|
||||
$bayaranPanjar = $request->jumlahpampasan + $jumlahTebus;
|
||||
|
||||
|
||||
$responsePanjar = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->post(
|
||||
config('api.url') . '/api/panjar/createpanjar/' . auth()->user()->cawangan,
|
||||
array_merge(
|
||||
[
|
||||
'tarikhbil' => now()->format('Y-m-d'),
|
||||
'jenismodal' => 'belanjaam',
|
||||
'deskripsi' => 'BAYARAN PAMPASAN ' . '(' . $request->norujukan . ')',
|
||||
'bayaran' => $bayaranPanjar,
|
||||
'kodlaluan' => auth()->user()->name,
|
||||
'baucer' => $responsePampasan['data']['baucerno'],
|
||||
'tuntutan' => auth()->user()->name
|
||||
],
|
||||
$request->denominasi
|
||||
|
||||
)
|
||||
)->json();
|
||||
|
||||
if ($responsePampasan['success'] == true) {
|
||||
return redirect()->route('pampasan.resit', ["pampasan" => $responsePampasan['data']]);
|
||||
} else
|
||||
return redirect()->route('khazanah.panjar')->with('pampasaninformation', ['status' => 'error', 'message' => 'Baki perubatan tidak mencukupi.']);
|
||||
}
|
||||
|
||||
public function resitPampasan(Request $request)
|
||||
{
|
||||
$pampasan = $request->pampasan;
|
||||
$kodcaw = $pampasan['kodcaw'];
|
||||
$norujukan = $pampasan['norujukan'] ?? null;
|
||||
|
||||
if ($norujukan) {
|
||||
$gadai_info = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/gadai/norujukan/' . $kodcaw . '/' . $norujukan)
|
||||
->json();
|
||||
|
||||
$gadai_info = is_array($gadai_info) && isset($gadai_info[0]) ? $gadai_info[0] : $gadai_info;
|
||||
|
||||
$customer_info = null;
|
||||
if (isset($gadai_info['nokp'])) {
|
||||
$customer = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/customers/' . $gadai_info['nokp'])
|
||||
->json();
|
||||
|
||||
$customer_info = is_array($customer) && isset($customer[0]) ? $customer[0] : $customer;
|
||||
}
|
||||
|
||||
$pampasan_info = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/palsu/laporan/', ['kodcaw' => $kodcaw])
|
||||
->json();
|
||||
|
||||
$norujukan = $norujukan;
|
||||
|
||||
$pampasan_info = collect($pampasan_info)->firstWhere('norujukan', $norujukan);
|
||||
|
||||
$nilaimarhun = $pampasan_info['nilaimarhun'] ?? 0;
|
||||
$pembiayaan = $pampasan_info['pembiayaan'] ?? 0;
|
||||
$untung = $pampasan_info['untung'] ?? 0;
|
||||
|
||||
$jumlah_pampasan = $nilaimarhun - $pembiayaan - $untung;
|
||||
|
||||
$status = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->put(config('api.url') . '/api/pampasan/updateStatusPampasan', ['kodcaw' => $kodcaw, 'norujukan' => $norujukan])
|
||||
->json();
|
||||
|
||||
// dd($pampasan_info, $nilaimarhun, $pembiayaan, $untung, $jumlah_pampasan);
|
||||
|
||||
// dd($norujukan);
|
||||
|
||||
return view('print.resit.resitpampasan', compact(
|
||||
'pampasan',
|
||||
'gadai_info',
|
||||
'customer_info',
|
||||
'pampasan_info',
|
||||
'nilaimarhun',
|
||||
'pembiayaan',
|
||||
'untung',
|
||||
'jumlah_pampasan',
|
||||
'status'
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
public function suratPampasan(Request $request, $norujukan)
|
||||
{
|
||||
$auth_user = Auth::user();
|
||||
|
||||
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/cawangan/'.$auth_user['cawangan'])->json();
|
||||
|
||||
$gadai = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/gadai/norujukan/' . '011237' . '/' . $norujukan)
|
||||
->json();
|
||||
|
||||
$gadai_info = is_array($gadai) && isset($gadai[0]) ? $gadai[0] : $gadai;
|
||||
|
||||
$customer_info = null;
|
||||
if(isset($gadai_info['nokp'])) {
|
||||
$customer = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/customers/' . $gadai_info['nokp'])
|
||||
->json();
|
||||
|
||||
$customer_info = is_array($customer) && isset($customer[0]) ? $customer[0] : $customer;
|
||||
}
|
||||
|
||||
$pampasan = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/api/palsu/laporan/' , ['kodcaw'=>'011237'])
|
||||
->json();
|
||||
|
||||
$pampasan_collection = collect($pampasan);
|
||||
|
||||
$pampasan_info = $pampasan_collection->where('norujukan', '=', $norujukan)->first();
|
||||
|
||||
|
||||
if (!$pampasan_info) {
|
||||
abort(404, 'Maklumat pampasan tidak dijumpai untuk no rujukan tersebut.');
|
||||
}
|
||||
|
||||
$nilaimarhun = $pampasan_info['nilaimarhun'] ?? 0;
|
||||
$pembiayaan = $pampasan_info['pembiayaan'] ?? 0;
|
||||
$untung = $pampasan_info['untung'] ?? 0;
|
||||
|
||||
$jumlah_pampasan = $nilaimarhun - $pembiayaan - $untung;
|
||||
$jumlah = $pampasan_info['jumlah_pampasan'] ?? 0;
|
||||
$jumlah_pampasan_terbilang = Helper::ringgitTerbilang($jumlah_pampasan);
|
||||
|
||||
return view('print.surat_pampasan', compact('cawangan_info', 'gadai', 'gadai_info', 'customer_info', 'pampasan', 'pampasan_info','jumlah_pampasan_terbilang', 'jumlah_pampasan'));
|
||||
}
|
||||
}
|
||||
@@ -99,6 +99,15 @@ class LelongController extends Controller
|
||||
public function transaksituntutbaki(Request $request){
|
||||
|
||||
$auth_user = Auth::user();
|
||||
|
||||
$aliranTunaiController = new AliranTunaiController();
|
||||
$checkCashBox = $aliranTunaiController->periksaAliranTunai($request);
|
||||
|
||||
if($checkCashBox->getContent() !== 'sama')
|
||||
{
|
||||
return response('kemaskini', 200);
|
||||
}
|
||||
|
||||
$lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/TuntutBaki/resit/' . $auth_user['cawangan'] . '/' . $request->norujukan)->json();
|
||||
|
||||
if($lelong)
|
||||
@@ -106,6 +115,18 @@ class LelongController extends Controller
|
||||
return response('Berjaya');
|
||||
}
|
||||
|
||||
$getTunai2=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/GetCurrentTunai/'.$auth_user['cawangan'],['kodlaluan' => $request->teller])->json();
|
||||
|
||||
$keluar = $getTunai2['keluar'];
|
||||
$baki = $getTunai2['baki'];
|
||||
$masuk = $getTunai2['masuk'];
|
||||
|
||||
$bakiakhir = $baki;
|
||||
|
||||
if(($bakiakhir < $request->jumlah) && $request->jenis == 'T'){
|
||||
return response('Baki tidak mencukupi', 200);
|
||||
}
|
||||
|
||||
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/Tuntutbakisimpan/' . $auth_user['cawangan'], [
|
||||
'batchno' => $request->batchno,
|
||||
'jenis' => $request->jenis,
|
||||
@@ -122,14 +143,6 @@ class LelongController extends Controller
|
||||
|
||||
$updatetuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->put( config('api.url').'/api/tuntutbakiupdate/' . $auth_user['cawangan'] . '/' . $request->norujukan);
|
||||
|
||||
$getTunai2=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/GetCurrentTunai/'.$auth_user['cawangan'],['kodlaluan' => $request->teller])->json();
|
||||
|
||||
$keluar = $getTunai2['keluar'];
|
||||
$baki = $getTunai2['baki'];
|
||||
$masuk = $getTunai2['masuk'];
|
||||
|
||||
$bakiakhir = $baki;
|
||||
|
||||
if($request->jenis == 'T')
|
||||
{
|
||||
$bakiakhir -= $request->jumlah;
|
||||
|
||||
@@ -46,7 +46,10 @@ class PenebusanController extends Controller
|
||||
$nilaihargasemasa = $this->tukaranhargaemas($norujukan);
|
||||
|
||||
$pertambahpinjaman = 0.80;
|
||||
return view('penebusan.' . $cawangan_info['version'] . '.index',compact('cawangan_info','api_url','gadai','marhun','nama','nilaihargasemasa','pertambahpinjaman'));
|
||||
|
||||
$pampasan = $this->getPampasanByNorujukan($norujukan);
|
||||
|
||||
return view('penebusan.' . $cawangan_info['version'] . '.index',compact('cawangan_info','api_url','gadai','marhun','nama','nilaihargasemasa','pertambahpinjaman', 'pampasan'));
|
||||
}
|
||||
|
||||
public function tebuspenuh(Request $request)
|
||||
@@ -786,4 +789,26 @@ class PenebusanController extends Controller
|
||||
return view($view, compact('cawangan_info','api_url','gadai','marhun','nama','nilaihargasemasa'));
|
||||
}
|
||||
|
||||
public function getPampasanByNorujukan($norujukan)
|
||||
{
|
||||
$auth_user = Auth::user();
|
||||
|
||||
$pampasanListResponse = Http::get(config('api.url'). '/api/palsu/laporan', [
|
||||
'kodcaw' => $auth_user['cawangan'],
|
||||
'status' => 'all',
|
||||
]);
|
||||
|
||||
if($pampasanListResponse->failed()){
|
||||
throw new \Exception("Something wrong with API", 1);
|
||||
}
|
||||
|
||||
$pampasanList = array_filter($pampasanListResponse->json(), function($pampasan) use($norujukan){
|
||||
return $pampasan['norujukan'] == $norujukan;
|
||||
});
|
||||
|
||||
$pampasan = sizeof($pampasanList) == 0 ? null : array_pop($pampasanList);
|
||||
|
||||
return $pampasan;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -72,5 +72,6 @@ class Kernel extends HttpKernel
|
||||
'admin' => 'App\Http\Middleware\Admin',
|
||||
'audit' => 'App\Http\Middleware\Audit',
|
||||
'masteradmin' => 'App\Http\Middleware\Masteradmin',
|
||||
'role' => 'App\Http\Middleware\RoleAccess',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Closure;
|
||||
|
||||
class RoleAccess
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @param string ...$roles
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, ...$roles)
|
||||
{
|
||||
if (!Auth::check()) {
|
||||
return redirect('/login');
|
||||
}
|
||||
|
||||
$user = Auth::user();
|
||||
$userRole = $user->roles;
|
||||
$userRoleHarian = $user->role_harian ?? null;
|
||||
|
||||
// Check each allowed role
|
||||
foreach ($roles as $role) {
|
||||
switch ($role) {
|
||||
case 'teller':
|
||||
if ($userRoleHarian == 'teller' || $userRole == 'teller') {
|
||||
return $next($request);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'khazanah':
|
||||
if ($userRole == 'pc' || $userRole == 'ppc') {
|
||||
return $next($request);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'admin':
|
||||
if ($userRole == 'admin') {
|
||||
return $next($request);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'penilai':
|
||||
if ($userRole == 'penilai') {
|
||||
return $next($request);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'operasi':
|
||||
if ($userRole == 'operasi') {
|
||||
return $next($request);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'audit':
|
||||
if ($userRole == 'audit') {
|
||||
return $next($request);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// If no roles matched, deny access
|
||||
abort(403, 'Access denied. Required roles: ' . implode(', ', $roles));
|
||||
}
|
||||
}
|
||||
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* First we will load all of this project's JavaScript dependencies which
|
||||
* includes Vue and other libraries. It is a great starting point when
|
||||
* building robust, powerful web applications using Vue and Laravel.
|
||||
*/
|
||||
|
||||
require('./bootstrap');
|
||||
|
||||
window.Vue = require('vue');
|
||||
|
||||
/**
|
||||
* The following block of code may be used to automatically register your
|
||||
* Vue components. It will recursively scan this directory for the Vue
|
||||
* components and automatically register them with their "basename".
|
||||
*
|
||||
* Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
|
||||
*/
|
||||
|
||||
// const files = require.context('./', true, /\.vue$/i)
|
||||
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
|
||||
|
||||
/**
|
||||
* Next, we will create a fresh Vue application instance and attach it to
|
||||
* the page. Then, you may begin adding components to this application
|
||||
* or customize the JavaScript scaffolding to fit your unique needs.
|
||||
*/
|
||||
|
||||
const app = new Vue({
|
||||
el: '#app',
|
||||
});
|
||||
Vendored
+3
-3
@@ -35,7 +35,7 @@ window.Pusher = require('pusher-js');
|
||||
|
||||
window.Echo = new Echo({
|
||||
broadcaster: 'pusher',
|
||||
key: '26b0ec2f297f94b7aa9b',
|
||||
cluster: 'ap1',
|
||||
forceTLS: true
|
||||
key: process.env.MIX_PUSHER_APP_KEY,
|
||||
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
|
||||
forceTLS: false
|
||||
});
|
||||
|
||||
@@ -558,15 +558,12 @@
|
||||
|
||||
function cetaklaporanalirantunai()
|
||||
{
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
|
||||
let urlroute = '{{ route("laporan.alirantunai", ":id") }}';
|
||||
urlroute = urlroute.replace(':id', teller);
|
||||
|
||||
window.open(urlroute, '_blank');
|
||||
|
||||
let urlroute = '{{ route("laporan.alirantunai") }}';
|
||||
|
||||
window.location.href = urlroute;
|
||||
}
|
||||
|
||||
|
||||
function cetakserahankeseluruhan()
|
||||
{
|
||||
let urlroute = '{{ route("laporan.serahanteller") }}';
|
||||
|
||||
@@ -1,211 +1,298 @@
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
.header{
|
||||
font-size:12px;
|
||||
font-weight: bold;
|
||||
margin-left:40px;
|
||||
|
||||
}
|
||||
|
||||
body {
|
||||
background: white;
|
||||
}
|
||||
|
||||
page {
|
||||
background: white;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 0.5cm;
|
||||
/* box-shadow: 0 0 0.5cm rgba(0,0,0,0.5); */
|
||||
}
|
||||
|
||||
page[size="A4"] {
|
||||
width: 21cm;
|
||||
/* height: 29.7cm; */
|
||||
}
|
||||
|
||||
page[size="A4"][layout="landscape"] {
|
||||
width: 29.7cm;
|
||||
height: 21cm;
|
||||
}
|
||||
|
||||
@media print {
|
||||
body, page {
|
||||
margin: 0;
|
||||
box-shadow: 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.middleheader{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.container{
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
width: 25%;
|
||||
border: 2px solid gray;
|
||||
border-radius: 15px;
|
||||
padding: 5px 10px 10px 30px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#header {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin-left:40px;
|
||||
}
|
||||
|
||||
#header td, #customer th {
|
||||
padding:4px;
|
||||
font-size:10px;
|
||||
}
|
||||
|
||||
#header tr:nth-child(even){
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
/* #header tr:hover {
|
||||
background-color: #ddd;
|
||||
} */
|
||||
|
||||
#header th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
|
||||
.statements{
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 95%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.statements th{
|
||||
font-size:14px;
|
||||
background-color: #f9ca24;
|
||||
border:1px solid gray;
|
||||
color:black;
|
||||
padding:4px 10px 4px 10px;
|
||||
}
|
||||
|
||||
.statements td{
|
||||
border:1px solid gray;
|
||||
padding:4px 4px 4px 4px;
|
||||
|
||||
}
|
||||
|
||||
.center{
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
color: white;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body onload="window.print()">
|
||||
<page size="A4">
|
||||
<h6 class="header">SULIT DAN PERSENDIRIAN</h6>
|
||||
<table id="header">
|
||||
<tr>
|
||||
<th rowspan="4" style="width:50px"><br><img src="{{ asset('img/icon_pkb.png') }}" style="width:70px"></img></th>
|
||||
<th colspan="1">KOPERASI PERMODALAN KELANTAN BERHAD</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['namacaw'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['alamat1'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['alamat2'].' No Tel : '. $cawangan_detail['notel'].' No Faks : '. $cawangan_detail['nofaks'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<h6 class="middleheader">PENYATA ALIRAN TUNAI : {{ $teller }}</h6>
|
||||
|
||||
<div class="row" style="display: flex; justify-content: start;">
|
||||
<div class="container" style="flex: 1; margin-left: 20px;">
|
||||
<h3>Baki Awal</h3>
|
||||
<span>RM {{ number_format($alirantunai['bakiawal'], 2) }}</span>
|
||||
</div>
|
||||
|
||||
<div class="container" style="flex: 1; margin-left: 10px;">
|
||||
<h3>Pendahuluan</h3>
|
||||
<span>RM {{ number_format($alirantunai['tambah'], 2) }}</span>
|
||||
</div>
|
||||
|
||||
<div class="container" style="flex: 1; margin-left: 10px;">
|
||||
<h3>Penyelesaian Pem.</h3>
|
||||
<span>RM {{ number_format($alirantunai['masuk'], 2) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" style="display: flex; justify-content: start; margin-top: 20px;">
|
||||
<div class="container" style="flex: 1; margin-left: 20px;">
|
||||
<h3>Baki Tunai Semasa</h3>
|
||||
<span>RM {{ number_format($alirantunai['baki'], 2) }}</span>
|
||||
</div>
|
||||
|
||||
<div class="container" style="flex: 1; margin-left: 10px;">
|
||||
<h3>Serahan</h3>
|
||||
<span>RM {{ number_format($alirantunai['kurang'], 2) }}</span>
|
||||
</div>
|
||||
|
||||
<div class="container" style="flex: 1; margin-left: 10px;">
|
||||
<h3>Pembiayaan</h3>
|
||||
<span>RM {{ number_format($alirantunai['keluar'], 2) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<h6 class="middleheader" style="margin-bottom:-5px;">KEMASUKAN TUNAI</h6>
|
||||
<br>
|
||||
|
||||
<table class="statements">
|
||||
<tr>
|
||||
<th>TARIKH</th>
|
||||
<th>DEBIT (RM)</th>
|
||||
<th>KREDIT (RM)</th>
|
||||
<th>NOTA</th>
|
||||
</tr>
|
||||
@php $totaltambah = 0; $totalkurang = 0; @endphp
|
||||
@foreach($addtunai as $index=>$ad)
|
||||
@php $totaltambah += $ad['tambah']; $totalkurang += $ad['kurang']; @endphp
|
||||
<tr style="text-align:center;">
|
||||
<td>{{ $ad['tarikh'] }}</td>
|
||||
<td>{{ number_format($ad['tambah'],2) }}</td>
|
||||
<td>{{ number_format($ad['kurang'],2) }}</td>
|
||||
<td>{{ $ad['nota'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
<tr style="text-align:center;">
|
||||
<td style="font-weight:bold;">JUMLAH</td>
|
||||
<td>{{ number_format($totaltambah,2) }}</td>
|
||||
<td>{{ number_format($totalkurang,2) }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</page>
|
||||
|
||||
<script>
|
||||
<style>
|
||||
#header {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#header td, #customers th {
|
||||
|
||||
padding:4px;
|
||||
font-size:10px;
|
||||
}
|
||||
|
||||
#header tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#header tr:hover {background-color: #ddd;}
|
||||
|
||||
#header th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
#scan {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#scan td, #scan th {
|
||||
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#scan tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#scan tr:hover {background-color: #ddd;}
|
||||
|
||||
#scan th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<style>
|
||||
#scan {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#scan td, #scan th {
|
||||
border-collapse: collapse;
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#scan tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#scan tr:hover {background-color: #ddd;}
|
||||
|
||||
#scan th {
|
||||
border-collapse: collapse;
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
#details {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
#details td, #details th {
|
||||
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#details tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#details tr:hover {background-color: #ddd;}
|
||||
|
||||
#details th {
|
||||
padding-top: 12px;
|
||||
font-style:bold;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
#sign {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#sign td, #sign th {
|
||||
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#sign tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#sign tr:hover {background-color: #ddd;}
|
||||
|
||||
#sign th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<table id="header">
|
||||
<tr>
|
||||
<th rowspan="4" style="width:50px"><br><img src="{{ asset('img/ARRAHN1.png') }}" style="width:70px"></img></th>
|
||||
<th colspan="1">KOPERASI PERMODALAN KELANTAN BERHAD</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['namacaw'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['alamat1'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['alamat2'].' No Tel : '. $cawangan_detail['notel'].' No Faks : '. $cawangan_detail['nofaks'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table id="scan">
|
||||
<tr>
|
||||
<th colspan="3" style="
|
||||
text-align: left;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
letter-spacing: 0.5px;
|
||||
">
|
||||
LAPORAN ALIRAN TUNAI TELLER
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="width:100px"><b>TARIKH:</b></td>
|
||||
<td><b>
|
||||
@php
|
||||
$tarikhTeller = DateTime::createFromFormat('Y-m-d', $tunai['tarikh']);
|
||||
echo $tarikhTeller->format('d-m-Y');
|
||||
@endphp
|
||||
</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>TARIKH CETAK:</b></td>
|
||||
<td><b>
|
||||
@php
|
||||
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
|
||||
$formattedweddingdate = $myDateTime->format('d-m-Y');
|
||||
echo $formattedweddingdate;
|
||||
@endphp
|
||||
</b></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<table id="details">
|
||||
<tr>
|
||||
<th>BAKI AWAL</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baki Awal</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($tunai['bakiawal'],2) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>TAMBAH</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pendahuluan</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($tunai['tambah'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pen. Pembiayaan / Keuntungan</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($tunai['masuk'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kerugian Baki Lelong</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($bakiLelong['rugi_lelong'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jumlah</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($jumlahTambah,2) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>TOLAK</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Serahan</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($tunai['kurang'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pembiayaan</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($tunai['keluar'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baki Lelong</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($bakiLelong['baki_lelong'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jumlah</td>
|
||||
<td>:</td>
|
||||
<td>RM {{ number_format($jumlahTolak,2) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr><th>BAKI AKHIR</th></tr>
|
||||
<tr>
|
||||
<td colspan="3" style="
|
||||
border: 2px solid black;
|
||||
text-align: center;
|
||||
background-color: #f8f8f8;
|
||||
font-weight: bold;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
">
|
||||
BAKI AKHIR TELLER: RM {{ number_format($tunai['bakiawal'] + $jumlahTambah - $jumlahTolak,2) }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<table id="sign">
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2"> .................................................................. </td>
|
||||
<td> </td>
|
||||
<td colspan="2">.................................................................. </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2"><B> DI SEMAK</B> </td>
|
||||
<td> </td>
|
||||
<td colspan="2"><B>DI SAHKAN </B></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -102,7 +102,7 @@
|
||||
<h5 class="modal-title" id="ModalLabel">Daftar Pelanggan</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('customer.store') }}" onsubmit="verifycustomer()" method="POST">
|
||||
<form name="form-store" action="{{ route('customer.store') }}" onsubmit="verifycustomer()" method="POST">
|
||||
@csrf
|
||||
<div class="row form-group">
|
||||
<div class="col-md-6">
|
||||
@@ -373,7 +373,7 @@
|
||||
<h5 class="modal-title" id="ModalLabel">Daftar Pelanggan</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('customer.store') }}" onsubmit="verifycustomerpassport()" method="POST">
|
||||
<form name="form-store" action="{{ route('customer.store') }}" onsubmit="verifycustomerpassport()" method="POST">
|
||||
@csrf
|
||||
<div class="row form-group">
|
||||
<div class="col-md-6">
|
||||
@@ -1394,6 +1394,21 @@ var api_url = @json($api_url ?? '');
|
||||
$('#pekerjaan-lain').val('');
|
||||
lainContainer.hide();
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementsByName('form-store')[0].addEventListener('keypress', function(e) {
|
||||
// Jika tekan Enter
|
||||
if (e.key === 'Enter') {
|
||||
|
||||
// Jika bukan butang submit dan bukan textarea
|
||||
const tag = e.target.tagName.toLowerCase();
|
||||
const type = e.target.type ? e.target.type.toLowerCase() : '';
|
||||
|
||||
if (tag !== 'textarea' && type !== 'submit') {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@push('additional_scripts')
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
</div>
|
||||
<div class="col-12 text-right mb-2">
|
||||
<button type="button" style="margin:auto" class="btn btn-primary" data-toggle="modal" data-target="#daftar_marhun">Daftar Marhun</button>
|
||||
<button type="button" id="toggleTableBtn" class="btn btn-info ml-2">
|
||||
<i class="fas fa-exchange-alt"></i> Papar Margin
|
||||
</button>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
@@ -53,6 +56,33 @@
|
||||
<th colspan="5"></th>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<!-- Margin Summary Table (Hidden by default) -->
|
||||
<table class="table table-striped table-hover text-center" id="marginTable" style="display: none;">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>Karat</th>
|
||||
<th>Nilai Marhun</th>
|
||||
<th>Margin Teller (%)</th>
|
||||
<th>Margin PC (%)</th>
|
||||
<th>Nilai Marhun Teller</th>
|
||||
<th>Nilai Marhun PC</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="marginTableBody">
|
||||
<!-- Dynamic content will be inserted here -->
|
||||
</tbody>
|
||||
<tfoot class="thead-success">
|
||||
<tr>
|
||||
<th colspan="2" class="text-center">Jumlah</th>
|
||||
<th id="totalNilaiMarhunMargin"></th>
|
||||
<th colspan="2"></th>
|
||||
<th id="totalNilaiTellerMargin"></th>
|
||||
<th id="totalNilaiPCMargin"></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
@@ -511,7 +541,21 @@
|
||||
"visible": false,
|
||||
"searchable": false
|
||||
}
|
||||
]
|
||||
],
|
||||
"language": {
|
||||
"lengthMenu": "Papar _MENU_ rekod setiap halaman",
|
||||
"zeroRecords": "Tiada rekod dijumpai",
|
||||
"info": "Memapar halaman _PAGE_ dari _PAGES_",
|
||||
"infoEmpty": "Tiada rekod tersedia",
|
||||
"infoFiltered": "(ditapis dari _MAX_ jumlah rekod)",
|
||||
"search": "Cari:",
|
||||
"paginate": {
|
||||
"first": "Pertama",
|
||||
"last": "Akhir",
|
||||
"next": "Seterusnya",
|
||||
"previous": "Sebelumnya"
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(".select2").select2({
|
||||
@@ -567,6 +611,7 @@
|
||||
total_berat = 0;
|
||||
total_kuantiti = 0;
|
||||
var marhun_details = '';
|
||||
var array_mutu = [];
|
||||
tablemarhun.clear().draw();
|
||||
$.each(data,function(index,marhun){
|
||||
$.each(marhun,function(index,marhun_detail){
|
||||
@@ -576,6 +621,7 @@
|
||||
jumlah_nilai_marhun += Number(marhun_detail['n_marhun']);
|
||||
status_tag_permata = marhun_detail['tag_permata'] == 1 ? 'Ada' : '';
|
||||
total_kuantiti += Number(marhun_detail['bil']);
|
||||
array_mutu.push([marhun_detail['karat'], marhun_detail['n_marhun']]);
|
||||
tablemarhun.row.add([
|
||||
counter,
|
||||
marhun_detail['recno'],
|
||||
@@ -588,7 +634,7 @@
|
||||
marhun_detail['harga'],
|
||||
status_tag_permata,
|
||||
marhun_detail['berat_batu_permata'],
|
||||
"<div class='buttonpunya text-center'><button onclick='editmarhun(this)' class='btn btn-primary'><i class='fas fa-edit'></i></button> <button onclick='deletemarhun(this)' class='btn btn-danger'><i class='fas fa-trash-alt'></i></button></div>"
|
||||
"<div class='buttonpunya text-center'><button onclick='viewmarhun(this)' class='btn btn-info'><i class='fas fa-eye'></i></button> <button onclick='editmarhun(this)' class='btn btn-primary'><i class='fas fa-edit'></i></button> <button onclick='deletemarhun(this)' class='btn btn-danger'><i class='fas fa-trash-alt'></i></button></div>"
|
||||
]).draw();
|
||||
count++;
|
||||
counter = counter + 1;
|
||||
@@ -601,7 +647,7 @@
|
||||
$('#bilangan_jumlah_kuantiti').val(formatter.format(total_kuantiti));
|
||||
$('#jumlah_nilai_marhun').val(formatter.format(jumlah_nilai_marhun));
|
||||
if (count == 1){
|
||||
$('.buttonpunya').html("<button onclick='editmarhun(this)' class='btn btn-primary'><i class='fas fa-edit'></i></button>");
|
||||
$('.buttonpunya').html("<button onclick='viewmarhun(this)' class='btn btn-info'><i class='fas fa-eye'></i></button> <button onclick='editmarhun(this)' class='btn btn-primary'><i class='fas fa-edit'></i></button>");
|
||||
}
|
||||
|
||||
// if(total_nilai_marhun > 0 && total_nilai_marhun < 401){
|
||||
@@ -656,25 +702,32 @@
|
||||
$('#keuntungan_sebulan').val(formatter.format(keuntungan_sebulan.toFixed(2)));
|
||||
$('#keuntungan_6bln').val(formatter.format(keuntungan_6bln.toFixed(2)));
|
||||
|
||||
var max_teller = 0;
|
||||
var max_pelulus = 0;
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api_url + '/api/maxpinjaman',
|
||||
data: {
|
||||
'mutu': array_mutu,
|
||||
'total_nilai_marhun': total_nilai_marhun,
|
||||
},
|
||||
success:function(data){
|
||||
|
||||
$.each(data,function(index,pinjaman){
|
||||
if(pinjaman['user_type'] == 'teller'){
|
||||
if (pinjaman['user_type'] == 'teller') {
|
||||
pinjaman_teller = Number(pinjaman['max']);
|
||||
max_teller = pinjaman['teller_pinjaman'];
|
||||
}
|
||||
if(pinjaman['user_type'] == 'khazanah'){
|
||||
if (pinjaman['user_type'] == 'khazanah') {
|
||||
pinjaman_pelulus = Number(pinjaman['max']);
|
||||
max_pelulus = pinjaman['pc_pinjaman'];
|
||||
}
|
||||
});
|
||||
$('.span-pinjaman-max-pelulus').text(formatter.format(pinjaman_pelulus) + ' %');
|
||||
$('.span-pinjaman-max').text(formatter.format(pinjaman_teller) + ' %');
|
||||
var max_teller = total_nilai_marhun * (pinjaman_teller/100);
|
||||
var max_pelulus = total_nilai_marhun * (pinjaman_pelulus/100);
|
||||
$('#pembiayaan_max_teller').val(formatter.format(max_teller));
|
||||
$('#pembiyaan_max_pelulus').val(formatter.format(max_pelulus.toFixed(2)));
|
||||
$('#pembiyaan_max_pelulus').val(formatter.format(max_pelulus));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -701,6 +754,103 @@
|
||||
});
|
||||
}
|
||||
|
||||
function viewmarhun(e){
|
||||
let selectedrow = $(e).closest('tr');
|
||||
let recno = tablemarhun.row(selectedrow).data();
|
||||
let nm = recno[3];
|
||||
let karat = recno[4];
|
||||
let berat = recno[5];
|
||||
let harga = recno[8];
|
||||
let nota = recno[7];
|
||||
let kuantiti = recno[6];
|
||||
let jenismarhun = recno[2];
|
||||
let beratpermata = recno[10];
|
||||
|
||||
// Call API to get specific MaxMutuEmas data by karat
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||
type: 'GET',
|
||||
data: { karat: karat, nilaimarhun: nm },
|
||||
success: function(response) {
|
||||
let marginInfo = '';
|
||||
let marginTable = '';
|
||||
if (response && response.karat) {
|
||||
marginTable = `
|
||||
<table class="table table-bordered table-sm mt-3">
|
||||
<thead class="thead-light">
|
||||
<tr><th colspan="2" class="text-center"><strong>Maklumat Margin</strong></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td><strong>Margin Teller</strong></td><td>${response.teller}%</td></tr>
|
||||
<tr><td><strong>Margin PC</strong></td><td>${response.pc}%</td></tr>
|
||||
<tr><td><strong>Nilai Marhun Teller</strong></td><td>RM${parseFloat(response.maxteller).toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td></tr>
|
||||
<tr><td><strong>Nilai Marhun PC</strong></td><td>RM${parseFloat(response.maxpc).toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
`;
|
||||
}
|
||||
|
||||
let details = `
|
||||
<table class="table table-bordered table-sm">
|
||||
<thead class="thead-light">
|
||||
<tr><th colspan="2" class="text-center"><strong>Maklumat Marhun</strong></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td><strong>Jenis Marhun</strong></td><td>${jenismarhun}</td></tr>
|
||||
<tr><td><strong>Nilai Marhun Asal</strong></td><td>${nm}</td></tr>
|
||||
<tr><td><strong>Karat</strong></td><td>${karat}</td></tr>
|
||||
<tr><td><strong>Berat</strong></td><td>${berat}g</td></tr>
|
||||
<tr><td><strong>Kuantiti</strong></td><td>${kuantiti}</td></tr>
|
||||
<tr><td><strong>Harga</strong></td><td>RM${harga}</td></tr>
|
||||
<tr><td><strong>Nota</strong></td><td>${nota}</td></tr>
|
||||
<tr><td><strong>Berat Batu Permata</strong></td><td>${beratpermata}g</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
${marginTable}
|
||||
`;
|
||||
|
||||
Swal.fire({
|
||||
title: 'Maklumat Marhun & Margin',
|
||||
html: details,
|
||||
icon: 'info',
|
||||
confirmButtonText: 'OK',
|
||||
width: '600px'
|
||||
});
|
||||
},
|
||||
error: function(xhr) {
|
||||
// If API call fails, show basic marhun info only
|
||||
let details = `
|
||||
<table class="table table-bordered table-sm">
|
||||
<thead class="thead-light">
|
||||
<tr><th colspan="2" class="text-center"><strong>Maklumat Marhun</strong></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td><strong>Jenis Marhun</strong></td><td>${jenismarhun}</td></tr>
|
||||
<tr><td><strong>Nama</strong></td><td>${nm}</td></tr>
|
||||
<tr><td><strong>Karat</strong></td><td>${karat}</td></tr>
|
||||
<tr><td><strong>Berat</strong></td><td>${berat}g</td></tr>
|
||||
<tr><td><strong>Kuantiti</strong></td><td>${kuantiti}</td></tr>
|
||||
<tr><td><strong>Harga</strong></td><td>RM${harga}</td></tr>
|
||||
<tr><td><strong>Nota</strong></td><td>${nota}</td></tr>
|
||||
<tr><td><strong>Berat Batu Permata</strong></td><td>${beratpermata}g</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="alert alert-warning text-center">
|
||||
<em>Maklumat margin tidak tersedia</em>
|
||||
</div>
|
||||
`;
|
||||
|
||||
Swal.fire({
|
||||
title: 'Maklumat Marhun',
|
||||
html: details,
|
||||
icon: 'info',
|
||||
confirmButtonText: 'OK',
|
||||
width: '600px'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function editmarhun(e){
|
||||
let norujuk = $('#norujukan').val();
|
||||
let selectedrow = $(e).closest('tr');
|
||||
@@ -1502,7 +1652,7 @@
|
||||
|
||||
swalWithBootstrapButtons.fire({
|
||||
title: 'Dapatkan Pengesahan Daripada Khazanah?',
|
||||
text: "Tetapan margin melebihi" + pinjaman_teller + "% untuk Khazanah!",
|
||||
text: "Tetapan Margin Melebihi Limit Maksima Teller!",
|
||||
icon: 'info',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Hantar',
|
||||
@@ -1514,7 +1664,7 @@
|
||||
let norujukan = $('#norujukan').val();
|
||||
let nm = parseFloat($('#total_nilai_marhun').val().replace(/[^0-9.-]+/g,""));let ber = $('#total_berat').val();let marg = $('.span-pinjaman').text();
|
||||
// let komen = "Pembiayaan Melebihi Margin 70%|" + nm + "|" + ber + "|" + marg + "|";
|
||||
let status = "Pembiayaan Melebihi Margin " + pinjaman_teller + "%";
|
||||
let status = "Tetapan Margin Melebihi Limit Maksima Teller: " + pinjaman_teller + "%";
|
||||
let jumpinjam = $('#pinjaman').val();
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
|
||||
@@ -1618,5 +1768,153 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Toggle Table Functionality
|
||||
let isMarginTableVisible = false;
|
||||
|
||||
$('#toggleTableBtn').on('click', function() {
|
||||
if (!isMarginTableVisible) {
|
||||
// Show margin table, hide main table
|
||||
$('#myTable_wrapper').hide();
|
||||
$('#marginTable').show();
|
||||
$(this).html('<i class="fas fa-exchange-alt"></i> Papar Marhun');
|
||||
loadMarginData();
|
||||
isMarginTableVisible = true;
|
||||
} else {
|
||||
// Show main table, hide margin table
|
||||
$('#marginTable_wrapper').hide();
|
||||
$('#myTable_wrapper').show();
|
||||
$(this).html('<i class="fas fa-exchange-alt"></i> Papar Margin');
|
||||
isMarginTableVisible = false;
|
||||
}
|
||||
});
|
||||
|
||||
function loadMarginData() {
|
||||
let marginData = [];
|
||||
let totalNilaiMarhun = 0;
|
||||
let totalNilaiTeller = 0;
|
||||
let totalNilaiPC = 0;
|
||||
|
||||
// Process each individual row from the main table
|
||||
let rowsData = [];
|
||||
tablemarhun.rows().data().each(function(row, index) {
|
||||
let recno = row[1]; // Recno column
|
||||
let karat = row[4]; // Karat column
|
||||
let nilaiMarhun = parseFloat(row[3].replace(/[^0-9.-]+/g, "")); // Nilai Marhun column
|
||||
rowsData.push({
|
||||
index: index,
|
||||
recno: recno,
|
||||
karat: karat,
|
||||
nilaiMarhun: nilaiMarhun
|
||||
});
|
||||
});
|
||||
|
||||
let bil = 1;
|
||||
let processedCount = 0;
|
||||
let totalEntries = rowsData.length;
|
||||
|
||||
rowsData.forEach((rowData) => {
|
||||
// Call API to get margin data for each individual item
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||
type: 'GET',
|
||||
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
||||
success: function(response) {
|
||||
if (response && response.karat) {
|
||||
let nilaiTeller = parseFloat(response.maxteller) || 0;
|
||||
let nilaiPC = parseFloat(response.maxpc) || 0;
|
||||
|
||||
marginData.push({
|
||||
index: rowData.index,
|
||||
bil: rowData.index + 1,
|
||||
recno: rowData.recno,
|
||||
karat: rowData.karat,
|
||||
nilaiMarhun: rowData.nilaiMarhun,
|
||||
marginTeller: response.teller,
|
||||
marginPC: response.pc,
|
||||
nilaiTeller: nilaiTeller,
|
||||
nilaiPC: nilaiPC
|
||||
});
|
||||
|
||||
totalNilaiMarhun += rowData.nilaiMarhun;
|
||||
totalNilaiTeller += nilaiTeller;
|
||||
totalNilaiPC += nilaiPC;
|
||||
}
|
||||
|
||||
processedCount++;
|
||||
if (processedCount === totalEntries) {
|
||||
// Sort by original index to maintain order
|
||||
marginData.sort((a, b) => a.index - b.index);
|
||||
populateMarginTable(marginData, totalNilaiMarhun, totalNilaiTeller, totalNilaiPC);
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
processedCount++;
|
||||
if (processedCount === totalEntries) {
|
||||
// Sort by original index to maintain order
|
||||
marginData.sort((a, b) => a.index - b.index);
|
||||
populateMarginTable(marginData, totalNilaiMarhun, totalNilaiTeller, totalNilaiPC);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
let marginDataTable = null;
|
||||
|
||||
function populateMarginTable(data, totalMarhun, totalTeller, totalPC) {
|
||||
// If DataTable already exists, destroy it first
|
||||
if (marginDataTable !== null) {
|
||||
marginDataTable.destroy();
|
||||
marginDataTable = null;
|
||||
}
|
||||
|
||||
let tbody = $('#marginTableBody');
|
||||
tbody.empty();
|
||||
|
||||
data.forEach(function(item) {
|
||||
let row = `
|
||||
<tr>
|
||||
<td>${item.bil}</td>
|
||||
<td>${item.karat}</td>
|
||||
<td>RM${item.nilaiMarhun.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
|
||||
<td>${item.marginTeller}%</td>
|
||||
<td>${item.marginPC}%</td>
|
||||
<td>RM${item.nilaiTeller.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
|
||||
<td>RM${item.nilaiPC.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
|
||||
</tr>
|
||||
`;
|
||||
tbody.append(row);
|
||||
});
|
||||
|
||||
// Initialize DataTable
|
||||
marginDataTable = $('#marginTable').DataTable({
|
||||
"pageLength": 10,
|
||||
"ordering": false,
|
||||
"order": [[ 0, "asc" ]],
|
||||
"responsive": true,
|
||||
"language": {
|
||||
"lengthMenu": "Papar _MENU_ rekod setiap halaman",
|
||||
"zeroRecords": "Tiada rekod dijumpai",
|
||||
"info": "Memapar halaman _PAGE_ dari _PAGES_",
|
||||
"infoEmpty": "Tiada rekod tersedia",
|
||||
"infoFiltered": "(ditapis dari _MAX_ jumlah rekod)",
|
||||
"search": "Cari:",
|
||||
"paginate": {
|
||||
"first": "Pertama",
|
||||
"last": "Akhir",
|
||||
"next": "Seterusnya",
|
||||
"previous": "Sebelumnya"
|
||||
}
|
||||
},
|
||||
"footerCallback": function (row, data, start, end, display) {
|
||||
// Update footer totals
|
||||
$('#totalNilaiMarhunMargin').text('RM' + totalMarhun.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2}));
|
||||
$('#totalNilaiTellerMargin').text('RM' + totalTeller.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2}));
|
||||
$('#totalNilaiPCMargin').text('RM' + totalPC.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2}));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
@endphp
|
||||
|
||||
@if($gadai_session != null)
|
||||
<div class="container">
|
||||
<div class="p-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-12">
|
||||
|
||||
@@ -63,6 +63,14 @@
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<!-- Toggle Button -->
|
||||
<div class="mb-3">
|
||||
<button type="button" class="btn btn-info" id="toggleTableBtn">
|
||||
<i class="fas fa-exchange-alt"></i> Papar Margin
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Main Marhun Table -->
|
||||
<table class="table table-striped table-hover text-center" id="myTable">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
@@ -89,6 +97,35 @@
|
||||
<th colspan="5"></th>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<!-- Margin Summary Table (Hidden by default) -->
|
||||
<table class="table table-striped table-hover text-center" id="marginTable" style="display: none;">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>Karat</th>
|
||||
<th>Nilai Marhun</th>
|
||||
<th>Margin Teller (%)</th>
|
||||
<th>Margin PC (%)</th>
|
||||
<th>Pembiayaan Teller</th>
|
||||
<th>Pembiayaan PC</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="marginTableBody">
|
||||
<!-- Data will be populated by JavaScript -->
|
||||
</tbody>
|
||||
<tfoot class="thead-dark">
|
||||
<tr>
|
||||
<th>Jumlah</th>
|
||||
<th></th>
|
||||
<th id="totalNilaiMarhunMargin"></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th id="totalNilaiTellerMargin"></th>
|
||||
<th id="totalNilaiPCMargin"></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
@@ -473,21 +510,34 @@
|
||||
})
|
||||
}
|
||||
|
||||
var tablemarhun = $('#myTable').DataTable({
|
||||
"ordering": false,
|
||||
"columnDefs": [
|
||||
{
|
||||
"targets": [ 1 ],
|
||||
"visible": false,
|
||||
"searchable": false
|
||||
var tablemarhun = $('#myTable').DataTable({
|
||||
"ordering": false,
|
||||
"columnDefs": [{
|
||||
"targets": [1],
|
||||
"visible": false,
|
||||
"searchable": false
|
||||
},
|
||||
{
|
||||
"targets": [7],
|
||||
"visible": true,
|
||||
"searchable": false
|
||||
}
|
||||
],
|
||||
"language": {
|
||||
"lengthMenu": "Papar _MENU_ rekod setiap halaman",
|
||||
"zeroRecords": "Tiada rekod dijumpai",
|
||||
"info": "Memapar halaman _PAGE_ dari _PAGES_",
|
||||
"infoEmpty": "Tiada rekod tersedia",
|
||||
"infoFiltered": "(ditapis dari _MAX_ jumlah rekod)",
|
||||
"search": "Cari:",
|
||||
"paginate": {
|
||||
"first": "Pertama",
|
||||
"last": "Akhir",
|
||||
"next": "Seterusnya",
|
||||
"previous": "Sebelumnya"
|
||||
}
|
||||
},
|
||||
{
|
||||
"targets": [ 7 ],
|
||||
"visible": false,
|
||||
"searchable": false
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
$(".select2").select2({
|
||||
dropdownParent: $('#daftar_marhun'),
|
||||
@@ -527,60 +577,57 @@
|
||||
closeOnSelect: false
|
||||
});
|
||||
|
||||
var total_nilai_marhun = 0;
|
||||
var total_berat = 0;
|
||||
var total_kuantiti = 0;
|
||||
var kadarupah = 0;
|
||||
var jumlah_marhun = 0;
|
||||
var jumlah_nilai_marhun = 0;
|
||||
var pinjaman_pelulus = 0;
|
||||
var pinjaman_teller = 0;
|
||||
function marhuntable(data){
|
||||
var counter = 1;
|
||||
total_nilai_marhun = 0;
|
||||
total_berat = 0;
|
||||
total_kuantiti = 0;
|
||||
var marhun_details = '';
|
||||
jumlah_nilai_marhun = 0;
|
||||
tablemarhun.clear().draw();
|
||||
$.each(data,function(index,marhun){
|
||||
$.each(marhun,function(index,marhun_detail){
|
||||
total_nilai_marhun = total_nilai_marhun + Number(marhun_detail['n_marhun']);
|
||||
total_berat = total_berat + Number(marhun_detail['berat']);
|
||||
marhun_details = marhun_details + marhun_detail['bil'] + " " + marhun_detail['marhun'] +",";
|
||||
jumlah_nilai_marhun += Number(marhun_detail['n_marhun']);
|
||||
status_tag_permata = marhun_detail['tag_permata'] == 1 ? 'Ada' : '';
|
||||
total_kuantiti += Number(marhun_detail['bil']);
|
||||
tablemarhun.row.add([
|
||||
counter,
|
||||
marhun_detail['recno'],
|
||||
marhun_detail['marhun'],
|
||||
formatter.format(marhun_detail['n_marhun']),
|
||||
marhun_detail['karat'],
|
||||
formatter.format(marhun_detail['berat']),
|
||||
marhun_detail['bil'],
|
||||
marhun_detail['nota'],
|
||||
marhun_detail['harga'],
|
||||
status_tag_permata,
|
||||
marhun_detail['berat_batu_permata'],
|
||||
"<div class='buttonpunya text-center'><button onclick='editmarhun(this)' class='btn btn-primary'><i class='fas fa-edit'></i></button> <button onclick='deletemarhun(this)' class='btn btn-danger'><i class='fas fa-trash-alt'></i></button></div>"
|
||||
]).draw();
|
||||
counter = counter + 1;
|
||||
var total_nilai_marhun = 0;
|
||||
var total_berat = 0;
|
||||
var total_kuantiti = 0;
|
||||
var kadarupah = 0;
|
||||
var jumlah_marhun = 0;
|
||||
var jumlah_nilai_marhun = 0;
|
||||
var pinjaman_pelulus = 0;
|
||||
var pinjaman_teller = 0;
|
||||
|
||||
function marhuntable(data) {
|
||||
var counter = 1;
|
||||
total_nilai_marhun = 0;
|
||||
total_berat = 0;
|
||||
total_kuantiti = 0;
|
||||
var marhun_details = '';
|
||||
var array_mutu = [];
|
||||
jumlah_nilai_marhun = 0;
|
||||
tablemarhun.clear().draw();
|
||||
$.each(data, function(index, marhun) {
|
||||
$.each(marhun, function(index, marhun_detail) {
|
||||
total_nilai_marhun = total_nilai_marhun + Number(marhun_detail['n_marhun']);
|
||||
total_berat = total_berat + Number(marhun_detail['berat']);
|
||||
marhun_details = marhun_details + marhun_detail['bil'] + " " + marhun_detail['marhun'] + ",";
|
||||
jumlah_nilai_marhun += Number(marhun_detail['n_marhun']);
|
||||
status_tag_permata = marhun_detail['tag_permata'] == 1 ? 'Ada' : '';
|
||||
total_kuantiti += Number(marhun_detail['bil']);
|
||||
array_mutu.push([marhun_detail['karat'], marhun_detail['n_marhun']]);
|
||||
tablemarhun.row.add([
|
||||
counter,
|
||||
marhun_detail['recno'],
|
||||
marhun_detail['marhun'],
|
||||
formatter.format(marhun_detail['n_marhun']),
|
||||
marhun_detail['karat'],
|
||||
formatter.format(marhun_detail['berat']),
|
||||
marhun_detail['bil'],
|
||||
marhun_detail['nota'],
|
||||
marhun_detail['harga'],
|
||||
status_tag_permata,
|
||||
marhun_detail['berat_batu_permata'],
|
||||
"<div class='buttonpunya text-center'><button onclick='editmarhun(this)' class='btn btn-primary'><i class='fas fa-edit'></i></button> <button onclick='deletemarhun(this)' class='btn btn-danger'><i class='fas fa-trash-alt'></i></button></div>"
|
||||
]).draw();
|
||||
counter = counter + 1;
|
||||
});
|
||||
});
|
||||
});
|
||||
$('#totalberattable').text(formatter.format(total_berat));
|
||||
$('#totalkuantititable').text(total_kuantiti);
|
||||
$('#totalnilaimarhuntable').text(formatter.format(jumlah_nilai_marhun));
|
||||
$('#bilangan_marhun').val(formatter.format(counter-1));
|
||||
$('#bilangan_jumlah_kuantiti').val(formatter.format(total_kuantiti));
|
||||
$('#jumlah_nilai_marhun').val(formatter.format(jumlah_nilai_marhun));
|
||||
// if(total_nilai_marhun > 0 && total_nilai_marhun < 401){
|
||||
// kadarupah = 1.2/100;
|
||||
// }else if(total_nilai_marhun >= 401 && total_nilai_marhun < 2001){
|
||||
// kadarupah = 1.5/100;
|
||||
// }else if(total_nilai_marhun >= 2001 ){
|
||||
// kadarupah = 1.7/100;
|
||||
// }
|
||||
$('#totalberattable').text(formatter.format(total_berat));
|
||||
$('#totalkuantititable').text(total_kuantiti);
|
||||
$('#totalnilaimarhuntable').text(formatter.format(jumlah_nilai_marhun));
|
||||
$('#bilangan_marhun').val(formatter.format(counter - 1));
|
||||
$('#bilangan_jumlah_kuantiti').val(formatter.format(total_kuantiti));
|
||||
$('#jumlah_nilai_marhun').val(formatter.format(jumlah_nilai_marhun));
|
||||
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
@@ -596,33 +643,40 @@
|
||||
}
|
||||
});
|
||||
|
||||
$('#total_nilai_marhun').val(formatter.format(total_nilai_marhun));
|
||||
$('#marhun_detail').val(marhun_details);
|
||||
$('#total_berat').val(formatter.format(total_berat));
|
||||
$('#kadarkeuntungan').val(formatter.format(kadarupah));
|
||||
$('#kuantiti_marhun').val(formatter.format(jumlah_marhun));
|
||||
$('#total_nilai_marhun').val(formatter.format(total_nilai_marhun));
|
||||
$('#marhun_detail').val(marhun_details);
|
||||
$('#total_berat').val(formatter.format(total_berat));
|
||||
$('#kadarkeuntungan').val(formatter.format(kadarupah));
|
||||
$('#kuantiti_marhun').val(formatter.format(jumlah_marhun));
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api_url + '/api/maxpinjaman',
|
||||
success:function(data){
|
||||
$.each(data,function(index,pinjaman){
|
||||
if(pinjaman['user_type'] == 'teller'){
|
||||
pinjaman_teller = Number(pinjaman['max']);
|
||||
}
|
||||
if(pinjaman['user_type'] == 'khazanah'){
|
||||
pinjaman_pelulus = Number(pinjaman['max']);
|
||||
}
|
||||
});
|
||||
$('.span-pinjaman-max-pelulus').text(formatter.format(pinjaman_pelulus) + ' %');
|
||||
$('.span-pinjaman-max').text(formatter.format(pinjaman_teller) + ' %');
|
||||
var max_teller = total_nilai_marhun * (pinjaman_teller/100);
|
||||
var max_pelulus = total_nilai_marhun * (pinjaman_pelulus/100);
|
||||
$('#pembiayaan_max_teller').val(formatter.format(max_teller.toFixed(2)));
|
||||
$('#pembiyaan_max_pelulus').val(formatter.format(max_pelulus.toFixed(2)));
|
||||
}
|
||||
});
|
||||
}
|
||||
var max_teller = 0;
|
||||
var max_pelulus = 0;
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: api_url + '/api/maxpinjaman',
|
||||
data: {
|
||||
'mutu': array_mutu,
|
||||
'total_nilai_marhun': total_nilai_marhun,
|
||||
},
|
||||
success: function(data) {
|
||||
$.each(data, function(index, pinjaman) {
|
||||
if (pinjaman['user_type'] == 'teller') {
|
||||
pinjaman_teller = Number(pinjaman['max']);
|
||||
max_teller = pinjaman['teller_pinjaman'];
|
||||
}
|
||||
if (pinjaman['user_type'] == 'khazanah') {
|
||||
pinjaman_pelulus = Number(pinjaman['max']);
|
||||
max_pelulus = pinjaman['pc_pinjaman'];
|
||||
}
|
||||
});
|
||||
$('.span-pinjaman-max-pelulus').text(formatter.format(pinjaman_pelulus) + ' %');
|
||||
$('.span-pinjaman-max').text(formatter.format(pinjaman_teller) + ' %');
|
||||
$('#pembiayaan_max_teller').val(formatter.format(max_teller));
|
||||
$('#pembiyaan_max_pelulus').val(formatter.format(max_pelulus));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#pinjaman').on('input',function(){
|
||||
var pinjaman = Number(this.value);
|
||||
@@ -865,8 +919,9 @@
|
||||
var batu_permata_array = $('#batupermata').val();
|
||||
var tag_permata = $('input[id=tagpermata]').is(':checked') ? 1 : 0;
|
||||
|
||||
var beratpermata = $('#beratpermata').val();
|
||||
var kuantiti = $('#kuantiti').val();
|
||||
var beratpermata = $('#beratpermata').val();
|
||||
var kuantiti = $('#kuantiti').val();
|
||||
|
||||
|
||||
if(kuantiti > 10)
|
||||
{
|
||||
@@ -1431,22 +1486,24 @@
|
||||
buttonsStyling: false
|
||||
});
|
||||
|
||||
swalWithBootstrapButtons.fire({
|
||||
title: 'Dapatkan Pengesahan Khazanah',
|
||||
text: "Tetapan margin melebihi " + pinjaman_teller + "% untuk Khazanah!",
|
||||
icon: 'info',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Hantar',
|
||||
cancelButtonText: 'Batal',
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
swalWithBootstrapButtons.fire({
|
||||
title: 'Dapatkan Pengesahan Khazanah',
|
||||
text: "Tetapan Margin Melebihi Limit Maksima Teller!",
|
||||
icon: 'info',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Hantar',
|
||||
cancelButtonText: 'Batal',
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
|
||||
let norujukan = $('#norujukan').val();
|
||||
let nm = parseFloat($('#total_nilai_marhun').val().replace(/[^0-9.-]+/g,""));let ber = $('#total_berat').val();let marg = $('.span-pinjaman').text();
|
||||
let status = "Pembiayaan Melebihi Margin " + pinjaman_teller + "%";
|
||||
let jumpinjam = $('#pinjaman').val();
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
let norujukan = $('#norujukan').val();
|
||||
let nm = parseFloat($('#total_nilai_marhun').val().replace(/[^0-9.-]+/g, ""));
|
||||
let ber = $('#total_berat').val();
|
||||
let marg = $('.span-pinjaman').text();
|
||||
let status = "Tetapan Margin Melebihi Limit Maksima Teller: " + pinjaman_teller + "%";
|
||||
let jumpinjam = $('#pinjaman').val();
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
|
||||
Swal.fire({
|
||||
title: 'Tunggu Pengesahan Daripada Khazanah.',
|
||||
@@ -1604,23 +1661,24 @@
|
||||
let marhun = $(e).closest('tr').children('td:eq(1)').text();let selectedrow = $(e).closest('tr');let recnozz = tablemarhun.row(selectedrow).data();
|
||||
let norujuk = $('#norujukan').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'put',
|
||||
url: '{{ route("gadai.editmarhun") }}',
|
||||
data: {
|
||||
"_token": "{{ csrf_token() }}",
|
||||
"norujukan" : norujuk,
|
||||
"recno" : recnozz[1],
|
||||
"teller": "{{ Auth::user()->name }}"
|
||||
},
|
||||
success:function(data){
|
||||
location.reload();
|
||||
},error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
$.ajax({
|
||||
method: 'put',
|
||||
url: '{{ route("gadai.editmarhun") }}',
|
||||
data: {
|
||||
"_token": "{{ csrf_token() }}",
|
||||
"norujukan": norujuk,
|
||||
"recno": recnozz[1],
|
||||
"teller": "{{ Auth::user()->name }}"
|
||||
},
|
||||
success: function(data) {
|
||||
location.reload();
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function editmarhun(e){
|
||||
let norujuk = $('#norujukan').val();
|
||||
@@ -1858,5 +1916,169 @@
|
||||
}
|
||||
});
|
||||
|
||||
// Toggle Table Functionality
|
||||
let isMarginTableVisible = false;
|
||||
|
||||
$('#toggleTableBtn').on('click', function() {
|
||||
if (!isMarginTableVisible) {
|
||||
// Check if main table has data before showing margin table
|
||||
let tableData = $('#myTable').DataTable().data();
|
||||
if (tableData.length === 0) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Amaran!',
|
||||
text: 'Tiada data marhun untuk papar margin. Sila daftar marhun terlebih dahulu.'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Show margin table, hide main table
|
||||
$('#myTable_wrapper').hide();
|
||||
$('#marginTable').show();
|
||||
$(this).html('<i class="fas fa-exchange-alt"></i> Papar Marhun');
|
||||
loadMarginData();
|
||||
isMarginTableVisible = true;
|
||||
|
||||
// Disable Daftar Marhun button when margin table is visible
|
||||
$('button[data-target="#daftar_marhun"]').prop('disabled', true);
|
||||
} else {
|
||||
// Show main table, hide margin table
|
||||
$('#marginTable_wrapper').hide();
|
||||
$('#myTable_wrapper').show();
|
||||
$(this).html('<i class="fas fa-exchange-alt"></i> Papar Margin');
|
||||
isMarginTableVisible = false;
|
||||
|
||||
// Enable Daftar Marhun button when main table is visible
|
||||
$('button[data-target="#daftar_marhun"]').prop('disabled', false);
|
||||
}
|
||||
});
|
||||
|
||||
function loadMarginData() {
|
||||
let marginData = [];
|
||||
let totalNilaiMarhun = 0;
|
||||
let totalNilaiTeller = 0;
|
||||
let totalNilaiPC = 0;
|
||||
|
||||
// Process each individual row from the main table
|
||||
let rowsData = [];
|
||||
tablemarhun.rows().data().each(function(row, index) {
|
||||
console.log(row);
|
||||
let recno = row[1]; // Recno column
|
||||
let karat = row[4]; // Karat column
|
||||
let nilaiMarhun = parseFloat(row[3].replace(/[^0-9.-]+/g, "")); // Nilai Marhun column
|
||||
rowsData.push({
|
||||
index: index,
|
||||
recno: recno,
|
||||
karat: karat,
|
||||
nilaiMarhun: nilaiMarhun
|
||||
});
|
||||
});
|
||||
|
||||
let bil = 1;
|
||||
let processedCount = 0;
|
||||
let totalEntries = rowsData.length;
|
||||
|
||||
rowsData.forEach((rowData) => {
|
||||
// Call API to get margin data for each individual item
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||
type: 'GET',
|
||||
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
||||
success: function(response) {
|
||||
if (response && response.karat) {
|
||||
let nilaiTeller = parseFloat(response.maxteller) || 0;
|
||||
let nilaiPC = parseFloat(response.maxpc) || 0;
|
||||
|
||||
marginData.push({
|
||||
index: rowData.index,
|
||||
bil: rowData.index + 1,
|
||||
recno: rowData.recno,
|
||||
karat: rowData.karat,
|
||||
nilaiMarhun: rowData.nilaiMarhun,
|
||||
marginTeller: response.teller,
|
||||
marginPC: response.pc,
|
||||
nilaiTeller: nilaiTeller,
|
||||
nilaiPC: nilaiPC
|
||||
});
|
||||
|
||||
totalNilaiMarhun += rowData.nilaiMarhun;
|
||||
totalNilaiTeller += nilaiTeller;
|
||||
totalNilaiPC += nilaiPC;
|
||||
}
|
||||
|
||||
processedCount++;
|
||||
if (processedCount === totalEntries) {
|
||||
// Sort by original index to maintain order
|
||||
marginData.sort((a, b) => a.index - b.index);
|
||||
populateMarginTable(marginData, totalNilaiMarhun, totalNilaiTeller, totalNilaiPC);
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
processedCount++;
|
||||
if (processedCount === totalEntries) {
|
||||
// Sort by original index to maintain order
|
||||
marginData.sort((a, b) => a.index - b.index);
|
||||
populateMarginTable(marginData, totalNilaiMarhun, totalNilaiTeller, totalNilaiPC);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
let marginDataTable = null;
|
||||
function populateMarginTable(data, totalMarhun, totalTeller, totalPC) {
|
||||
// If DataTable already exists, destroy it first
|
||||
if (marginDataTable !== null) {
|
||||
marginDataTable.destroy();
|
||||
marginDataTable = null;
|
||||
}
|
||||
|
||||
let tbody = $('#marginTableBody');
|
||||
tbody.empty();
|
||||
|
||||
data.forEach(function(item) {
|
||||
let row = `
|
||||
<tr>
|
||||
<td>${item.bil}</td>
|
||||
<td>${item.karat}</td>
|
||||
<td>RM${item.nilaiMarhun.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
|
||||
<td>${item.marginTeller}%</td>
|
||||
<td>${item.marginPC}%</td>
|
||||
<td>RM${item.nilaiTeller.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
|
||||
<td>RM${item.nilaiPC.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
|
||||
</tr>
|
||||
`;
|
||||
tbody.append(row);
|
||||
});
|
||||
|
||||
// Initialize DataTable
|
||||
marginDataTable = $('#marginTable').DataTable({
|
||||
"pageLength": 10,
|
||||
"ordering": false,
|
||||
"order": [[ 0, "asc" ]],
|
||||
"responsive": true,
|
||||
"language": {
|
||||
"lengthMenu": "Papar _MENU_ rekod setiap halaman",
|
||||
"zeroRecords": "Tiada rekod dijumpai",
|
||||
"info": "Memapar halaman _PAGE_ dari _PAGES_",
|
||||
"infoEmpty": "Tiada rekod tersedia",
|
||||
"infoFiltered": "(ditapis dari _MAX_ jumlah rekod)",
|
||||
"search": "Cari:",
|
||||
"paginate": {
|
||||
"first": "Pertama",
|
||||
"last": "Akhir",
|
||||
"next": "Seterusnya",
|
||||
"previous": "Sebelumnya"
|
||||
}
|
||||
},
|
||||
"footerCallback": function (row, data, start, end, display) {
|
||||
// Update footer totals
|
||||
$('#totalNilaiMarhunMargin').text('RM' + totalMarhun.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2}));
|
||||
$('#totalNilaiTellerMargin').text('RM' + totalTeller.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2}));
|
||||
$('#totalNilaiPCMargin').text('RM' + totalPC.toLocaleString('en-MY', {minimumFractionDigits: 2, maximumFractionDigits: 2}));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -20,7 +20,9 @@
|
||||
<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>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
@extends('layouts.app_operasi')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center mt-5">
|
||||
<div class="col-md-10">
|
||||
<div class="card">
|
||||
<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">Laporan Audit</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="card-header">
|
||||
<h4 class="text-center">Laporan Audit</h4>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form action="{{ route('operasi.audittrail.laporancetak') }}" method="GET">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="dateaudit">Tarikh Mula:</label>
|
||||
<input type="date" class="form-control" id="dateaudit" name="dateaudit" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="dateaudit_till">Tarikh Akhir:</label>
|
||||
<input type="date" class="form-control" id="dateaudit_till" name="dateaudit_till" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button type="submit" class="btn btn-info btn-lg">
|
||||
<i class="fas fa-route"></i> Generate Audit Trail
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,63 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<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">Aliran Tunai</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@if(session()->has('errormessage'))
|
||||
<div class="alert alert-danger">
|
||||
{{ session()->get('errormessage') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card-body text-center">
|
||||
<div class="row form-group">
|
||||
<div class="col-md-2">
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<form action="{{ route('alirantunai.laporancetak') }}" method="post">
|
||||
@csrf
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="basic-addon1">Tarikh</span>
|
||||
</div>
|
||||
<input type="text" class="form-control" placeholder="Pilih Tarikh" aria-label="Tarikh" id="datetimepicker1" name="datetimepicker1" aria-describedby="basic-addon1">
|
||||
<input type="submit" class="btn btn-primary ml-md-5" id="submit_button" name="submit_button" value="Cetak">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var api_url = "<?php echo $api_url ?>";
|
||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||
|
||||
$(document).ready( function () {
|
||||
$('#datetimepicker1').datepicker({
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
});
|
||||
|
||||
var tablecustomers = $('#myTable').DataTable({
|
||||
"ordering": false
|
||||
});
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,282 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<h2 class="text-center font-weight-bold my-4">PAMPASAN</h2>
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<label>NAMA</label>
|
||||
<input type="text" class="form-control mb-2" value="{{ $customer_info['nama'] ?? '-' }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>NO PELANGGAN</label>
|
||||
<input type="text" class="form-control mb-2" value="{{ $gadai_info['nopelanggan'] ?? '-' }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>NO RUJUKAN</label>
|
||||
<input type="text" class="form-control mb-2" value="{{ $gadai_info['norujukan'] ?? '-' }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>NO KAD PENGENALAN</label>
|
||||
<input type="text" class="form-control mb-2" value="{{ $gadai_info['nokp'] ?? '-' }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-4 mx-auto" style="max-width:900px;">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label>BAUCER NO</label>
|
||||
<input type="text" class="form-control" value="{{ $baucerno ?? '-' }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>NILAI MARHUN</label>
|
||||
<input type="text" class="form-control"
|
||||
value="RM {{ number_format($barang_kes_info['nilaimarhun'], 2) }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>BAKI PEMBIAYAAN</label>
|
||||
<input type="text" class="form-control"
|
||||
value="RM {{ number_format($barang_kes_info['pembiayaan'], 2) }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>KEUNTUNGAN</label>
|
||||
<input type="text" class="form-control" value="RM {{ number_format($barang_kes_info['untung'], 2) }}"
|
||||
readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>JUMLAH PAMPASAN</label>
|
||||
@php
|
||||
$nilaimarhun = floatval($barang_kes_info['nilaimarhun'] ?? 0);
|
||||
$pembiayaan = floatval($barang_kes_info['pembiayaan'] ?? 0);
|
||||
$untung = floatval($barang_kes_info['untung'] ?? 0);
|
||||
$jumlah_pampasan = $nilaimarhun - $pembiayaan - $untung;
|
||||
@endphp
|
||||
<input type="text" class="form-control" value="RM {{ number_format($jumlah_pampasan, 2) }}" readonly>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>JUMLAH TEBUS</label>
|
||||
<input type="text" class="form-control" value="RM {{ number_format($jumlah_tebus, 2) }}" readonly>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 row mb-3 justify-content-center">
|
||||
<div class="col-md-6 text-center">
|
||||
<label><strong>JUMLAH PANJAR</strong></label>
|
||||
<input type="text" class="form-control text-center"
|
||||
value="RM {{ number_format($jumlahPanjar, 2) }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
<div class="alert alert-info text-center font-weight-bold" style="font-size: 1.2rem;">
|
||||
Cara Pengiraan Jumlah Pampasan:<br>
|
||||
<span style="font-size:1.3rem;">
|
||||
<b>Jumlah Pampasan = Nilai Marhun - Baki Pembiayaan - Keuntungan</b>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="button" class="btn btn-success mr-2" data-toggle="modal"
|
||||
data-target="#denominasipampasan" data-jumlah="{{ $jumlah_pampasan }}">
|
||||
DENO
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-danger" onclick="window.history.back()">BATAL</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
minimumFractionDigits: 2
|
||||
});
|
||||
|
||||
var arrayambilan = [
|
||||
["bundle1", 0],
|
||||
["bundle5", 0],
|
||||
["bundle10", 0],
|
||||
["bundle20", 0],
|
||||
["bundle50", 0],
|
||||
["bundle100", 0],
|
||||
["sen1", 0],
|
||||
["sen5", 0],
|
||||
["sen10", 0],
|
||||
["sen20", 0],
|
||||
["sen50", 0],
|
||||
["ringgit1", 0],
|
||||
["ringgit5", 0],
|
||||
["ringgit10", 0],
|
||||
["ringgit20", 0],
|
||||
["ringgit50", 0],
|
||||
["ringgit100", 0]
|
||||
];
|
||||
|
||||
function totalamount(idwang, bilangan) {
|
||||
var amount = 0;
|
||||
switch (idwang) {
|
||||
case 'bundle1':
|
||||
amount += (bilangan * 100);
|
||||
break;
|
||||
case 'bundle20':
|
||||
amount += (bilangan * 1000);
|
||||
break;
|
||||
case 'bundle5':
|
||||
amount += (bilangan * 500);
|
||||
break;
|
||||
case 'bundle50':
|
||||
amount += (bilangan * 5000);
|
||||
break;
|
||||
case 'bundle10':
|
||||
amount += (bilangan * 1000);
|
||||
break;
|
||||
case 'bundle100':
|
||||
amount += (bilangan * 5000);
|
||||
break;
|
||||
case 'sen1':
|
||||
amount += (bilangan * 0.01);
|
||||
break;
|
||||
case 'sen5':
|
||||
amount += (bilangan * 0.05);
|
||||
break;
|
||||
case 'sen10':
|
||||
amount += (bilangan * 0.10);
|
||||
break;
|
||||
case 'sen20':
|
||||
amount += (bilangan * 0.20);
|
||||
break;
|
||||
case 'sen50':
|
||||
amount += (bilangan * 0.50);
|
||||
break;
|
||||
case 'ringgit1':
|
||||
amount += (bilangan * 1);
|
||||
break;
|
||||
case 'ringgit5':
|
||||
amount += (bilangan * 5);
|
||||
break;
|
||||
case 'ringgit10':
|
||||
amount += (bilangan * 10);
|
||||
break;
|
||||
case 'ringgit20':
|
||||
amount += (bilangan * 20);
|
||||
break;
|
||||
case 'ringgit50':
|
||||
amount += (bilangan * 50);
|
||||
break;
|
||||
case 'ringgit100':
|
||||
amount += (bilangan * 100);
|
||||
break;
|
||||
}
|
||||
|
||||
return amount;
|
||||
}
|
||||
|
||||
function kiraanpanjar(datakeyin) {
|
||||
var idkey = $(datakeyin).attr('id');
|
||||
var valkey = $(datakeyin).val();
|
||||
var amount = 0;
|
||||
let amountkiraan = 0;
|
||||
|
||||
var validate = parseFloat($(datakeyin).data('amaun'));
|
||||
|
||||
$.each(arrayambilan, function(index, arr) {
|
||||
if (arr[0] == idkey) {
|
||||
|
||||
arrayambilan[index][1] = totalamount(idkey, valkey);
|
||||
}
|
||||
|
||||
amount += arr[1];
|
||||
});
|
||||
|
||||
if (Number(valkey) > Number(validate)) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran',
|
||||
text: 'Jumlah denominasi melebihi kadar'
|
||||
});
|
||||
$(datakeyin).val('');
|
||||
} else {
|
||||
|
||||
$('#amaunkiraan').val(amount);
|
||||
|
||||
}
|
||||
|
||||
switch (idkey) {
|
||||
case 'bundle1':
|
||||
amountkiraan += (valkey * 100);
|
||||
$('#totalb1').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'bundle20':
|
||||
amountkiraan += (valkey * 1000);
|
||||
$('#totalb20').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'bundle5':
|
||||
amountkiraan += (valkey * 500);
|
||||
$('#totalb5').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'bundle50':
|
||||
amountkiraan += (valkey * 5000);
|
||||
$('#totalb50').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'bundle10':
|
||||
amountkiraan += (valkey * 1000);
|
||||
$('#totalb10').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'bundle100':
|
||||
amountkiraan += (valkey * 5000);
|
||||
$('#totalb100').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'sen1':
|
||||
amountkiraan += (valkey * 0.01);
|
||||
$('#totalsen1').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'sen5':
|
||||
amountkiraan += (valkey * 0.05);
|
||||
$('#totalsen5').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'sen10':
|
||||
amountkiraan += (valkey * 0.10);
|
||||
$('#totalsen10').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'sen20':
|
||||
amountkiraan += (valkey * 0.20);
|
||||
$('#totalsen20').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'sen50':
|
||||
amountkiraan += (valkey * 0.50);
|
||||
$('#totalsen50').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'ringgit1':
|
||||
amountkiraan += (valkey * 1);
|
||||
$('#totalring1').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'ringgit5':
|
||||
amountkiraan += (valkey * 5);
|
||||
$('#totalring5').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'ringgit10':
|
||||
amountkiraan += (valkey * 10);
|
||||
$('#totalring10').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'ringgit20':
|
||||
amountkiraan += (valkey * 20);
|
||||
$('#totalring20').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'ringgit50':
|
||||
amountkiraan += (valkey * 50);
|
||||
$('#totalring50').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
case 'ringgit100':
|
||||
amountkiraan += (valkey * 100);
|
||||
$('#totalring100').val(formatter.format(amountkiraan.toFixed(2)));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
@include('modal.denopampasan')
|
||||
@endsection
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@
|
||||
@include('modal.agh')
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div class="container col-12">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-12">
|
||||
<div class="card">
|
||||
@@ -171,7 +171,7 @@
|
||||
</nav>
|
||||
<div class="tab-content" id="navtawarruqdannottawarruq">
|
||||
<div class="tab-pane fade {{ $activate_pane_SAG_baru }}" id="nav-tawarruq" role="tabpanel" aria-labelledby="nav-tawarruq-tab">
|
||||
<table class="table table-striped table-hover" id="myTable">
|
||||
<table class="table table-striped table-hover" id="myTable" style="width: 100%">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
@@ -184,23 +184,14 @@
|
||||
<th>Tempoh</th>
|
||||
<th>Keuntungan</th>
|
||||
<th>Lelong</th>
|
||||
<th>Pembayaran Terakhir</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tab-pane fade {{ $activate_pane_SAG_lama }}" id="nav-xtawarruq" role="tabpanel" aria-labelledby="nav-xtawarruq-tab">
|
||||
<table id="xtawarruq" class="table table-striped table-hover">
|
||||
<table id="xtawarruq" class="table table-striped table-hover" style="width:100%">
|
||||
<thead class="thead-dark">
|
||||
{{-- <tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
<th>Tarikh Gadai</th>
|
||||
<th>Tarikh Matang</th>
|
||||
<th>Pembiayaan</th>
|
||||
<th>Margin</th>
|
||||
<th>Tempoh</th>
|
||||
<th>Lelong</th>
|
||||
</tr> --}}
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>No Rujukan</th>
|
||||
@@ -212,6 +203,7 @@
|
||||
<th>Tempoh</th>
|
||||
<th>Keuntungan</th>
|
||||
<th>Lelong</th>
|
||||
<th>Pembayaran Terakhir</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
@@ -233,7 +225,9 @@
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
<table id="lelongTable" class="table table-striped table-hover">
|
||||
{{-- Lelong --}}
|
||||
|
||||
<table id="lelongTable" class="table table-striped table-hover" style="width:100%">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
@@ -514,7 +508,7 @@
|
||||
});
|
||||
|
||||
var xtawarruq = $('#xtawarruq').DataTable({
|
||||
"scrollX": false
|
||||
"scrollX": true,
|
||||
});
|
||||
|
||||
var tabledahtebus = $('#dahtebusTable').DataTable({
|
||||
@@ -563,6 +557,26 @@
|
||||
function checkserah(data){
|
||||
var urlpenebusan = $(data).data("url");
|
||||
var norujukan = $(data).data("norujukan");
|
||||
|
||||
var isBlocked = $(data).data("blocked");
|
||||
if(isBlocked === true || isBlocked === "true"){
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Amaran',
|
||||
text: 'Pembiayaan Sedang Dilelong'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
Swal.fire({
|
||||
title: 'Memuatkan...',
|
||||
allowEscapeKey : false,
|
||||
allowOutsideClick: false,
|
||||
didOpen: function () {
|
||||
Swal.showLoading()
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
method:'get',
|
||||
url: api_url + '/api/check/serah/gadai',
|
||||
@@ -585,14 +599,49 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getPembayaranTerakhir(tarikhLelong)
|
||||
{
|
||||
if (!tarikhLelong || tarikhLelong === '') {
|
||||
return { tarikh: '', blocked: false };
|
||||
}
|
||||
|
||||
let lelongDate;
|
||||
if (tarikhLelong.includes('-')) {
|
||||
const parts = tarikhLelong.split('-');
|
||||
if (parts[0].length === 4) {
|
||||
lelongDate = new Date(tarikhLelong);
|
||||
} else {
|
||||
lelongDate = new Date(parts[2], parts[1] - 1, parts[0]);
|
||||
}
|
||||
}
|
||||
|
||||
let pembayaranTerakhir = new Date(lelongDate);
|
||||
pembayaranTerakhir.setDate(pembayaranTerakhir.getDate() - 3);
|
||||
|
||||
let today = new Date();
|
||||
today.setHours(0, 0, 0, 0);
|
||||
pembayaranTerakhir.setHours(0, 0, 0, 0);
|
||||
|
||||
let isBlocked = today > pembayaranTerakhir;
|
||||
|
||||
let day = String(pembayaranTerakhir.getDate()).padStart(2, '0');
|
||||
let month = String(pembayaranTerakhir.getMonth() + 1).padStart(2, '0');
|
||||
let year = pembayaranTerakhir.getFullYear();
|
||||
|
||||
return {
|
||||
tarikh: `${year}-${month}-${day}`,
|
||||
blocked: isBlocked
|
||||
};
|
||||
}
|
||||
|
||||
function gadaiTable(data,jenistebus){
|
||||
|
||||
var counter = 1;
|
||||
tablegadai.clear().draw();
|
||||
tabledahtebus.clear().draw();
|
||||
tablelelong.clear().draw();
|
||||
xtawarruq.clear().draw();
|
||||
$.each(data,function(index,gadai_detail){
|
||||
var counter = 1;
|
||||
tablegadai.clear().draw();
|
||||
tabledahtebus.clear().draw();
|
||||
tablelelong.clear().draw();
|
||||
xtawarruq.clear().draw();
|
||||
$.each(data,function(index,gadai_detail){
|
||||
let jeniskeuntungan = (gadai_detail['tagbaru'] == 1) ? 'onepercent' : 'asal';
|
||||
$.ajax({
|
||||
method:'get',
|
||||
@@ -616,15 +665,7 @@ $.each(data,function(index,gadai_detail){
|
||||
var taglel = '';
|
||||
if(gadai_detail['taglel'] == 1){
|
||||
if(tagarrahnbid == 1){
|
||||
$.ajax({
|
||||
method:"GET",
|
||||
async:false,
|
||||
url:api_arrahnbid + 'portalApi?norujukan=' + gadai_detail['norujukan'],
|
||||
|
||||
success: function(data){
|
||||
taglel = data.lelong.t_lelong;
|
||||
}
|
||||
});
|
||||
taglel = gadai_detail['t_lelong'];
|
||||
} else {
|
||||
$.ajax({
|
||||
method:"GET",
|
||||
@@ -647,7 +688,18 @@ $.each(data,function(index,gadai_detail){
|
||||
if(gadai_detail["percentpinj"] != 0)
|
||||
xtawarruq.row.add([
|
||||
'<input type="radio" value='+ gadai_detail["norujukan"] + ' name="belum"/>',
|
||||
'<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>',
|
||||
// '<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>',
|
||||
(function() {
|
||||
let bayaranInfo = getPembayaranTerakhir(taglel);
|
||||
let blockedAttr = bayaranInfo.blocked ? 'data-blocked="true"' : '';
|
||||
return '<a href="#" onclick="checkserah(this)" ' +
|
||||
'data-pinjaman='+ gadai_detail['pinjaman'] +' ' +
|
||||
'data-hargajualan='+ gadai_detail['hargajualan'] +' ' +
|
||||
'data-norujukan='+ gadai_detail['norujukan'] +' ' +
|
||||
'data-url=' + urlroute + ' ' +
|
||||
blockedAttr + '>' +
|
||||
gadai_detail['norujukan'] + '</a>';
|
||||
})(),
|
||||
gadai_detail['t_gadai'],
|
||||
tarikh_matang,
|
||||
'RM '+ formatter.format(gadai_detail['bakihargajualan']),
|
||||
@@ -656,20 +708,23 @@ $.each(data,function(index,gadai_detail){
|
||||
gadai_detail['tempoh'],
|
||||
'RM '+ upahsemasa,
|
||||
'<div style="white-space: nowrap; color:red; font-weight: bolder">' + taglel + '</div>',
|
||||
(function() {
|
||||
let bayaranInfo = getPembayaranTerakhir(taglel);
|
||||
if (!bayaranInfo.tarikh) {
|
||||
return '';
|
||||
}
|
||||
let color = bayaranInfo.blocked ? 'red' : 'green';
|
||||
return '<div style="white-space: nowrap; color: ' + color + '; font-weight: bold;">' +
|
||||
bayaranInfo.tarikh + '</div>';
|
||||
})()
|
||||
]).draw();
|
||||
}else{
|
||||
var taglel = '';
|
||||
if(gadai_detail['taglel'] == 1){
|
||||
if(tagarrahnbid == 1){
|
||||
$.ajax({
|
||||
method:"GET",
|
||||
async:false,
|
||||
url:api_arrahnbid + 'portalApi?norujukan=' + gadai_detail['norujukan'],
|
||||
|
||||
success: function(data){
|
||||
taglel = data.lelong.t_lelong;
|
||||
}
|
||||
});
|
||||
if(gadai_detail['t_lelong'] != null) {
|
||||
taglel = gadai_detail['t_lelong'];
|
||||
}
|
||||
} else {
|
||||
$.ajax({
|
||||
method:"GET",
|
||||
@@ -690,7 +745,18 @@ $.each(data,function(index,gadai_detail){
|
||||
// let radio_action = "onclick=checkCanChangeGadaianDetail(" + "'" + table_norujukan + "'" + ")";
|
||||
tablegadai.row.add([
|
||||
'<input type="radio" value='+ gadai_detail["norujukan"] + ' name="belum"/>',
|
||||
'<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>',
|
||||
// '<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>',
|
||||
(function() {
|
||||
let bayaranInfo = getPembayaranTerakhir(taglel);
|
||||
let blockedAttr = bayaranInfo.blocked ? 'data-blocked="true"' : '';
|
||||
return '<a href="#" onclick="checkserah(this)" ' +
|
||||
'data-pinjaman='+ gadai_detail['pinjaman'] +' ' +
|
||||
'data-hargajualan='+ gadai_detail['hargajualan'] +' ' +
|
||||
'data-norujukan='+ gadai_detail['norujukan'] +' ' +
|
||||
'data-url=' + urlroute + ' ' +
|
||||
blockedAttr + '>' +
|
||||
gadai_detail['norujukan'] + '</a>';
|
||||
})(),
|
||||
gadai_detail['t_gadai'],
|
||||
tarikh_matang,
|
||||
'RM '+ formatter.format(gadai_detail['bakihargajualan']),
|
||||
@@ -699,6 +765,15 @@ $.each(data,function(index,gadai_detail){
|
||||
gadai_detail['tempoh'],
|
||||
'RM '+ upahsemasa['pendapatan'],
|
||||
'<div style="white-space: nowrap; color:red; font-weight: bolder">' + taglel + '</div>',
|
||||
(function() {
|
||||
let bayaranInfo = getPembayaranTerakhir(taglel);
|
||||
if (!bayaranInfo.tarikh) {
|
||||
return '';
|
||||
}
|
||||
let color = bayaranInfo.blocked ? 'red' : 'green';
|
||||
return '<div style="white-space: nowrap; color: ' + color + '; font-weight: bold;">' +
|
||||
bayaranInfo.tarikh + '</div>';
|
||||
})()
|
||||
]).draw();
|
||||
}
|
||||
}else if(jenistebus == "sudah_tebus"){
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
<link rel="stylesheet" href="{{ asset('vendor/datepicker/css/bootstrap-datepicker.min.css') }}"/>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<script src="{{ asset('js/jquery.min.js') }}"></script>
|
||||
<script src="{{ asset('js/popper.min.js') }}"></script>
|
||||
<script src="{{ asset('vendor/bootstrap/js/bootstrap.min.js') }}"></script>
|
||||
<script src="{{ asset('js/select2.min.js') }}"></script>
|
||||
<script src="{{ asset('js/apexcharts.js') }}"></script>
|
||||
<script src="{{ asset('js/numeral.min.js') }}"></script>
|
||||
<script src="{{ asset('js/sweetalert.min.js') }}"></script>
|
||||
<script src="{{ asset('js/popper.min.js') }}"></script>
|
||||
<script src="{{ asset('vendor/DataTables/datatables.min.js') }}"></script>
|
||||
<script src="{{ asset('vendor/datepicker/js/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script src="{{ asset('js/typehead.jquery.js') }}"></script>
|
||||
|
||||
@@ -601,9 +601,26 @@ function ubahwakil(e)
|
||||
'hargajual' : hargajual
|
||||
},
|
||||
success:function(data){
|
||||
let urlroute = '{{ route("resit.tuntutbaki", ":id") }}';
|
||||
urlroute = urlroute.replace(':id', norujukan);
|
||||
Swal.fire(
|
||||
|
||||
if(data == 'kemaskini'){
|
||||
Swal.fire(
|
||||
'Amaran!',
|
||||
'Sila kemaskini aliran tunai dahulu!',
|
||||
'error'
|
||||
)
|
||||
return false;
|
||||
}
|
||||
else if(data == 'Baki tidak mencukupi'){
|
||||
Swal.fire(
|
||||
'Amaran!',
|
||||
'Baki tunai tidak mencukupi. Sila tambah baki tunai dahulu!',
|
||||
'error'
|
||||
)
|
||||
return false;
|
||||
}else if(data == 'Berjaya'){
|
||||
let urlroute = '{{ route("resit.tuntutbaki", ":id") }}';
|
||||
urlroute = urlroute.replace(':id', norujukan);
|
||||
Swal.fire(
|
||||
'Berjaya!',
|
||||
'Tuntut Baki Berjaya',
|
||||
'success'
|
||||
@@ -611,6 +628,15 @@ function ubahwakil(e)
|
||||
window.open(urlroute, '_blank');
|
||||
window.location.replace("{{ route('customer_info') }}");
|
||||
})
|
||||
}else{
|
||||
Swal.fire(
|
||||
'Amaran!',
|
||||
'Terdapat ralat semasa proses. Sila cuba lagi!',
|
||||
'error'
|
||||
)
|
||||
return false;
|
||||
}
|
||||
|
||||
},error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
|
||||
@@ -0,0 +1,199 @@
|
||||
<div class="modal fade" id="denominasipampasan" tabindex="-1" role="dialog"
|
||||
aria-labelledby="denominasipampasanModalCenterTitle" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
|
||||
<ul class="nav nav-pills">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" data-toggle="pill" href="#home" role="tab"
|
||||
aria-controls="pills-flamingo" aria-selected="true">Keping</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<label class="mt-2 ml-3">Amaun Kiraan:</label>
|
||||
<input type="text" class="form-control col-3 ml-3" id="amaunkiraan" placeholder="0.00" readonly>
|
||||
|
||||
<label class="mt-2 ml-3">Jumlah Panjar:</label>
|
||||
<input type="text" class="form-control col-3 ml-2 bg-light font-weight-bold" id="jumlahPanjar"
|
||||
value="{{ number_format($jumlahPanjar, 2) }}" readonly>
|
||||
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="formPampasan" method="POST" onsubmit="return terimadeno(event)" action="{{ route('pampasan.terima') }}">
|
||||
@csrf
|
||||
<input type="hidden" id="norujukan" name="norujukan" value="{{ $gadai_info['norujukan'] }}">
|
||||
<input type="hidden" id="baucerno" name="baucerno" value="{{ $baucerno }}">
|
||||
<input type="hidden" name="jumlahpampasan" value="{{ $jumlah_pampasan }}">
|
||||
<input type="hidden" name="jumlahPanjar" value="{{ $jumlahPanjar }}">
|
||||
<input type="hidden" name="teller" value="{{ auth()->user()->name }}">
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade show active" id="home" role="tabpanel"
|
||||
aria-labelledby="flamingo-tab">
|
||||
|
||||
<table class="table text-center">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th name="denominasi" class="denominasi">Peti Besi</th>
|
||||
<th>Ambilan</th>
|
||||
<th>Jumlah (RM)</th>
|
||||
<th></th>
|
||||
<th name="denominasi" class="denominasi">Peti Besi</th>
|
||||
<th>Ambilan</th>
|
||||
<th>Jumlah (RM)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RM0.01</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtsen1'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilansen1]" class="form-control kosong" id="sen1"
|
||||
data-amaun="{{ $denominasi['txtsen1'] }}" onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalsen1]" id="totalsen1" class="form-control kosong"
|
||||
value="0.00" readonly /> </td>
|
||||
<td>RM1</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtring1'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilanring1]" class="form-control kosong" id="ringgit1"
|
||||
data-amaun="{{ $denominasi['txtring1'] }}" onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalring1]" id="totalring1" class="form-control kosong"
|
||||
value="0.00" readonly /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RM0.05</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtsen5'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilansen5]" class="form-control kosong" id="sen5"
|
||||
data-amaun="{{ $denominasi['txtsen5'] }}" onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalsen5]" id="totalsen5" class="form-control kosong"
|
||||
value="0.00" readonly /> </td>
|
||||
<td>RM5</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtring5'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilanring5]" class="form-control kosong" id="ringgit5"
|
||||
data-amaun="{{ $denominasi['txtring5'] }}" onkeyup="kiraanpanjar(this)" />
|
||||
</td>
|
||||
<td><input type="text" name="denominasi[totalring5]" id="totalring5"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RM0.10</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtsen10'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilansen10]" class="form-control kosong"
|
||||
id="sen10" data-amaun="{{ $denominasi['txtsen10'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalsen10]" id="totalsen10"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
<td>RM10</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtring10'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilanring10]" class="form-control kosong"
|
||||
id="ringgit10" data-amaun="{{ $denominasi['txtring10'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalring10]" id="totalring10"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RM0.20</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtsen20'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilansen20]" class="form-control kosong"
|
||||
id="sen20" data-amaun="{{ $denominasi['txtsen20'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalsen20]" id="totalsen20"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
<td> RM20</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtring20'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilanring20]" class="form-control kosong"
|
||||
id="ringgit20" data-amaun="{{ $denominasi['txtring20'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalring20]" id="totalring20"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RM0.50</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtsen50'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilansen50]" class="form-control kosong"
|
||||
id="sen50" data-amaun="{{ $denominasi['txtsen50'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalsen50]" id="totalsen50"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
<td>RM50</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtring50'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilanring50]" class="form-control kosong"
|
||||
id="ringgit50" data-amaun="{{ $denominasi['txtring50'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalring50]" id="totalring50"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>RM100</td>
|
||||
<td name="denominasi" class="denominasi"><input type="text" class="form-control"
|
||||
value="{{ $denominasi['txtring100'] }}" readonly /></td>
|
||||
<td><input type="text" name="denominasi[ambilanring100]" class="form-control kosong"
|
||||
id="ringgit100" data-amaun="{{ $denominasi['txtring100'] }}"
|
||||
onkeyup="kiraanpanjar(this)" /> </td>
|
||||
<td><input type="text" name="denominasi[totalring100]" id="totalring100"
|
||||
class="form-control kosong" value="0.00" readonly /> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" id="jenisjenis" />
|
||||
<input type="hidden" id="kodcawangan" />
|
||||
<input type="hidden" id="tellerla" />
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger btn-lg" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-success btn-lg">Terima</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function terimadeno(e) {
|
||||
e.preventDefault();
|
||||
|
||||
let amaunKiraan = parseFloat($('#amaunkiraan').val()) || 0;
|
||||
let jumlahPampasan = parseFloat($('input[name="jumlahpampasan"]').val()) || 0;
|
||||
let jumlahPanjar = parseFloat($('input[name="jumlahPanjar"]').val()) || 0;
|
||||
|
||||
// Validation
|
||||
if (amaunKiraan !== jumlahPanjar) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Jumlah Tidak Sama',
|
||||
text: 'Amaun kiraan mesti sama dengan Jumlah Panjar.'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berjaya',
|
||||
text: 'Pampasan berjaya!',
|
||||
showConfirmButton: true
|
||||
}).then(() => {
|
||||
$('#formPampasan')[0].submit();
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
@@ -63,7 +63,7 @@
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">Berat</div>
|
||||
<div class="col-md-4">Berat Bersih</div>
|
||||
<div class="col-md-8"><input type="text" class="form-control" name="berat_edit" id="berat_edit" onkeyup="calculationharga(this)"/></div>
|
||||
<div class="col-md-4">Harga</div>
|
||||
<div class="col-md-8"><input type="text" name="harga_edit" id="harga_edit" class="form-control" readonly/></div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- Modal Keraian -->
|
||||
<!-- Modal Keraian -->
|
||||
<div class="modal fade" id="keraianModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
@@ -570,6 +570,26 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Modal Surat Agreement -->
|
||||
<div class="modal fade" id="suratModal" tabindex="-1" role="dialog" aria-labelledby="suratModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="suratModalLabel">Surat Agreement</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="surat-content" style="font-family: 'Times New Roman', Times, serif;">
|
||||
<!-- Surat content will be injected here -->
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="button" class="btn btn-primary" id="btnPrintSurat">Cetak & Teruskan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
@extends('layouts.app_operasi')
|
||||
@section('content')
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ url('/') }}">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ url('operasi/parameter') }}">Parameter</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ url('operasi/marginmutu') }}">Margin Mutu Emas</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Edit Margin Mutu</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body">
|
||||
<h4 class="text-center mb-4">Edit Margin Mutu Emas</h4>
|
||||
|
||||
<form id="editMarginForm">
|
||||
@csrf
|
||||
<input type="hidden" id="recno" name="recno">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="karat">Karat</label>
|
||||
<input type="text" class="form-control" id="karat" name="karat" readonly>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="keterangan">Keterangan</label>
|
||||
<input type="text" class="form-control" id="keterangan" name="keterangan" readonly>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="teller">Teller (%)</label>
|
||||
<input type="number" step="0.01" class="form-control" id="teller" name="teller" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="pc">PC (%)</label>
|
||||
<input type="number" step="0.01" class="form-control" id="pc" name="pc" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="operasi">Operasi (%)</label>
|
||||
<input readonly type="number" step="0.01" class="form-control" id="operasi" name="operasi" required>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<button type="submit" class="btn btn-primary">Update</button>
|
||||
<a href="{{ route('operasi.marginmutu') }}" class="btn btn-secondary">Cancel</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Get data from URL parameters
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
$('#recno').val(urlParams.get('recno'));
|
||||
$('#karat').val(urlParams.get('karat'));
|
||||
$('#keterangan').val(urlParams.get('keterangan'));
|
||||
$('#teller').val(urlParams.get('teller'));
|
||||
$('#pc').val(urlParams.get('pc'));
|
||||
$('#operasi').val(urlParams.get('operasi'));
|
||||
|
||||
var username = '{{ Auth::user()->name }}';
|
||||
|
||||
$('#editMarginForm').on('submit', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const formData = {
|
||||
recno: $('#recno').val(),
|
||||
karat: $('#karat').val(),
|
||||
keterangan: $('#keterangan').val(),
|
||||
teller: $('#teller').val(),
|
||||
pc: $('#pc').val(),
|
||||
operasi: $('#operasi').val(),
|
||||
_token: $('input[name="_token"]').val(),
|
||||
username : username
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: '{{ config("api.url") }}/api/maxmutuemas/update',
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
success: function(response) {
|
||||
if(response.status === 'success') {
|
||||
Swal.fire({
|
||||
title: 'Berjaya!',
|
||||
text: 'Data berhasil diupdate!',
|
||||
icon: 'success',
|
||||
confirmButtonText: 'OK'
|
||||
}).then((result) => {
|
||||
window.location.href = '{{ route("operasi.marginmutu") }}';
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: 'Ralat!',
|
||||
text: response.message,
|
||||
icon: 'error',
|
||||
confirmButtonText: 'OK'
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(xhr) {
|
||||
let errorMessage = 'Error updating data';
|
||||
|
||||
try {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
|
||||
// If validation errors exist, show them
|
||||
if (response.errors) {
|
||||
let errorMessages = [];
|
||||
Object.keys(response.errors).forEach(function(key) {
|
||||
response.errors[key].forEach(function(error) {
|
||||
errorMessages.push(error);
|
||||
});
|
||||
});
|
||||
errorMessage = errorMessages.join('\n');
|
||||
} else if (response.message) {
|
||||
errorMessage = response.message;
|
||||
}
|
||||
} catch (e) {
|
||||
// If JSON parsing fails, use the raw responseText
|
||||
errorMessage = xhr.responseText || 'Unknown error occurred';
|
||||
}
|
||||
|
||||
Swal.fire({
|
||||
title: 'Ralat!',
|
||||
text: errorMessage,
|
||||
icon: 'error',
|
||||
confirmButtonText: 'OK'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('input[type="number"]').on('keydown', function(e) {
|
||||
if (['e', 'E', '+', '-'].includes(e.key)) e.preventDefault();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -2,27 +2,97 @@
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="modal fade" id="kelulusanmodal">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h4 class="text-center">Maklumat Lanjut</h4>
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
</div>
|
||||
<!-- Modal body -->
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="row col-12 text-center">
|
||||
<div class="row col-7">
|
||||
<label>Nama : </label>
|
||||
<span id="namalanjut"> </span>
|
||||
</div>
|
||||
<div class="modal fade" id="kelulusan_pampasan_modal">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h4 class="text-center">Maklumat Lanjut</h4>
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
</div>
|
||||
<!-- Modal body -->
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="row col-5">
|
||||
<label>Kad Pengenalan : </label>
|
||||
<span id="nokplanjut"> </span>
|
||||
<div class="row col-12 text-center">
|
||||
<div class="row col-7">
|
||||
<label>Nombor Rujukan : </label>
|
||||
<span id="norujukan_pampasan"> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row col-12 text-center">
|
||||
<div class="row col-7">
|
||||
<label>Nama : </label>
|
||||
<span id="namalanjut_pampasan"> </span>
|
||||
</div>
|
||||
|
||||
<div class="row col-5">
|
||||
<label>Kad Pengenalan : </label>
|
||||
<span id="nokplanjut_pampasan"> </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col-12">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="bg-secondary text-white" scope="row" style="width: 30%;">Nilai Marhun</th>
|
||||
<td id="nilaiMarhun">text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="bg-secondary text-white" scope="row" style="width: 30%;">Baki Pembiayaan</th>
|
||||
<td id="pembiayaan"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="bg-secondary text-white" scope="row" style="width: 30%;">Jumlah Pampasan</th>
|
||||
<td id="jumlahPampasan"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="bg-secondary text-white" scope="row" style="width: 30%;">Keuntungan</th>
|
||||
<td id="keuntungan"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="bg-secondary text-white" scope="row" style="width: 30%;">Ansuran Pembiayaan</th>
|
||||
<td id="bayaranAnsuran"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Modal footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="kelulusanmodal">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h4 class="text-center">Maklumat Lanjut</h4>
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
</div>
|
||||
<!-- Modal body -->
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="row col-12 text-center">
|
||||
<div class="row col-7">
|
||||
<label>Nama : </label>
|
||||
<span id="namalanjut"> </span>
|
||||
</div>
|
||||
|
||||
<div class="row col-5">
|
||||
<label>Kad Pengenalan : </label>
|
||||
<span id="nokplanjut"> </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
@@ -71,404 +141,459 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Modal footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
<!-- Modal footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="container col-12">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ url('/') }}">Home</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Kelulusan</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="card-body text-center">
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-2 justify-content-start">
|
||||
</div>
|
||||
<div class="col-8 mt-3 justify-content-center">
|
||||
</div>
|
||||
<div class="col-2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='table mt-2 table-striped table-hover' id='table-kelulusan' style="width:100%;">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>No Rujukan</th>
|
||||
<th>Cawangan</th>
|
||||
<th>Teller</th>
|
||||
<th>Komen</th>
|
||||
<th>Status</th>
|
||||
<th>Nilai Pembiayaan</th>
|
||||
<th>Ansuran</th>
|
||||
<th>Nilai Marhun</th>
|
||||
<th>Berat</th>
|
||||
<th>Margin</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($arraykelulusan as $index=>$k)
|
||||
<tr>
|
||||
@php
|
||||
$targetModal = '#kelulusanmodal';
|
||||
$targetModal = strtolower($k['status']) == 'kelulusan pengeluaran pampasan' ? '#kelulusan_pampasan_modal' : $targetModal;
|
||||
|
||||
@endphp
|
||||
<td><a href="#" data-toggle="modal" data-target="{{$targetModal}}" data-kodcawangan="{{ $k['cawangankod'] }}" data-norujukan="{{ $k['norujukan'] }}">{{ $k['norujukan'] }} </a></td>
|
||||
<td>{{ $k['cawangan'] }}</td>
|
||||
<td>{{ $k['namateller'] }}</td>
|
||||
<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-taglulus="{{ isset($k['mohonid']) ? true : false }}" data-kodcaw="{{ $k['cawangankod'] }}" data-norujukan="{{ $k['norujukan'] }}" data-siri="{{ isset($k['siri']) ? $k['siri'] : $k['recno'] }}" data-status="{{ $k['status'] ?? '' }}"><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>
|
||||
</table>
|
||||
|
||||
<div class="row mt-4 d-flex justify-content-end">
|
||||
|
||||
<a href="{{ route ('operasi.rekodlepas') }}" class="btn btn-info mr-3">Rekod Lulus</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="container col-12">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ url('/') }}">Home</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Kelulusan</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="card-body text-center">
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-2 justify-content-start">
|
||||
</div>
|
||||
<div class="col-8 mt-3 justify-content-center">
|
||||
</div>
|
||||
<div class="col-2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='table mt-2 table-striped table-hover' id='table-kelulusan' style="width:100%;">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>No Rujukan</th>
|
||||
<th>Cawangan</th>
|
||||
<th>Teller</th>
|
||||
<th>Komen</th>
|
||||
<th>Status</th>
|
||||
<th>Nilai Pembiayaan</th>
|
||||
<th>Ansuran</th>
|
||||
<th>Nilai Marhun</th>
|
||||
<th>Berat</th>
|
||||
<th>Margin</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($arraykelulusan as $index=>$k)
|
||||
<tr>
|
||||
<td><a href="#" data-toggle="modal" data-target="#kelulusanmodal" data-kodcawangan="{{ $k['cawangankod'] }}" data-norujukan="{{ $k['norujukan'] }}">{{ $k['norujukan'] }} </a></td>
|
||||
<td>{{ $k['cawangan'] }}</td>
|
||||
<td>{{ $k['namateller'] }}</td>
|
||||
<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-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>
|
||||
</table>
|
||||
|
||||
<div class="row mt-4 d-flex justify-content-end">
|
||||
|
||||
<a href="{{ route ('operasi.rekodlepas') }}" class="btn btn-info mr-3">Rekod Lulus</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var tablekelulusan = $('#table-kelulusan').DataTable({
|
||||
"scrollX": true
|
||||
});
|
||||
|
||||
var tablekelulusan = $('#table-kelulusan').DataTable({
|
||||
"scrollX": true
|
||||
});
|
||||
let api = "{{ config('api.url') }}";
|
||||
|
||||
let api = "{{ config('api.url') }}";
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
minimumFractionDigits: 2
|
||||
});
|
||||
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
minimumFractionDigits: 2
|
||||
});
|
||||
var audio = new Audio("{{ asset('sound/3.wav') }}");
|
||||
|
||||
var audio = new Audio("{{ asset('sound/3.wav') }}");
|
||||
|
||||
if(tablekelulusan.data().any()){
|
||||
audio.play();
|
||||
audio.addEventListener('ended', function() {
|
||||
this.currentTime = 0;
|
||||
this.play();
|
||||
}, false);
|
||||
}else{
|
||||
audio.loop = false;
|
||||
audio.muted = true;
|
||||
}
|
||||
if (tablekelulusan.data().any()) {
|
||||
audio.play();
|
||||
audio.addEventListener('ended', function() {
|
||||
this.currentTime = 0;
|
||||
this.play();
|
||||
}, false);
|
||||
} else {
|
||||
audio.loop = false;
|
||||
audio.muted = true;
|
||||
}
|
||||
|
||||
|
||||
$('#kelulusanmodal').on('show.bs.modal', function(event) {
|
||||
let button = $(event.relatedTarget);
|
||||
let norujukan = $(button).data('norujukan');
|
||||
let kodcaw = $(button).data('kodcawangan');
|
||||
$('#kelulusanmodal').on('show.bs.modal', function(event) {
|
||||
let button = $(event.relatedTarget);
|
||||
let norujukan = $(button).data('norujukan');
|
||||
let kodcaw = $(button).data('kodcawangan');
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: api + '/api/gadai/norujukan/' + norujukan,
|
||||
dataType: 'json',
|
||||
success: function(datagadaiwithnorujukan) {
|
||||
|
||||
let nokp = datagadaiwithnorujukan[0][0].nokp;
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api + '/api/gadai/norujukan/' + norujukan,
|
||||
method: 'GET',
|
||||
url: api + '/api/customers/' + nokp,
|
||||
dataType: 'json',
|
||||
success:function(datagadaiwithnorujukan){
|
||||
success: function(datagadaiwithnokp) {
|
||||
|
||||
let nokp = datagadaiwithnorujukan[0][0].nokp;
|
||||
let nama = datagadaiwithnokp.nama;
|
||||
|
||||
$('#namalanjut').text(nama);
|
||||
$('#nokplanjut').text(nokp);
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api + '/api/customers/' + nokp,
|
||||
dataType: 'json',
|
||||
success:function(datagadaiwithnokp){
|
||||
method: 'GET',
|
||||
url: api + '/api/gadai/customers/' + nokp + '/outstandingsemasa/' + kodcaw,
|
||||
dataType: 'json',
|
||||
success: function(outstandingsemasa) {
|
||||
|
||||
let nama = datagadaiwithnokp.nama;
|
||||
$('#pinjterkumpul').text('RM' + formatter.format(outstandingsemasa));
|
||||
|
||||
$('#namalanjut').text(nama);
|
||||
$('#nokplanjut').text(nokp);
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api + '/api/gadai/customers/' + nokp + '/outstandingsemasa/' + kodcaw,
|
||||
dataType: 'json',
|
||||
success:function(outstandingsemasa){
|
||||
|
||||
$('#pinjterkumpul').text('RM' + formatter.format(outstandingsemasa));
|
||||
|
||||
},error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api + '/api/customers/' + nokp + '/gadai/belum_tebus',
|
||||
dataType: 'json',
|
||||
success:function(data){
|
||||
let bilanganaktif = 0;
|
||||
if(data == null)
|
||||
{
|
||||
bilanganaktif = 0;
|
||||
}else{
|
||||
bilanganaktif = data[0].length;
|
||||
}
|
||||
|
||||
$('#bilaktif').text(bilanganaktif);
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api + '/api/customers/' + nokp + '/gadai/lelong',
|
||||
dataType: 'json',
|
||||
success:function(data){
|
||||
|
||||
let bilanganlelong = 0;
|
||||
|
||||
if(data == null)
|
||||
{
|
||||
bilanganlelong = 0;
|
||||
}else{
|
||||
bilanganlelong = data.length;
|
||||
}
|
||||
|
||||
|
||||
$('#billelong').text(bilanganlelong);
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: api + '/api/customers/' + nokp + '/gadai/belum_tebus',
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
let bilanganaktif = 0;
|
||||
if (data == null) {
|
||||
bilanganaktif = 0;
|
||||
} else {
|
||||
bilanganaktif = data[0].length;
|
||||
}
|
||||
|
||||
$('#bilaktif').text(bilanganaktif);
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: api + '/api/customers/' + nokp + '/gadai/lelong',
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
|
||||
let bilanganlelong = 0;
|
||||
|
||||
if (data == null) {
|
||||
bilanganlelong = 0;
|
||||
} else {
|
||||
bilanganlelong = data.length;
|
||||
}
|
||||
|
||||
|
||||
$('#billelong').text(bilanganlelong);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
async function updatelulus(e)
|
||||
{
|
||||
|
||||
const { value: katalaluan } = await Swal.fire({
|
||||
title: 'Masukkan Katalaluan Semula',
|
||||
input: 'password',
|
||||
inputPlaceholder: 'Katalaluan',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton:true,
|
||||
cancelButtonText:'Batal',
|
||||
allowOutsideClick: true
|
||||
})
|
||||
async function updatelulus(e) {
|
||||
|
||||
let dataminta = '';
|
||||
const {
|
||||
value: katalaluan
|
||||
} = await Swal.fire({
|
||||
title: 'Masukkan Katalaluan Semula',
|
||||
input: 'password',
|
||||
inputPlaceholder: 'Katalaluan',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton: true,
|
||||
cancelButtonText: 'Batal',
|
||||
allowOutsideClick: true
|
||||
})
|
||||
|
||||
$.ajax({
|
||||
method:'get',
|
||||
url: "{{ route('operasi.getmintasemulakelulusan') }}",
|
||||
async:false,
|
||||
data:{ passsemula : katalaluan },
|
||||
success:function(data)
|
||||
{
|
||||
if(data == "False")
|
||||
{
|
||||
dataminta = data;
|
||||
}
|
||||
}
|
||||
});
|
||||
let dataminta = '';
|
||||
|
||||
if(dataminta == 'False')
|
||||
{
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Pengesahan Katalaluan Tidak Berjaya'
|
||||
})
|
||||
event.preventDefault();
|
||||
return false;
|
||||
$.ajax({
|
||||
method: 'get',
|
||||
url: "{{ route('operasi.getmintasemulakelulusan') }}",
|
||||
async: false,
|
||||
data: {
|
||||
passsemula: katalaluan
|
||||
},
|
||||
success: function(data) {
|
||||
if (data == "False") {
|
||||
dataminta = data;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// var { value: komenkelulusan } = await Swal.fire({
|
||||
// title: 'Masukkan Komen!',
|
||||
// input: 'radio',
|
||||
// customClass: {
|
||||
// input: 'custom-radio'
|
||||
// },
|
||||
// inputOptions: {
|
||||
// 'Pelanggan Baru': 'Pelanggan Baru',
|
||||
// 'Pelanggan Tetap': 'Pelanggan Tetap',
|
||||
// 'Rekod Gadaian Baik': 'Rekod Gadaian Baik',
|
||||
// 'Lain2': 'Lain-Lain'
|
||||
// },
|
||||
// confirmButtonText: 'Hantar',
|
||||
// showCancelButton:false,
|
||||
// allowOutsideClick: false
|
||||
// })
|
||||
|
||||
// if(komenkelulusan === 'Lain2')
|
||||
// {
|
||||
// var { value: komenkelulusan } = await Swal.fire({
|
||||
// title: 'Masukkan Komen!',
|
||||
// input: 'text',
|
||||
// inputPlaceholder: 'Komen',
|
||||
// confirmButtonText: 'Hantar',
|
||||
// showCancelButton:false,
|
||||
// allowOutsideClick: false
|
||||
// });
|
||||
// }
|
||||
|
||||
const { value: komenkelulusan } = await Swal.fire({
|
||||
title: 'Masukkan Komen!',
|
||||
input: 'text',
|
||||
inputPlaceholder: 'Komen',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton:false,
|
||||
allowOutsideClick: false
|
||||
})
|
||||
|
||||
let norujukan = $(e).data('norujukan');
|
||||
let cawangankod = $(e).data('kodcaw');
|
||||
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);
|
||||
|
||||
$.ajax({
|
||||
method:'put',
|
||||
url: "{{ route('operasi.updatekelulusan') }}",
|
||||
data: {
|
||||
"_token": "{{ csrf_token() }}",
|
||||
"taglulus" : taglulus,
|
||||
"norujukan" : norujukan,
|
||||
"kodcaw" : cawangankod,
|
||||
"komenkelulusan" : komenkelulusan,
|
||||
"siri" : siri,
|
||||
'namaoperasi' : namaoperasi,
|
||||
'teller' : teller
|
||||
},
|
||||
success:function(data){
|
||||
console.log(data);
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Pengesahan Berjaya'
|
||||
}).then(function(){
|
||||
location.reload();
|
||||
});
|
||||
|
||||
},error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
|
||||
if (dataminta == 'False') {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Pengesahan Katalaluan Tidak Berjaya'
|
||||
})
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
async function updatebatal(e)
|
||||
{
|
||||
const { value: katalaluan } = await Swal.fire({
|
||||
title: 'Masukkan Katalaluan Semula',
|
||||
input: 'password',
|
||||
inputPlaceholder: 'Katalaluan',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton:true,
|
||||
cancelButtonText:'Batal',
|
||||
allowOutsideClick: true
|
||||
})
|
||||
// var { value: komenkelulusan } = await Swal.fire({
|
||||
// title: 'Masukkan Komen!',
|
||||
// input: 'radio',
|
||||
// customClass: {
|
||||
// input: 'custom-radio'
|
||||
// },
|
||||
// inputOptions: {
|
||||
// 'Pelanggan Baru': 'Pelanggan Baru',
|
||||
// 'Pelanggan Tetap': 'Pelanggan Tetap',
|
||||
// 'Rekod Gadaian Baik': 'Rekod Gadaian Baik',
|
||||
// 'Lain2': 'Lain-Lain'
|
||||
// },
|
||||
// confirmButtonText: 'Hantar',
|
||||
// showCancelButton:false,
|
||||
// allowOutsideClick: false
|
||||
// })
|
||||
|
||||
let dataminta = '';
|
||||
// if(komenkelulusan === 'Lain2')
|
||||
// {
|
||||
// var { value: komenkelulusan } = await Swal.fire({
|
||||
// title: 'Masukkan Komen!',
|
||||
// input: 'text',
|
||||
// inputPlaceholder: 'Komen',
|
||||
// confirmButtonText: 'Hantar',
|
||||
// showCancelButton:false,
|
||||
// allowOutsideClick: false
|
||||
// });
|
||||
// }
|
||||
|
||||
$.ajax({
|
||||
method:'get',
|
||||
url: "{{ route('operasi.getmintasemulakelulusan') }}",
|
||||
async:false,
|
||||
data:{ passsemula : katalaluan },
|
||||
success:function(data)
|
||||
{
|
||||
if(data == "False")
|
||||
{
|
||||
dataminta = data;
|
||||
}
|
||||
}
|
||||
});
|
||||
const {
|
||||
value: komenkelulusan
|
||||
} = await Swal.fire({
|
||||
title: 'Masukkan Komen!',
|
||||
input: 'text',
|
||||
inputPlaceholder: 'Komen',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton: false,
|
||||
allowOutsideClick: false
|
||||
})
|
||||
|
||||
if(dataminta == 'False')
|
||||
{
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Pengesahan Katalaluan Tidak Berjaya'
|
||||
})
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
let norujukan = $(e).data('norujukan');
|
||||
let cawangankod = $(e).data('kodcaw');
|
||||
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');
|
||||
let status = $(e).data('status');
|
||||
|
||||
const { value: komenkelulusan } = await Swal.fire({
|
||||
title: 'Masukkan Komen',
|
||||
input: 'text',
|
||||
inputPlaceholder: 'Komen',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton:false,
|
||||
allowOutsideClick: false
|
||||
})
|
||||
teller = String(teller);
|
||||
|
||||
let norujukan = $(e).data('norujukan');
|
||||
let siri = $(e).data('siri');
|
||||
let cawangankod = $(e).data('kodcaw');
|
||||
let namaoperasi = "{{ Auth::user()->name }}";
|
||||
let teller = $(e).closest('tr').children('td:eq(2)').text();
|
||||
let requestData = {
|
||||
"_token": "{{ csrf_token() }}",
|
||||
"taglulus": taglulus,
|
||||
"norujukan": norujukan,
|
||||
"kodcaw": cawangankod,
|
||||
"komenkelulusan": komenkelulusan,
|
||||
"siri": siri,
|
||||
'namaoperasi': namaoperasi,
|
||||
'teller': teller
|
||||
};
|
||||
|
||||
teller = String(teller);
|
||||
|
||||
$.ajax({
|
||||
method:'put',
|
||||
url: "{{ route('operasi.updatekelulusan') }}",
|
||||
data: {
|
||||
"_token": "{{ csrf_token() }}",
|
||||
"norujukan" : norujukan,
|
||||
"siri" : siri,
|
||||
"kodcaw" : cawangankod,
|
||||
"komenkelulusan" : komenkelulusan,
|
||||
"pembatalan" : "batal",
|
||||
'namaoperasi' : namaoperasi,
|
||||
'teller' : teller
|
||||
},
|
||||
success:function(data){
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Pengesahan Berjaya'
|
||||
}).then(function(){
|
||||
location.reload();
|
||||
|
||||
});
|
||||
|
||||
},error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
if (status === 'Kelulusan Pengeluaran Pampasan') {
|
||||
requestData.actions = 'Pengesahan Pembayaran Pampasan';
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
method: 'put',
|
||||
url: "{{ route('operasi.updatekelulusan') }}",
|
||||
data: requestData,
|
||||
success: function(data) {
|
||||
console.log(data);
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Pengesahan Berjaya'
|
||||
}).then(function() {
|
||||
location.reload();
|
||||
});
|
||||
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
async function updatebatal(e) {
|
||||
const {
|
||||
value: katalaluan
|
||||
} = await Swal.fire({
|
||||
title: 'Masukkan Katalaluan Semula',
|
||||
input: 'password',
|
||||
inputPlaceholder: 'Katalaluan',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton: true,
|
||||
cancelButtonText: 'Batal',
|
||||
allowOutsideClick: true
|
||||
})
|
||||
|
||||
let dataminta = '';
|
||||
|
||||
$.ajax({
|
||||
method: 'get',
|
||||
url: "{{ route('operasi.getmintasemulakelulusan') }}",
|
||||
async: false,
|
||||
data: {
|
||||
passsemula: katalaluan
|
||||
},
|
||||
success: function(data) {
|
||||
if (data == "False") {
|
||||
dataminta = data;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (dataminta == 'False') {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Pengesahan Katalaluan Tidak Berjaya'
|
||||
})
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
const {
|
||||
value: komenkelulusan
|
||||
} = await Swal.fire({
|
||||
title: 'Masukkan Komen',
|
||||
input: 'text',
|
||||
inputPlaceholder: 'Komen',
|
||||
confirmButtonText: 'Hantar',
|
||||
showCancelButton: false,
|
||||
allowOutsideClick: false
|
||||
})
|
||||
|
||||
let norujukan = $(e).data('norujukan');
|
||||
let siri = $(e).data('siri');
|
||||
let cawangankod = $(e).data('kodcaw');
|
||||
let namaoperasi = "{{ Auth::user()->name }}";
|
||||
let teller = $(e).closest('tr').children('td:eq(2)').text();
|
||||
|
||||
teller = String(teller);
|
||||
|
||||
$.ajax({
|
||||
method: 'put',
|
||||
url: "{{ route('operasi.updatekelulusan') }}",
|
||||
data: {
|
||||
"_token": "{{ csrf_token() }}",
|
||||
"norujukan": norujukan,
|
||||
"siri": siri,
|
||||
"kodcaw": cawangankod,
|
||||
"komenkelulusan": komenkelulusan,
|
||||
"pembatalan": "batal",
|
||||
'namaoperasi': namaoperasi,
|
||||
'teller': teller
|
||||
},
|
||||
success: function(data) {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Pengesahan Berjaya'
|
||||
}).then(function() {
|
||||
location.reload();
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
var err = eval("(" + xhr.responseText + ")");
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#kelulusan_pampasan_modal').on('show.bs.modal', async function(event) {
|
||||
const triggerModalButton = event.relatedTarget;
|
||||
const norujukan = triggerModalButton.dataset.norujukan;
|
||||
const kodcaw = triggerModalButton.dataset.kodcawangan;
|
||||
|
||||
const pampasan = await fetch(api + `/api/pampasan?norujukan=${norujukan}&kodcaw=${kodcaw}`)
|
||||
.then(response => response.json())
|
||||
.then(x => x.data.pop());
|
||||
|
||||
const barangkes = await fetch(api + `/api/palsu/laporan?kodcaw=${kodcaw}`)
|
||||
.then(response => response.json())
|
||||
.then(x => x.filter(x => x.norujukan == norujukan))
|
||||
.then(x => x.pop());
|
||||
|
||||
const tebus = await fetch(api + `/api/tebus/norujukan/${kodcaw}/${norujukan}`)
|
||||
.then(response => response.json())
|
||||
.then(x => x[0]);
|
||||
|
||||
const customer = await fetch(api + `/api/customers/${barangkes.nokp}`)
|
||||
.then(response => response.json());
|
||||
|
||||
const formatMYR = (value) => {
|
||||
return new Intl.NumberFormat('ms-MY', {
|
||||
style: 'currency',
|
||||
currency: 'MYR'
|
||||
}).format(value);
|
||||
};
|
||||
|
||||
document.getElementById('norujukan_pampasan').textContent = norujukan;
|
||||
document.getElementById('namalanjut_pampasan').textContent = customer.nama;
|
||||
document.getElementById('nokplanjut_pampasan').textContent = customer.kpbaru;
|
||||
document.getElementById('nilaiMarhun').textContent = formatMYR(barangkes.nilaimarhun);
|
||||
document.getElementById('pembiayaan').textContent = formatMYR(barangkes.pembiayaan);
|
||||
document.getElementById('jumlahPampasan').innerHTML = '<strong>' + formatMYR(barangkes.nilaimarhun - barangkes.pembiayaan - barangkes.untung) + '</strong>';
|
||||
document.getElementById('keuntungan').textContent = formatMYR(barangkes.untung);
|
||||
document.getElementById('bayaranAnsuran').textContent = formatMYR(tebus.pinjaman - (tebus.bakipjm - tebus.bakiupah));
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@endsection
|
||||
@@ -0,0 +1,64 @@
|
||||
@extends('layouts.app_operasi')
|
||||
@section('content')
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pb-3">
|
||||
<li class="breadcrumb-item"><a href="{{ url('/') }}">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ url('operasi/parameter') }}">Parameter</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Margin Mutu Emas</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body text-center">
|
||||
|
||||
<div class="mt-3">
|
||||
|
||||
<table class='table table-striped table-hover' id='table-marginmutu' style="width:100%;">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>Karat</th>
|
||||
<th>Keterangan</th>
|
||||
<th>Teller (%)</th>
|
||||
<th>PC (%)</th>
|
||||
<th>Operasi (%)</th>
|
||||
<th>Tarikh Update</th>
|
||||
<th>Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($maxmutuemas as $index=>$mme)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $mme['karat'] }}</td>
|
||||
<td>{{ $mme['keterangan'] }}</td>
|
||||
<td>{{ $mme['teller'] }}%</td>
|
||||
<td>{{ $mme['pc'] }}%</td>
|
||||
<td>{{ $mme['operasi'] }}%</td>
|
||||
<td>{{ \Carbon\Carbon::parse($mme['tarikhupdate'])->format('d/m/Y') }}</td>
|
||||
<td>
|
||||
<a href="{{ route('operasi.marginmutu.edit') }}?recno={{ $mme['recno'] }}&karat={{ $mme['karat'] }}&keterangan={{ $mme['keterangan'] }}&teller={{ $mme['teller'] }}&pc={{ $mme['pc'] }}&operasi={{ $mme['operasi'] }}"
|
||||
class="btn btn-sm btn-warning">Edit</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var table_marginmutu = $('#table-marginmutu').DataTable({
|
||||
"pageLength": 25,
|
||||
"order": [[ 0, "asc" ]]
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -16,7 +16,7 @@
|
||||
<div class="card-body text-center">
|
||||
<a href="{{ route('operasi.hargaemas') }}" class="btn btn-info btn-lg">Harga Emas</a>
|
||||
<a href="{{ route('operasi.margin') }}" class="btn btn-info btn-lg">Margin Pembiayaan</a>
|
||||
<a href="#" class="btn btn-info btn-lg">Contoh 2</a>
|
||||
<a href="{{ route('operasi.marginmutu') }}" class="btn btn-info btn-lg">Margin Mutu Emas</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -131,6 +131,20 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($pampasan)
|
||||
<div class="bg-white p-3 my-3">
|
||||
<div class="border text-center p-2 mx-auto" style="border: 2px solid red !important; width: 209px;">
|
||||
<span class="text-danger font-weight-bold">PAMPASAN</span>
|
||||
</div>
|
||||
<div class="text-center mt-2">
|
||||
<a href="{{ route('pampasan.surat', $gadai['norujukan']) }}" target="_blank"
|
||||
class="btn surat-perjanjian-btn" data-norujukan="{{ $gadai['norujukan'] }}" title="Lihat Surat" style="background-color: red; color: white; border: 2px solid red;">
|
||||
<i class="fas fa-file-alt fa-lg"></i> Cetak Surat Perjanjian
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card" id="infomarhun">
|
||||
<div class="card-body">
|
||||
<table id="tablemarhun" class="table table-striped table-hover table-bordered text-center">
|
||||
@@ -1082,6 +1096,28 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Modal Surat Agreement -->
|
||||
<div class="modal fade" id="suratModal" tabindex="-1" role="dialog" aria-labelledby="suratModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="suratModalLabel">Surat Agreement</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="surat-content" style="font-family: 'Times New Roman', Times, serif;">
|
||||
<!-- Surat content will be injected here -->
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
||||
<button type="button" class="btn btn-primary" id="btnPrintSurat">Cetak & Teruskan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
let elem_jenisAT = $('#jenisAT').remove();
|
||||
@@ -1152,6 +1188,7 @@
|
||||
var percent_mora = 0;
|
||||
var pinjaman_teller = 0;
|
||||
var pinjaman_pelulus = 0;
|
||||
var pampasan = @json($pampasan);
|
||||
|
||||
|
||||
|
||||
@@ -1365,6 +1402,10 @@
|
||||
}
|
||||
});
|
||||
|
||||
if(pampasan != null){
|
||||
$('#jumlahupah').val(pampasan.untung);
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url: api + '/api/upahrebettawarruq/' + kodcaw + '/' + norujukan,
|
||||
@@ -1395,7 +1436,18 @@
|
||||
dataType: 'json',
|
||||
async:false,
|
||||
success:function(harga_tebus){
|
||||
$('#perludibayar').val(formatter.format(harga_tebus));
|
||||
if(pampasan != null){
|
||||
let pembiayaan = safeMoneyParse(pampasan.pembiayaan);
|
||||
let untung = safeMoneyParse(pampasan.untung);
|
||||
|
||||
$('#perludibayar').val(formatter.format(pembiayaan + untung));
|
||||
|
||||
$('#duitPelanggan').val(formatter.format(pembiayaan + untung));
|
||||
|
||||
$('#duitPelanggan').prop('readonly', true);
|
||||
}else {
|
||||
$('#perludibayar').val(formatter.format(harga_tebus));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1753,8 +1805,129 @@
|
||||
|
||||
let teller = "{{ Auth::user()->name }}";
|
||||
|
||||
function bayaransemua()
|
||||
async function getPampasanByNorujukan(norujukan) {
|
||||
|
||||
const params = new URLSearchParams({
|
||||
kodcaw: kodcaw,
|
||||
status: 'all'
|
||||
});
|
||||
|
||||
try {
|
||||
const pampasanListResponse = await fetch(`{{ config('api.url') }}/api/palsu/laporan?${params}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
if (!pampasanListResponse.ok) {
|
||||
throw new Error(`HTTP error! status: ${pampasanListResponse.status}`);
|
||||
}
|
||||
|
||||
const pampasanListData = await pampasanListResponse.json();
|
||||
const pampasanList = pampasanListData.filter(pampasan => pampasan.norujukan === norujukan);
|
||||
const pampasan = pampasanList.length === 0 ? null : pampasanList.pop();
|
||||
|
||||
return pampasan;
|
||||
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch pampasan data:', error);
|
||||
throw new Error("Something wrong with API");
|
||||
}
|
||||
}
|
||||
|
||||
// Helper function for safe money parsing
|
||||
const safeMoneyParse = (value) => {
|
||||
const parsed = parseFloat(value);
|
||||
return isNaN(parsed) ? 0 : Math.round(parsed * 100) / 100; // Round to 2 decimal places
|
||||
};
|
||||
|
||||
async function checkWangPetiBesiEnoughForTuntutanPampasan(pampasan) {
|
||||
const currentDate = new Date().toISOString().split('T')[0];
|
||||
let wangpetibesi = await fetch(api + '/api/TunaiDiTangan/' + kodcaw + '?tarikh=' + currentDate).then(response => response.json());
|
||||
|
||||
const nilaimarhun = safeMoneyParse(pampasan.nilaimarhun);
|
||||
const pembiayaan = safeMoneyParse(pampasan.pembiayaan);
|
||||
const untung = safeMoneyParse(pampasan.untung);
|
||||
|
||||
const jumlahpampasan = safeMoneyParse(nilaimarhun - pembiayaan - untung);
|
||||
|
||||
const balancewangpetibesiafterdeduct = wangpetibesi - jumlahpampasan < 0 ? false : true;
|
||||
|
||||
if(! balancewangpetibesiafterdeduct){
|
||||
Swal.fire({
|
||||
title: 'Peringatan',
|
||||
html: `
|
||||
<p>Wang peti besi tidak mencukupi untuk proses tuntutan pampasan</p>
|
||||
<br>
|
||||
<div style="text-align: left; margin: 0 auto; display: inline-block;">
|
||||
<strong>Wang Peti Besi:</strong> RM ${formatter.format(wangpetibesi)}<br><br>
|
||||
<strong>Jumlah Diperlukan:</strong> RM ${formatter.format(jumlahpampasan)}<br><br>
|
||||
<strong>Kekurangan:</strong> <span style="color: red;">RM ${formatter.format(jumlahpampasan - wangpetibesi)}</span>
|
||||
</div>
|
||||
`,
|
||||
icon: 'warning'
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
async function bayaransemua()
|
||||
{
|
||||
// Instantiate pampasan using the JavaScript function
|
||||
const pampasan = await getPampasanByNorujukan(norujukan);
|
||||
|
||||
if(pampasan != null){
|
||||
if(pampasan && !pampasan.hasOwnProperty('agreement_printed_at')){
|
||||
Swal.fire({
|
||||
title: 'Peringatan',
|
||||
text: 'Sila print surat perjanjian',
|
||||
icon: 'warning'
|
||||
});
|
||||
return; // Exit early if agreement not printed
|
||||
}
|
||||
|
||||
const isEnough = await checkWangPetiBesiEnoughForTuntutanPampasan(pampasan);
|
||||
|
||||
if(! isEnough){
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(pampasan != null){
|
||||
const result = await Swal.fire({
|
||||
title: 'Pengesahan Proses Tuntutan Pampasan',
|
||||
html: `
|
||||
<div style="text-align: left; margin: 20px 0; min-width: 500px;">
|
||||
<p><strong>Sila pastikan wang untuk proses tuntutan pampasan adalah mencukupi.</strong></p>
|
||||
<br>
|
||||
<p style="color: #d33; font-weight: bold;">⚠️ Proses tidak dapat diundur</p>
|
||||
<p style="color: #d33;">⚠️ Short wang teller atau peti besi akan ditanggung oleh anda</p>
|
||||
<br>
|
||||
<p>Adakah anda ingin meneruskan proses ini?</p>
|
||||
</div>
|
||||
`,
|
||||
icon: 'question',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Ya, Teruskan',
|
||||
cancelButtonText: 'Batal',
|
||||
allowOutsideClick: false,
|
||||
allowEscapeKey: false,
|
||||
width: '600px'
|
||||
});
|
||||
|
||||
if (!result.isConfirmed) {
|
||||
return; // Exit if user cancels
|
||||
}
|
||||
}
|
||||
|
||||
$("#terima_transaksi").prop('disabled', true);
|
||||
// Swal.fire({
|
||||
// title: 'Memuatkan...',
|
||||
@@ -3204,7 +3377,7 @@
|
||||
///////////
|
||||
}
|
||||
|
||||
//Bayaran Semua function end file
|
||||
|
||||
}
|
||||
|
||||
function gadaiautotawarruq()
|
||||
@@ -4466,7 +4639,6 @@ return true;
|
||||
};
|
||||
}(jQuery));
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,261 @@
|
||||
<style>
|
||||
#header {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#header td, #customers th {
|
||||
|
||||
padding:4px;
|
||||
font-size:10px;
|
||||
}
|
||||
|
||||
#header tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#header tr:hover {background-color: #ddd;}
|
||||
|
||||
#header th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
#scan {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#scan td, #scan th {
|
||||
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#scan tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#scan tr:hover {background-color: #ddd;}
|
||||
|
||||
#scan th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<style>
|
||||
#scan {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#scan td, #scan th {
|
||||
border-collapse: collapse;
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#scan tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#scan tr:hover {background-color: #ddd;}
|
||||
|
||||
#scan th {
|
||||
border-collapse: collapse;
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
#details {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#details td, #details th {
|
||||
|
||||
padding: 8px;
|
||||
font-size:8px;
|
||||
}
|
||||
|
||||
#details tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#details tr:hover {background-color: #ddd;}
|
||||
|
||||
#details th {
|
||||
padding-top: 12px;
|
||||
font-style:bold;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
#sign {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#sign td, #sign th {
|
||||
|
||||
padding: 8px;
|
||||
font-size:11px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#sign tr:nth-child(even){background-color: #ffffff;}
|
||||
|
||||
#sign tr:hover {background-color: #ddd;}
|
||||
|
||||
#sign th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
padding:4px;
|
||||
color:black;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.new-page {
|
||||
page-break-before: always;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<table id="header">
|
||||
<tr>
|
||||
{{-- <th rowspan="4" style="width:50px"><br><img src="{{ asset('img/ARRAHN1.png') }}" style="width:70px"></img></th> --}}
|
||||
<th colspan="1">KOPERASI PERMODALAN KELANTAN BERHAD</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:20px;font-weight:bold;">{{ $cawangan_detail['namacaw'] }}</td>
|
||||
<th colspan="1">{{ $cawangan_detail['namacaw'] }}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['alamat1'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $cawangan_detail['alamat2'].' No Tel : '. $cawangan_detail['notel'].' No Faks : '. $cawangan_detail['nofaks'] }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table id="scan">
|
||||
<tr>
|
||||
<th colspan ="5"><b>LAPORAN AUDIT TRAIL OPERASI (arOS V3)</b></th>
|
||||
<th> </th>
|
||||
<th> </th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="5"><b> TARIKH CETAK:</b>
|
||||
@php
|
||||
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
|
||||
$formattedweddingdate = $myDateTime->format('d-m-Y');
|
||||
echo($formattedweddingdate);
|
||||
@endphp
|
||||
</th>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:20px"> <b>TARIKH MULA:</b></td>
|
||||
<td>@php
|
||||
$myDateTime = DateTime::createFromFormat('Y-m-d', $date);
|
||||
$formattedweddingdate = $myDateTime->format('d-m-Y');
|
||||
echo($formattedweddingdate);
|
||||
@endphp</td>
|
||||
<td style="width:20px"> <b>HINGGA:</b></td>
|
||||
<td>@php
|
||||
$myDateTime = DateTime::createFromFormat('Y-m-d', $date_till);
|
||||
$formattedweddingdate = $myDateTime->format('d-m-Y');
|
||||
echo($formattedweddingdate);
|
||||
@endphp</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<table id="details">
|
||||
<tr>
|
||||
<th>Bil</th>
|
||||
<th>Tarikh</th>
|
||||
<th>Masa</th>
|
||||
<th>Pengguna</th>
|
||||
<th>Tindakan</th>
|
||||
<th>Perbezaan</th>
|
||||
</tr>
|
||||
@php $counter = 1; @endphp
|
||||
@foreach($audittrail as $index=>$item)
|
||||
<tr>
|
||||
<td>{{ $counter }}</td>
|
||||
<td>{{ $item['tarikh'] }}</td>
|
||||
<td>{{ $item['masa'] }}</td>
|
||||
<td>{{ $item['users'] }}</td>
|
||||
<td>{{ $item['actions'] }}</td>
|
||||
<td>{{ $item['differ'] }}</td>
|
||||
</tr>
|
||||
@php $counter++;@endphp
|
||||
@endforeach
|
||||
</table>
|
||||
<br><br>
|
||||
|
||||
<br>
|
||||
<br><br><br>
|
||||
<table id="sign">
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2"> .................................................................. </td>
|
||||
<td> </td>
|
||||
<td colspan="2"> .................................................................. </td>
|
||||
<td> </td>
|
||||
<td colspan="2">.................................................................. </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2"><B> Disediakan </B> </td>
|
||||
<td></td>
|
||||
<td colspan="2"><B> Disemak </B> </td>
|
||||
<td> </td>
|
||||
<td colspan="2"><B> Disahkan </B></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -471,23 +471,21 @@
|
||||
<tr style="font-weight:bold;">
|
||||
<td colspan="2">Baki</td>
|
||||
<td style="text-align: right;">
|
||||
@php $totalbil1 = $gad1 - $teb1 - $lel1 - $ans1 - $hpk1; echo number_format($totalbil1);@endphp
|
||||
@php $totalbil1 = $gad1 - $teb1 - $lel1 /*- $ans1*/ - $hpk1; echo number_format($totalbil1);@endphp
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
@php $totalpinj1 = $gadpinj1 - $tebpinj1 - $lelpinj1 - $anspinj1 - $hpkpinj1; echo number_format($totalpinj1,2);@endphp
|
||||
|
||||
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
@php $totalbil2 = $gad2 - $teb2 - $lel2 - $ans2 - $hpk2; echo number_format($totalbil2);@endphp
|
||||
|
||||
@php $totalbil2 = $gad2 - $teb2 - $lel2 /*- $ans2*/ - $hpk2; echo number_format($totalbil2);@endphp
|
||||
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
@php $totalpinj2 = $gadpinj2 - $tebpinj2 - $lelpinj2 - $anspinj2 - $hpkpinj2; echo number_format($totalpinj2,2);@endphp
|
||||
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
@php $totalbil3 = $gad3 - $teb3 - $lel3 = - $ans3 - $hpk3; echo number_format($totalbil3);@endphp
|
||||
|
||||
@php $totalbil3 = $gad3 - $teb3 - $lel3 /*- $ans3*/ - $hpk3; echo number_format($totalbil3);@endphp
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
@php $totalpinj3 = $gadpinj3 - $tebpinj3 - $lelpinj3 - $anspinj3 - $hpkpinj3; echo number_format($totalpinj3,2);@endphp
|
||||
|
||||
@@ -440,9 +440,12 @@
|
||||
<td>{{ number_format($totalnm, 2) }}</td>
|
||||
<td>{{ number_format($totalpinjamanasal, 2) }}</td>
|
||||
<td>{{ number_format($totalpinjaman, 2) }}</td>
|
||||
<td>@php$totalkeuntunganrebet = $totalpinjaman + $totalupah - $totalbayaran;
|
||||
echo number_format($totalkeuntunganrebet, 2);
|
||||
@endphp ?></td>
|
||||
<td>
|
||||
@php
|
||||
$totalkeuntunganrebet = $totalpinjaman + $totalupah - $totalbayaran;
|
||||
echo number_format($totalkeuntunganrebet, 2);
|
||||
@endphp
|
||||
</td>
|
||||
<td>{{ number_format($totalujrah, 2) }}</td>
|
||||
<td>{{ number_format($totalonepercent, 2) }}</td>
|
||||
<td>{{ number_format($totalupah, 2) }}</td>
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
<td>
|
||||
@php
|
||||
// $gadaidetail = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/gadai/norujukan/' . $item['norujukan'])->json();
|
||||
$gadaidetail = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/gadai/norujukankodcaw/' . $item['kodcaw'] . '/' . $item['norujukan'])->json();
|
||||
$gadaidetail = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/gadai/norujukan/' . $item['kodcaw'] . '/' . $item['norujukan'])->json();
|
||||
$customer_detail = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/customers/' . $gadaidetail[0][0]['nokp'])->json();
|
||||
echo $customer_detail['nama'];
|
||||
@endphp
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Resit Pampasan</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.resit {
|
||||
width: 700px;
|
||||
margin: 0 auto;
|
||||
border: 1px solid #000;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.header-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.header img {
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.header .tag {
|
||||
border: 1px solid #000;
|
||||
padding: 5px 12px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
h2 {
|
||||
text-align: right;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.panel {
|
||||
border-top: 1px dashed #000;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.label {
|
||||
width: 200px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.signature {
|
||||
margin-top: 40px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.signature div {
|
||||
text-align: center;
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.footer {
|
||||
margin-top: 20px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.pelanggan-info {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.center-table {
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.bayaran-info {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.jumlah-row {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.jumlah-row td {
|
||||
padding-top: 15px;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body onload="window.print()">
|
||||
<div class="resit">
|
||||
|
||||
<div class="header">
|
||||
<div class="header-left">
|
||||
<img src="{{ asset('img/kopkb.png') }}" alt="Logo KOPPKB">
|
||||
<img src="{{ asset('img/ARRAHN1.png') }}" alt="Logo Ar-Rahn">
|
||||
</div>
|
||||
<span class="tag">Resit Pampasan</span>
|
||||
<span class="tag">Untuk Kegunaan Pelanggan</span>
|
||||
</div>
|
||||
|
||||
<div class="pelanggan-info">
|
||||
<table class="center-table">
|
||||
<tr>
|
||||
<td class="label">Nama:</td>
|
||||
<td>{{ $customer_info['nama'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">No. KP:</td>
|
||||
<td>{{ $gadai_info['nokp'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">No. SAG:</td>
|
||||
<td>{{ $pampasan['norujukan'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Tarikh Tuntutan:</td>
|
||||
<td>{{ \Carbon\Carbon::parse($pampasan['created_at'])->format('d/m/Y') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="bayaran-info">
|
||||
<table class="center-table">
|
||||
<tr>
|
||||
<td class="label">Nilai Marhun:</td>
|
||||
<td>RM {{ number_format($pampasan_info['nilaimarhun'], 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">(-) Baki Pembiayaan:</td>
|
||||
<td>RM {{ number_format($pampasan_info['pembiayaan'], 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">(-) Keuntungan:</td>
|
||||
<td>RM {{ number_format($pampasan_info['untung'], 2) }}</td>
|
||||
</tr>
|
||||
<tr class="jumlah-row">
|
||||
<td class="label"><strong>JUMLAH PAMPASAN</strong></td>
|
||||
<td><strong>RM {{ number_format($pampasan['jumlah_pampasan'], 2) }}</strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="signature">
|
||||
<div>
|
||||
<p>__________________________</p>
|
||||
<p>PELANGGAN</p>
|
||||
<p>{{ $customer_info['nama'] }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>__________________________</p>
|
||||
<p>AR-RAHN</p>
|
||||
<p>{{ auth()->user()->name }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<div class="header">
|
||||
<div class="header-left">
|
||||
<img src="{{ asset('img/kopkb.png') }}" alt="Logo KOPPKB">
|
||||
<img src="{{ asset('img/ARRAHN1.png') }}" alt="Logo Ar-Rahn">
|
||||
</div>
|
||||
<span class="tag">Resit Pampasan</span>
|
||||
<span class="tag">Untuk Kegunaan Pejabat</span>
|
||||
</div>
|
||||
|
||||
<div class="pelanggan-info">
|
||||
<table class="center-table">
|
||||
<tr>
|
||||
<td class="label">Nama:</td>
|
||||
<td>{{ $customer_info['nama'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">No. KP:</td>
|
||||
<td>{{ $gadai_info['nokp'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">No. SAG:</td>
|
||||
<td>{{ $pampasan['norujukan'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Tarikh Tuntutan:</td>
|
||||
<td>{{ \Carbon\Carbon::parse($pampasan['created_at'])->format('d/m/Y') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="bayaran-info">
|
||||
<table class="center-table">
|
||||
<tr>
|
||||
<td class="label">Nilai Marhun:</td>
|
||||
<td>RM {{ number_format($pampasan_info['nilaimarhun'], 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">(-) Baki Pembiayaan:</td>
|
||||
<td>RM {{ number_format($pampasan_info['pembiayaan'], 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">(-) Keuntungan:</td>
|
||||
<td>RM {{ number_format($pampasan_info['untung'], 2) }}</td>
|
||||
</tr>
|
||||
<tr class="jumlah-row">
|
||||
<td class="label"><strong>JUMLAH PAMPASAN</strong></td>
|
||||
<td><strong>RM {{ number_format($pampasan['jumlah_pampasan'], 2) }}</strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="signature">
|
||||
<div>
|
||||
<p>__________________________</p>
|
||||
<p>PELANGGAN</p>
|
||||
<p>{{ $customer_info['nama'] }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>__________________________</p>
|
||||
<p>AR-RAHN</p>
|
||||
<p>{{ auth()->user()->name }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
window.print();
|
||||
};
|
||||
|
||||
window.onafterprint = function() {
|
||||
|
||||
window.location.href = "{{ url('/panjar') }}";
|
||||
};
|
||||
</script>
|
||||
@@ -629,22 +629,22 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">Keuntungan</td>
|
||||
<td style="width:10px">: RM {{ number_format($penebusan['onepercent'], 2) }}</td>
|
||||
<td style="width:10px">: RM {{ number_format($transaction_tebus['onepercent'],2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">(-) Rebat Untung</td>
|
||||
<td style="width:10px">: RM
|
||||
{{ number_format($totalrebate['onepercent'], 2) }}
|
||||
{{ number_format($keuntungan_rebate,2) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">Lain-Lain Caj</td>
|
||||
<td style="width:10px">: RM {{ number_format($penebusan['ujrah'], 2) }} </td>
|
||||
<td style="width:10px">: RM {{ number_format($transaction_tebus['ujrah'],2) }} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">(-) Rebat Lain-Lain Caj</td>
|
||||
<td style="width:10px">: RM
|
||||
{{ number_format($totalrebate['ujrah'], 2) }} </td>
|
||||
{{ number_format($ujrah_rebate, 2) }} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">Jumlah Keuntungan + Lain-Lain Caj</td>
|
||||
@@ -862,22 +862,22 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">Keuntungan</td>
|
||||
<td style="width:10px">: RM {{ number_format($penebusan['onepercent'], 2) }}</td>
|
||||
<td style="width:10px">: RM {{ number_format($transaction_tebus['onepercent'], 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">(-) Rebat Untung</td>
|
||||
<td style="width:10px">: RM
|
||||
{{ number_format($totalrebate['onepercent'], 2) }}
|
||||
{{ number_format($keuntungan_rebate, 2) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">Lain-Lain Caj</td>
|
||||
<td style="width:10px">: RM {{ number_format($penebusan['ujrah'], 2) }} </td>
|
||||
<td style="width:10px">: RM {{ number_format($transaction_tebus['ujrah'], 2) }} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">(-) Rebat Lain-Lain Caj</td>
|
||||
<td style="width:10px">: RM
|
||||
{{ number_format($totalrebate['ujrah'], 2) }} </td>
|
||||
{{ number_format($ujrah_rebate, 2) }} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:10px">Jumlah Keuntungan + Lain-Lain Caj</td>
|
||||
|
||||
@@ -1607,7 +1607,7 @@
|
||||
<p>{{ $cawangan_detail['namacaw'] }}</p>
|
||||
<p>{{ $cawangan_detail['alamat1'] }}</p>
|
||||
<p>{{ $cawangan_detail['alamat2'] }}</p>
|
||||
<p>{{ $cawangan_detail['notel'] }}</p>
|
||||
<p>No Tel: {{ $cawangan_detail['notel'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ms">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Surat Pampasan</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<style>
|
||||
@page {
|
||||
size: A4;
|
||||
margin: 20mm;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: "Times New Roman", Times, serif;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.page {
|
||||
width: 210mm;
|
||||
min-height: 257mm;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header {
|
||||
text-align: center;
|
||||
line-height: 1.4;
|
||||
margin-bottom: 8mm;
|
||||
}
|
||||
|
||||
.header .org-name {
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
margin: 2mm 0 4mm;
|
||||
font-size: 16px;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.claim-no {
|
||||
text-align: center;
|
||||
margin: 2mm 0 6mm;
|
||||
}
|
||||
|
||||
.claim-no .label {
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size: 12pt;
|
||||
line-height: 1.65;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.content b {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.content .emph {
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.mt-2 {
|
||||
margin-top: 2mm;
|
||||
}
|
||||
|
||||
.mt-4 {
|
||||
margin-top: 4mm;
|
||||
}
|
||||
|
||||
.mt-8 {
|
||||
margin-top: 8mm;
|
||||
}
|
||||
|
||||
.mt-12 {
|
||||
margin-top: 12mm;
|
||||
}
|
||||
|
||||
.date-row {
|
||||
margin-top: 8mm;
|
||||
}
|
||||
|
||||
.line {
|
||||
display: inline-block;
|
||||
border-bottom: 1px solid #000;
|
||||
width: 65mm;
|
||||
height: 8mm;
|
||||
vertical-align: bottom;
|
||||
margin-left: 2mm;
|
||||
margin-right: 6mm;
|
||||
}
|
||||
|
||||
.signatures {
|
||||
display: flex;
|
||||
gap: 10mm;
|
||||
margin-top: 12mm;
|
||||
}
|
||||
|
||||
.sig-col {
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sig-line {
|
||||
border-bottom: 1px solid #000;
|
||||
height: 18mm;
|
||||
margin: 0 10mm 2mm;
|
||||
}
|
||||
|
||||
.sig-labels {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 0 10mm;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-meta {
|
||||
text-align: left;
|
||||
margin: 2mm 10mm 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
@media print {
|
||||
|
||||
html,
|
||||
body {
|
||||
width: 210mm;
|
||||
}
|
||||
|
||||
.page {
|
||||
min-height: 277mm;
|
||||
}
|
||||
|
||||
.no-print {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
* {
|
||||
-webkit-print-color-adjust: exact;
|
||||
print-color-adjust: exact;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="page">
|
||||
<div class="header">
|
||||
<div class="org-name">KOPERASI PERMODALAN KELANTAN BERHAD (D-5-0228)</div>
|
||||
<div>Lot PT 448, Tingkat 1, Jalan Kuala Krai, Batu 3 Wakaf Che Yeh, 15150 Kota Bharu, Kelantan</div>
|
||||
<div>Tel : 09-7414331 / 4334 Website : www.koppkb.com Email : admin@koppkb.com
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="title">AKUAN TERIMAAN PAMPASAN DAN PELEPASAN</div>
|
||||
|
||||
<div class="claim-no"><span class="label">NO. TUNTUTAN :</span> <b>{{ $gadai_info['norujukan'] }}</b></div>
|
||||
|
||||
<div class="content">
|
||||
<p>
|
||||
1. Bahawasanya saya, Penama : <b>{{ $customer_info['nama'] }}</b><br>
|
||||
No. Kad Pengenalan : <b>{{ $customer_info['kpbaru'] }}</b><br>
|
||||
Adalah dengan ini atas <span class="emph">BALASAN</span> sebanyak <b>RM {{ number_format($jumlah_pampasan, 2) }}</b>
|
||||
<b> (Ringgit Malaysia : {{ $jumlah_pampasan_terbilang }} sahaja)</b>
|
||||
yang dibayar kepada saya oleh <b>AR-RAHN CAWANGAN SEMPORNA</b> atau
|
||||
<b>KOPERASI PERMODALAN KELANTAN BERHAD (KoPKB)</b> yang mana penerimaan wang bayaran tersebut
|
||||
adalah saya perakui sebagai bayaran muktamad melepaskan <b>AR-RAHN CAWANGAN SEMPORNA</b>
|
||||
atau <b>KOPERASI PERMODALAN KELANTAN BERHAD (KoPKB)</b> daripada segala liabiliti, tindakan, klausa
|
||||
tindakan, tuntutan dan tanggungjawab yang saya boleh kuatkuasakan, punyai atau mungkin mempunyai
|
||||
pada masa ini atau pada bila-bila masa terhadap <b>AR-RAHN CAWANGAN SEMPORNA</b>,<b> KOPERASI PERMODALAN
|
||||
KELANTAN BERHAD (KoPKB)</b>
|
||||
berkait dengan kehilangan/kecurian barangan kemas pada bulan <b>November 2024</b> yang
|
||||
telah digadaikan di <b>AR-RAHN CAWANGAN SEMPORNA, LOT F9-0 GROUND FLOOR, BANDAR MUTIARA, JALAN HOSPITAL,
|
||||
91300 SEMPORNA, SABAH</b> atau apa-apa perkara
|
||||
yang timbul berkait/akibat
|
||||
daripada kehilangan/kecurian tersebut.
|
||||
</p>
|
||||
|
||||
<p class="mt-4">
|
||||
2. <span class="emph">DAN</span> saya memberikan sebenar-benar akujanji bahawa saya tidak akan
|
||||
mengambil/memulakan
|
||||
sebarang tindakan perundangan terhadap <b>AR-RAHN CAWANGAN SEMPORNA</b> atau
|
||||
<b>KOPERASI PERMODALAN KELANTAN BERHAD (KoPKB)</b> berkait dengan kehilangan/kecurian tersebut
|
||||
dengan penerimaan wang balasan di atas.
|
||||
</p>
|
||||
|
||||
<p class="mt-4">
|
||||
Adalah saya dengan ini memperakui bahawa dokumen ini telah dibacakan/saya baca dan saya fahami
|
||||
kesan dan implikasi dokumen ini sepenuh-penuhnya.
|
||||
</p>
|
||||
|
||||
<div class="date-row">
|
||||
Bertarikh:
|
||||
</div>
|
||||
|
||||
<div class="signatures">
|
||||
<div class="sig-col">
|
||||
<div class="sig-line"></div>
|
||||
<div class="sig-labels"><span>(PELANGGAN)</span></div>
|
||||
<div class="sig-labels"><span>{{ $customer_info['nama'] }}</span></div>
|
||||
<div class="sig-meta">No K/P: </div>
|
||||
</div>
|
||||
<div class="sig-col">
|
||||
<div class="sig-line"></div>
|
||||
<div class="sig-labels"><span>(SAKSI)</span></div>
|
||||
<div class="sig-meta">Nama : </div>
|
||||
<div class="sig-meta">No K/P: </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="no-print" style="text-align:center; margin: 10mm 0;">
|
||||
<button onclick="cetakSuratPampasan()" style="padding:8px 16px;font-size:14px;">Cetak</button>
|
||||
</div>
|
||||
<script>
|
||||
window.addEventListener('DOMContentLoaded', function(){
|
||||
cetakSuratPampasan();
|
||||
})
|
||||
|
||||
async function cetakSuratPampasan() {
|
||||
window.print();
|
||||
await initiatePampasan();
|
||||
}
|
||||
|
||||
async function initiatePampasan() {
|
||||
return fetch('/pampasan/initiate', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
'norujukan': @json($gadai_info['norujukan']),
|
||||
"_token": "{{ csrf_token() }}",
|
||||
})
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(result => {
|
||||
return result;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error initiating pampasan:', error);
|
||||
Swal.fire({
|
||||
title: 'Ralat',
|
||||
text: 'Gagal daftar pampasan',
|
||||
icon: 'error'
|
||||
});
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+27
-1
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\KhazanahController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Services\ImbangdugaServices;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
@@ -112,6 +113,10 @@ Route::get('/history',['as'=>'gadai.history','uses'=>'GadaianController@history'
|
||||
Route::get('/history/khazanah',['as'=>'gadai.history.khazanah','uses'=>'GadaianController@history'])->middleware('auth','khazanah');
|
||||
Route::post('/customer/assign-anggota', ['as' => 'customer.assignAnggota','uses' => 'CustomersController@assignAnggota'])->middleware('auth', 'teller');
|
||||
|
||||
//Laporan Aliran Tunai Teller
|
||||
Route::get('/laporan/alirantunai', ['as' => 'laporan.alirantunai', 'uses'=> 'AliranTunaiController@laporanAliranTunaiTeller'])->middleware('auth','teller');
|
||||
Route::post('laporan/alirantunai/cetak', ['as' => 'alirantunai.laporancetak', 'uses' => 'AliranTunaiController@cetakLaporanAliranTunaiTeller'])->middleware('auth', 'teller');
|
||||
|
||||
//Kemaskini Upah
|
||||
Route::get('/kemaskiniupah',['as'=>'kemaskini.upah','uses'=>'AliranTunaiController@kemaskiniupah'])->middleware('auth','teller');
|
||||
|
||||
@@ -267,6 +272,8 @@ Route::post('laporan/saghilang/cetak',['as'=>'saghilang.laporancetak','uses'=>'K
|
||||
// Route::get('/laporan/agingbulanan', [ 'as'=>'laporan.agingbulanan', 'uses'=>'KhazanahController@laporanAging_Bulanan'])->middleware('auth','khazanah');
|
||||
// Route::post('/laporan/agingbulanan/cetak', ['as'=>'agingbulan.cetaklaporan', 'uses'=>'KhazanahController@cetaklaporang_Aging'])->middleware('auth','khazanah');
|
||||
|
||||
Route::get('laporan/operasi/audittrail/cetak',['as'=>'operasi.audittrail.laporancetak','uses'=>'OperasiController@cetakLaporanAuditTrail'])->middleware('auth','operasi');
|
||||
|
||||
Route::get('/laporan/stokauditbackdate',['as'=>'laporan.stokauditbackdate','uses'=>'KhazanahController@laporanStokAuditBackdate'])->middleware('auth','khazanah');
|
||||
Route::get('laporan/stokauditbackdate/cetak',['as'=>'stokauditbackdate.laporancetak','uses'=>'KhazanahController@cetakLaporanStokAuditBackdate'])->middleware('auth','khazanah');
|
||||
|
||||
@@ -339,11 +346,11 @@ Route::post('/barcodescanned',['as'=>'barcode.scanned','uses'=>'KhazanahControll
|
||||
Route::get('/operasi/kelulusan','OperasiController@kelulusan')->name('operasi.kelulusan')->middleware('auth','operasi');
|
||||
Route::get('/operasi/kelulusan/anggota','OperasiController@kelulusanAnggota')->name('operasi.kelulusananggota')->middleware('auth','operasi');
|
||||
Route::post('/operasi/createkelulusan',['as'=>'operasi.createkelulusan','uses'=>'OperasiController@createkelulusan'])->middleware('auth','teller');
|
||||
Route::post('/operasi/createkelulusan-anggota',['as'=>'operasi.createkelulusan-anggota','uses'=>'OperasiController@createkelulusanAnggota'])->middleware('auth','teller');
|
||||
Route::get('/operasi/getkelulusan',['as'=>'operasi.getkelulusan','uses'=>'OperasiController@getkelulusan'])->middleware('auth','teller');
|
||||
Route::put('/operasi/updatekelulusan',['as'=>'operasi.updatekelulusan','uses'=>'OperasiController@updatekelulusan'])->middleware('auth','operasi');
|
||||
Route::put('/operasi/updatekelulusananggota',['as'=>'operasi.updatekelulusananggota','uses'=>'OperasiController@updatekelulusananggota'])->middleware('auth','operasi');
|
||||
Route::get('/operasi/parameter','OperasiController@parameter')->name('parameter')->middleware('auth','operasi');
|
||||
Route::get('/operasi/laporan-audit','OperasiController@laporanAudit')->name('operasi.laporan.audit')->middleware('auth','operasi');
|
||||
Route::get('/operasi/hargaemas',['as'=>'operasi.hargaemas','uses'=>'OperasiController@hargaemas'])->middleware('auth','operasi');
|
||||
Route::post('/operasi/hargaemas/update',['as'=>'hargaemas.update','uses'=>'OperasiController@updatehargaemas'])->middleware('auth','operasi');
|
||||
Route::post('/operasi/hargaemas',['as'=>'hargaemas.create','uses'=>'OperasiController@createhargaemas'])->middleware('auth','operasi');
|
||||
@@ -360,6 +367,8 @@ Route::post('operasi/kakitangan/edit/store',['as'=>'operasi.kakitangan.edit.stor
|
||||
|
||||
|
||||
Route::get('/operasi/margin',['as'=>'operasi.margin','uses'=>'OperasiController@margin'])->middleware('auth','operasi');
|
||||
Route::get('/operasi/marginmutu',['as'=>'operasi.marginmutu','uses'=>'OperasiController@marginmutu'])->middleware('auth','operasi');
|
||||
Route::get('/operasi/marginmutu/edit',['as'=>'operasi.marginmutu.edit','uses'=>'OperasiController@editMarginMutu'])->middleware('auth','operasi');
|
||||
|
||||
Route::get('/komoditi',['as'=>'komuditi','uses'=>'KomuditiController@index']);
|
||||
Route::get('/komoditi/rekod',['as'=>'rekod.komoditi','uses'=>'KomuditiController@rekodKomoditi']);
|
||||
@@ -498,3 +507,20 @@ Route::get('/event/tellercash',['as'=>'event.tellercash','uses'=>'EventTriggerCo
|
||||
Route::get('/perubatan',['as'=>'perubatan','uses'=>'PerubatanController@index'])->middleware('auth','operasi');
|
||||
Route::get('/perubatan/search',['as'=>'perubatan.search','uses'=>'PerubatanController@search'])->middleware('auth','operasi');
|
||||
Route::put('/perubatan/update',['as'=>'perubatan.update','uses'=>'PerubatanController@update'])->middleware('auth','operasi');
|
||||
|
||||
/* Pampasan */
|
||||
|
||||
//Page Pampasan Detail Payment Customer
|
||||
Route::get('/pampasan/detail/{norujukan}', ['as' => 'pampasan.detail','uses' => 'KhazanahController@pampasanDetail'])->middleware('auth', 'khazanah');
|
||||
|
||||
//Selepas teller print surat perjanjian pampasan pelanggan
|
||||
Route::post('/pampasan/initiate',['as' => 'pampasan.initiate', 'uses' => 'KhazanahController@initiatePampasan'])->middleware('auth', 'teller');
|
||||
|
||||
//Selepas PC masukkan Deno dan Submit Jumlah Pampasan
|
||||
Route::post('/pampasan/terima',['as' => 'pampasan.terima', 'uses' => 'KhazanahController@terimaPampasan'])->middleware('auth', 'khazanah');
|
||||
|
||||
//Cetak Resit Pampasan
|
||||
Route::get(('/pampasan/resit'), ['as' => 'pampasan.resit', 'uses' => 'KhazanahController@resitPampasan'])->middleware('auth', 'khazanah');
|
||||
|
||||
//Surat Pampasan
|
||||
Route::get('/pampasan/surat/{norujukan}', ['as' => 'pampasan.surat', 'uses' => 'KhazanahController@suratPampasan'])->middleware('auth', 'role:teller,khazanah');
|
||||
Reference in New Issue
Block a user