diff --git a/app/Helper.php b/app/Helper.php index a43ca4f..386b6b5 100644 --- a/app/Helper.php +++ b/app/Helper.php @@ -1,20 +1,83 @@ 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))); + } } diff --git a/app/Http/Controllers/AliranTunaiController.php b/app/Http/Controllers/AliranTunaiController.php index 32acd64..06b0820 100644 --- a/app/Http/Controllers/AliranTunaiController.php +++ b/app/Http/Controllers/AliranTunaiController.php @@ -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){ diff --git a/app/Http/Controllers/KhazanahController.php b/app/Http/Controllers/KhazanahController.php index e69b3a1..03e7252 100644 --- a/app/Http/Controllers/KhazanahController.php +++ b/app/Http/Controllers/KhazanahController.php @@ -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')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index 0f2f558..eb861af 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -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; diff --git a/app/Http/Controllers/PenebusanController.php b/app/Http/Controllers/PenebusanController.php index 652b7e7..32ef7f7 100644 --- a/app/Http/Controllers/PenebusanController.php +++ b/app/Http/Controllers/PenebusanController.php @@ -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; + } + } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 37bb7be..7356ee1 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -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', ]; } diff --git a/app/Http/Middleware/RoleAccess.php b/app/Http/Middleware/RoleAccess.php new file mode 100644 index 0000000..74c33c9 --- /dev/null +++ b/app/Http/Middleware/RoleAccess.php @@ -0,0 +1,71 @@ +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)); + } +} \ No newline at end of file diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 0000000..2dee074 --- /dev/null +++ b/resources/js/app.js @@ -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 -> + */ + +// 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', +}); \ No newline at end of file diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index 937d7b9..61a0929 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -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 }); diff --git a/resources/views/aliran_tunai/index.blade.php b/resources/views/aliran_tunai/index.blade.php index d1ebd87..9459d54 100644 --- a/resources/views/aliran_tunai/index.blade.php +++ b/resources/views/aliran_tunai/index.blade.php @@ -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") }}'; diff --git a/resources/views/aliran_tunai/laporan/laporanalirantunai.blade.php b/resources/views/aliran_tunai/laporan/laporanalirantunai.blade.php index c977e37..2334ec2 100644 --- a/resources/views/aliran_tunai/laporan/laporanalirantunai.blade.php +++ b/resources/views/aliran_tunai/laporan/laporanalirantunai.blade.php @@ -1,211 +1,298 @@ - - - - - - -
SULIT DAN PERSENDIRIAN
- - - - - - - - - - - - - - - - - - - - -
PENYATA ALIRAN TUNAI : {{ $teller }}
- -
-
-

Baki Awal

- RM {{ number_format($alirantunai['bakiawal'], 2) }} -
- -
-

Pendahuluan

- RM {{ number_format($alirantunai['tambah'], 2) }} -
- -
-

Penyelesaian Pem.

- RM {{ number_format($alirantunai['masuk'], 2) }} -
-
- -
-
-

Baki Tunai Semasa

- RM {{ number_format($alirantunai['baki'], 2) }} -
- -
-

Serahan

- RM {{ number_format($alirantunai['kurang'], 2) }} -
- -
-

Pembiayaan

- RM {{ number_format($alirantunai['keluar'], 2) }} -
-
- - -
KEMASUKAN TUNAI
-
- - - - - - - - - @php $totaltambah = 0; $totalkurang = 0; @endphp - @foreach($addtunai as $index=>$ad) - @php $totaltambah += $ad['tambah']; $totalkurang += $ad['kurang']; @endphp - - - - - - - @endforeach - - - - - - -
TARIKHDEBIT (RM)KREDIT (RM)NOTA
{{ $ad['tarikh'] }}{{ number_format($ad['tambah'],2) }}{{ number_format($ad['kurang'],2) }}{{ $ad['nota'] }}
JUMLAH{{ number_format($totaltambah,2) }}{{ number_format($totalkurang,2) }}
- -
- - - - \ No newline at end of file diff --git a/resources/views/customers/v2/index.blade.php b/resources/views/customers/v2/index.blade.php index 5bdfe89..896014e 100644 --- a/resources/views/customers/v2/index.blade.php +++ b/resources/views/customers/v2/index.blade.php @@ -102,7 +102,7 @@