91 Commits

Author SHA1 Message Date
nurafrinaalimi16 d6df3e744c fix resit tebus (diskaun promosi) 2026-09-02 16:16:15 +08:00
nurafrinaalimi16 166215b989 fix layout laporan on pc/ppc view 2026-09-02 11:32:57 +08:00
nurafrinaalimi16 f895ddb404 fix kadar rebet on teller page 2026-09-02 11:32:19 +08:00
nurafrinaalimi16 ac519f7a5f Merge remote-tracking branch 'origin/prod-kopkb' into annur-rebate 2026-09-01 11:08:05 +08:00
dev_kopkb 71537d4deb Merged in feature/kadar-anggota (pull request #403)
enable kadar anggota for all branches
2026-08-30 03:55:08 +00:00
nurafrinaalimi16 a555406b2b enable kadar anggota for all branches 2026-08-30 11:52:19 +08:00
dev_kopkb 3c9b224ad2 Merged prod-kopkb into feature/kadar-anggota 2026-08-27 02:26:21 +00:00
dev_kopkb aa8647aad4 Merged in feature/kadar-anggota (pull request #402)
feat: separate SAG versions for public and anggota
2026-08-27 02:26:03 +00:00
nurafrinaalimi16 e4d50e9e1c feat: separate SAG versions for public and anggota 2026-08-27 10:16:04 +08:00
dev_kopkb 23408d327c Merged in feature/kadar-anggota (pull request #401)
change kadar anggota to 1%
2026-08-26 15:07:45 +00:00
nurafrinaalimi16 59efddb005 change kadar anggota to 1% 2026-08-26 23:05:53 +08:00
root e1f17472eb latest stable version 2026-08-26 15:35:37 +08:00
nurafrinaalimi16 8512205b87 logo for sag latest version 2026-05-26 10:09:42 +08:00
nurafrinaalimi16 7175d0dbcf sag new version - syariah formatted 2026-05-24 16:40:39 +08:00
nurafrinaalimi16 15575dc8c0 fix no passport on laporan senarai pelanggan baru 2026-05-13 15:15:17 +08:00
nurafrinaalimi16 03a0142066 fix overlap logo with address on surat wakil 2026-02-19 11:12:41 +08:00
nurafrinaalimi16 5e7fe8c3ab disable logs for kadar anggota 2025-12-14 10:30:08 +08:00
nurafrinaalimi16 358baf3453 fix nota marhun 2025-12-10 16:11:17 +08:00
nurafrinaalimi16 7eebd79397 fix format sag upon bos request 2025-12-09 12:02:11 +08:00
nurafrinaalimi16 f7dd2fae7b update resit tebus as per bos request 2025-11-24 10:48:08 +08:00
nurafrinaalimi16 b8cc3f38cc fix komen pusher 2025-11-17 15:50:12 +08:00
nurafrinaalimi16 c06e33bc1c fix kplama for gadaian kadar anggota 2025-11-16 23:52:14 +08:00
nurafrinaalimi16 b95f68bd3f hide button lulus if operasi approved 2025-11-15 22:46:54 +08:00
nurafrinaalimi16 c989197e76 add margin on salinan pejabat sag 2025-11-15 22:38:39 +08:00
nurafrinaalimi16 e3424e9161 edit kadar ujrah table for anggota on SAG 2025-11-15 20:23:51 +08:00
nurafrinaalimi16 da06ff709c tambah margin and remove arrahn careline on sag 2025-11-12 21:32:58 +08:00
nurafrinaalimi16 d6b4685f54 add status approval anggota for operasi 2025-11-11 22:38:02 +08:00
nurafrinaalimi16 173ce892b9 add column nama at operasi approval 2025-11-11 12:07:24 +08:00
nurafrinaalimi16 6af434360d fix bug endpoint 2025-11-11 00:20:59 +08:00
nurafrinaalimi16 aaf784ad79 fix button only for X0301 2025-11-10 23:58:46 +08:00
nurafrinaalimi16 3456059db4 fix button assign anggota 2025-11-10 23:46:10 +08:00
nurafrinaalimi16 cd9f83e21f enable i/duga biasa 2025-11-10 23:30:36 +08:00
nurafrinaalimi16 1e174a48b6 enable route panjar 2025-11-10 23:20:12 +08:00
nurafrinaalimi16 80b8fd3a24 enable panjar for kopkb 2025-11-10 23:18:16 +08:00
nurafrinaalimi16 71990e7582 update new format sag from syariah 2025-11-10 18:47:48 +08:00
nurafrinaalimi16 31dc30ed60 update all blade views for kadar anggota koperasi 2025-11-10 18:46:37 +08:00
nurafrinaalimi16 bb8bcae8e8 update all controller frontend for kadar anggota koperasi 2025-11-10 18:41:42 +08:00
nurafrinaalimi16 1ba51d1158 pelarasan rebate on imbang duga 2025-08-17 16:03:10 +08:00
nurafrinaalimi16 e95e7671ed fix rounded diskaun rebate 2025-05-27 12:23:23 +08:00
nurafrinaalimi16 1d4c5d47f3 fix laporan tebus 2025-05-21 16:49:24 +08:00
nurafrinaalimi16 4e5d6d4d3d fix sag hilang 2025-05-18 09:59:10 +08:00
nurafrinaalimi16 7718b137c7 fix penebusan controller 2025-05-13 11:10:10 +08:00
nurafrinaalimi16 41bacebd54 sag new version 2025-05-11 16:34:30 +08:00
nurafrinaalimi16 302584f137 rebate annur 2025-05-11 16:32:30 +08:00
nurafrinaalimi16 4ed8067239 Merge branch 'production' of https://bitbucket.org/arrahn-pkb/kaunter into annur-rebate 2025-02-05 12:18:49 +08:00
nurafrinaalimi16 a0a50b42a0 imbang duga koperasi 2025-02-03 12:14:02 +08:00
BTMS3 14677ea777 newupdatesagv2.2 2025-02-03 12:13:35 +08:00
Ain Izazi 9e840c0439 remove command 2025-02-03 12:13:35 +08:00
Ain Izazi 3d66712c4e feat audit 2025-02-03 12:13:35 +08:00
Ain Izazi 1058ece282 audit di kaunter 2025-02-03 12:13:35 +08:00
BTMS3 e5666e1106 update sag v2.2 2025-02-03 12:13:35 +08:00
Hafifie PKB 59b0118100 restore 2025-01-14 2025-02-03 12:13:35 +08:00
BTMS2 9a40c39349 tutup whatsapp 2025-02-03 12:13:35 +08:00
Hafifie PKB cbd8ea5c52 fix commit notification bawah umur 2025-02-03 12:13:35 +08:00
hafifierahman 34c06649b7 added function to detect customers that underage 2025-02-03 12:13:35 +08:00
Ain Izazi 6974e48b6e update message di khazanah dan importan work 2025-02-03 12:13:35 +08:00
Ain Izazi d52eee991b update pekerjaan lain-lain 2025-02-03 12:13:34 +08:00
Ain Izazi f2ee3b8031 add auth user di barcodescannedtebus 2025-02-03 12:13:16 +08:00
Ain Izazi ce6c2c4f3e add auth user di wakilController 2025-02-03 12:13:16 +08:00
Ain Izazi a0ed815f8e add insert record utk pendahuluan dan serah 2025-02-03 12:13:16 +08:00
Ain Izazi 330cbadeff changes funct kakitangan di khazanahcontr 2025-02-03 12:13:16 +08:00
Ain Izazi fcc61171c5 add changes di tukarcawanganupdate 2025-02-03 12:13:16 +08:00
Ain Izazi 31aaca59a9 add record password 2025-02-03 12:13:16 +08:00
BTMS2 ae417aa90d feat Log Masuk & Keluar Sistem 2025-02-03 12:13:16 +08:00
Hafifie PKB 60aac19737 fix nobaucer handle if null 2025-02-03 12:13:16 +08:00
Hafifie PKB 7927e102df added rekod tunai in aliran tunai 2025-02-03 12:13:16 +08:00
hafifierahman 887922b7da remove + 2025-02-03 12:13:16 +08:00
hafifierahman 5606c892e3 added tempblock and * for khazanah 2025-02-03 12:13:16 +08:00
hafifierahman ef9882c9c4 added block specific cawangan transaction 2025-02-03 12:13:15 +08:00
Hafifie PKB a709104090 fix bakipembiayaan + keuntungan (based on shahmi operasi) 2025-02-03 12:12:21 +08:00
Hafifie PKB d20cfa1214 fix resit PS(based on shahmin operasi) 2025-02-03 12:12:21 +08:00
Hafifie PKB 1983de4e3b added tambahpinjam 2025-02-03 12:12:21 +08:00
Hafifie PKB c77e619be5 fix bug fix 2025-02-03 12:12:20 +08:00
Hafifie PKB c388782650 added wakil in tambah pinjaman 2025-02-03 12:11:32 +08:00
Hafifie PKB d671b634ea added parameter to call in api for tebus pinjaman and auto tawarruq 2025-02-03 12:11:32 +08:00
hafifierahman 36cfb10315 added tambah pinjaman 2025-02-03 12:11:10 +08:00
hafifierahman 4e67e10d0d commit error swal fire 2025-02-03 12:10:48 +08:00
Hafifie PKB 3d1b4c7643 test AT transaction 2025-02-03 12:10:47 +08:00
hafifierahman e9f8c7ac30 added function operasi can edit perubatan asal 2025-02-03 12:10:31 +08:00
hafifierahman 5a8bc6dfed finished notification 2025-02-03 12:10:31 +08:00
Hafifie PKB 4dc4a53cdb add function in perubatan.js 2025-02-03 12:10:31 +08:00
hafifierahman e31411ae71 add scaffold for perubatan 2025-02-03 12:10:30 +08:00
Hafifie PKB 365b614020 fix perubatan 2025-02-03 12:10:30 +08:00
Hafifie PKB 9128bdbc85 added panjar 2025-02-03 12:10:30 +08:00
hafifierahman 85510305e3 addded notification 2025-02-03 12:10:30 +08:00
hafifierahman b2dfd421a7 first commit for kaunter in fixing cash deposit 2025-02-03 12:10:30 +08:00
nurafrinaalimi16 fc15e555ec imbang duga koperasi 2025-02-02 16:36:31 +08:00
nurafrinaalimi16 9031e8d7d8 imbang duga koperasi 2025-02-02 16:35:17 +08:00
nurafrinaalimi16 1ba4a1fe19 add parameter kadar rebate on index blade 2025-02-02 16:34:15 +08:00
nurafrinaalimi16 a2350d36f3 Merge branch 'production' of https://bitbucket.org/arrahn-pkb/kaunter into annur-rebate 2024-12-03 12:50:30 +08:00
dev_kopkb 9307ea5e1d add kadar rebet annur at gadai page 2024-11-19 11:38:02 +08:00
27 changed files with 6111 additions and 3654 deletions
+50
View File
@@ -0,0 +1,50 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:WRTHcFTq5YARKVdA8YDUzsh9Ue8vD63ivgZgXNNBiGo=
APP_DEBUG=true
APP_URL=http://ujrahkopkb.erahn.com.my
API_URL=http://apiujrah-kopkb.erahn.com.my
#API_ARRAHNBID=http://lelong.test/api/
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=kaunter_erahn
DB_USERNAME=spider
DB_PASSWORD=G0dz!ll4
BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
PUSHER_APP_ID=1132718
PUSHER_APP_KEY=26b0ec2f297f94b7aa9b
PUSHER_APP_SECRET=421b61fb5a8ecce477a6
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
MYKAD_READER_PORT=8085
MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED
+46
View File
@@ -0,0 +1,46 @@
<?php
namespace App\Events;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class NotifikasiAnggota implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $nokp;
public $status; // DILULUSKAN atau DITOLAK
public $komen;
public $tagoperasi;
public function __construct($nokp, $status, $komen, $tagoperasi = null)
{
$this->nokp = $nokp;
$this->status = strtoupper($status); // pastikan huruf besar DILULUSKAN/DITOLAK
$this->komen = $komen;
$this->tagoperasi = $tagoperasi;
}
public function broadcastOn()
{
return ['notice-anggota'];
}
public function broadcastAs()
{
return 'my-anggota';
}
public function broadcastWith()
{
return [
'noic' => $this->nokp,
'status' => $this->status, // ikut format API updateAnggota
'komen' => $this->komen,
'tagoperasi' => $this->tagoperasi,
];
}
}
+266 -41
View File
@@ -14,6 +14,7 @@ use Illuminate\Support\Facades\Auth;
use Twilio\Rest\Client; use Twilio\Rest\Client;
use App\Komoditi; use App\Komoditi;
use App\Events\Dashboard\PelangganNotify; use App\Events\Dashboard\PelangganNotify;
use Illuminate\Support\Facades\Log;
use Carbon\Carbon; use Carbon\Carbon;
@@ -24,7 +25,7 @@ class CustomersController extends Controller
public function __construct() public function __construct()
{ {
$this->middleware('auth'); $this->middleware('auth');
$this->customerService = New CustomerService(); $this->customerService = new CustomerService();
} }
/** /**
* Display a listing of the resource. * Display a listing of the resource.
@@ -46,76 +47,233 @@ class CustomersController extends Controller
return view('customers.' . $cawangan_info['version'] . '.index', compact('search', 'blacklist_search', 'cawangan_info', 'bank', 'api_url', 'idtype', 'pekerjaan')); return view('customers.' . $cawangan_info['version'] . '.index', compact('search', 'blacklist_search', 'cawangan_info', 'bank', 'api_url', 'idtype', 'pekerjaan'));
} }
public function info(Request $request){ public function info(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$api_url = config('api.url'); $api_url = config('api.url');
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$customer_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. Session::get('noic'))->json(); // 🔹 Panggil maklumat cawangan
// dd($customer_info); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])
$pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/pekerjaan')->json(); ->get($api_url . '/api/cawangan/' . $auth_user['cawangan'])
->json();
// 🔹 Panggil maklumat pelanggan (customer)
$customer_info = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/customers/' . Session::get('noic'))
->json();
// 🔹 Panggil maklumat pekerjaan
$pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/pekerjaan')
->json();
$komoditi = Komoditi::first(); $komoditi = Komoditi::first();
$min_komoditi = $komoditi['min_komoditi']; $min_komoditi = $komoditi['min_komoditi'];
$bakilelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/baki')->json(); // 🔹 Panggil baki lelong
$rugilelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/rugi')->json(); $bakilelong = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/baki')
->json();
// 🔹 Panggil rugi lelong
$rugilelong = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/rugi')
->json();
// 🔹 Reset session sementara
$request->session()->forget('page_reload'); $request->session()->forget('page_reload');
$request->session()->forget('norujukan'); $request->session()->forget('norujukan');
$customer_page = ($cawangan_info['version'] == 'v1') ? 'customers.v1.info' : 'customers.v2.info'; $customer_page = ($cawangan_info['version'] == 'v1')
? 'customers.v1.info'
: 'customers.v2.info';
$getApprovalError = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getApproval',[ // Logik papar butang "Assign sebagai Anggota"
$showAssignAnggotaBtn = false;
$noic = Session::get('noic');
if (!empty($customer_info)) {
$anggota_info = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/customer/anggota', [
'noic' => $noic
])
->json();
$isAnggotaExist = isset($anggota_info) && !empty($anggota_info) && !isset($anggota_info['message']);
if ($isAnggotaExist && isset($customer_info['tag_anggota']) && $customer_info['tag_anggota'] == 0) {
$showAssignAnggotaBtn = true;
}
}
$getApprovalError = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/getApproval', [
'kodcaw' => $auth_user['cawangan'], 'kodcaw' => $auth_user['cawangan'],
'teller' => $auth_user['name'], 'teller' => $auth_user['name'],
])->json(); ])
->json();
if ($request->tebus_auto_tawarruq_berjaya === 'true') { if ($request->tebus_auto_tawarruq_berjaya === 'true') {
$request->session()->flash('activate_tab', 'SAG_baru'); $request->session()->flash('activate_tab', 'SAG_baru');
} }
return view($customer_page,compact('cawangan_info','api_url','customer_info','bakilelong','rugilelong','min_komoditi','pekerjaan','getApprovalError')); return view($customer_page, compact(
'cawangan_info',
'api_url',
'customer_info',
'bakilelong',
'rugilelong',
'min_komoditi',
'pekerjaan',
'getApprovalError',
'showAssignAnggotaBtn'
));
} }
public function search(Request $request){
// dd($request->all()); public function search(Request $request)
{
$noic = $request->noic; $noic = $request->noic;
$idtype = $request->customerIDType; $idtype = $request->customerIDType;
Session::put('noic', $noic); Session::put('noic', $noic);
$api_url = config('api.url'); $api_url = config('api.url');
$auth_user = Auth::user(); $auth_user = Auth::user();
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$bank = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bank')->json();
$customer_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $noic)->json();
$pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/pekerjaan')->json();
$blacklist = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customer/blacklist',[ // Dapatkan maklumat asas
'nokp' => $noic $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])
])->json(); ->get($api_url . '/api/cawangan/' . $auth_user['cawangan'])
// if($customers_info){ ->json();
// $customer_info = $customers_info[0];
// }else{ $bank = Http::withOptions(['verify' => config('app.api_verify')])
// $customer_info = $customers_info; ->get($api_url . '/api/bank')
// } ->json();
$customer_info = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/customers/' . $noic)
->json();
$pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/pekerjaan')
->json();
$blacklist = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/customer/blacklist', ['nokp' => $noic])
->json();
// Reset session lama
$request->session()->forget('page_reload'); $request->session()->forget('page_reload');
$request->session()->forget('norujukan'); $request->session()->forget('norujukan');
$blacklist_search = false; $blacklist_search = false;
$search = true; $search = true;
// SEMAK STATUS ANGGOTA DAN PELANGGAN
$isAnggota = false;
$isPelanggan = false;
$isNewCustomer = false;
$showAssignAnggotaBtn = false;
$showDaftarPelangganBtn = false;
// Semak dalam sistem anggota
$anggota_info = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url') . '/api/customer/anggota', [
'noic' => $noic
])
->json();
// Semak betul-betul jika ada rekod anggota
if (!empty($anggota_info) && isset($anggota_info['data']) && !empty($anggota_info['data'])) {
$isAnggota = true;
} elseif (isset($anggota_info['noic']) && !empty($anggota_info['noic'])) {
$isAnggota = true;
}
if ($customer_info && isset($customer_info['id'])) {
$isPelanggan = true;
}
// Tentukan butang mana nak paparkan (logik diperbetulkan)
if ($isPelanggan && !$isAnggota) {
// Pelanggan dah berdaftar tapi bukan anggota koperasi
$showAssignAnggotaBtn = true;
} elseif ($isAnggota && !$isPelanggan) {
// Anggota koperasi tapi belum berdaftar sebagai pelanggan
$showDaftarPelangganBtn = true;
} elseif (!$isAnggota && !$isPelanggan) {
// Bukan anggota dan bukan pelanggan (pelanggan baru)
$showDaftarPelangganBtn = true;
$isNewCustomer = true;
}
//Debug log untuk semak nilai sebenar
// Log::info('DEBUG CUSTOMER STATUS', [
// 'noic' => $noic,
// 'isAnggota' => $isAnggota,
// 'isPelanggan' => $isPelanggan,
// 'isNewCustomer' => $isNewCustomer,
// 'showAssignAnggotaBtn' => $showAssignAnggotaBtn,
// 'showDaftarPelangganBtn' => $showDaftarPelangganBtn,
// ]);
if ($customer_info) { if ($customer_info) {
// Ada maklumat pelanggan
if ($blacklist) { if ($blacklist) {
$blacklist_search = true; $blacklist_search = true;
return view('customers.' . $cawangan_info['version'] .'.index',compact('blacklist_search','customer_info','search','noic','cawangan_info','bank','api_url','idtype')); return view('customers.' . $cawangan_info['version'] . '.index', compact(
'blacklist_search',
'customer_info',
'search',
'noic',
'cawangan_info',
'bank',
'api_url',
'idtype',
'isAnggota',
'isPelanggan',
'isNewCustomer',
'showAssignAnggotaBtn',
'showDaftarPelangganBtn',
'auth_user'
));
} else { } else {
// Simpan dalam session & redirect ke paparan info pelanggan
Session::put('customer_info', $customer_info); Session::put('customer_info', $customer_info);
return redirect()->route('customer_info')->with( ['customer_info' => $customer_info,'cawangan_info'=>$cawangan_info,'api_url'=>$api_url]); return redirect()->route('customer_info')->with([
'customer_info' => $customer_info,
'cawangan_info' => $cawangan_info,
'api_url' => $api_url,
'isAnggota' => $isAnggota,
'isPelanggan' => $isPelanggan,
'isNewCustomer' => $isNewCustomer,
'showAssignAnggotaBtn' => $showAssignAnggotaBtn,
'showDaftarPelangganBtn' => $showDaftarPelangganBtn,
'auth_user' => $auth_user
]);
} }
} else { } else {
// Tiada customer dalam sistem
if ($blacklist) { if ($blacklist) {
$blacklist_search = true; $blacklist_search = true;
return view('customers.' . $cawangan_info['version'] . '.index',compact('blacklist_search','customer_info','search','noic','cawangan_info','bank','api_url','idtype','pekerjaan'));
}else{
return view('customers.' . $cawangan_info['version'] . '.index',compact('blacklist_search','customer_info','search','noic','cawangan_info','bank','api_url','idtype','pekerjaan'));
} }
return view('customers.' . $cawangan_info['version'] . '.index', compact(
'blacklist_search',
'customer_info',
'search',
'noic',
'cawangan_info',
'bank',
'api_url',
'idtype',
'pekerjaan',
'isAnggota',
'isPelanggan',
'isNewCustomer',
'showAssignAnggotaBtn',
'showDaftarPelangganBtn',
'auth_user'
));
} }
} }
@@ -180,8 +338,7 @@ class CustomersController extends Controller
if ($latest_customer == null) { if ($latest_customer == null) {
$nosiri_latest = 1; $nosiri_latest = 1;
} } else {
else{
$nosiri_latest = $latest_customer['nosiri'] + 1; $nosiri_latest = $latest_customer['nosiri'] + 1;
} }
@@ -199,7 +356,6 @@ class CustomersController extends Controller
'kodnegeri' => $request->kodnegeri, 'kodnegeri' => $request->kodnegeri,
'user' => auth()->user(), 'user' => auth()->user(),
])->json(); ])->json();
} }
$customer_info = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/customers/create/' . $auth_user['cawangan'], [ $customer_info = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/customers/create/' . $auth_user['cawangan'], [
@@ -238,7 +394,8 @@ class CustomersController extends Controller
return redirect()->route('customer_info')->with(['customer_info' => $customer_info]); return redirect()->route('customer_info')->with(['customer_info' => $customer_info]);
} }
public function getOTP(Request $request){ public function getOTP(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$expired = Carbon::now(); $expired = Carbon::now();
$expired = new Carbon(); $expired = new Carbon();
@@ -253,13 +410,68 @@ class CustomersController extends Controller
$recipient = '6' . $customer['telefon']; $recipient = '6' . $customer['telefon'];
// $recipient = '60189025461'; // $recipient = '60189025461';
//pembinaan token //pembinaan token
function token($length) { function token($length)
{
$characters = array( $characters = array(
"A","B","C","D","E","F","G","H","J","K","L","M", "A",
"N","P","Q","R","S","T","U","V","W","X","Y","Z", "B",
"a","b","c","d","e","f","g","h","i","j","k","m", "C",
"n","o","p","q","r","s","t","u","v","w","x","y","z", "D",
"1","2","3","4","5","6","7","8","9"); "E",
"F",
"G",
"H",
"J",
"K",
"L",
"M",
"N",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
);
if ($length < 0 || $length > count($characters)) return null; if ($length < 0 || $length > count($characters)) return null;
shuffle($characters); shuffle($characters);
return implode("", array_slice($characters, 0, $length)); return implode("", array_slice($characters, 0, $length));
@@ -349,4 +561,17 @@ class CustomersController extends Controller
return ($status); return ($status);
} }
public function assignAnggota(Request $request)
{
$noic = $request->noic;
$response = Http::withOptions(['verify' => config('app.api_verify')])
->put(config('api.url') . '/api/customers/' . $noic . '/assign-anggota');
if ($response->successful()) {
return redirect()->back()->with('success', 'Pelanggan berjaya ditandakan sebagai anggota koperasi.');
} else {
return redirect()->back()->with('error', 'Gagal mengemaskini status anggota. Sila cuba semula.');
}
}
} }
+130 -52
View File
@@ -18,6 +18,8 @@ use Carbon\Carbon;
use App\Http\Controllers\AliranTunaiController; use App\Http\Controllers\AliranTunaiController;
use App\User; use App\User;
use Illuminate\Support\Facades\Log;
class GadaianController extends Controller class GadaianController extends Controller
{ {
public $AliranTunaiController; public $AliranTunaiController;
@@ -26,11 +28,12 @@ class GadaianController extends Controller
public function __construct() public function __construct()
{ {
$this->middleware('auth'); $this->middleware('auth');
$this->customerService = New CustomerService(); $this->customerService = new CustomerService();
$this->AliranTunaiController = New AliranTunaiController(); $this->AliranTunaiController = new AliranTunaiController();
} }
public function index(Request $request){ public function index(Request $request)
{
$api_url = config('api.url'); $api_url = config('api.url');
$current = Carbon::now(); $current = Carbon::now();
@@ -95,7 +98,8 @@ class GadaianController extends Controller
return view('gadaian.' . $cawangan_info['version'] . '.index', compact('customer_info', 'limit_pinjaman_semasa', 'cawangan_info', 'norujukan', 'api_url', 'current')); return view('gadaian.' . $cawangan_info['version'] . '.index', compact('customer_info', 'limit_pinjaman_semasa', 'cawangan_info', 'norujukan', 'api_url', 'current'));
} }
public function edit(Request $request,$norujukan){ public function edit(Request $request, $norujukan)
{
$api_url = config('api.url'); $api_url = config('api.url');
$current = Carbon::now(); $current = Carbon::now();
@@ -122,7 +126,8 @@ class GadaianController extends Controller
return view('gadaian.' . $cawangan_info['version'] . '.edit', compact('customer_info', 'gadaiannorujukan', 'limit_pinjaman_semasa', 'cawangan_info', 'norujukan', 'api_url')); return view('gadaian.' . $cawangan_info['version'] . '.edit', compact('customer_info', 'gadaiannorujukan', 'limit_pinjaman_semasa', 'cawangan_info', 'norujukan', 'api_url'));
} }
public function editmarhun(Request $request){ public function editmarhun(Request $request)
{
$api_url = config('api.url'); $api_url = config('api.url');
@@ -135,7 +140,8 @@ class GadaianController extends Controller
return $gadaiannorujukan; return $gadaiannorujukan;
} }
public function ubahmarhun(Request $request){ public function ubahmarhun(Request $request)
{
$api_url = config('api.url'); $api_url = config('api.url');
@@ -153,10 +159,14 @@ class GadaianController extends Controller
return redirect()->back(); return redirect()->back();
} }
public function store(Request $request){ public function store(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
//$total_nilai_marhun = $request->total_nilai_marhun; //$total_nilai_marhun = $request->total_nilai_marhun;
//need to get total nilai marhun by api get from table marhun //need to get total nilai marhun by api get from table marhun
//Log::info('[DEBUG-GADAI] Request Input Data', $request->all());
$marhun = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/gadai/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai)->json(); $marhun = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/gadai/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai)->json();
$total_nilai_marhun = $marhun; $total_nilai_marhun = $marhun;
$total_nilai_marhun = str_replace(',', '', $total_nilai_marhun); $total_nilai_marhun = str_replace(',', '', $total_nilai_marhun);
@@ -171,6 +181,7 @@ class GadaianController extends Controller
$keuntungan12bulan = $keuntungan_sebln * 12; $keuntungan12bulan = $keuntungan_sebln * 12;
$hargajualan = $request->pinjaman + $keuntungan12bulan; $hargajualan = $request->pinjaman + $keuntungan12bulan;
//Log::info('DEBUG NOKP:' . $request->nokp);
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai, [ $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai, [
'kodcaw' => $auth_user['cawangan'], 'kodcaw' => $auth_user['cawangan'],
'nilaimarhun' => round($total_nilai_marhun, 2), 'nilaimarhun' => round($total_nilai_marhun, 2),
@@ -189,6 +200,9 @@ class GadaianController extends Controller
'ujrah' => $ujrah, 'ujrah' => $ujrah,
'onepercent' => $onepercent, 'onepercent' => $onepercent,
'margin_semasa' => $margin_pinjaman, 'margin_semasa' => $margin_pinjaman,
'nokp' => $request->nokp,
'kadar_rebate' => $request->kadar_rebate,
'rebate' => $request->rebate
])->json(); ])->json();
@@ -210,7 +224,8 @@ class GadaianController extends Controller
return redirect()->route('customer_info'); return redirect()->route('customer_info');
} }
public function editstore(Request $request){ public function editstore(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$total_nilai_marhun = $request->total_nilai_marhun; $total_nilai_marhun = $request->total_nilai_marhun;
@@ -257,7 +272,8 @@ class GadaianController extends Controller
return redirect()->route('customer_info'); return redirect()->route('customer_info');
} }
public function batal(Request $request){ public function batal(Request $request)
{
$norujukan = $request->norujukan; $norujukan = $request->norujukan;
$auth_user = Auth::user(); $auth_user = Auth::user();
@@ -267,7 +283,8 @@ class GadaianController extends Controller
return redirect()->route('customer_info'); return redirect()->route('customer_info');
} }
public function batalmarhun(Request $request){ public function batalmarhun(Request $request)
{
$norujukan = $request->norujukan; $norujukan = $request->norujukan;
$auth_user = Auth::user(); $auth_user = Auth::user();
@@ -278,7 +295,8 @@ class GadaianController extends Controller
// return redirect()->route('customer_info'); // return redirect()->route('customer_info');
} }
public function cetakSAG(Request $request){ public function cetakSAG(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/cetak/' . $auth_user['cawangan'] . '/' . $request->norujukan_modal); $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/cetak/' . $auth_user['cawangan'] . '/' . $request->norujukan_modal);
@@ -286,7 +304,8 @@ class GadaianController extends Controller
return redirect()->route('home'); return redirect()->route('home');
} }
public function serahMarhun(Request $request){ public function serahMarhun(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$norujukan_serah = $request->norujukanpilih; $norujukan_serah = $request->norujukanpilih;
@@ -310,7 +329,8 @@ class GadaianController extends Controller
return redirect()->route('home'); return redirect()->route('home');
} }
public function printSAG(Request $request){ public function printSAG(Request $request)
{
$norujukan = $request->norujukan_modal; $norujukan = $request->norujukan_modal;
$auth_user = Auth::user(); $auth_user = Auth::user();
$auth_username = $auth_user['name']; $auth_username = $auth_user['name'];
@@ -320,13 +340,11 @@ class GadaianController extends Controller
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $norujukan)->json();
$gadai_detail = $gadai[0]; $gadai_detail = $gadai[0];
if(isset($request->jenisprint)) if (isset($request->jenisprint)) {
{
$cetak_sag = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/cetak/' . $auth_user['cawangan'] . '/' . $norujukan, [ $cetak_sag = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/cetak/' . $auth_user['cawangan'] . '/' . $norujukan, [
'penilai' => $auth_user['name'] 'penilai' => $auth_user['name']
]); ]);
} }
$kakitangan = User::where([['role_harian', 'khazanah'], ['cawangan', $kodcaw]])->first(); $kakitangan = User::where([['role_harian', 'khazanah'], ['cawangan', $kodcaw]])->first();
@@ -484,8 +502,7 @@ class GadaianController extends Controller
$transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json(); $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json();
foreach($transaction as $trans) foreach ($transaction as $trans) {
{
$totaltransaction += $trans['duit_masuk']; $totaltransaction += $trans['duit_masuk'];
} }
@@ -528,8 +545,7 @@ class GadaianController extends Controller
$transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json(); $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json();
foreach($transaction as $trans) foreach ($transaction as $trans) {
{
$totaltransaction += $trans['duit_masuk']; $totaltransaction += $trans['duit_masuk'];
} }
@@ -577,8 +593,7 @@ class GadaianController extends Controller
$transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json(); $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json();
foreach($transaction as $trans) foreach ($transaction as $trans) {
{
$totaltransaction += $trans['duit_masuk']; $totaltransaction += $trans['duit_masuk'];
} }
@@ -643,15 +658,12 @@ class GadaianController extends Controller
// dd($penebusan['nowakil']); // dd($penebusan['nowakil']);
if($penebusan['nowakil'] != 0) if ($penebusan['nowakil'] != 0) {
{
$wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json();
if (sizeof($wakil) != 0) if (sizeof($wakil) != 0)
$wakil = $wakil[0]; $wakil = $wakil[0];
} } else {
else
{
$wakil = []; $wakil = [];
} }
@@ -682,9 +694,7 @@ class GadaianController extends Controller
if (sizeof($wakil) != 0) { if (sizeof($wakil) != 0) {
$wakil = $wakil[0]; $wakil = $wakil[0];
} }
} } else {
else
{
$wakil = []; $wakil = [];
} }
@@ -720,17 +730,14 @@ class GadaianController extends Controller
// dd($penebusan['nowakil']); // dd($penebusan['nowakil']);
$surat_wakil = []; $surat_wakil = [];
if($penebusan['nowakil'] != 0) if ($penebusan['nowakil'] != 0) {
{
$wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json();
if (sizeof($wakil) != 0) { if (sizeof($wakil) != 0) {
$wakil = $wakil[0]; $wakil = $wakil[0];
$surat_wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getsuratwakil/' . $auth_user['cawangan'] . '/' . $id)->json(); $surat_wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getsuratwakil/' . $auth_user['cawangan'] . '/' . $id)->json();
} }
} } else {
else
{
$wakil = []; $wakil = [];
} }
@@ -747,28 +754,23 @@ class GadaianController extends Controller
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $request->norujukan)->json(); $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $request->norujukan)->json();
if(sizeof($gadai) > 0) if (sizeof($gadai) > 0) {
{
$history = $gadai[0][0]['historygadaian']; $history = $gadai[0][0]['historygadaian'];
$dahtebus = $gadai[0][0]['sttebus']; $dahtebus = $gadai[0][0]['sttebus'];
$norujukan = $gadai[0][0]['norujukan']; $norujukan = $gadai[0][0]['norujukan'];
} }
$count = 0; $count = 0;
$arrayhist = []; $arrayhist = [];
while($history != "0" && $history != '' || $dahtebus == 'T') while ($history != "0" && $history != '' || $dahtebus == 'T') {
{ if ($history != "0" && $history != '') {
if($history != "0" && $history != '')
{
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $history)->json(); $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $history)->json();
$tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], [ $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], [
"norujukan" => $history "norujukan" => $history
])->json(); ])->json();
if(sizeof($gadai) > 0) if (sizeof($gadai) > 0) {
{
if ($history == $gadai[0][0]['historygadaian']) if ($history == $gadai[0][0]['historygadaian'])
$history = 0; $history = 0;
else { else {
@@ -778,9 +780,7 @@ class GadaianController extends Controller
} }
$count++; $count++;
} else {
}
else{
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $norujukan)->json(); $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $norujukan)->json();
$tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], [ $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], [
"norujukan" => $norujukan "norujukan" => $norujukan
@@ -810,12 +810,9 @@ class GadaianController extends Controller
"norujukan" => $norujukan "norujukan" => $norujukan
])->json(); ])->json();
if(sizeof($kelulusan) > 0) if (sizeof($kelulusan) > 0) {
{
$kelulusan = $kelulusan['benar']; $kelulusan = $kelulusan['benar'];
} } else {
else
{
$kelulusan = ''; $kelulusan = '';
} }
@@ -869,6 +866,87 @@ class GadaianController extends Controller
return response()->json($createlulus, 201); return response()->json($createlulus, 201);
} }
public function createkelulusanAnggota(Request $request)
{
$auth_user = Auth::user();
$api_url = config('api.url');
$verify_ssl = config('app.api_verify');
// 🔸 Validasi asas
$request->validate([
'norujukan' => 'required|string',
'noic' => 'required|string',
'komen' => 'required|string',
'teller' => 'required|string',
]);
$norujukan = $request->norujukan;
$current = Carbon::now();
// 1️⃣ Dapatkan info cawangan
$cawangan_info = Http::withOptions(['verify' => $verify_ssl])
->get("{$api_url}/api/cawangan/{$auth_user->cawangan}")
->json();
if (empty($cawangan_info)) {
return response()->json(['message' => 'Maklumat cawangan tidak ditemui.'], 404);
}
// 2️⃣ Dapatkan siri terkini (supaya sistem tahu kelulusan ke berapa)
$getsiri = Http::withOptions(['verify' => $verify_ssl])
->get("{$api_url}/api/ListLatestLulus/{$auth_user->cawangan}/{$norujukan}")
->json();
$siri = isset($getsiri['siri']) ? ((int) $getsiri['siri'] + 1) : 1;
$createlulus = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/CreateLulus/' . $auth_user['cawangan'] . '/' . $norujukan, [
'mohon' => $request->mohon,
'teller' => $auth_user['name'],
'komen' => $request->komen,
'status' => $request->status,
'ansuran' => $request->ansuran,
'tagoperasi' => ($request->tagoperasi) ? $request->tagoperasi : 0,
])->json();
// 3️⃣ Hantar permohonan ke API utama
$payload = [
'komen' => $request->komen,
'dategadai' => $current->toDateString(),
'bilgadai' => 1,
'siri' => $siri,
'status' => 'TUNGGU KELULUSAN OPERASI',
'teller' => $request->teller,
'peloperasi' => 'operasi',
'mohon' => 'Assign Anggota',
'noic' => $request->noic,
'jenistebus' => 'A', // “A” = anggota
'tagoperasi' => 1, // 1 = tunggu kelulusan operasi
];
$createLulus = Http::withOptions(['verify' => $verify_ssl])
->post("{$api_url}/api/CreateKelulusanAnggota/{$auth_user->cawangan}/{$norujukan}/roles/operasi", $payload)
->json();
// 4️⃣ Jika API gagal
if (isset($createLulus['error']) || !$createLulus) {
return response()->json([
'message' => 'Gagal menghantar permohonan kelulusan operasi.',
'error' => $createLulus['error'] ?? $createLulus
], 500);
}
// 5️⃣ Trigger event untuk notifikasi operasi
event(new StatusLiked($auth_user->cawangan, $auth_user->name));
// 6️⃣ Hantar respon berjaya
return response()->json([
'message' => 'Permohonan kelulusan operasi (Assign Anggota) berjaya dihantar.',
'siri' => $siri,
'api_response' => $createLulus,
], 201);
}
///END KELULUSAN/// ///END KELULUSAN///
} }
+11 -4
View File
@@ -2459,6 +2459,7 @@ class KhazanahController extends Controller
$penghutangkaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/PenghutangKakitangan/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $penghutangkaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/PenghutangKakitangan/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$untungrugi = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/UntungRugiCalculation/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $untungrugi = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/UntungRugiCalculation/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$bayaranpendahuluan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/BayaranPendahuluan/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $bayaranpendahuluan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/BayaranPendahuluan/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$rebetpromo = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/RebetPromoCalculation/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
//Tanggungan Semasa //Tanggungan Semasa
$panjar = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/CalculationPanjar/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $panjar = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/CalculationPanjar/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
@@ -2469,6 +2470,8 @@ class KhazanahController extends Controller
$cajperkhidmatan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cajperkhidmatanterkumpul/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $cajperkhidmatan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cajperkhidmatanterkumpul/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$hapuskira = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/CalculationHapusKira/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $hapuskira = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/CalculationHapusKira/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$xtra = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/Xtra/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json(); $xtra = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/Xtra/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$rebetpromo = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/RebetPromoCalculation/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$pelarasanrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/PelarasanRebate/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
//TunaiDitangan Sementara Upah //TunaiDitangan Sementara Upah
@@ -2520,6 +2523,8 @@ class KhazanahController extends Controller
if($imbangduga['pindahkekpkb'] > 0) array_push($hartasemasa,['glcode' => '1000/090','descpt' => 'Pindah Ke KPKB(IP)', 'amaun' => $imbangduga['pindahkekpkb']]); if($imbangduga['pindahkekpkb'] > 0) array_push($hartasemasa,['glcode' => '1000/090','descpt' => 'Pindah Ke KPKB(IP)', 'amaun' => $imbangduga['pindahkekpkb']]);
if($peruntukanhapuskira > 0) array_push($hartasemasa,['glcode' => '1000/015','descpt' => 'Peruntukan Hapus Kira', 'amaun' => $peruntukanhapuskira]); if($peruntukanhapuskira > 0) array_push($hartasemasa,['glcode' => '1000/015','descpt' => 'Peruntukan Hapus Kira', 'amaun' => $peruntukanhapuskira]);
if($belian1stop > 0) array_push($hartasemasa,['glcode' => '8000/501','descpt' => 'Belian 1 Stop', 'amaun' => $belian1stop]); if($belian1stop > 0) array_push($hartasemasa,['glcode' => '8000/501','descpt' => 'Belian 1 Stop', 'amaun' => $belian1stop]);
if($rebetpromo > 0) array_push($hartasemasa,['glcode' => '5000/242','descpt' => 'Diskaun Promosi', 'amaun' => ($rebetpromo * -1)]);
$totalhartasemasa = 0; $totalhartasemasa = 0;
foreach($hartasemasa as $index => $hs) foreach($hartasemasa as $index => $hs)
@@ -2551,6 +2556,8 @@ class KhazanahController extends Controller
if($utgterkumpulxtra > 0) array_push($tanggungansemasa,['glcode' => '7000/201','descpt' => 'Untung/Rugi Terkumpul Xtra','amaun' => $utgterkumpulxtra]); if($utgterkumpulxtra > 0) array_push($tanggungansemasa,['glcode' => '7000/201','descpt' => 'Untung/Rugi Terkumpul Xtra','amaun' => $utgterkumpulxtra]);
if($jualan1stop > 0) array_push($tanggungansemasa,['glcode' => '9000/501','descpt' => 'Jualan 1 Stop','amaun' => $jualan1stop]); if($jualan1stop > 0) array_push($tanggungansemasa,['glcode' => '9000/501','descpt' => 'Jualan 1 Stop','amaun' => $jualan1stop]);
if($hapuskira > 0) array_push($tanggungansemasa,['glcode' => '3000/011','descpt' => 'Hapus Kira','amaun' => -$hapuskira]); if($hapuskira > 0) array_push($tanggungansemasa,['glcode' => '3000/011','descpt' => 'Hapus Kira','amaun' => -$hapuskira]);
if($rebetpromo > 0) array_push($tanggungansemasa,['glcode' => '5000/242','descpt' => 'Diskaun Promosi', 'amaun' => ($rebetpromo * -1)]);
if($pelarasanrebate > 0) array_push($tanggungansemasa,['glcode' => '5000/243','descpt' => 'Pelarasan Rebate', 'amaun' => ($pelarasanrebate * -1)]);
$totaltanggungansemasa = 0; $totaltanggungansemasa = 0;
foreach($tanggungansemasa as $index => $ts) foreach($tanggungansemasa as $index => $ts)
@@ -2856,7 +2863,7 @@ class KhazanahController extends Controller
event(new NotifikasiAGH($auth_user['cawangan'],'Tak boleh generate dah kerana sudah digenerate dah.','error',$auth_user['name'])); event(new NotifikasiAGH($auth_user['cawangan'],'Tak boleh generate dah kerana sudah digenerate dah.','error',$auth_user['name']));
$daftar = 400; $daftar = 400;
}else{ }else{
$daftarpolis = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/polis/create/',[ $daftarpolis = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/polis/create',[
'kodcaw' =>$auth_user['cawangan'], 'kodcaw' =>$auth_user['cawangan'],
'norujukan' => $request->norujukanhidden, 'norujukan' => $request->norujukanhidden,
@@ -3933,9 +3940,9 @@ class KhazanahController extends Controller
$totalhartasemasa = $array_ig->sum_harta; $totalhartasemasa = $array_ig->sum_harta;
$totaltanggungansemasa = $array_ig->sum_tanggungan; $totaltanggungansemasa = $array_ig->sum_tanggungan;
if($this->floatvalue(number_format($totalhartasemasa,2)) != $this->floatvalue(number_format($totaltanggungansemasa,2))){ // if($this->floatvalue(number_format($totalhartasemasa,2)) != $this->floatvalue(number_format($totaltanggungansemasa,2))){
return redirect()->route('laporan.imbangdugaakru')->with('error','Imbangduga tidak sama. Sila berhubung dengan pihak IT'); // return redirect()->route('laporan.imbangdugaakru')->with('error','Imbangduga tidak sama. Sila berhubung dengan pihak IT');
} // }
return view('print.laporan_imbangduga-akru',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','tanggungansemasa','totalhartasemasa','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail')); return view('print.laporan_imbangduga-akru',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','tanggungansemasa','totalhartasemasa','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
} }
+169 -36
View File
@@ -7,6 +7,7 @@ namespace App\Http\Controllers;
use App\Events\OperasiNotice; use App\Events\OperasiNotice;
use App\Events\StatusLiked; use App\Events\StatusLiked;
use App\Events\NotifikasiKelulusan; use App\Events\NotifikasiKelulusan;
use App\Events\NotifikasiAnggota;
use App\Events\Dashboard\KomoditiNotify; use App\Events\Dashboard\KomoditiNotify;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@@ -25,7 +26,8 @@ class OperasiController extends Controller
$this->middleware('auth'); $this->middleware('auth');
} }
public function kelulusan(Request $request){ public function kelulusan(Request $request)
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$api_url = config('api.url'); $api_url = config('api.url');
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json();
@@ -35,15 +37,12 @@ class OperasiController extends Controller
$arraykelulusan = []; $arraykelulusan = [];
foreach($kelulusan as $index=>$lulus) foreach ($kelulusan as $index => $lulus) {
{ foreach ($lulus['kelulusanall'] as $index => $kel) {
foreach($lulus['kelulusanall'] as $index=>$kel)
{
array_push($arraykelulusan, ["cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'], "namateller" => $kel['teller'], 'siri' => $kel['siri'], "norujukan" => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'], 'komen' => $kel['komen'], 'nilaimarhun' => ($kel['nilaimarhun'] ?? '-'), 'berat' => ($kel['berat'] ?? '-'), 'margin' => ($kel['margin'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['pelulus']]); array_push($arraykelulusan, ["cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'], "namateller" => $kel['teller'], 'siri' => $kel['siri'], "norujukan" => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'], 'komen' => $kel['komen'], 'nilaimarhun' => ($kel['nilaimarhun'] ?? '-'), 'berat' => ($kel['berat'] ?? '-'), 'margin' => ($kel['margin'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['pelulus']]);
} }
foreach($lulus['kelulusanMohonid'] as $index=>$mohon) foreach ($lulus['kelulusanMohonid'] as $index => $mohon) {
{
array_push($arraykelulusan, ["mohonid" => true, "ansuran" => $mohon['ansuran'], "cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'], "namateller" => $mohon['teller'], 'recno' => $mohon['recno'], "norujukan" => $mohon['norujukan'], 'pinjaman' => $mohon['pinjaman'], 'komen' => $mohon['katalaluan'], 'nilaimarhun' => ($mohon['nilaimarhun'] ?? '-'), 'berat' => ($mohon['berat'] ?? '-'), 'margin' => ($mohon['margin'] ?? '-'), 'status' => ($mohon['mohon'] ?? '-')]); array_push($arraykelulusan, ["mohonid" => true, "ansuran" => $mohon['ansuran'], "cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'], "namateller" => $mohon['teller'], 'recno' => $mohon['recno'], "norujukan" => $mohon['norujukan'], 'pinjaman' => $mohon['pinjaman'], 'komen' => $mohon['katalaluan'], 'nilaimarhun' => ($mohon['nilaimarhun'] ?? '-'), 'berat' => ($mohon['berat'] ?? '-'), 'margin' => ($mohon['margin'] ?? '-'), 'status' => ($mohon['mohon'] ?? '-')]);
} }
} }
@@ -63,12 +62,9 @@ class OperasiController extends Controller
$kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/SenaraiDahLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/SenaraiDahLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json();
if(sizeof($kelulusan) > 0) if (sizeof($kelulusan) > 0) {
{
$kelulusan = $kelulusan[0]['masalulus']; $kelulusan = $kelulusan[0]['masalulus'];
} } else {
else
{
$kelulusan = ''; $kelulusan = '';
} }
@@ -84,8 +80,7 @@ class OperasiController extends Controller
$norujukan = $request->norujukan; $norujukan = $request->norujukan;
if($request->pembatalan == null) if ($request->pembatalan == null) {
{
if (!$request->taglulus) { if (!$request->taglulus) {
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan, [ $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan, [
"komen" => $request->komenkelulusan, "komen" => $request->komenkelulusan,
@@ -108,13 +103,10 @@ class OperasiController extends Controller
} }
if($updatelulus) if ($updatelulus) {
{
event(new NotifikasiKelulusan($norujukan, "lulus", $request->siri, $request->komenkelulusan, $request->teller)); event(new NotifikasiKelulusan($norujukan, "lulus", $request->siri, $request->komenkelulusan, $request->teller));
} }
} } else {
else
{
if (!$request->taglulus) { if (!$request->taglulus) {
$updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan, [ $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan, [
"komen" => $request->komenkelulusan, "komen" => $request->komenkelulusan,
@@ -136,8 +128,7 @@ class OperasiController extends Controller
])->json(); ])->json();
} }
if($updatelulus) if ($updatelulus) {
{
event(new NotifikasiKelulusan($norujukan, "batal", $request->siri, $request->komenkelulusan, $request->teller)); event(new NotifikasiKelulusan($norujukan, "batal", $request->siri, $request->komenkelulusan, $request->teller));
} }
} }
@@ -148,6 +139,89 @@ class OperasiController extends Controller
return response()->json($updatelulus, 200); return response()->json($updatelulus, 200);
} }
public function updatekelulusananggota(Request $request)
{
$auth_user = Auth::user();
$api_url = config('api.url');
// Data asas
$nokp = $request->nokp;
$kodcaw = $request->kodcaw;
$komen = $request->komenkelulusan;
$namaoperasi = $request->namaoperasi;
$taglulus = $request->taglulus; // contoh: 'Y' = lulus, 'N' = batal
// 1️⃣ Tentukan status kelulusan
$status = ($taglulus == 'Y') ? 1 : 2; // 1 = Lulus, 2 = Batal/Tolak
try {
// 2️⃣ Panggil API baru — ikut route baru dengan {kodcaw}
$endpoint = $api_url . '/api/UpdateKelulusanAnggota/' . $kodcaw;
$payload = [
'nokp' => $nokp,
'komenkelulusan' => $komen,
'namaoperasi' => $namaoperasi,
'sahkan' => $status
];
Log::info('Menghantar permintaan ke API UpdateKelulusanAnggota', [
'endpoint' => $endpoint,
'payload' => $payload
]);
$response = Http::withOptions(['verify' => config('app.api_verify')])
->put($endpoint, $payload);
$updatelulus = $response->json();
// 3️⃣ Log hasil respon API
Log::info('Respon dari API UpdateKelulusanAnggota', [
'status' => $response->status(),
'body' => $updatelulus
]);
// 4️⃣ Jika berjaya, cipta event notifikasi
if ($response->successful() && $updatelulus && isset($updatelulus['success']) && $updatelulus['success'] === true) {
// $jenis = ($status == 1) ? 'lulus' : 'batal';
// event(new NotifikasiAnggota($nokp, $jenis, null, $komen, $namaoperasi));
$statusText = ($status == 1) ? 'DILULUSKAN' : 'DITOLAK';
event(new NotifikasiAnggota($nokp, $statusText, $komen, $namaoperasi));
Log::info('Event NotifikasiAnggota dispatched', [
'nokp' => $nokp,
'komen' => $komen,
'namaoperasi' => $namaoperasi
]);
} else {
Log::warning('Gagal kemas kini kelulusan anggota', [
'nokp' => $nokp,
'kodcaw' => $kodcaw,
'response' => $updatelulus
]);
}
return response()->json($updatelulus, $response->status());
} catch (\Exception $e) {
Log::error('Ralat UpdateKelulusanAnggota (frontend)', [
'message' => $e->getMessage(),
'line' => $e->getLine()
]);
return response()->json([
'success' => false,
'message' => 'Ralat semasa menghantar kelulusan anggota.',
'error' => $e->getMessage()
], 500);
}
}
public function createkelulusan(Request $request) public function createkelulusan(Request $request)
{ {
$auth_user = Auth::user(); $auth_user = Auth::user();
@@ -162,8 +236,7 @@ class OperasiController extends Controller
$getsiri = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListLatestLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); $getsiri = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListLatestLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json();
if(isset($getsiri['siri'])) if (isset($getsiri['siri'])) {
{
$siri = $getsiri['siri'] + 1; $siri = $getsiri['siri'] + 1;
} else { } else {
$siri = 1; $siri = 1;
@@ -190,18 +263,70 @@ class OperasiController extends Controller
return response()->json($siri, 201); return response()->json($siri, 201);
} }
public function createkelulusanAnggota(Request $request)
{
try {
$auth_user = Auth::user();
$api_url = config('api.url');
$current = Carbon::now();
Log::info('createkelulusanAnggota', $request->all());
// Dapatkan maklumat cawangan
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/cawangan/' . $auth_user['cawangan'])
->json();
// Generate siri baru
$getsiri = Http::withOptions(['verify' => config('app.api_verify')])
->get($api_url . '/api/ListLatestLulus/' . $auth_user['cawangan'] . '/anggota')
->json();
$siri = isset($getsiri['siri']) ? $getsiri['siri'] + 1 : 1;
// Hantar ke API
$createlulus = Http::withOptions(['verify' => config('app.api_verify')])
->post($api_url . '/api/CreateKelulusanAnggota/' . $auth_user['cawangan'] . '/roles/operasi', [
'komen' => $request->komen,
'date_mohon' => $current->toDateString(),
'siri' => $siri,
'nokp' => $request->nokp,
'teller' => $request->teller,
'peloperasi' => 'operasi'
])
->json();
event(new StatusLiked($auth_user['cawangan'], $auth_user['name']));
return response()->json([
'success' => true,
'message' => 'Permohonan kelulusan anggota berjaya dihantar.',
'siri' => $siri,
'data' => $createlulus,
], 201);
Log::info('🛰️ API CreateKelulusanAnggota Response:', [
'status' => $response->status(),
'body' => $response->body(),
]);
} catch (\Throwable $th) {
Log::error('❌ createkelulusanAnggota error: ' . $th->getMessage());
return response()->json([
'success' => false,
'message' => $th->getMessage(),
], 500);
}
}
public function mintakatalaluansemula(Request $request) public function mintakatalaluansemula(Request $request)
{ {
if(Hash::check($request->passsemula, Auth::user()->password)) if (Hash::check($request->passsemula, Auth::user()->password)) {
{
return "True"; return "True";
} } else {
else
{
return "False"; return "False";
} }
} }
public function parameter() public function parameter()
@@ -223,7 +348,8 @@ class OperasiController extends Controller
return view('operasi.hargaemas', compact('cawangan_info', 'api_url', 'harga_emas')); return view('operasi.hargaemas', compact('cawangan_info', 'api_url', 'harga_emas'));
} }
public function margin(){ public function margin()
{
$auth_user = Auth::user(); $auth_user = Auth::user();
$api_url = config('api.url'); $api_url = config('api.url');
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json();
@@ -243,10 +369,8 @@ class OperasiController extends Controller
$kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListOperasiKelulusan/')->json(); $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListOperasiKelulusan/')->json();
foreach($kelulusan as $index=>$k) foreach ($kelulusan as $index => $k) {
{ foreach ($k['kelulusanall'] as $index1 => $kel) {
foreach($k['kelulusanall'] as $index1=>$kel)
{
$komen = explode("|", $kel['komen']); $komen = explode("|", $kel['komen']);
$results = array_search("", $komen, true); $results = array_search("", $komen, true);
@@ -255,12 +379,10 @@ class OperasiController extends Controller
} }
array_push($arraykelulusan, ['norujukan' => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'], 'nilaimarhun' => ($komen[1] ?? $kel['nilaimarhun'] ?? '-'), 'berat' => ($komen[2] ?? $kel['berat'] ?? '-'), 'margin' => ($komen[3] ?? $kel['margin'] ?? '-'), 'komen' => ($komen[0] ?? $kel['komen'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['operasi'],]); array_push($arraykelulusan, ['norujukan' => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'], 'nilaimarhun' => ($komen[1] ?? $kel['nilaimarhun'] ?? '-'), 'berat' => ($komen[2] ?? $kel['berat'] ?? '-'), 'margin' => ($komen[3] ?? $kel['margin'] ?? '-'), 'komen' => ($komen[0] ?? $kel['komen'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['operasi'],]);
} }
} }
return view('operasi.rekodtelahlulus', compact('cawangan_info', 'api_url', 'arraykelulusan')); return view('operasi.rekodtelahlulus', compact('cawangan_info', 'api_url', 'arraykelulusan'));
} }
public function notifyKomoditi() public function notifyKomoditi()
@@ -268,4 +390,15 @@ class OperasiController extends Controller
$auth_user = Auth::user(); $auth_user = Auth::user();
event(new KomoditiNotify('lulus', $auth_user['cawangan'])); event(new KomoditiNotify('lulus', $auth_user['cawangan']));
} }
public function kelulusananggota(Request $request)
{
$auth_user = Auth::user();
$api_url = config('api.url');
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json();
$arraykelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/list/approval/anggota')->json();
return view('operasi.kelulusan_anggota', compact('cawangan_info', 'api_url', 'arraykelulusan'));
}
} }
+241 -166
View File
@@ -278,167 +278,6 @@ class PenebusanController extends Controller
$auth_user = Auth::user(); $auth_user = Auth::user();
////////////////////////
/// UPDATE TEBUS API////
///////////////////////
$updatetebus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/updatetebus/'. $auth_user['cawangan'] .'/' . $request->norujukan,[
'nopelanggan' => $request->nopelanggan,
'jenistebus' => $request->jenistebus,
'jbg' => $request->jbg,
'kadarupah' => $request->kadarupah,
'nilai_marhun' => $request->nilai_marhun,
'pinjaman' => $request->pinjaman_lama,
'ansuran' => $request->ansuran,
'nowakil' => $request->nowakil,
'addpinjaman'=> $request->addpinjaman,
'bakipinjaman' => $request->bakipinjaman,
'bakiupah' => $request->bakiupah,
'historygadaian' => $request->historygadaian,
'marhun' => $request->marhun,
'jenisbayarantebus' => $request->jenisbayarantebus,
'jeniskeuntungan' => $request->jeniskeuntungan,
'teller' => $request->teller,
"duitpelanggan" => $request->bayaran,
"bakipelanggan" => $request->bakipelanggan,
])->json();
if($updatetebus == 'duplicate'){
return response()->json('duplicate');
}
//////////////////////
/// MAKING NEW SAG////
/////////////////////
$gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/'. $auth_user['cawangan'] . '/' . $current->toDateString())->json();
if($gadai_transaction){
$new_sirig = $gadai_transaction['sirig'] + 1;
}else{
$new_sirig = 1;
}
$new_transaction = sprintf("%04d",$new_sirig);
$norujukanbaru = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction;
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/gadai/'.$auth_user['cawangan'],[
'norujukan' => $norujukanbaru,
'nopelanggan' => $request->nopelanggan,
'nokp' => $request->noic,
'sirig' => $new_sirig
]);
///////////////////////////
/// MARHUN UPDATE TABLE////
//////////////////////////
$arraymarhunbaru = [];
$marhunsediada = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/'. $request->norujukan)->json();
$marhunyangdiambil = $marhunsediada[0];
foreach($marhunyangdiambil as $index=>$marhunloop)
{
$karatbaru = str_replace('.','-',$marhunloop['karat']);
$hargabaru = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/harga_emas/'. $karatbaru)->json();
$nilaimarhun = (floatval($hargabaru['harga']) * floatval($marhunloop['berat']));
array_push($arraymarhunbaru, ["bil" => $marhunloop['bil'],"tag_permata" => $marhunloop['tag_permata'],"berat_batu_permata" => $marhunloop['berat_batu_permata'],"marhun" => $marhunloop['marhun'],"nota" => $marhunloop['nota'],"karat" => $marhunloop['karat'], "berat" => $marhunloop['berat'], "harga" => $hargabaru['harga'], "n_marhun" => $nilaimarhun]);
}
foreach($arraymarhunbaru as $array1){
$updatemarhun = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/marhun/'. $auth_user['cawangan'],[
'norujukan' => $norujukanbaru,
'marhun' => $array1['marhun'],
'nota' => $array1['nota'],
'karat' => $array1['karat'],
'berat_emas' => $array1['berat'],
'harga' => $array1['harga'],
'tag_permata' => $array1['tag_permata'],
'berat_batu_permata' => $array1['berat_batu_permata'],
'kuantiti' => $array1['bil']
])->json();
}
//////////////////////
////Update SAG BARU///
/////////////////////
$total_nilai_marhun = $request->nilai_marhun;
$margin_pinjaman = $request->pinjaman / $total_nilai_marhun;
$kadarupah = $request->kadarkeuntungan * 100;
$onepercent = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/onepercent',[
'pembiayaan' => $request->pinjaman,
'nilaimarhun' => $total_nilai_marhun,
'kadarujrah' => $request->kadarkeuntungan,
'margin' => ($margin_pinjaman*100),
'kodcaw' => Auth::user()->cawangan
])->json();
$keuntungan_sebln = $onepercent['keuntungan'];
$keuntungan_sebln = str_replace(',','',$keuntungan_sebln);
$keuntungan6bulan = $keuntungan_sebln * 6;
$keuntungan12bulan = $keuntungan_sebln * 12;
$hargajualan = $request->pinjaman + $keuntungan12bulan;
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/'. $auth_user['cawangan'] .'/' . $norujukanbaru,[
'kodcaw' => $auth_user['cawangan'],
'nilaimarhun' => round($total_nilai_marhun, 2),
'berat' => round($request->total_berat, 2),
'pinjaman' => round($request->pinjaman, 2),
'kadarupah' => round($kadarupah, 2),
'marhun' => $request->marhun,
'percentpinj' => $margin_pinjaman,
'teller'=> $auth_user['name'],
'upah6' => $keuntungan6bulan,
'upah12' => $keuntungan12bulan,
'hargajualan' => $hargajualan,
'kuantiti_marhun' => $request->kuantiti_marhun
])->json();
$komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/komuditi/transaksi',[
'unit_komuditi' => round($request->pinjaman, 2),
'norujukan' => $norujukanbaru,
'kodcaw' => $auth_user['cawangan'],
'teller' => $auth_user['name']
]);
////////////////////////////
////Update History Gadaian///
////////////////////////////
$updatehistorygadaian = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/updatehistory/'. $auth_user['cawangan'] .'/' . $norujukanbaru,[
'historygadaian' => $request->norujukan,
'jenistebus' => $request->jenistebus,
])->json();
event(new TebusNotify('lulus',Auth::user()->cawangan));
event(new GadaiNotify('lulus',Auth::user()->cawangan));
$this->AliranTunaiController->alirantunaiTebus($request);
}
public function tambahpinjaman_latest(Request $request)
{
$api_url = config('api.url');
$current = Carbon::now();
$current = new Carbon();
$curent_year = substr($current->year,2,2);
$curent_month = sprintf("%02d", $current->month);
$current_day = sprintf("%02d", $current->day);
$auth_user = Auth::user();
//////////////////////// ////////////////////////
/// UPDATE TEBUS API//// /// UPDATE TEBUS API////
/////////////////////// ///////////////////////
@@ -509,16 +348,252 @@ class PenebusanController extends Controller
'totalbayaran' => $request->totalbayaran, 'totalbayaran' => $request->totalbayaran,
"duitpelanggan" => $request->bayaran, "duitpelanggan" => $request->bayaran,
"bakipelanggan" => $request->bakipelanggan, "bakipelanggan" => $request->bakipelanggan,
"noic" => $request->noic,
"jenisAT" => $request->jenisAT,
])->json(); ])->json();
if($updatetebus['result'] == 'success'){
if($updatetebus == 'duplicate'){
return response()->json('duplicate');
}
//////////////////////
/// MAKING NEW SAG////
/////////////////////
$gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/'. $auth_user['cawangan'] . '/' . $current->toDateString())->json();
if($gadai_transaction){
$new_sirig = $gadai_transaction['sirig'] + 1;
}else{
$new_sirig = 1;
}
$new_transaction = sprintf("%04d",$new_sirig);
$norujukanbaru = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction;
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/gadai/'.$auth_user['cawangan'],[
'norujukan' => $norujukanbaru,
'nopelanggan' => $request->nopelanggan,
'nokp' => $request->noic,
'sirig' => $new_sirig
]);
///////////////////////////
/// MARHUN UPDATE TABLE////
//////////////////////////
$arraymarhunbaru = [];
$marhunsediada = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/'. $request->norujukan)->json();
$marhunyangdiambil = $marhunsediada[0];
foreach($marhunyangdiambil as $index=>$marhunloop)
{
$karatbaru = str_replace('.','-',$marhunloop['karat']);
$hargabaru = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/harga_emas/'. $karatbaru)->json();
$harga = ($request->jenisAT == 'hargalama') ? $marhunloop['harga'] : $hargabaru['harga'];
$nilaimarhun = (floatval($harga) * floatval($marhunloop['berat']));
array_push($arraymarhunbaru, ["bil" => $marhunloop['bil'],"tag_permata" => $marhunloop['tag_permata'],"berat_batu_permata" => $marhunloop['berat_batu_permata'],"marhun" => $marhunloop['marhun'],"nota" => $marhunloop['nota'],"karat" => $marhunloop['karat'], "berat" => $marhunloop['berat'], "harga" => $harga, "n_marhun" => $nilaimarhun]);
}
foreach($arraymarhunbaru as $array1){
$updatemarhun = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/marhun/'. $auth_user['cawangan'],[
'norujukan' => $norujukanbaru,
'marhun' => $array1['marhun'],
'nota' => $array1['nota'],
'karat' => $array1['karat'],
'berat_emas' => $array1['berat'],
'harga' => $array1['harga'],
'nilai_marhun' => $array1['n_marhun'],
'tag_permata' => $array1['tag_permata'],
'berat_batu_permata' => $array1['berat_batu_permata'],
'jenisAT' => $request->jenisAT,
'kuantiti' => $array1['bil']
])->json();
}
//////////////////////
////Update SAG BARU///
/////////////////////
$total_nilai_marhun = $request->total_nilai_marhun;
$margin_pinjaman = ($request->pinjaman / $total_nilai_marhun);
$onepercent = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/onepercent',[
'pembiayaan' => $request->pinjaman,
'nilaimarhun' => $total_nilai_marhun,
'kadarujrah' => $request->kadarkeuntungan,
'margin' => ($margin_pinjaman*100),
'kodcaw' => Auth::user()->cawangan
])->json();
$keuntungan_sebln = $onepercent['keuntungan'];
$keuntungan_sebln = str_replace(',','',$keuntungan_sebln);
$kadarupah = $request->kadarkeuntungan * 100;
$keuntungan6bulan = $keuntungan_sebln * 6;
$keuntungan12bulan = $keuntungan_sebln * 12;
$hargajualan = $request->pinjaman + $keuntungan12bulan;
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/'. $auth_user['cawangan'] .'/' . $norujukanbaru,[
'kodcaw' => $auth_user['cawangan'],
'nilaimarhun' => round($total_nilai_marhun, 2),
'berat' => round($request->total_berat, 2),
'pinjaman' => round($request->pinjaman, 2),
'kadarupah' => round($kadarupah, 2),
'marhun' => $request->marhun_detail,
'percentpinj' => $margin_pinjaman,
'teller'=> $auth_user['name'],
'upah6' => $keuntungan6bulan,
'upah12' => $keuntungan12bulan,
'hargajualan' => $hargajualan,
'kuantiti_marhun' => $request->kuantiti_marhun,
]);
$komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/komuditi/transaksi',[
'unit_komuditi' => round($request->pinjaman, 2),
'norujukan' => $norujukanbaru,
'kodcaw' => $auth_user['cawangan'],
'teller' => $auth_user['name']
]);
////////////////////////////
////Update History Gadaian///
////////////////////////////
$updatehistorygadaian = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/updatehistory/'. $auth_user['cawangan'] .'/' . $norujukanbaru,[
'historygadaian' => $request->norujukan,
'jenistebus' => $request->jenistebus,
])->json();
if($updatetebus == 'duplicate'){
return response()->json('duplicate');
}
//////////////////////
/// MAKING NEW SAG////
/////////////////////
$gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/'. $auth_user['cawangan'] . '/' . $current->toDateString())->json();
if($gadai_transaction){
$new_sirig = $gadai_transaction['sirig'] + 1;
}else{
$new_sirig = 1;
}
$new_transaction = sprintf("%04d",$new_sirig);
$norujukanbaru = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction;
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/gadai/'.$auth_user['cawangan'],[
'norujukan' => $norujukanbaru,
'nopelanggan' => $request->nopelanggan,
'nokp' => $request->noic,
'sirig' => $new_sirig
]);
///////////////////////////
/// MARHUN UPDATE TABLE////
//////////////////////////
$arraymarhunbaru = [];
$marhunsediada = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/'. $request->norujukan)->json();
$marhunyangdiambil = $marhunsediada[0];
foreach($marhunyangdiambil as $index=>$marhunloop)
{
$karatbaru = str_replace('.','-',$marhunloop['karat']);
$hargabaru = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/harga_emas/'. $karatbaru)->json();
$harga = ($request->jenisAT == 'hargalama') ? $marhunloop['harga'] : $hargabaru['harga'];
$nilaimarhun = (floatval($harga) * floatval($marhunloop['berat']));
array_push($arraymarhunbaru, ["bil" => $marhunloop['bil'],"tag_permata" => $marhunloop['tag_permata'],"berat_batu_permata" => $marhunloop['berat_batu_permata'],"marhun" => $marhunloop['marhun'],"nota" => $marhunloop['nota'],"karat" => $marhunloop['karat'], "berat" => $marhunloop['berat'], "harga" => $harga, "n_marhun" => $nilaimarhun]);
}
foreach($arraymarhunbaru as $array1){
$updatemarhun = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/marhun/'. $auth_user['cawangan'],[
'norujukan' => $norujukanbaru,
'marhun' => $array1['marhun'],
'nota' => $array1['nota'],
'karat' => $array1['karat'],
'berat_emas' => $array1['berat'],
'harga' => $array1['harga'],
'nilai_marhun' => $array1['n_marhun'],
'tag_permata' => $array1['tag_permata'],
'berat_batu_permata' => $array1['berat_batu_permata'],
'jenisAT' => $request->jenisAT,
'kuantiti' => $array1['bil']
])->json();
}
//////////////////////
////Update SAG BARU///
/////////////////////
$total_nilai_marhun = $request->total_nilai_marhun;
$margin_pinjaman = ($request->pinjaman / $total_nilai_marhun);
$onepercent = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/onepercent',[
'pembiayaan' => $request->pinjaman,
'nilaimarhun' => $total_nilai_marhun,
'kadarujrah' => $request->kadarkeuntungan,
'margin' => ($margin_pinjaman*100),
'kodcaw' => Auth::user()->cawangan
])->json();
$keuntungan_sebln = $onepercent['keuntungan'];
$keuntungan_sebln = str_replace(',','',$keuntungan_sebln);
$kadarupah = $request->kadarkeuntungan * 100;
$keuntungan6bulan = $keuntungan_sebln * 6;
$keuntungan12bulan = $keuntungan_sebln * 12;
$hargajualan = $request->pinjaman + $keuntungan12bulan;
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/'. $auth_user['cawangan'] .'/' . $norujukanbaru,[
'kodcaw' => $auth_user['cawangan'],
'nilaimarhun' => round($total_nilai_marhun, 2),
'berat' => round($request->total_berat, 2),
'pinjaman' => round($request->pinjaman, 2),
'kadarupah' => round($kadarupah, 2),
'marhun' => $request->marhun_detail,
'percentpinj' => $margin_pinjaman,
'teller'=> $auth_user['name'],
'upah6' => $keuntungan6bulan,
'upah12' => $keuntungan12bulan,
'hargajualan' => $hargajualan,
'kuantiti_marhun' => $request->kuantiti_marhun,
]);
$komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/komuditi/transaksi',[
'unit_komuditi' => round($request->pinjaman, 2),
'norujukan' => $norujukanbaru,
'kodcaw' => $auth_user['cawangan'],
'teller' => $auth_user['name']
]);
////////////////////////////
////Update History Gadaian///
////////////////////////////
$updatehistorygadaian = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/updatehistory/'. $auth_user['cawangan'] .'/' . $norujukanbaru,[
'historygadaian' => $request->norujukan,
'jenistebus' => $request->jenistebus,
])->json();
$alirantunai = new AliranTunaiController(); $alirantunai = new AliranTunaiController();
event(new TebusNotify('lulus',Auth::user()->cawangan)); event(new TebusNotify('lulus',Auth::user()->cawangan));
event(new GadaiNotify('lulus',Auth::user()->cawangan)); event(new GadaiNotify('lulus',Auth::user()->cawangan));
$alirantunai->alirantunaiTebusAutoTawarruq($request); $alirantunai->alirantunaiTebusAutoTawarruq($request);
}
return response()->json($updatetebus['result'],200); return response()->json($updatemarhun,200);
} }
public function tebusseparuh(Request $request) public function tebusseparuh(Request $request)
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace App\Imports;
use App\Anggota;
use Maatwebsite\Excel\Concerns\ToModel;
class AnggotaImport implements ToModel
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new Anggota([
//
'noic' => $row['noic'],
'nama' => $row['nama'],
'status' => $row['status'] ?? 'aktif',
]);
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
return [ return [
'url' => env('API_URL'), 'url' => env('API_URL'),
'url_koop' => env('API_URL_KOOP','http://localhost:8000'), 'url_koop' => env('API_URL_KOOP','https://apiujrah.erahn.com.my'),
'url_pkb' => env('API_URL_PKB','http://localhost:8000'), 'url_pkb' => env('API_URL_PKB','http://localhost:8000'),
]; ];
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

+63 -17
View File
@@ -72,11 +72,26 @@
</div> </div>
@if($search == true && $blacklist_search == false) @if($search == true && $blacklist_search == false)
<div class="text-center mt-3"> <div class="text-center mt-3">
<button type="button" style="margin:auto" class="btn btn-primary" onclick="newcustomer()">
{{-- Jika anggota tapi belum daftar pelanggan --}}
@if(isset($showDaftarPelangganBtn) && $showDaftarPelangganBtn)
<button type="button" style="margin:auto" class="btn btn-success" onclick="newcustomer()">
Daftar Pelanggan Daftar Pelanggan
</button> </button>
@endif
{{-- Jika pelanggan dah ada tapi belum anggota --}}
@if(isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn)
<form action="{{ route('customers.assignAnggota') }}" method="POST" style="display:inline-block;">
@csrf
<input type="hidden" name="noic" value="{{ $noic }}">
<button type="submit" class="btn btn-primary">Assign sebagai Anggota</button>
</form>
@endif
</div> </div>
@endif @endif
</div> </div>
</div> </div>
<!-- Modal No KP --> <!-- Modal No KP -->
@@ -478,42 +493,73 @@
</div> </div>
</div> </div>
</div> </div>
<script> <script>
var api_url = "<?php echo $api_url ?>"; var api_url = @json($api_url ?? '');
var search = "<?php echo $search ?>"; var search = @json($search ?? false);
var type_id = "<?php echo $idtype ?>"; var type_id = @json($idtype ?? '');
var blacklist_search = "<?php echo $blacklist_search ?>"; var isAnggota = @json($isAnggota ?? false);
var isPelanggan = @json($isPelanggan ?? false);
var blacklist_search = @json($blacklist_search ?? false);
var showAssignAnggotaBtn = @json($showAssignAnggotaBtn ?? false);
var showDaftarPelangganBtn = @json($showDaftarPelangganBtn ?? false);
$(document).ready(function(){ $(document).ready(function(){
// Datepicker
$('#passport_tarikh_lahir').datepicker({ $('#passport_tarikh_lahir').datepicker({
format: 'dd/mm/yyyy', format: 'dd/mm/yyyy',
endDate: new Date() endDate: new Date()
}); });
var noic = $('#noic').val();
identifyIC(noic);
if(search == true){ var noic = $('#noic').val();
if(blacklist_search == true){ if (typeof identifyIC === 'function') {
identifyIC(noic);
}
// Debug: Papar semua nilai dalam console
console.log({
search,
blacklist_search,
showAssignAnggotaBtn,
showDaftarPelangganBtn
});
// Logik amaran SweetAlert
if (search === true) {
if (blacklist_search === true) {
Swal.fire({ Swal.fire({
icon: 'warning', icon: 'warning',
title: 'Amaran!', title: 'Amaran!',
text: 'Pelanggan telah disenarai hitamkan dari Pembiayaan' text: 'Pelanggan telah disenarai hitamkan dari Pembiayaan.'
}); });
event.preventDefault(); }
return false; else if (isAnggota && !isPelanggan) {
}else{ Swal.fire({
icon: 'info',
title: 'Anggota Belum Didaftarkan!',
text: 'Pelanggan ini adalah anggota koperasi tetapi belum berdaftar sebagai pelanggan.'
});
}
else if (isPelanggan && !isAnggota) {
Swal.fire({
icon: 'info',
title: 'Pelanggan Bukan Anggota!',
text: 'Pelanggan ini berdaftar tetapi belum menjadi anggota koperasi.'
});
}
else if (!isAnggota && !isPelanggan) {
Swal.fire({ Swal.fire({
icon: 'info', icon: 'info',
title: 'Pelanggan Tiada Dalam Rekod!', title: 'Pelanggan Tiada Dalam Rekod!',
text: 'Sila Daftar Pelanggan' text: 'Sila Daftar Pelanggan.'
}); });
event.preventDefault();
return false;
} }
} }
}); });
function calculatePassportAge(){ function calculatePassportAge(){
var passport_lahir = $('#passport_tarikh_lahir').val(); var passport_lahir = $('#passport_tarikh_lahir').val();
var split_date = passport_lahir.split('/'); var split_date = passport_lahir.split('/');
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -876,7 +876,7 @@
'harga' : harga_edit, 'harga' : harga_edit,
'n_marhun' : nilai_marhun_edit, 'n_marhun' : nilai_marhun_edit,
'marhun' : marhun_edit, 'marhun' : marhun_edit,
// 'nota' : nota, 'nota' : nota,
'tag_permata' : tagpermata_edit, 'tag_permata' : tagpermata_edit,
'berat_batu_permata' : beratpermata_edit, 'berat_batu_permata' : beratpermata_edit,
"teller": "{{ Auth::user()->name }}", "teller": "{{ Auth::user()->name }}",
@@ -29,6 +29,7 @@
<div class="form-group row col-12"> <div class="form-group row col-12">
<input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}"> <input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}">
<input type="hidden" name="nokp" id="nokp" value="{{ $customer_info['kpbaru'] }}"> <input type="hidden" name="nokp" id="nokp" value="{{ $customer_info['kpbaru'] }}">
<input type="hidden" name="tag_anggota" id="tag_anggota" value="{{ $customer_info['tag_anggota'] ?? 0 }}">
</div> </div>
<div class="col-12 mb-2"> <div class="col-12 mb-2">
@@ -180,6 +181,17 @@
</div> </div>
</diV> </diV>
</div> </div>
<div class="col-4">
<div class="form-group row">
<div class="col-md-6">
Kadar Rebet
</div>
<div class="col-md-6">
<input type="text" class="form-control" readonly name="rebate" id="rebate">
<input type="text" class="form-control" readonly name="kadar_rebate" id="kadar_rebate">
</div>
</div>
</div>
<div class="col-12"> <div class="col-12">
<input type="text" name="norujukan_gadai" id="norujukan_gadai" value="{{ $norujukan }}" hidden> <input type="text" name="norujukan_gadai" id="norujukan_gadai" value="{{ $norujukan }}" hidden>
<input type="text" name="marhun_detail" id="marhun_detail" value="" hidden> <input type="text" name="marhun_detail" id="marhun_detail" value="" hidden>
@@ -187,6 +199,7 @@
<input type="text" name="kadarkeuntungan" id="kadarkeuntungan" value="" hidden> <input type="text" name="kadarkeuntungan" id="kadarkeuntungan" value="" hidden>
<input type="text" name="kuantiti_marhun" id="kuantiti_marhun" value="" hidden> <input type="text" name="kuantiti_marhun" id="kuantiti_marhun" value="" hidden>
<input type="text" name="total_nilai_marhun" id="total_nilai_marhun" value="" hidden> <input type="text" name="total_nilai_marhun" id="total_nilai_marhun" value="" hidden>
<input type="text" name="nokp" id="nokp" value="{{ !empty($customer_info['kpbaru']) ? $customer_info['kpbaru'] : ($customer_info['kplama'] ?? '') }}" hidden>
<a href="{{ route('gadai.batal',['norujukan'=>$norujukan]) }}" class="float-right btn btn-danger mr-2">Batal</a> <a href="{{ route('gadai.batal',['norujukan'=>$norujukan]) }}" class="float-right btn btn-danger mr-2">Batal</a>
<input type="submit" name="terima_gadai" id="terima_gadai" class="float-right btn btn-primary mr-2" value="Terima"> <input type="submit" name="terima_gadai" id="terima_gadai" class="float-right btn btn-primary mr-2" value="Terima">
</div> </div>
@@ -586,11 +599,17 @@
url: api_url + '/api/kadarujrah', url: api_url + '/api/kadarujrah',
async:false, async:false,
data:{ data:{
'nokp': $('#nokp').val(),
'nilaimarhun' : total_nilai_marhun, 'nilaimarhun' : total_nilai_marhun,
'kodcaw' : kodcaw_ujrah 'kodcaw' : kodcaw_ujrah
}, },
success:function(data){ success:function(data){
kadarupah = data; kadarupah = data;
// Jika anggota (tag_anggota = 1), kadar ujrah dipaksa 0.00
if(Number($('#tag_anggota').val()) === 1){
kadarupah = 0;
}
} }
}); });
@@ -625,6 +644,9 @@
$('#pinjaman').on('input',function(){ $('#pinjaman').on('input',function(){
var pinjaman = Number(this.value); var pinjaman = Number(this.value);
var nilaimarhun = Number($('#jumlah_nilai_marhun').val()); var nilaimarhun = Number($('#jumlah_nilai_marhun').val());
var nokp = $('#nokp').val();
//console.log('DEBUG NOKP:', nokp, kadarupah);
// var keuntungan_sebulan = pinjaman * kadarupah; // var keuntungan_sebulan = pinjaman * kadarupah;
// var keuntungan_6bln = keuntungan_sebulan * 6; // var keuntungan_6bln = keuntungan_sebulan * 6;
@@ -638,6 +660,7 @@
url: api_url + '/api/onepercent', url: api_url + '/api/onepercent',
async:false, async:false,
data:{ data:{
'nokp': nokp,
'nilaimarhun' : total_nilai_marhun, 'nilaimarhun' : total_nilai_marhun,
'pembiayaan' : pinjaman, 'pembiayaan' : pinjaman,
'kadarujrah' : kadarupah, 'kadarujrah' : kadarupah,
@@ -651,12 +674,35 @@
var keuntungan_sebulan = getRoundedMethod(array_keuntungan['keuntungan']); var keuntungan_sebulan = getRoundedMethod(array_keuntungan['keuntungan']);
var keuntungan_6bln = getRoundedMethod(keuntungan_sebulan * 6); var keuntungan_6bln = getRoundedMethod(keuntungan_sebulan * 6);
var ujrah = getRoundedMethod(array_keuntungan['ujrah']);
var onepercent = getRoundedMethod(array_keuntungan['onepercent']);
// **Rebate Calculation**
let rebate, kadar_rebate;
if (pinjaman < 20000) {
rebate = keuntungan_sebulan * 0.05;
kadar_rebate = 5;
} else if (pinjaman >= 20000 && pinjaman <= 50000) {
rebate = keuntungan_sebulan * 0.10;
kadar_rebate = 10;
} else if (pinjaman > 50000 && pinjaman <= 100000) {
rebate = keuntungan_sebulan * 0.15;
kadar_rebate = 15;
} else {
rebate = keuntungan_sebulan * 0.20;
kadar_rebate = 20;
}
rebate = getRoundedMethod(rebate); // ✅ Round rebate before displaying
// **Display values**
$('.span-pinjaman').text(formatter.format(percent_pinjaman.toFixed(2)) + ' %'); $('.span-pinjaman').text(formatter.format(percent_pinjaman.toFixed(2)) + ' %');
$('#keuntungan_sebulan').val(formatter.format(keuntungan_sebulan.toFixed(2))); $('#keuntungan_sebulan').val(formatter.format(keuntungan_sebulan.toFixed(2)));
$('#keuntungan_6bln').val(formatter.format(keuntungan_6bln.toFixed(2))); $('#keuntungan_6bln').val(formatter.format(keuntungan_6bln.toFixed(2)));
$('#ujrah').val(formatter.format(getRoundedMethod(array_keuntungan['ujrah']).toFixed(2))); $('#ujrah').val(formatter.format(getRoundedMethod(array_keuntungan['ujrah']).toFixed(2)));
$('#onepercent').val(formatter.format(getRoundedMethod(array_keuntungan['onepercent']).toFixed(2))); $('#onepercent').val(formatter.format(getRoundedMethod(array_keuntungan['onepercent']).toFixed(2)));
$('#rebate').val(formatter.format(rebate.toFixed(2))); // Correctly displaying rebate
$('#kadar_rebate').val(formatter.format(kadar_rebate.toFixed(2)) + ' %');
}); });
@@ -274,11 +274,9 @@
<div class="row"> <div class="row">
<a href="{{ route('lelong') }}" class="btn btn-info btn-lg btn-block mb-3">Lelong</a> <a href="{{ route('lelong') }}" class="btn btn-info btn-lg btn-block mb-3">Lelong</a>
</div> </div>
@if(Auth::user()->cawangan == '011237')
<div class="row"> <div class="row">
<a href="{{ url('panjar') }}" class="btn btn-info btn-lg btn-block mb-3">Perbelanjaan</a> <a href="{{ url('panjar') }}" class="btn btn-info btn-lg btn-block mb-3">Perbelanjaan</a>
</div> </div>
@endif
<div class="row"> <div class="row">
<a href="{{ url('alirantunai') }}" class="btn btn-info btn-lg btn-block mb-3">Aliran <a href="{{ url('alirantunai') }}" class="btn btn-info btn-lg btn-block mb-3">Aliran
Tunai</a> Tunai</a>
@@ -3,7 +3,7 @@
@section('content') @section('content')
<div class="container"> <div class="container">
<div class="row justify-content-center mt-5"> <div class="row justify-content-center mt-5">
<div class="col-md-8"> <div class="col-md-12">
<div class="card"> <div class="card">
<nav aria-label="breadcrumb"> <nav aria-label="breadcrumb">
@@ -14,6 +14,7 @@
</nav> </nav>
<div class="card-body text-center"> <div class="card-body text-center">
<a href="{{ route('operasi.kelulusananggota') }}" class="btn btn-info btn-lg">Kelulusan Anggota</a>
<a href="{{ route('operasi.kelulusan') }}" class="btn btn-info btn-lg">Kelulusan</a> <a href="{{ route('operasi.kelulusan') }}" class="btn btn-info btn-lg">Kelulusan</a>
<a href="{{ route('daftar.kakitangan') }}" class="btn btn-info btn-lg">Kakitangan</a> <a href="{{ route('daftar.kakitangan') }}" class="btn btn-info btn-lg">Kakitangan</a>
<a href="{{ route('parameter') }}" class="btn btn-info btn-lg">Parameter</a> <a href="{{ route('parameter') }}" class="btn btn-info btn-lg">Parameter</a>
@@ -189,6 +189,10 @@
<a href="{{ route('laporan.notisperingatan') }}" <a href="{{ route('laporan.notisperingatan') }}"
class="btn btn-dark btn-lg btn-block mb-3 custom-btn">Notis Peringatan</a> class="btn btn-dark btn-lg btn-block mb-3 custom-btn">Notis Peringatan</a>
</div> </div>
<div class="row">
<a href="{{ route('laporan.imbangduga') }}"
class="btn btn-dark btn-lg btn-block mb-3 custom-btn">Imbang Duga</a>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -0,0 +1,518 @@
@extends('layouts.app_operasi')
@section('content')
<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 Anggota</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>Cawangan</th>
<th>No Kad Pengenalan</th>
<th>Nama Anggota</th>
<th>Status</th>
<th>Tarikh/Masa</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
@foreach ($arraykelulusan as $index => $k)
@foreach ($k['kelulusanall'] as $indexapp => $approval)
@php
$status = strtolower($approval['status'] ?? '');
$statusLabel = $approval['status'] ?? '—';
// Gunakan strpos() supaya compatible dengan PHP 7.x juga
if (
strpos($status, 'lulus') !== false ||
strpos($status, 'diluluskan') !== false ||
strpos($status, 'selesai') !== false
) {
$statusStyle = 'background-color:#7ee4b8; color:white;';
} elseif (
strpos($status, 'tolak') !== false ||
strpos($status, 'batal') !== false
) {
$statusStyle = 'background-color:#f58c8c; color:white;';
} elseif (
strpos($status, 'menunggu') !== false ||
strpos($status, 'pending') !== false
) {
$statusStyle = 'background-color:#ffd166; color:#333;';
} else {
$statusStyle = 'background-color:#d1d5db; color:#333;';
}
@endphp
<tr>
<td>{{ $k['cawangan'] }}</td>
<td>{{ $approval['nokp'] }}</td>
<td>{{ $approval['nama'] ?? '-' }}</td>
<td>
<span class="px-3 py-2 d-inline-block text-center fw-bold"
style="{{ $statusStyle }} border-radius:8px; min-width:130px; display:inline-block;">
{{ $statusLabel }}
</span>
</td>
<td>{{ \Carbon\Carbon::parse($approval['created_at'])->timezone('Asia/Kuala_Lumpur')->format('d/m/Y h:i A') }}
</td>
<td>
@if ($statusLabel != 'DILULUSKAN')
<!-- Button Lulus -->
<button class="btn btn-success btn-sm me-2"
onclick="updatelulusAnggota(this)"
data-nokp="{{ $approval['nokp'] }}"
data-kodcaw="{{ $k['cawangankod'] }}" data-taglulus="Y"
title="Lulus Anggota">
<i class="fas fa-thumbs-up"></i>
</button>
<!-- Button Tolak -->
<button class="btn btn-danger btn-sm" onclick="updatelulusAnggota(this)"
data-nokp="{{ $approval['nokp'] }}"
data-kodcaw="{{ $k['cawangankod'] }}" data-taglulus="N"
title="Batal / Tolak Kelulusan">
<i class="fas fa-thumbs-down"></i>
</button>
@endif
</td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script>
var tablekelulusan = $('#table-kelulusan').DataTable({
"scrollX": true
});
let api = "{{ config('api.url') }}";
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
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;
}
$('#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/customers/' + nokp,
dataType: 'json',
success: function(datagadaiwithnokp) {
let nama = datagadaiwithnokp.nama;
$('#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);
}
});
}
});
});
async function updatelulus(e) {
console.log(e);
return;
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;
}
// 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);
}
});
}
async function updatelulusAnggota(e) {
// 1️⃣ Semak katalaluan semula
const {
value: katalaluan
} = await Swal.fire({
title: 'Masukkan Katalaluan Semula',
input: 'password',
inputPlaceholder: 'Katalaluan',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: true
});
if (!katalaluan) return;
let sah = true;
await $.ajax({
method: 'get',
url: "{{ route('operasi.getmintasemulakelulusan') }}",
async: false,
data: {
passsemula: katalaluan
},
success: function(data) {
if (data == "False") sah = false;
}
});
if (!sah) {
Swal.fire({
icon: 'error',
title: 'Pengesahan Katalaluan Tidak Berjaya'
});
return false;
}
// 2️⃣ Dapatkan komen kelulusan
const {
value: komenkelulusan
} = await Swal.fire({
title: 'Masukkan Komen Kelulusan',
input: 'text',
inputPlaceholder: 'Contoh: Anggota layak diluluskan',
confirmButtonText: 'Hantar',
showCancelButton: false,
allowOutsideClick: false
});
// 3️⃣ Ambil data daripada butang / row
let nokp = $(e).data('nokp'); // data-nokp perlu ada dalam butang
let kodcaw = $(e).data('kodcaw');
let siri = $(e).data('siri');
let taglulus = $(e).data('taglulus');
let namaoperasi = "{{ Auth::user()->name }}";
// 4️⃣ Hantar ke backend (route khas kelulusan anggota)
$.ajax({
method: 'put',
url: "{{ route('operasi.updatekelulusananggota') }}",
data: {
"_token": "{{ csrf_token() }}",
"nokp": nokp,
"kodcaw": kodcaw,
"siri": siri,
"taglulus": taglulus,
"komenkelulusan": komenkelulusan,
"namaoperasi": namaoperasi
},
success: function(data) {
Swal.fire({
icon: 'success',
title: 'Kelulusan Anggota Berjaya'
}).then(function() {
location.reload();
});
},
error: function(xhr, status, error) {
alert("Ralat: " + 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);
}
});
}
</script>
@endsection
@@ -208,6 +208,15 @@
</div> </div>
</div> </div>
{{-- <div class="form-group row">
<div class="col-4">
JUMLAH PERLU DIBAYAR SELEPAS DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahselepasdiskaun" class="form-control" readonly/>
</div>
</div> --}}
<div> <div>
<fieldset class="scheduler-border"> <fieldset class="scheduler-border">
<div class="form-group row" id="divduitPelanggan"> <div class="form-group row" id="divduitPelanggan">
@@ -313,6 +322,16 @@
</div> </div>
</div> </div>
<div class="form-group row" id="divtelahdibayar">
<div class="col-4">
REBET DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahDiskaun" value="{{ number_format($gadai['diskaun'],2) }}" class="form-control" readonly/>
</div>
</div>
</div> </div>
</div> </div>
<div id="jenisS" class="col-12 form-group row"> <div id="jenisS" class="col-12 form-group row">
@@ -328,6 +347,14 @@
</div> </div>
</div> </div>
<div class="form-group row">
<div class="col-4">
JUMLAH PERLU DIBAYAR SELEPAS DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="perludibayarAkhir" class="form-control" readonly/>
</div>
</div>
<div> <div>
<fieldset class="scheduler-border"> <fieldset class="scheduler-border">
@@ -428,6 +455,15 @@
</div> </div>
</div> </div>
<div class="form-group row" id="divtelahdibayar">
<div class="col-4">
REBET DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahDiskaun" value="{{ number_format($gadai['diskaun'],2) }}" class="form-control" readonly/>
</div>
</div>
<div id="divbakipinjaman"> <div id="divbakipinjaman">
<div class="form-group row"> <div class="form-group row">
<div class="col-4"> <div class="col-4">
@@ -563,6 +599,16 @@
</div> </div>
</div> </div>
<div class="form-group row" id="divtelahdibayar">
<div class="col-4">
REBET DISKAUN (RM)
</div>
<div class="col-8">
<input type="text" id="jumlahDiskaun" value="{{ number_format($gadai['diskaun'],2) }}" class="form-control" readonly/>
</div>
</div>
</div> </div>
</div> </div>
@@ -1395,8 +1441,17 @@
dataType: 'json', dataType: 'json',
async:false, async:false,
success:function(harga_tebus){ success:function(harga_tebus){
// // Ambil nilai diskaun
// let diskaun = parseFloat($('#jumlahDiskaun').val().replace(/,/g, '')) || 0;
// // Tolak diskaun terus dari harga tebus
// let harga_tebus_akhir = parseFloat(harga_tebus) - diskaun;
// // Set balik ke input 'PERLU DIBAYAR'
$('#perludibayar').val(formatter.format(harga_tebus)); $('#perludibayar').val(formatter.format(harga_tebus));
} }
}); });
// Telah dibayar // Telah dibayar
@@ -1617,6 +1672,13 @@
} }
} }
function kiraPerluDibayarSelepasDiskaun() {
var perluDibayar = parseFloat(document.getElementById("perludibayar").value.replace(/,/g, '')) || 0;
var diskaun = parseFloat(document.getElementById("jumlahDiskaun").value.replace(/,/g, '')) || 0;
var akhir = perluDibayar - diskaun;
document.getElementById("perludibayarAkhir").value = akhir.toFixed(2);
}
function bayartawarruq(e){ function bayartawarruq(e){
var keuntungan = parseFloat($('#jumlahupah').val().replace(/[^0-9.-]+/g,"")); var keuntungan = parseFloat($('#jumlahupah').val().replace(/[^0-9.-]+/g,""));
var bayaran = parseFloat(e.value); var bayaran = parseFloat(e.value);
@@ -1835,6 +1897,25 @@
jeniskeuntungan = "asal"; jeniskeuntungan = "asal";
} }
//kira rebet diskaun
// let diskaun
// if (pinjaman < 20000) {
// diskaun = jumupah * 0.05;
// } else if (pinjaman >= 20000 && pinjaman <= 50000) {
// diskaun = jumupah * 0.10;
// } else if (pinjaman > 50000 && pinjaman <= 100000) {
// diskaun = jumupah * 0.15;
// } else {
// diskaun = jumupah * 0.20;
// }
//$('#jumdiskaun').val(formatter.format(diskaun.toFixed(2)));
var nopelanggan = "{{ $gadai['nopelanggan'] }}"; var nopelanggan = "{{ $gadai['nopelanggan'] }}";
var jenistebus = $('#sltjenistebus').find(":selected").val(); var jenistebus = $('#sltjenistebus').find(":selected").val();
var jbg = "{{ $gadai['tempoh'] }}"; var jbg = "{{ $gadai['tempoh'] }}";
@@ -1850,6 +1931,7 @@
var nowakil = nw; var nowakil = nw;
var duitpelanggan = $('#duitPelanggan').val().replace(/[^0-9.-]+/g,""); var duitpelanggan = $('#duitPelanggan').val().replace(/[^0-9.-]+/g,"");
var bakipelanggan = $('#bakiPelanggan').val().replace(/[^0-9.-]+/g,""); var bakipelanggan = $('#bakiPelanggan').val().replace(/[^0-9.-]+/g,"");
//var diskaun = $('#diskaun').val().replace(/[^0-9.-]+/g,"");
if(Number(duitpelanggan) < Number(bakipinjaman)){ if(Number(duitpelanggan) < Number(bakipinjaman)){
@@ -1878,6 +1960,7 @@
"addpinjaman" : addpinjaman, "addpinjaman" : addpinjaman,
"bakipinjaman" : bakipinjaman, "bakipinjaman" : bakipinjaman,
"bakiupah" : bakiupah, "bakiupah" : bakiupah,
//"diskaun": diskaun,
"historygadaian" : historygadaian, "historygadaian" : historygadaian,
"marhun" : marhun, "marhun" : marhun,
"nowakil" : nowakil, "nowakil" : nowakil,
@@ -1979,10 +2062,27 @@
let hadbayaransuran = (parseFloat("{{ $gadai['nilaimarhun']}}") * 0.1); let hadbayaransuran = (parseFloat("{{ $gadai['nilaimarhun']}}") * 0.1);
//kira rebet diskaun
// let diskaun
// if (pinjaman < 20000) {
// diskaun = jumupah * 0.05;
// } else if (pinjaman >= 20000 && pinjaman <= 50000) {
// diskaun = jumupah * 0.10;
// } else if (pinjaman > 50000 && pinjaman <= 100000) {
// diskaun = jumupah * 0.15;
// } else {
// diskaun = jumupah * 0.20;
// }
var bayar = Number(parseFloat($('#bayaran').val().replace(/[^0-9.-]+/g,"")).toFixed(2)); var bayar = Number(parseFloat($('#bayaran').val().replace(/[^0-9.-]+/g,"")).toFixed(2));
var bakipinjam = parseFloat("{{ $gadai['bakipjm'] }}") - hadbayaransuran + jumupah; var bakipinjam = parseFloat("{{ $gadai['bakipjm'] }}") - hadbayaransuran + jumupah;
var duitpelanggan = parseFloat($('#duitPelanggan').val().replace(/[^0-9.-]+/g,"")); var duitpelanggan = parseFloat($('#duitPelanggan').val().replace(/[^0-9.-]+/g,""));
var bakipelanggan = parseFloat($('#bakiPelanggan').val().replace(/[^0-9.-]+/g,"")); var bakipelanggan = parseFloat($('#bakiPelanggan').val().replace(/[^0-9.-]+/g,""));
//var diskaun = parseFloat($('#diskaun').val().replace(/[^0-9.-]+/g,""));
if(isNaN(duitpelanggan)) duitpelanggan = 0; if(isNaN(duitpelanggan)) duitpelanggan = 0;
@@ -230,6 +230,7 @@
<th>Lain-Lain Caj (RM)</th> <th>Lain-Lain Caj (RM)</th>
<th>Keuntungan 1% (RM)</th> <th>Keuntungan 1% (RM)</th>
<th>Keuntungan</th> <th>Keuntungan</th>
<th>Diskaun Rebet</th>
<th>Peratus (%)</th> <th>Peratus (%)</th>
</tr> </tr>
@php @php
@@ -301,6 +302,7 @@
<td>{{ number_format($item['ujrah']*12,2) }}</td> <td>{{ number_format($item['ujrah']*12,2) }}</td>
<td>{{ number_format($item['onepercent']*12,2) }}</td> <td>{{ number_format($item['onepercent']*12,2) }}</td>
<td>{{ number_format($item['upah12'],2) }}</td> <td>{{ number_format($item['upah12'],2) }}</td>
<td>{{ number_format($item['diskaun'],2) }}</td>
<td>{{ $item['percentpinj'] }}</td> <td>{{ $item['percentpinj'] }}</td>
</tr> </tr>
@php $counter++; @endphp @php $counter++; @endphp
@@ -201,7 +201,7 @@
@foreach($senaraipelanggan as $index=>$item) @foreach($senaraipelanggan as $index=>$item)
<tr> <tr>
<td>{{ $counter }}</td> <td>{{ $counter }}</td>
<td>{{$item['kpbaru']}}</td> <td>{{ !empty($item['kpbaru']) ? $item['kpbaru'] : $item['kplama'] }}</td>
<td>{{ $item['nama']}}</td> <td>{{ $item['nama']}}</td>
</tr> </tr>
@@ -241,6 +241,7 @@
<th>B.Pembiayaan(RM)</th> <th>B.Pembiayaan(RM)</th>
<th>Lain-Lain Caj (RM)</th> <th>Lain-Lain Caj (RM)</th>
<th>Untung 1% (RM)</th> <th>Untung 1% (RM)</th>
<th>Diskaun Rebet (RM)</th>
<th>Pendapatan(RM)</th> <th>Pendapatan(RM)</th>
<th>Bayaran(RM)</th> <th>Bayaran(RM)</th>
<th>Jumlah(RM)</th> <th>Jumlah(RM)</th>
@@ -254,6 +255,7 @@
$totalupah = 0; $totalupah = 0;
$totalujrah = 0; $totalujrah = 0;
$totalonepercent = 0; $totalonepercent = 0;
$totaldiskaunrebate = 0;
@endphp @endphp
@foreach ($tebus as $index => $item) @foreach ($tebus as $index => $item)
@@ -266,6 +268,7 @@
$totalnm += $item['nilaimarhun']; $totalnm += $item['nilaimarhun'];
$totalujrah += $item['ujrah']; $totalujrah += $item['ujrah'];
$totalonepercent += $item['onepercent']; $totalonepercent += $item['onepercent'];
$totaldiskaunrebate += $item['diskaun_rebate'];
@endphp @endphp
@@ -282,6 +285,7 @@
$totalbayaranteller = 0; $totalbayaranteller = 0;
$totalujrahteller = 0; $totalujrahteller = 0;
$totalonepercentteller = 0; $totalonepercentteller = 0;
$totaldiskaunrebateteller = 0;
@endphp @endphp
@endif @endif
@else @else
@@ -297,6 +301,7 @@
$totaljumlahteller = 0; $totaljumlahteller = 0;
$totalujrahteller = 0; $totalujrahteller = 0;
$totalonepercentteller = 0; $totalonepercentteller = 0;
$totaldiskaunrebateteller = 0;
@endphp @endphp
@endif @endif
@@ -337,6 +342,7 @@
<td>{{ number_format($item['ujrah'], 2) }}</td> <td>{{ number_format($item['ujrah'], 2) }}</td>
<td>{{ number_format($item['onepercent'], 2) }}</td> <td>{{ number_format($item['onepercent'], 2) }}</td>
{{-- <td>{{ number_format($item['bakiupah'], 2) }}</td> --}} {{-- <td>{{ number_format($item['bakiupah'], 2) }}</td> --}}
<td>{{ number_format($item['diskaun_rebate'], 2) }}</td>
<td> <td>
@php @php
if ($item['tagbaru']) { if ($item['tagbaru']) {
@@ -371,6 +377,7 @@
$totalbayaranteller += $item['bakipjm']; // $totalbayaranteller += $item['bakipjm']; //
$totalujrahteller += $item['ujrah']; $totalujrahteller += $item['ujrah'];
$totalonepercentteller += $item['onepercent']; $totalonepercentteller += $item['onepercent'];
$totaldiskaunrebateteller += $item['diskaun_rebate'];
@endphp @endphp
@php @php
@@ -388,6 +395,7 @@
<td><b>{{ number_format($totalpinjamanteller, 2) }} </b></td> <td><b>{{ number_format($totalpinjamanteller, 2) }} </b></td>
<td><b>{{ number_format($totalujrahteller, 2) }} </b></td> <td><b>{{ number_format($totalujrahteller, 2) }} </b></td>
<td><b>{{ number_format($totalonepercentteller, 2) }} </b></td> <td><b>{{ number_format($totalonepercentteller, 2) }} </b></td>
<td><b>{{ number_format($totaldiskaunrebateteller, 2) }} </b></td>
<td><b>{{ number_format($totalupahteller, 2) }} </b></td> <td><b>{{ number_format($totalupahteller, 2) }} </b></td>
<td><b>{{ number_format($totalbayaranteller, 2) }} </b></td> <td><b>{{ number_format($totalbayaranteller, 2) }} </b></td>
<td><b>{{ number_format($totaljumlahteller, 2) }} </b></td> <td><b>{{ number_format($totaljumlahteller, 2) }} </b></td>
@@ -402,6 +410,7 @@
$totaljumlahteller = 0; $totaljumlahteller = 0;
$totalujrahteller = 0; $totalujrahteller = 0;
$totalonepercentteller = 0; $totalonepercentteller = 0;
$totaldiskaunrebateteller = 0;
@endphp @endphp
@endif @endif
@else @else
@@ -412,6 +421,7 @@
<td><b>{{ number_format($totalpinjamanteller, 2) }} </b></td> <td><b>{{ number_format($totalpinjamanteller, 2) }} </b></td>
<td><b>{{ number_format($totalujrahteller, 2) }} </b></td> <td><b>{{ number_format($totalujrahteller, 2) }} </b></td>
<td><b>{{ number_format($totalonepercentteller, 2) }} </b></td> <td><b>{{ number_format($totalonepercentteller, 2) }} </b></td>
<td><b>{{ number_format($totaldiskaunrebateteller, 2) }} </b></td>
<td><b>{{ number_format($totalupahteller, 2) }} </b></td> <td><b>{{ number_format($totalupahteller, 2) }} </b></td>
<td><b>{{ number_format($totalbayaranteller, 2) }} </b></td> <td><b>{{ number_format($totalbayaranteller, 2) }} </b></td>
<td><b>{{ number_format($totaljumlahteller, 2) }} </b></td> <td><b>{{ number_format($totaljumlahteller, 2) }} </b></td>
@@ -625,7 +625,7 @@
<table id="payment" class="{{ sizeof($wakil) != 0 ? 'custom-table-right' : '' }}"> <table id="payment" class="{{ sizeof($wakil) != 0 ? 'custom-table-right' : '' }}">
<tr> <tr>
<td style="width:10px">Baki Pembiayaan</td> <td style="width:10px">Baki Pembiayaan</td>
<td style="width:10px">: RM {{ number_format($gadai['bakipjm'], 2) }} </td> <td style="width:10px">: <strong>RM {{ number_format($gadai['bakipjm'], 2) }} </td></strong>
</tr> </tr>
<tr> <tr>
<td style="width:10px">Keuntungan</td> <td style="width:10px">Keuntungan</td>
@@ -646,8 +646,17 @@
<td style="width:10px">: RM <td style="width:10px">: RM
{{ number_format($totalrebate['ujrah'], 2) }} </td> {{ number_format($totalrebate['ujrah'], 2) }} </td>
</tr> </tr>
<tr> <tr>
<td></td> <td style="width:10px">Jumlah Keuntungan + Lain-Lain Caj</td>
<td style="width:10px">: <strong>RM
{{ number_format($penebusan['onepercent'] + $penebusan['ujrah'], 2) }}</strong>
</td>
</tr>
<tr>
<td style="width:10px">(-) Diskaun Promosi</td>
<td style="width:10px">: RM
{{ number_format($gadai['diskaun'], 2) }} </td>
</tr> </tr>
<tr> <tr>
<td></td> <td></td>
@@ -855,7 +864,7 @@
<table id="payment" class="{{ sizeof($wakil) != 0 ? 'custom-table-right' : '' }}"> <table id="payment" class="{{ sizeof($wakil) != 0 ? 'custom-table-right' : '' }}">
<tr> <tr>
<td style="width:10px">Baki Pembiayaan</td> <td style="width:10px">Baki Pembiayaan</td>
<td style="width:10px">: RM {{ number_format($gadai['bakipjm'], 2) }} </td> <td style="width:10px">: <strong>RM {{ number_format($gadai['bakipjm'], 2) }} </strong></td>
</tr> </tr>
<tr> <tr>
<td style="width:10px">Keuntungan</td> <td style="width:10px">Keuntungan</td>
@@ -876,6 +885,18 @@
<td style="width:10px">: RM <td style="width:10px">: RM
{{ number_format($totalrebate['ujrah'], 2) }} </td> {{ number_format($totalrebate['ujrah'], 2) }} </td>
</tr> </tr>
<tr>
<td style="width:10px">Jumlah Keuntungan + Lain-Lain Caj</td>
<td style="width:10px">: <strong>RM
{{ number_format($penebusan['onepercent'] + $penebusan['ujrah'], 2) }}</strong>
</td>
</tr>
<tr>
<td style="width:10px">(-) Diskaun Promosi</td>
<td style="width:10px">: RM
{{ number_format($gadai['diskaun'], 2) }} </td>
</tr>
<tr> <tr>
<td></td> <td></td>
</tr> </tr>
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -12,17 +12,19 @@
<style> <style>
.grid-container { .grid-container {
display: grid; display: grid;
grid: 75px / 33% 33% 33%; grid-template-columns: 45% 25% 30%;
align-items: start;
padding-top: 10px; padding-top: 10px;
} }
#header_surat1 { #header_surat1 {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%; width: 100%;
font-size: 10px; font-size: 10px;
padding-right: 10px;
} }
#header_surat1 p { #header_surat1 p {
margin: 2px; margin: 2px;
} }
@@ -107,7 +109,7 @@
<div class="grid-container" style="margin-bottom: 10px"> <div class="grid-container" style="margin-bottom: 10px">
<div id="header_surat1"> <div id="header_surat1">
<p style="text-wrap:nowrap">KOPERASI PERMODALAN KELANTAN BERHAD (D-5-0228)</p> <p style="word-break: break-word;">KOPERASI PERMODALAN KELANTAN BERHAD (D-5-0228)</p>
<p>{{ $cawangan_detail['namacaw'] }}</p> <p>{{ $cawangan_detail['namacaw'] }}</p>
<p style="text-wrap:nowrap">{{ $cawangan_detail['alamat1'] }}</p> <p style="text-wrap:nowrap">{{ $cawangan_detail['alamat1'] }}</p>
<p>{{ $cawangan_detail['alamat2'] }}</p> <p>{{ $cawangan_detail['alamat2'] }}</p>
+7 -1
View File
@@ -110,6 +110,7 @@ Route::post('/createwakil',['as'=>'wakil.create','uses'=>'PenebusanController@cr
Route::get('/firstwakil',['as'=>'wakil.first','uses'=>'PenebusanController@getfirstWakil'])->middleware('auth','teller'); Route::get('/firstwakil',['as'=>'wakil.first','uses'=>'PenebusanController@getfirstWakil'])->middleware('auth','teller');
Route::get('/history',['as'=>'gadai.history','uses'=>'GadaianController@history'])->middleware('auth','teller'); Route::get('/history',['as'=>'gadai.history','uses'=>'GadaianController@history'])->middleware('auth','teller');
Route::get('/history/khazanah',['as'=>'gadai.history.khazanah','uses'=>'GadaianController@history'])->middleware('auth','khazanah'); 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');
//Kemaskini Upah //Kemaskini Upah
Route::get('/kemaskiniupah',['as'=>'kemaskini.upah','uses'=>'AliranTunaiController@kemaskiniupah'])->middleware('auth','teller'); Route::get('/kemaskiniupah',['as'=>'kemaskini.upah','uses'=>'AliranTunaiController@kemaskiniupah'])->middleware('auth','teller');
@@ -185,7 +186,7 @@ Route::get('/capaian',['as'=>'khazanah.capaian','uses'=>'KhazanahController@capa
Route::get('/alirantunai',['as'=>'khazanah.alirantunai','uses'=>'KhazanahController@alirantunai'])->middleware('auth','khazanah'); Route::get('/alirantunai',['as'=>'khazanah.alirantunai','uses'=>'KhazanahController@alirantunai'])->middleware('auth','khazanah');
Route::get('/pelangganan',['as'=>'khazanah.pelangganan','uses'=>'KhazanahController@pelanggan'])->middleware('auth','khazanah'); Route::get('/pelangganan',['as'=>'khazanah.pelangganan','uses'=>'KhazanahController@pelanggan'])->middleware('auth','khazanah');
Route::get('/bajet',['as'=>'khazanah.bajet','uses'=>'KhazanahController@bajet'])->middleware('auth','khazanah'); Route::get('/bajet',['as'=>'khazanah.bajet','uses'=>'KhazanahController@bajet'])->middleware('auth','khazanah');
//Route::get('/panjar',['as'=>'khazanah.panjar','uses'=>'KhazanahController@panjar'])->middleware('auth','khazanah'); Route::get('/panjar',['as'=>'khazanah.panjar','uses'=>'KhazanahController@panjar'])->middleware('auth','khazanah');
Route::get('/getkelulusan',['as'=>'khazanah.getkelulusan','uses'=>'KhazanahController@getkelulusan'])->middleware('auth','teller'); Route::get('/getkelulusan',['as'=>'khazanah.getkelulusan','uses'=>'KhazanahController@getkelulusan'])->middleware('auth','teller');
Route::post('/createkelulusan',['as'=>'khazanah.createkelulusan','uses'=>'KhazanahController@createkelulusan'])->middleware('auth','teller'); Route::post('/createkelulusan',['as'=>'khazanah.createkelulusan','uses'=>'KhazanahController@createkelulusan'])->middleware('auth','teller');
Route::put('/updatekelulusan',['as'=>'khazanah.updatekelulusan','uses'=>'KhazanahController@updatekelulusan'])->middleware('auth','khazanah'); Route::put('/updatekelulusan',['as'=>'khazanah.updatekelulusan','uses'=>'KhazanahController@updatekelulusan'])->middleware('auth','khazanah');
@@ -203,6 +204,8 @@ Route::post('/deletependahuluanserahan',['as'=>'khazanah.deletependser','uses'=>
//Ubah dan Hapus //Ubah dan Hapus
Route::get('/getkelulu',['as'=>'teller.getkelulusan','uses'=>'GadaianController@getkelulusan'])->middleware('auth','teller'); Route::get('/getkelulu',['as'=>'teller.getkelulusan','uses'=>'GadaianController@getkelulusan'])->middleware('auth','teller');
Route::post('/createkelulu',['as'=>'teller.createkelulusan','uses'=>'GadaianController@createkelulusan'])->middleware('auth'); Route::post('/createkelulu',['as'=>'teller.createkelulusan','uses'=>'GadaianController@createkelulusan'])->middleware('auth');
Route::post('/createkeluluanggota',['as'=>'teller.createkelulusan-anggota','uses'=>'GadaianController@createkelulusanAnggota'])->middleware('auth');
Route::put('/updatekelulu',['as'=>'teller.updatekelulusan','uses'=>'GadaianController@updatekelulusan'])->middleware('auth','khazanah'); Route::put('/updatekelulu',['as'=>'teller.updatekelulusan','uses'=>'GadaianController@updatekelulusan'])->middleware('auth','khazanah');
@@ -334,9 +337,12 @@ Route::post('/barcodescanned',['as'=>'barcode.scanned','uses'=>'KhazanahControll
//Operasi //Operasi
Route::get('/operasi/kelulusan','OperasiController@kelulusan')->name('operasi.kelulusan')->middleware('auth','operasi'); 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',['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::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/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/parameter','OperasiController@parameter')->name('parameter')->middleware('auth','operasi');
Route::get('/operasi/hargaemas',['as'=>'operasi.hargaemas','uses'=>'OperasiController@hargaemas'])->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/update',['as'=>'hargaemas.update','uses'=>'OperasiController@updatehargaemas'])->middleware('auth','operasi');