Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e4d047d5bd |
-54
@@ -1,54 +0,0 @@
|
|||||||
APP_NAME=Laravel
|
|
||||||
APP_ENV=local
|
|
||||||
APP_KEY=base64:O1XZDqK4H6+3GdrODgCaLr2l+OoWvgVhYr0GJ1KizW8=
|
|
||||||
APP_DEBUG=true
|
|
||||||
APP_URL=http://localhost
|
|
||||||
# API_URL=http://api-annurv2.test
|
|
||||||
API_URL=http://host.docker.internal:8080
|
|
||||||
API_URL_KOOP=http://host.docker.internal:8080
|
|
||||||
API_URL_PKB=http://host.docker.internal:8080
|
|
||||||
API_ARRAHNBID=http://lelong.test/api/
|
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
|
||||||
LOG_LEVEL=debug
|
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
|
||||||
DB_HOST=mysql
|
|
||||||
DB_PORT=3306
|
|
||||||
DB_DATABASE=kaunter_erahn
|
|
||||||
DB_USERNAME=kaunteruser
|
|
||||||
DB_PASSWORD=password
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
APP_NAME=Laravel
|
APP_NAME=Laravel
|
||||||
APP_ENV=staging
|
APP_ENV=staging
|
||||||
APP_VERSION=v2.2-staging
|
|
||||||
APP_KEY=base64:O1XZDqK4H6+3GdrODgCaLr2l+OoWvgVhYr0GJ1KizW8=
|
APP_KEY=base64:O1XZDqK4H6+3GdrODgCaLr2l+OoWvgVhYr0GJ1KizW8=
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
APP_URL=http://172.16.6.200:8091
|
APP_URL=http://172.16.6.200:8091
|
||||||
|
|||||||
@@ -56,11 +56,11 @@ jobs:
|
|||||||
set -e
|
set -e
|
||||||
IMAGE_TAG="${{ inputs.image_tag }}"
|
IMAGE_TAG="${{ inputs.image_tag }}"
|
||||||
|
|
||||||
mkdir -p "${DEPLOY_DIR}/docker/nginx" "${DEPLOY_DIR}/public"
|
mkdir -p "${DEPLOY_DIR}/docker/nginx"
|
||||||
cp docker-compose.staging.yml "${DEPLOY_DIR}/docker-compose.yml"
|
cp docker-compose.staging.yml "${DEPLOY_DIR}/docker-compose.yml"
|
||||||
cp docker/nginx/default.conf "${DEPLOY_DIR}/docker/nginx/default.conf"
|
cp docker/nginx/default.conf "${DEPLOY_DIR}/docker/nginx/default.conf"
|
||||||
find "${DEPLOY_DIR}/public" -mindepth 1 -delete
|
rm -rf "${DEPLOY_DIR}/public"
|
||||||
cp -R public/. "${DEPLOY_DIR}/public/"
|
cp -R public "${DEPLOY_DIR}/public"
|
||||||
|
|
||||||
if [ ! -f "${DEPLOY_DIR}/.env.staging" ]; then
|
if [ ! -f "${DEPLOY_DIR}/.env.staging" ]; then
|
||||||
if [ -f .env.staging ]; then
|
if [ -f .env.staging ]; then
|
||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
export IMAGE_TAG
|
export IMAGE_TAG
|
||||||
|
|
||||||
docker compose --env-file .env.staging -f docker-compose.yml pull app
|
docker compose --env-file .env.staging -f docker-compose.yml pull app
|
||||||
docker compose --env-file .env.staging -f docker-compose.yml up -d --no-build --force-recreate --remove-orphans app web
|
docker compose --env-file .env.staging -f docker-compose.yml up -d --no-build --remove-orphans
|
||||||
|
|
||||||
echo "✓ Deployed IMAGE_TAG=${IMAGE_TAG}"
|
echo "✓ Deployed IMAGE_TAG=${IMAGE_TAG}"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -11,5 +11,5 @@ Homestead.yaml
|
|||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
/.vscode
|
/.vscode
|
||||||
|
docker-compose.yml
|
||||||
docker_src/
|
docker_src/
|
||||||
**/.DS_Store
|
|
||||||
@@ -1,51 +1 @@
|
|||||||
If you does't know what is this you probably in wrong project
|
If you does't know what is this you probably in wrong project
|
||||||
|
|
||||||
```sql
|
|
||||||
--- for all ip
|
|
||||||
CREATE USER 'kaunteruser'@'%' IDENTIFIED BY 'your_password';
|
|
||||||
|
|
||||||
--- for specific ip
|
|
||||||
CREATE USER 'kaunteruser'@'localhost' IDENTIFIED BY 'your_password';
|
|
||||||
|
|
||||||
GRANT ALL PRIVILEGES ON kaunter_erahn.* TO 'kaunteruser'@'%';
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
```
|
|
||||||
|
|
||||||
# ADDITIONAL NOTE
|
|
||||||
|
|
||||||
## customers/v2/index.blade.php is modal to register customer
|
|
||||||
|
|
||||||
## Min Komoditi = RM5000
|
|
||||||
|
|
||||||
# System Flowchart
|
|
||||||
|
|
||||||
## Proses Gadaian
|
|
||||||
1) Pelanggan datang bawa marhun
|
|
||||||
2) Teller daftar maklumat pelanggan jika pelanggan baharu
|
|
||||||
3) Serah marhun ke penilai untuk timbang
|
|
||||||
4) Teller daftar marhun di sistem berdasarkan maklumat dari penilai
|
|
||||||
5) Penilai print SAG dan serah marhun ke Khazanah (PC/PPC) - __khazanah can still scan still scan though__
|
|
||||||
6) Khazanah scan barcode dekat SAG untuk masuk ke dalam peti besi
|
|
||||||
* table involved - gadai.semakbarcode (default is blank, after is Lulus)
|
|
||||||
7) DONE
|
|
||||||
|
|
||||||
## Setup new branch command:
|
|
||||||
1. Duplicate previous branch table - use erahn_{{name}}
|
|
||||||
```sql
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
SET SESSION group_concat_max_len = 1000000;
|
|
||||||
|
|
||||||
SELECT GROUP_CONCAT(
|
|
||||||
CONCAT('TRUNCATE TABLE `', table_name, '`')
|
|
||||||
SEPARATOR '; '
|
|
||||||
) INTO @sql
|
|
||||||
FROM information_schema.tables
|
|
||||||
WHERE table_schema = DATABASE();
|
|
||||||
|
|
||||||
SELECT @sql; --- copy the output and paste it
|
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
||||||
```
|
|
||||||
2. Add new cawangan kod on master_erahn.arrahn_master_db and and kaunter_erahn.cawangan
|
|
||||||
3. Register new cawangan detail in erahn_{{name}}.cawangan
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
## CAWANGAN XTRA - X0301
|
|
||||||
- WAN NUR FATIN NATASYA BINTI W M AZHARI - PENILAI
|
|
||||||
- MOHAMAD KHAIRULNIZAN BIN JUSOF - TELLER
|
|
||||||
- MOHAMAD AZUHAIDIE BIN AHMAD - PPC
|
|
||||||
- WAN NURUL AMIRA BINTI WAN HARON - PC
|
|
||||||
|
|
||||||
## Akaun
|
|
||||||
- admin@test.com
|
|
||||||
- admin2@test.com
|
|
||||||
|
|
||||||
Module Gadai Online:
|
|
||||||
- Langkah 1
|
|
||||||
- Langkah 2
|
|
||||||
[x] PC akan tekan submit, then customer akan masuk ke senarai online mengikut batch
|
|
||||||
[x] PC boleh semak list customer yang pilih gadai online
|
|
||||||
- Langkah 3 (Operasi)
|
|
||||||
[x] dapat dalam bentuk list
|
|
||||||
[x] Apa jadi kalau operasi reject? - patah balik ke pc, untuk pc buat semakan balik
|
|
||||||
- Langkah 4
|
|
||||||
- Langkah 5
|
|
||||||
- Langkah 6
|
|
||||||
- Langkah 7
|
|
||||||
[x] Macam mana PC nak tahu pembayaran berjaya (Tally PAID page)
|
|
||||||
[x] Kalau online, dia kena upload kat mana (Operasi: PAID + bukti)
|
|
||||||
- Langkah 8
|
|
||||||
[x] PC semak senarai pelanggan gadai tu tally atau tak
|
|
||||||
[ ] PC tekan butang blast ke (tanda selesai ada; WhatsApp/SMS belum wire)
|
|
||||||
@@ -105,7 +105,7 @@ class AliranTunaiController extends Controller
|
|||||||
|
|
||||||
$gadai_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/gadaitebus/listharini/'.$auth_user['cawangan'],['tarikh' => $harini->toDateString()])->json();
|
$gadai_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/gadaitebus/listharini/'.$auth_user['cawangan'],['tarikh' => $harini->toDateString()])->json();
|
||||||
|
|
||||||
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan',['kodlaluan' => $auth_user['name']])->json();
|
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan/',['kodlaluan' => $auth_user['name']])->json();
|
||||||
|
|
||||||
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/TuntutBaki/'.$auth_user['cawangan'])->json();
|
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/TuntutBaki/'.$auth_user['cawangan'])->json();
|
||||||
|
|
||||||
@@ -361,13 +361,12 @@ class AliranTunaiController extends Controller
|
|||||||
$pendahuluan = $alirantunai['tambah'];
|
$pendahuluan = $alirantunai['tambah'];
|
||||||
$serahan = $alirantunai['kurang'];
|
$serahan = $alirantunai['kurang'];
|
||||||
|
|
||||||
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan',['kodlaluan' => $auth_user['name']])->json();
|
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan/',['kodlaluan' => $auth_user['name']])->json();
|
||||||
$addtunai = is_array($addtunai) ? $addtunai : [];
|
|
||||||
|
|
||||||
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/gadai/laporan/'. $auth_user['cawangan'] .'/'. $current->toDateString())->json();
|
$gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/gadai/laporan/'. $auth_user['cawangan'] .'/'. $current->toDateString())->json();
|
||||||
$tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/tebus/laporan/'. $auth_user['cawangan'] .'/'. $current->toDateString())->json();
|
$tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/tebus/laporan/'. $auth_user['cawangan'] .'/'. $current->toDateString())->json();
|
||||||
$ansuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/ansuran/laporan/'. $auth_user['cawangan'],['tarikh' => $current->toDateString()])->json();
|
$ansuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/ansuran/laporan/'. $auth_user['cawangan'],['tarikh' => $current->toDateString()])->json();
|
||||||
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/TuntutBaki/'. $auth_user['cawangan'] . '/teller',['teller' => Auth::user()->name])->json();
|
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/TuntutBaki/'. $auth_user['cawangan'] . '/teller/',['teller' => Auth::user()->name])->json();
|
||||||
$advansur = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/AnsuranByTarikh/'.$auth_user['cawangan'],['kodlaluan' => Auth::user()->name ])->json();
|
$advansur = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/AnsuranByTarikh/'.$auth_user['cawangan'],['kodlaluan' => Auth::user()->name ])->json();
|
||||||
|
|
||||||
$lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/lelong/harini/'.$auth_user['cawangan'])->json();
|
$lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/lelong/harini/'.$auth_user['cawangan'])->json();
|
||||||
@@ -618,7 +617,7 @@ class AliranTunaiController extends Controller
|
|||||||
|
|
||||||
$alirantunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/GetCurrentTunai/' . $auth_user['cawangan'],['kodlaluan' => $auth_user['name']])->json();
|
$alirantunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/GetCurrentTunai/' . $auth_user['cawangan'],['kodlaluan' => $auth_user['name']])->json();
|
||||||
|
|
||||||
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan',['kodlaluan' => $auth_user['name']])->json();
|
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan/',['kodlaluan' => $auth_user['name']])->json();
|
||||||
|
|
||||||
$teller = $auth_user['name'];
|
$teller = $auth_user['name'];
|
||||||
|
|
||||||
@@ -659,7 +658,7 @@ class AliranTunaiController extends Controller
|
|||||||
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
|
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
|
||||||
$cawangan_detail=$cawangan[0];
|
$cawangan_detail=$cawangan[0];
|
||||||
|
|
||||||
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan',['kodlaluan' => $auth_user['name']])->json();
|
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getAddTunai/' . $auth_user['cawangan'] . '/kodlaluan/',['kodlaluan' => $auth_user['name']])->json();
|
||||||
|
|
||||||
$teller = $auth_user['name'];
|
$teller = $auth_user['name'];
|
||||||
|
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Auth;
|
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\User;
|
|
||||||
use Illuminate\Http\RedirectResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Gate;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
|
|
||||||
class ImpersonateController extends Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->middleware('auth');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function impersonate(Request $request, $id): RedirectResponse
|
|
||||||
{
|
|
||||||
Gate::authorize('impersonate');
|
|
||||||
|
|
||||||
$impersonator = $request->user();
|
|
||||||
$id = (int) $id;
|
|
||||||
$target = User::findOrFail($id);
|
|
||||||
|
|
||||||
if ($target->id === $request->user()->id) {
|
|
||||||
return back()->with('error', 'Tidak boleh impersonate diri sendiri.');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (method_exists($target, 'canBeImpersonated') && !$target->canBeImpersonated()) {
|
|
||||||
return back()->with('error', 'Akaun ini tidak boleh di-impersonate.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$request->user()->impersonate($target);
|
|
||||||
|
|
||||||
return redirect()->route('home');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function leave(Request $request): RedirectResponse
|
|
||||||
{
|
|
||||||
if ($request->user() && method_exists($request->user(), 'isImpersonated') && $request->user()->isImpersonated()) {
|
|
||||||
$impersonated = $request->user();
|
|
||||||
$impersonator = method_exists($impersonated, 'impersonator') ? $impersonated->impersonator() : null;
|
|
||||||
|
|
||||||
$request->user()->leaveImpersonation();
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('home');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -60,7 +60,9 @@ class LoginController extends Controller
|
|||||||
'password' => 'required|string',
|
'password' => 'required|string',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($this->attemptWebLogin($request)) {
|
$credentials = $request->only('email', 'password');
|
||||||
|
|
||||||
|
if (Auth::guard('web')->attempt($credentials)) {
|
||||||
|
|
||||||
$auth_user = Auth::guard('web')->user();
|
$auth_user = Auth::guard('web')->user();
|
||||||
$api_url = config('api.url');
|
$api_url = config('api.url');
|
||||||
@@ -101,7 +103,9 @@ class LoginController extends Controller
|
|||||||
'password' => 'required|string',
|
'password' => 'required|string',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($this->attemptDashboardLogin($request)) {
|
$credentials = $request->only('email', 'password');
|
||||||
|
|
||||||
|
if (Auth::guard('dashboard')->attempt($credentials,true)) {
|
||||||
$auth_user = Auth::guard('dashboard')->user();
|
$auth_user = Auth::guard('dashboard')->user();
|
||||||
|
|
||||||
$user_login['nama'] = $auth_user['name'];
|
$user_login['nama'] = $auth_user['name'];
|
||||||
@@ -183,42 +187,4 @@ class LoginController extends Controller
|
|||||||
|
|
||||||
return response()->json($kakitangan,200);
|
return response()->json($kakitangan,200);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* In local environment, log in by email only (password ignored).
|
|
||||||
*/
|
|
||||||
private function attemptWebLogin(Request $request): bool
|
|
||||||
{
|
|
||||||
if (app()->environment('local')) {
|
|
||||||
$user = User::where('email', $request->email)->first();
|
|
||||||
if ($user) {
|
|
||||||
Auth::guard('web')->login($user);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Auth::guard('web')->attempt($request->only('email', 'password'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* In local environment, log in by email only (password ignored).
|
|
||||||
*/
|
|
||||||
private function attemptDashboardLogin(Request $request): bool
|
|
||||||
{
|
|
||||||
if (app()->environment('local')) {
|
|
||||||
$user = Dashboard::where('email', $request->email)->first();
|
|
||||||
if ($user) {
|
|
||||||
Auth::guard('dashboard')->login($user, true);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Auth::guard('dashboard')->attempt($request->only('email', 'password'), true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,50 +211,13 @@ class GadaianController extends Controller
|
|||||||
'teller' => $auth_user['name']
|
'teller' => $auth_user['name']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$caraTerima = strtoupper((string) $request->input('cara_terima', 'TUNAI'));
|
$this->AliranTunaiController->alirantunaiGadai($request, $auth_user['name']);
|
||||||
$pinjamanAmt = round((float) $request->pinjaman, 2);
|
|
||||||
|
|
||||||
// Online only for RM5k–50k; otherwise force cash path.
|
|
||||||
if ($caraTerima === 'ONLINE' && ($pinjamanAmt < 5000 || $pinjamanAmt > 50000)) {
|
|
||||||
$caraTerima = 'TUNAI';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($caraTerima === 'ONLINE') {
|
|
||||||
$online = Http::withOptions(['verify' => config('app.api_verify')])
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/' . $auth_user['cawangan'], [
|
|
||||||
'norujukan' => $request->norujukan_gadai,
|
|
||||||
'nokp' => $request->nokp,
|
|
||||||
'pinjaman' => $pinjamanAmt,
|
|
||||||
'kodbank' => $request->kodbank,
|
|
||||||
'noakaun' => $request->noakaun,
|
|
||||||
'nama_bank' => $request->nama_bank,
|
|
||||||
'nama_akaun' => $request->nama_akaun ?: $request->nama_pelanggan,
|
|
||||||
'nama_pelanggan' => $request->nama_pelanggan,
|
|
||||||
'nopelanggan' => $request->nopelanggan,
|
|
||||||
'created_by' => $auth_user['name'],
|
|
||||||
'update_customer_bank' => true,
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$online->successful()) {
|
|
||||||
$body = $online->json();
|
|
||||||
$msg = is_array($body) && isset($body['message'])
|
|
||||||
? $body['message']
|
|
||||||
: 'Gagal daftar pembiayaan online. Sila cuba lagi.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$this->AliranTunaiController->alirantunaiGadai($request, $auth_user['name']);
|
|
||||||
}
|
|
||||||
|
|
||||||
event(new GadaiNotify('lulus', $auth_user['cawangan']));
|
event(new GadaiNotify('lulus', $auth_user['cawangan']));
|
||||||
|
|
||||||
$request->session()->forget('page_reload');
|
$request->session()->forget('page_reload');
|
||||||
$request->session()->forget('norujukan');
|
$request->session()->forget('norujukan');
|
||||||
$request->session()->flash('activate_tab', 'SAG_baru');
|
$request->session()->flash('activate_tab', 'SAG_baru');
|
||||||
if ($caraTerima === 'ONLINE') {
|
|
||||||
$request->session()->flash('message', 'Gadai berjaya. Pembiayaan online menunggu semakan PC.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('customer_info');
|
return redirect()->route('customer_info');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -348,8 +348,8 @@ class KhazanahController extends Controller
|
|||||||
$tunaipast = Http::withOptions(['verify' => config('app.api_verify')])->get( config('api.url') .'/api/getPastTunai/'. $auth_user['cawangan'],['kodlaluan' => $ls['kodlaluan']])->json();
|
$tunaipast = Http::withOptions(['verify' => config('app.api_verify')])->get( config('api.url') .'/api/getPastTunai/'. $auth_user['cawangan'],['kodlaluan' => $ls['kodlaluan']])->json();
|
||||||
|
|
||||||
$gadai_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/gadaitebus/listharini/'.$auth_user['cawangan'].'/teller/',['tarikh' => $harini->toDateString(),'teller' => $ls['kodlaluan']])->json();
|
$gadai_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/gadaitebus/listharini/'.$auth_user['cawangan'].'/teller/',['tarikh' => $harini->toDateString(),'teller' => $ls['kodlaluan']])->json();
|
||||||
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/TuntutBaki/'.$auth_user['cawangan'].'/teller',['teller' => $ls['kodlaluan']])->json();
|
$tuntutbaki = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/TuntutBaki/'.$auth_user['cawangan'].'/teller/',['teller' => $ls['kodlaluan']])->json();
|
||||||
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/getAddTunai/'.$auth_user['cawangan'].'/kodlaluan',['kodlaluan' => $ls['kodlaluan']])->json();
|
$addtunai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/getAddTunai/'.$auth_user['cawangan'].'/kodlaluan/',['kodlaluan' => $ls['kodlaluan']])->json();
|
||||||
|
|
||||||
array_push($arraygadaitebus,$gadai_tebus);
|
array_push($arraygadaitebus,$gadai_tebus);
|
||||||
array_push($arraytuntutbaki,$tuntutbaki);
|
array_push($arraytuntutbaki,$tuntutbaki);
|
||||||
@@ -505,9 +505,6 @@ class KhazanahController extends Controller
|
|||||||
|
|
||||||
public function mintakatalaluansemula(Request $request)
|
public function mintakatalaluansemula(Request $request)
|
||||||
{
|
{
|
||||||
if (app()->environment('local')) {
|
|
||||||
return "True";
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Hash::check($request->passsemula, Auth::user()->password))
|
if(Hash::check($request->passsemula, Auth::user()->password))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -321,9 +321,6 @@ class OperasiController extends Controller
|
|||||||
|
|
||||||
public function mintakatalaluansemula(Request $request)
|
public function mintakatalaluansemula(Request $request)
|
||||||
{
|
{
|
||||||
if (app()->environment('local')) {
|
|
||||||
return "True";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Hash::check($request->passsemula, Auth::user()->password)) {
|
if (Hash::check($request->passsemula, Auth::user()->password)) {
|
||||||
return "True";
|
return "True";
|
||||||
|
|||||||
@@ -1,744 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
|
|
||||||
class PembiayaanOnlineController extends Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->middleware('auth');
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function api()
|
|
||||||
{
|
|
||||||
return Http::withOptions(['verify' => config('app.api_verify')]);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function kodcaw()
|
|
||||||
{
|
|
||||||
return Auth::user()->cawangan;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC senarai queue + batch history.
|
|
||||||
*/
|
|
||||||
public function index(Request $request)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
|
|
||||||
$cawangan_info = $this->api()
|
|
||||||
->get($api_url . '/api/cawangan/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$queue = $this->api()
|
|
||||||
->get($api_url . '/api/pembiayaan-online/' . $kodcaw . '/queue')
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$batches = $this->api()
|
|
||||||
->get($api_url . '/api/pembiayaan-online/' . $kodcaw . '/batches')
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$banks = $this->api()->get($api_url . '/api/bank')->json();
|
|
||||||
if (!is_array($banks)) {
|
|
||||||
$banks = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$modal = $this->api()
|
|
||||||
->get($api_url . '/api/modal-online/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$lines = $queue['data'] ?? [];
|
|
||||||
$slot = $queue['slot_cadangan'] ?? null;
|
|
||||||
if (!is_array($batches)) {
|
|
||||||
$batches = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('pembiayaan_online.pc.senarai', compact(
|
|
||||||
'auth_user',
|
|
||||||
'kodcaw',
|
|
||||||
'api_url',
|
|
||||||
'cawangan_info',
|
|
||||||
'lines',
|
|
||||||
'batches',
|
|
||||||
'banks',
|
|
||||||
'modal',
|
|
||||||
'slot',
|
|
||||||
'queue'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update bank/docs for a queue line.
|
|
||||||
*/
|
|
||||||
public function updateLine(Request $request, $id)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
|
|
||||||
$payload = [
|
|
||||||
'kodbank' => $request->input('kodbank'),
|
|
||||||
'noakaun' => $request->input('noakaun'),
|
|
||||||
'nama_bank' => $request->input('nama_bank'),
|
|
||||||
'nama_akaun' => $request->input('nama_akaun'),
|
|
||||||
'nota' => $request->input('nota'),
|
|
||||||
'update_customer_bank' => true,
|
|
||||||
];
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->put($api_url . '/api/pembiayaan-online/' . $kodcaw . '/lines/' . $id, $payload);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal kemaskini rekod.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('pembiayaan.online.pc')->with('message', 'Rekod dikemaskini.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Submit selected lines as a batch to Operasi.
|
|
||||||
*/
|
|
||||||
public function submitBatch(Request $request)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
|
|
||||||
$ids = $request->input('ids', []);
|
|
||||||
if (!is_array($ids)) {
|
|
||||||
$ids = array_filter(explode(',', (string) $ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post($api_url . '/api/pembiayaan-online/' . $kodcaw . '/batches/submit', [
|
|
||||||
'ids' => $ids,
|
|
||||||
'pc_submitted_by' => $auth_user['name'],
|
|
||||||
'slot' => $request->input('slot'),
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal hantar batch.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$batchNo = $res->json()['batch']['batch_no'] ?? '';
|
|
||||||
return redirect()->route('pembiayaan.online.pc')
|
|
||||||
->with('message', 'Batch dihantar ke Operasi' . ($batchNo ? ': ' . $batchNo : '.'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Batch detail.
|
|
||||||
*/
|
|
||||||
public function showBatch($batchId)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
|
|
||||||
$cawangan_info = $this->api()
|
|
||||||
->get($api_url . '/api/cawangan/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$detail = $this->api()
|
|
||||||
->get($api_url . '/api/pembiayaan-online/' . $kodcaw . '/batches/' . $batchId)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
if (!is_array($detail) || empty($detail['batch'])) {
|
|
||||||
return redirect()->route('pembiayaan.online.pc')->with('error', 'Batch tidak dijumpai.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('pembiayaan_online.pc.batch', [
|
|
||||||
'batch' => $detail['batch'],
|
|
||||||
'lines' => $detail['lines'] ?? [],
|
|
||||||
'kodcaw' => $kodcaw,
|
|
||||||
'api_url' => $api_url,
|
|
||||||
'cawangan_info' => $cawangan_info,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC: senarai PAID untuk tally + blast.
|
|
||||||
*/
|
|
||||||
public function paidIndex(Request $request)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
$blastFilter = $request->input('blast_sent', '0');
|
|
||||||
|
|
||||||
$cawangan_info = $this->api()
|
|
||||||
->get($api_url . '/api/cawangan/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$query = [];
|
|
||||||
if ($blastFilter !== 'all' && $blastFilter !== '') {
|
|
||||||
$query['blast_sent'] = $blastFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
$paid = $this->api()
|
|
||||||
->get($api_url . '/api/pembiayaan-online/' . $kodcaw . '/paid', $query)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$lines = $paid['data'] ?? [];
|
|
||||||
if (!is_array($lines)) {
|
|
||||||
$lines = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$bilangan = $paid['bilangan'] ?? count($lines);
|
|
||||||
$jumlah = $paid['jumlah'] ?? 0;
|
|
||||||
|
|
||||||
return view('pembiayaan_online.pc.paid', compact(
|
|
||||||
'auth_user',
|
|
||||||
'kodcaw',
|
|
||||||
'api_url',
|
|
||||||
'cawangan_info',
|
|
||||||
'lines',
|
|
||||||
'bilangan',
|
|
||||||
'jumlah',
|
|
||||||
'blastFilter'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC: view/download bukti bayaran inline.
|
|
||||||
*/
|
|
||||||
public function viewBukti($id)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$res = $this->api()
|
|
||||||
->get(config('api.url') . '/api/pembiayaan-online/' . $kodcaw . '/lines/' . $id . '/bukti');
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Bukti tidak dijumpai.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$payload = $res->json();
|
|
||||||
$bukti = $payload['bukti'] ?? null;
|
|
||||||
if (!$bukti || empty($bukti['data'])) {
|
|
||||||
return redirect()->back()->with('error', 'Fail bukti kosong.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$raw = $bukti['data'];
|
|
||||||
if (strpos($raw, 'base64,') !== false) {
|
|
||||||
$raw = substr($raw, strpos($raw, 'base64,') + 7);
|
|
||||||
}
|
|
||||||
$binary = base64_decode($raw, true);
|
|
||||||
if ($binary === false) {
|
|
||||||
$binary = base64_decode($bukti['data']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$type = $bukti['type'] ?? 'application/octet-stream';
|
|
||||||
$filename = $bukti['filename'] ?? ('bukti-' . $id);
|
|
||||||
|
|
||||||
return response($binary, 200, [
|
|
||||||
'Content-Type' => $type,
|
|
||||||
'Content-Disposition' => 'inline; filename="' . $filename . '"',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC: tanda rekod PAID sebagai selesai semak / blast.
|
|
||||||
*/
|
|
||||||
public function markBlast(Request $request)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$ids = $request->input('ids', []);
|
|
||||||
if (!is_array($ids)) {
|
|
||||||
$ids = array_filter(explode(',', (string) $ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($ids) === 0) {
|
|
||||||
return redirect()->back()->with('error', 'Sila pilih sekurang-kurangnya satu rekod.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/' . $kodcaw . '/paid/blast', [
|
|
||||||
'ids' => $ids,
|
|
||||||
'blast_by' => Auth::user()['name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal tanda selesai.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$n = $res->json()['dikemaskini'] ?? count($ids);
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.pc.paid')
|
|
||||||
->with('message', $n . ' rekod ditanda selesai semak/blast.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Operasi: senarai batch semua cawangan.
|
|
||||||
*/
|
|
||||||
public function operasiIndex(Request $request)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
$status = $request->input('status', 'SUBMITTED');
|
|
||||||
$tarikh = $request->input('tarikh');
|
|
||||||
|
|
||||||
$query = ['status' => $status];
|
|
||||||
if ($tarikh) {
|
|
||||||
$query['tarikh'] = $tarikh;
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->get($api_url . '/api/pembiayaan-online/operasi/batches', $query)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$batches = $res['data'] ?? [];
|
|
||||||
if (!is_array($batches)) {
|
|
||||||
$batches = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('pembiayaan_online.operasi.senarai', compact(
|
|
||||||
'auth_user',
|
|
||||||
'api_url',
|
|
||||||
'batches',
|
|
||||||
'status',
|
|
||||||
'tarikh'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Operasi: detail batch + lines.
|
|
||||||
*/
|
|
||||||
public function operasiShowBatch($kodcaw, $batchId)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
|
|
||||||
$cawangan_info = $this->api()
|
|
||||||
->get($api_url . '/api/cawangan/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$detail = $this->api()
|
|
||||||
->get($api_url . '/api/pembiayaan-online/operasi/' . $kodcaw . '/batches/' . $batchId)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
if (!is_array($detail) || empty($detail['batch'])) {
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.operasi')
|
|
||||||
->with('error', 'Batch tidak dijumpai.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('pembiayaan_online.operasi.batch', [
|
|
||||||
'auth_user' => $auth_user,
|
|
||||||
'batch' => $detail['batch'],
|
|
||||||
'lines' => $detail['lines'] ?? [],
|
|
||||||
'kodcaw' => $kodcaw,
|
|
||||||
'api_url' => $api_url,
|
|
||||||
'cawangan_info' => $cawangan_info,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiApproveLine(Request $request, $kodcaw, $id)
|
|
||||||
{
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/operasi/' . $kodcaw . '/lines/' . $id . '/approve', [
|
|
||||||
'ops_by' => Auth::user()['name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $this->opsRedirect($res, $kodcaw, $request->input('batch_id'), 'Rekod diluluskan.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiRejectLine(Request $request, $kodcaw, $id)
|
|
||||||
{
|
|
||||||
$reason = trim((string) $request->input('reject_reason', ''));
|
|
||||||
if ($reason === '') {
|
|
||||||
return redirect()->back()->with('error', 'Sebab tolak diperlukan.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/operasi/' . $kodcaw . '/lines/' . $id . '/reject', [
|
|
||||||
'ops_by' => Auth::user()['name'],
|
|
||||||
'reject_reason' => $reason,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $this->opsRedirect($res, $kodcaw, $request->input('batch_id'), 'Rekod ditolak. Dikembalikan ke PC.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiApproveBatch(Request $request, $kodcaw, $batchId)
|
|
||||||
{
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/operasi/' . $kodcaw . '/batches/' . $batchId . '/approve', [
|
|
||||||
'ops_by' => Auth::user()['name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $this->opsRedirect($res, $kodcaw, $batchId, 'Semua rekod menunggu dalam batch diluluskan.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiMarkPaid(Request $request, $kodcaw, $id)
|
|
||||||
{
|
|
||||||
$payload = $this->buildPaidPayload($request);
|
|
||||||
if (isset($payload['error'])) {
|
|
||||||
return redirect()->back()->with('error', $payload['error']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/operasi/' . $kodcaw . '/lines/' . $id . '/paid', $payload);
|
|
||||||
|
|
||||||
return $this->opsRedirect($res, $kodcaw, $request->input('batch_id'), 'Rekod ditanda PAID.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiMarkPaidBatch(Request $request, $kodcaw, $batchId)
|
|
||||||
{
|
|
||||||
$payload = $this->buildPaidPayload($request);
|
|
||||||
if (isset($payload['error'])) {
|
|
||||||
return redirect()->back()->with('error', $payload['error']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/pembiayaan-online/operasi/' . $kodcaw . '/batches/' . $batchId . '/paid', $payload);
|
|
||||||
|
|
||||||
return $this->opsRedirect($res, $kodcaw, $batchId, 'Rekod APPROVED dalam batch ditanda PAID.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function buildPaidPayload(Request $request)
|
|
||||||
{
|
|
||||||
$noRujukan = trim((string) $request->input('no_rujukan_bayaran', ''));
|
|
||||||
if ($noRujukan === '') {
|
|
||||||
return ['error' => 'No. rujukan bayaran diperlukan.'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$request->hasFile('bukti')) {
|
|
||||||
return ['error' => 'Fail bukti bayaran diperlukan.'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$file = $request->file('bukti');
|
|
||||||
if (!$file->isValid()) {
|
|
||||||
return ['error' => 'Fail bukti tidak sah.'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$raw = base64_encode(file_get_contents($file->getRealPath()));
|
|
||||||
$mime = $file->getMimeType() ?: 'application/octet-stream';
|
|
||||||
|
|
||||||
return [
|
|
||||||
'ops_by' => Auth::user()['name'],
|
|
||||||
'no_rujukan_bayaran' => $noRujukan,
|
|
||||||
'tarikh_bayaran' => $request->input('tarikh_bayaran') ?: date('Y-m-d'),
|
|
||||||
'bukti_data' => $raw,
|
|
||||||
'bukti_filename' => $file->getClientOriginalName(),
|
|
||||||
'bukti_type' => $mime,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function opsRedirect($res, $kodcaw, $batchId, $successMsg)
|
|
||||||
{
|
|
||||||
$batchId = $batchId ?: null;
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Tindakan gagal.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($batchId) {
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.operasi.batch', ['kodcaw' => $kodcaw, 'batchId' => $batchId])
|
|
||||||
->with('message', $successMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('pembiayaan.online.operasi')->with('message', $successMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC: modal online float + top-up request form/history.
|
|
||||||
*/
|
|
||||||
public function topupIndex(Request $request)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
$status = $request->input('status', '');
|
|
||||||
|
|
||||||
$cawangan_info = $this->api()
|
|
||||||
->get($api_url . '/api/cawangan/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$modal = $this->api()
|
|
||||||
->get($api_url . '/api/modal-online/' . $kodcaw)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$query = [];
|
|
||||||
if ($status !== '' && $status !== 'all') {
|
|
||||||
$query['status'] = $status;
|
|
||||||
}
|
|
||||||
|
|
||||||
$reqRes = $this->api()
|
|
||||||
->get($api_url . '/api/modal-online/' . $kodcaw . '/topup/requests', $query)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$requests = $reqRes['data'] ?? [];
|
|
||||||
if (!is_array($requests)) {
|
|
||||||
$requests = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$pendingRes = $this->api()
|
|
||||||
->get($api_url . '/api/modal-online/' . $kodcaw . '/topup/requests', ['status' => 'PENDING'])
|
|
||||||
->json();
|
|
||||||
$pendingList = $pendingRes['data'] ?? [];
|
|
||||||
$hasPending = is_array($pendingList) && count($pendingList) > 0;
|
|
||||||
$isMissing = !empty($modal['missing']);
|
|
||||||
$pendingRequest = $modal['pending_request'] ?? null;
|
|
||||||
if (!$pendingRequest && $hasPending) {
|
|
||||||
$pendingRequest = $pendingList[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('pembiayaan_online.pc.topup', compact(
|
|
||||||
'auth_user',
|
|
||||||
'kodcaw',
|
|
||||||
'api_url',
|
|
||||||
'cawangan_info',
|
|
||||||
'modal',
|
|
||||||
'requests',
|
|
||||||
'status',
|
|
||||||
'hasPending',
|
|
||||||
'isMissing',
|
|
||||||
'pendingRequest'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC: submit top-up request.
|
|
||||||
*/
|
|
||||||
public function topupRequest(Request $request)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
$amaun = (float) $request->input('amaun', 0);
|
|
||||||
|
|
||||||
if ($amaun <= 0) {
|
|
||||||
return redirect()->back()->with('error', 'Amaun mesti lebih daripada 0.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/modal-online/' . $kodcaw . '/topup/request', [
|
|
||||||
'amaun' => $amaun,
|
|
||||||
'dimohon_oleh' => Auth::user()['name'],
|
|
||||||
'nota' => $request->input('nota'),
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal hantar permohonan.';
|
|
||||||
return redirect()->back()->with('error', $msg)->withInput();
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.pc.topup')
|
|
||||||
->with('message', 'Permohonan modal online dihantar. Menunggu kelulusan Operasi.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Operasi: senarai permohonan tambah modal online.
|
|
||||||
*/
|
|
||||||
public function operasiTopupIndex(Request $request)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
$status = $request->input('status', 'PENDING');
|
|
||||||
$tarikh = $request->input('tarikh');
|
|
||||||
|
|
||||||
$query = [];
|
|
||||||
if ($status === 'all') {
|
|
||||||
$query['status'] = 'all';
|
|
||||||
} elseif ($status !== '' && $status !== null) {
|
|
||||||
$query['status'] = $status;
|
|
||||||
} else {
|
|
||||||
$query['status'] = 'PENDING';
|
|
||||||
}
|
|
||||||
if ($tarikh) {
|
|
||||||
$query['tarikh'] = $tarikh;
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->get($api_url . '/api/modal-online/operasi/topup/requests', $query)
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$requests = $res['data'] ?? [];
|
|
||||||
if (!is_array($requests)) {
|
|
||||||
$requests = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('pembiayaan_online.operasi.topup', compact(
|
|
||||||
'auth_user',
|
|
||||||
'api_url',
|
|
||||||
'requests',
|
|
||||||
'status',
|
|
||||||
'tarikh'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiTopupApprove(Request $request, $id)
|
|
||||||
{
|
|
||||||
$amaun = $request->input('amaun');
|
|
||||||
if ($amaun !== null && $amaun !== '' && (float) $amaun <= 0) {
|
|
||||||
return redirect()->back()->with('error', 'Amaun diluluskan mesti lebih daripada 0.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/modal-online/operasi/topup/' . $id . '/approve', [
|
|
||||||
'diluluskan_oleh' => Auth::user()['name'],
|
|
||||||
'nota' => $request->input('nota'),
|
|
||||||
'amaun' => $amaun,
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal lulus permohonan.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$amaunLulus = $res->json()['request']['amaun'] ?? $amaun;
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.operasi.topup')
|
|
||||||
->with('message', 'Permohonan diluluskan RM ' . number_format((float) $amaunLulus, 2) . '. Modal online cawangan dikemas kini.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiTopupReject(Request $request, $id)
|
|
||||||
{
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/modal-online/operasi/topup/' . $id . '/reject', [
|
|
||||||
'diluluskan_oleh' => Auth::user()['name'],
|
|
||||||
'nota' => $request->input('nota'),
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal tolak permohonan.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.operasi.topup')
|
|
||||||
->with('message', 'Permohonan ditolak.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PC: EOD close branch modal online.
|
|
||||||
*/
|
|
||||||
public function closeModal(Request $request)
|
|
||||||
{
|
|
||||||
$kodcaw = $this->kodcaw();
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/modal-online/' . $kodcaw . '/close', [
|
|
||||||
'ditutup_oleh' => Auth::user()['name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal tutup modal online.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$dikembalikan = $res->json()['dikembalikan'] ?? 0;
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.pc.topup')
|
|
||||||
->with('message', 'Modal online ditutup. Baki dikembalikan RM ' . number_format((float) $dikembalikan, 2) . '.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Operasi: EOD dashboard semua cawangan.
|
|
||||||
*/
|
|
||||||
public function operasiEodIndex(Request $request)
|
|
||||||
{
|
|
||||||
$auth_user = Auth::user();
|
|
||||||
$api_url = config('api.url');
|
|
||||||
$tarikh = $request->input('tarikh') ?: date('Y-m-d');
|
|
||||||
|
|
||||||
$res = $this->api()
|
|
||||||
->get($api_url . '/api/modal-online/operasi/eod', [
|
|
||||||
'zone' => 'all',
|
|
||||||
'tarikh' => $tarikh,
|
|
||||||
])
|
|
||||||
->json();
|
|
||||||
|
|
||||||
$rows = $res['data'] ?? [];
|
|
||||||
if (!is_array($rows)) {
|
|
||||||
$rows = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$summary = [
|
|
||||||
'open' => $res['open'] ?? 0,
|
|
||||||
'closed' => $res['closed'] ?? 0,
|
|
||||||
'missing' => $res['missing'] ?? 0,
|
|
||||||
'bilangan' => $res['bilangan'] ?? count($rows),
|
|
||||||
];
|
|
||||||
|
|
||||||
return view('pembiayaan_online.operasi.eod', compact(
|
|
||||||
'auth_user',
|
|
||||||
'api_url',
|
|
||||||
'rows',
|
|
||||||
'tarikh',
|
|
||||||
'summary'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiCloseModal(Request $request, $kodcaw)
|
|
||||||
{
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/modal-online/' . $kodcaw . '/close', [
|
|
||||||
'ditutup_oleh' => Auth::user()['name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal tutup modal online.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.operasi.eod')
|
|
||||||
->with('message', 'Modal online ' . $kodcaw . ' ditutup.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function operasiCloseAllModal(Request $request)
|
|
||||||
{
|
|
||||||
$res = $this->api()
|
|
||||||
->asForm()
|
|
||||||
->post(config('api.url') . '/api/modal-online/operasi/eod/close-all', [
|
|
||||||
'ditutup_oleh' => Auth::user()['name'],
|
|
||||||
'zone' => 'all',
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$res->successful()) {
|
|
||||||
$body = $res->json();
|
|
||||||
$msg = is_array($body) && isset($body['message']) ? $body['message'] : 'Gagal tutup semua modal online.';
|
|
||||||
return redirect()->back()->with('error', $msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$closed = $res->json()['closed'] ?? 0;
|
|
||||||
$skipped = $res->json()['skipped'] ?? 0;
|
|
||||||
return redirect()
|
|
||||||
->route('pembiayaan.online.operasi.eod')
|
|
||||||
->with('message', 'EOD selesai: ' . $closed . ' ditutup, ' . $skipped . ' sudah ditutup.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -25,8 +25,6 @@ class AuthServiceProvider extends ServiceProvider
|
|||||||
{
|
{
|
||||||
$this->registerPolicies();
|
$this->registerPolicies();
|
||||||
|
|
||||||
Gate::define('impersonate', function ($user) {
|
//
|
||||||
return $user->canImpersonate();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,9 @@ use Illuminate\Contracts\Auth\MustVerifyEmail;
|
|||||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Lab404\Impersonate\Models\Impersonate;
|
|
||||||
|
|
||||||
class User extends Authenticatable
|
class User extends Authenticatable
|
||||||
{
|
{
|
||||||
use Impersonate;
|
|
||||||
use Notifiable;
|
use Notifiable;
|
||||||
|
|
||||||
protected $guard = 'web';
|
protected $guard = 'web';
|
||||||
@@ -45,14 +43,4 @@ class User extends Authenticatable
|
|||||||
{
|
{
|
||||||
return $this->hasOne(Cawangan::class, 'kodcaw', 'cawangan');
|
return $this->hasOne(Cawangan::class, 'kodcaw', 'cawangan');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function canImpersonate(): bool
|
|
||||||
{
|
|
||||||
return in_array($this->roles ?? '', ['admin'], true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function canBeImpersonated(): bool
|
|
||||||
{
|
|
||||||
return ($this->roles ?? '') !== 'admin';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (!function_exists('api_url_for_browser')) {
|
|
||||||
/**
|
|
||||||
* Base URL for JavaScript in the browser, derived from API_URL (config api.url).
|
|
||||||
* Docker dev often uses host.docker.internal for PHP→host; browsers may not resolve it.
|
|
||||||
* Same host-mapped port is reachable at 127.0.0.1. Production URLs are unchanged.
|
|
||||||
*/
|
|
||||||
function api_url_for_browser(): string
|
|
||||||
{
|
|
||||||
$url = rtrim((string) config('api.url'), '/');
|
|
||||||
|
|
||||||
return str_ireplace('host.docker.internal', '127.0.0.1', $url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
"fruitcake/laravel-cors": "^2.0",
|
"fruitcake/laravel-cors": "^2.0",
|
||||||
"guzzlehttp/guzzle": "^6.3",
|
"guzzlehttp/guzzle": "^6.3",
|
||||||
"jeroennoten/laravel-adminlte": "^3.5",
|
"jeroennoten/laravel-adminlte": "^3.5",
|
||||||
"lab404/laravel-impersonate": "^1.7",
|
|
||||||
"laravel/framework": "^7.24",
|
"laravel/framework": "^7.24",
|
||||||
"laravel/tinker": "^2.0",
|
"laravel/tinker": "^2.0",
|
||||||
"laravel/ui": "^2.4",
|
"laravel/ui": "^2.4",
|
||||||
@@ -52,9 +51,6 @@
|
|||||||
"classmap": [
|
"classmap": [
|
||||||
"database/seeds",
|
"database/seeds",
|
||||||
"database/factories"
|
"database/factories"
|
||||||
],
|
|
||||||
"files": [
|
|
||||||
"app/helpers.php"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
|
|||||||
Generated
+4
-71
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "fa66321247398a94dc8b7f8099bb184e",
|
"content-hash": "bfd66ab0246126c4f2cc7bbeeacca4ec",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "almasaeed2010/adminlte",
|
"name": "almasaeed2010/adminlte",
|
||||||
@@ -1293,73 +1293,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2022-05-18T14:12:47+00:00"
|
"time": "2022-05-18T14:12:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "lab404/laravel-impersonate",
|
|
||||||
"version": "1.7.8",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/404labfr/laravel-impersonate.git",
|
|
||||||
"reference": "0008a39da8914cc946b6a5ed211230708ee736b3"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/404labfr/laravel-impersonate/zipball/0008a39da8914cc946b6a5ed211230708ee736b3",
|
|
||||||
"reference": "0008a39da8914cc946b6a5ed211230708ee736b3",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"laravel/framework": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0 | ^12.0 | ^13.0",
|
|
||||||
"php": "^7.2 | ^8.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"mockery/mockery": "^1.3.3",
|
|
||||||
"orchestra/testbench": "^4.0 | ^5.0 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0",
|
|
||||||
"phpunit/phpunit": "^7.5 | ^8.0 | ^9.0 | ^10.0 | ^11.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"laravel": {
|
|
||||||
"providers": [
|
|
||||||
"Lab404\\Impersonate\\ImpersonateServiceProvider"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"src/helpers.php"
|
|
||||||
],
|
|
||||||
"psr-4": {
|
|
||||||
"Lab404\\Impersonate\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Marceau Casals",
|
|
||||||
"email": "marceau@casals.fr"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Laravel Impersonate is a plugin that allows to you to authenticate as your users.",
|
|
||||||
"keywords": [
|
|
||||||
"auth",
|
|
||||||
"impersonate",
|
|
||||||
"impersonation",
|
|
||||||
"laravel",
|
|
||||||
"laravel-package",
|
|
||||||
"laravel-plugin",
|
|
||||||
"package",
|
|
||||||
"plugin",
|
|
||||||
"user"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/404labfr/laravel-impersonate/issues",
|
|
||||||
"source": "https://github.com/404labfr/laravel-impersonate/tree/1.7.8"
|
|
||||||
},
|
|
||||||
"time": "2026-03-17T15:24:14+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v7.30.6",
|
"version": "v7.30.6",
|
||||||
@@ -9080,12 +9013,12 @@
|
|||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"stability-flags": {},
|
"stability-flags": [],
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "^7.2.5"
|
"php": "^7.2.5"
|
||||||
},
|
},
|
||||||
"platform-dev": {},
|
"platform-dev": [],
|
||||||
"plugin-api-version": "2.9.0"
|
"plugin-api-version": "2.3.0"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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'),
|
||||||
];
|
];
|
||||||
@@ -15,8 +15,6 @@ return [
|
|||||||
|
|
||||||
'name' => env('APP_NAME', 'Laravel'),
|
'name' => env('APP_NAME', 'Laravel'),
|
||||||
|
|
||||||
'version' => env('APP_VERSION', ''),
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Application Environment
|
| Application Environment
|
||||||
|
|||||||
@@ -1,8 +1,23 @@
|
|||||||
|
# Staging stack — isolated from local docker-compose.yml (8081 / 3307)
|
||||||
|
# and from api_arrahn staging (8090 / 3308).
|
||||||
|
#
|
||||||
|
# Local:
|
||||||
|
# docker compose --env-file .env.staging -f docker-compose.staging.yml up -d --build
|
||||||
|
#
|
||||||
|
# CI (image already in registry):
|
||||||
|
# APP_IMAGE=git.koppkb.com/kopkb/kaunter IMAGE_TAG=<sha> \
|
||||||
|
# docker compose --env-file .env.staging -f docker-compose.staging.yml up -d --no-build
|
||||||
|
#
|
||||||
|
# Host nginx reverse-proxies the public domain to 127.0.0.1:${HTTP_PORT}.
|
||||||
|
# See docker/nginx/host-proxy.example.conf
|
||||||
|
#
|
||||||
|
# If 8091 or 3309 is already taken, set HTTP_PORT / MYSQL_PUBLISH_PORT in .env.staging.
|
||||||
|
|
||||||
name: kaunter_staging
|
name: kaunter_staging
|
||||||
|
|
||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
image: ${APP_IMAGE:-git.koppkb.com/kopkb/kaunter}:${IMAGE_TAG:-staging}
|
image: ${APP_IMAGE:-kaunter}:${IMAGE_TAG:-staging}
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: docker/php/Dockerfile
|
dockerfile: docker/php/Dockerfile
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ server {
|
|||||||
client_max_body_size 50M;
|
client_max_body_size 50M;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri @php;
|
try_files $uri $uri/ @php;
|
||||||
}
|
}
|
||||||
|
|
||||||
location @php {
|
location @php {
|
||||||
|
|||||||
+20
-20
@@ -4,22 +4,22 @@ WORKDIR /var/www/html
|
|||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
git \
|
git \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
unzip \
|
unzip \
|
||||||
libonig-dev \
|
libonig-dev \
|
||||||
libzip-dev \
|
libzip-dev \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libjpeg62-turbo-dev \
|
libjpeg62-turbo-dev \
|
||||||
libfreetype6-dev \
|
libfreetype6-dev \
|
||||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||||
&& docker-php-ext-install -j"$(nproc)" \
|
&& docker-php-ext-install -j"$(nproc)" \
|
||||||
pdo_mysql \
|
pdo_mysql \
|
||||||
mbstring \
|
mbstring \
|
||||||
bcmath \
|
bcmath \
|
||||||
zip \
|
zip \
|
||||||
exif \
|
exif \
|
||||||
gd \
|
gd \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
||||||
@@ -40,12 +40,12 @@ COPY --chown=www-data:www-data . /var/www/html
|
|||||||
|
|
||||||
RUN composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader --no-scripts \
|
RUN composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader --no-scripts \
|
||||||
&& mkdir -p \
|
&& mkdir -p \
|
||||||
storage/logs \
|
storage/logs \
|
||||||
storage/framework/cache/data \
|
storage/framework/cache/data \
|
||||||
storage/framework/views \
|
storage/framework/views \
|
||||||
storage/framework/sessions \
|
storage/framework/sessions \
|
||||||
storage/app/public \
|
storage/app/public \
|
||||||
bootstrap/cache \
|
bootstrap/cache \
|
||||||
&& chown -R www-data:www-data storage bootstrap/cache vendor
|
&& chown -R www-data:www-data storage bootstrap/cache vendor
|
||||||
|
|
||||||
FROM base AS development
|
FROM base AS development
|
||||||
|
|||||||
@@ -306,7 +306,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var search = "<?php echo $search ?>";
|
var search = "<?php echo $search ?>";
|
||||||
var type_id = "<?php echo $idtype ?>";
|
var type_id = "<?php echo $idtype ?>";
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -157,7 +157,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var ppc = "{{ Auth::user()->name }}";
|
var ppc = "{{ Auth::user()->name }}";
|
||||||
var ic_asal = "{{ $customer_info['kpbaru'] != null ? $customer_info['kpbaru'] : $customer_info['kplama'] }}"
|
var ic_asal = "{{ $customer_info['kpbaru'] != null ? $customer_info['kpbaru'] : $customer_info['kplama'] }}"
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
@php $auth_user = Auth::user();@endphp
|
@php $auth_user = Auth::user();@endphp
|
||||||
<input type="hidden" id="api" value="{{ api_url_for_browser() }}"/>
|
<input type="hidden" id="api" value="{{ $api_url }}"/>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
|
|
||||||
|
|
||||||
@@ -348,7 +348,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tableaddtunai = $('#tableaddtunai').DataTable({
|
var tableaddtunai = $('#tableaddtunai').DataTable({
|
||||||
@@ -558,8 +558,9 @@
|
|||||||
|
|
||||||
function cetaklaporanalirantunai()
|
function cetaklaporanalirantunai()
|
||||||
{
|
{
|
||||||
let urlroute = '{{ route("laporan.alirantunai") }}';
|
let urlroute = '{{ route("laporan.alirantunai") }}';
|
||||||
window.location.href = api_url + urlroute;
|
|
||||||
|
window.location.href = urlroute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<link rel="icon" href="{{ asset('img/icon_pkb.png') }}">
|
<link rel="icon" href="{{ asset('img/icon_pkb.png') }}">
|
||||||
|
|
||||||
<title>arOS {{ config('app.version') }}</title>
|
<title>arOS v2.2</title>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@keyframes slide {
|
@keyframes slide {
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<div class="card-header pb-0 text-left">
|
<div class="card-header pb-0 text-left">
|
||||||
<div style="display: flex; justify-content:space-between; align-items:center">
|
<div style="display: flex; justify-content:space-between; align-items:center">
|
||||||
<h1 class="font-weight-bolder text-info text-gradient" style="word-break: break-word; white-space: nowrap;">
|
<h1 class="font-weight-bolder text-info text-gradient" style="word-break: break-word; white-space: nowrap;">
|
||||||
Kaunter arOS {{ config('app.version') }}
|
Kaunter arOS v2.2
|
||||||
</h1>
|
</h1>
|
||||||
<img src="{{ asset('img/icon_pkb.png') }}" alt="logo-arrahn" style="width: 85px; margin-left: 30px;">
|
<img src="{{ asset('img/icon_pkb.png') }}" alt="logo-arrahn" style="width: 85px; margin-left: 30px;">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -228,7 +228,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "{{ $api_url }}";
|
||||||
// var kodcaw = "{{ $kodcaw }}";
|
// var kodcaw = "{{ $kodcaw }}";
|
||||||
// var notisid = "{{ $notisid }}";
|
// var notisid = "{{ $notisid }}";
|
||||||
//var nokp = "{{ $noic }}";
|
//var nokp = "{{ $noic }}";
|
||||||
|
|||||||
@@ -389,7 +389,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var search = "<?php echo $search ?>";
|
var search = "<?php echo $search ?>";
|
||||||
var type_id = "<?php echo $idtype ?>";
|
var type_id = "<?php echo $idtype ?>";
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -387,7 +387,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var search = "<?php echo $search ?>";
|
var search = "<?php echo $search ?>";
|
||||||
var type_id = "<?php echo $idtype ?>";
|
var type_id = "<?php echo $idtype ?>";
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -413,7 +413,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
|
|
||||||
|
|||||||
@@ -1099,7 +1099,7 @@
|
|||||||
|
|
||||||
|
|
||||||
let pertambahpinjaman = "{{ $pertambahpinjaman }}";
|
let pertambahpinjaman = "{{ $pertambahpinjaman }}";
|
||||||
var api = "{{ api_url_for_browser() }}";
|
var api = '<?php echo $api_url ?>';
|
||||||
let nw = 0;
|
let nw = 0;
|
||||||
let jenisAT = 'none';
|
let jenisAT = 'none';
|
||||||
|
|
||||||
|
|||||||
@@ -542,7 +542,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
|
|
||||||
|
|||||||
@@ -473,7 +473,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var search = "<?php echo $search ?>";
|
var search = "<?php echo $search ?>";
|
||||||
var type_id = "<?php echo $idtype ?>";
|
var type_id = "<?php echo $idtype ?>";
|
||||||
var blacklist_search = "<?php echo $blacklist_search ?>";
|
var blacklist_search = "<?php echo $blacklist_search ?>";
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
var min_komoditi = "{{ $min_komoditi }}";
|
var min_komoditi = "{{ $min_komoditi }}";
|
||||||
|
|||||||
@@ -495,14 +495,15 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
var api_url = @json($api_url ?? '');
|
||||||
|
var search = @json($search ?? false);
|
||||||
|
var type_id = @json($idtype ?? '');
|
||||||
var isAnggota = @json($isAnggota ?? false);
|
var isAnggota = @json($isAnggota ?? false);
|
||||||
var isPelanggan = @json($isPelanggan ?? false);
|
var isPelanggan = @json($isPelanggan ?? false);
|
||||||
|
var blacklist_search = @json($blacklist_search ?? false);
|
||||||
var showAssignAnggotaBtn = @json($showAssignAnggotaBtn ?? false);
|
var showAssignAnggotaBtn = @json($showAssignAnggotaBtn ?? false);
|
||||||
var showDaftarPelangganBtn = @json($showDaftarPelangganBtn ?? false);
|
var showDaftarPelangganBtn = @json($showDaftarPelangganBtn ?? false);
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
|
||||||
var search = "<?php echo $search ?>";
|
|
||||||
var type_id = "<?php echo $idtype ?>";
|
|
||||||
var blacklist_search = "<?php echo $blacklist_search ?>";
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
// Datepicker
|
// Datepicker
|
||||||
$('#passport_tarikh_lahir').datepicker({
|
$('#passport_tarikh_lahir').datepicker({
|
||||||
|
|||||||
@@ -230,6 +230,7 @@
|
|||||||
|
|
||||||
// 4️⃣ Hantar permohonan ke backend (Laravel)
|
// 4️⃣ Hantar permohonan ke backend (Laravel)
|
||||||
const response = await fetch("{{ route('operasi.createkelulusan-anggota') }}", {
|
const response = await fetch("{{ route('operasi.createkelulusan-anggota') }}", {
|
||||||
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
@@ -237,14 +238,15 @@
|
|||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
mohon: "Assign Anggota",
|
mohon: "Assign Anggota",
|
||||||
nokp: noic,
|
noic: noic,
|
||||||
norujukan: norujukan,
|
norujukan: norujukan,
|
||||||
komen: komen,
|
komen: komen,
|
||||||
teller: "{{ Auth::user()->name }}",
|
teller: "{{ Auth::user()->name }}",
|
||||||
tagoperasi: 1 // 1 = tunggu kelulusan operasi
|
tagoperasi: 1 // 1 = tunggu kelulusan operasi
|
||||||
})
|
})
|
||||||
|
|
||||||
|
console.log(`Response: ${response}`);
|
||||||
});
|
});
|
||||||
console.log(`Response: ${response}`);
|
|
||||||
|
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
|
|
||||||
@@ -712,67 +714,68 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
var api_arrahnbid = "<?php echo config('app.api_arrahnbid'); ?>";
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url; ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
var min_komoditi = "{{ $min_komoditi }}";
|
var min_komoditi = "{{ $min_komoditi }}";
|
||||||
$('#daftar_gadai').on('click', function() {
|
$('#daftar_gadai').on('click', function() {
|
||||||
$("#daftar_gadai").prop('disabled', true);
|
$("#daftar_gadai").prop('disabled', true);
|
||||||
var noic = $('#noic').val();
|
var noic = $('#noic').val();
|
||||||
var iclama = "{{ $customer_info['kplama'] }}";
|
var iclama = "{{ $customer_info['kplama'] }}";
|
||||||
var icbaru = "{{ $customer_info['kpbaru'] }}";
|
var icbaru = "{{ $customer_info['kpbaru'] }}";
|
||||||
var outstanding_semasa = "{{ $outstanding_semasa }}";
|
var outstanding_semasa = "{{ $outstanding_semasa }}";
|
||||||
event.preventDefault();
|
|
||||||
if (outstanding_semasa >= 300000) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Had Pembiayaan',
|
|
||||||
text: 'Outstanding Pembiayaan Pelanggan Telah Melebihi Had'
|
|
||||||
});
|
|
||||||
$("#daftar_gadai").prop('disabled', false);
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
return false;
|
if (outstanding_semasa >= 300000) {
|
||||||
} else {
|
Swal.fire({
|
||||||
$.ajax({
|
icon: 'error',
|
||||||
method: 'get',
|
title: 'Had Pembiayaan',
|
||||||
url: api_url + '/api/komuditi/check',
|
text: 'Outstanding Pembiayaan Pelanggan Telah Melebihi Had'
|
||||||
success: function(data) {
|
});
|
||||||
var check_komuditi = Object.keys(data).length;
|
$("#daftar_gadai").prop('disabled', false);
|
||||||
if (check_komuditi == 0) {
|
event.preventDefault();
|
||||||
Swal.fire({
|
return false;
|
||||||
icon: 'error',
|
} else {
|
||||||
title: 'Unit Komoditi Berbaki Minima',
|
$.ajax({
|
||||||
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
method: 'get',
|
||||||
});
|
url: api_url + '/api/komuditi/check',
|
||||||
$("#daftar_gadai").prop('disabled', false);
|
success: function(data) {
|
||||||
event.preventDefault();
|
var check_komuditi = Object.keys(data).length;
|
||||||
return false;
|
if (check_komuditi == 0) {
|
||||||
} else {
|
|
||||||
if (Number(data['unit_komuditi']) <= min_komoditi) {
|
|
||||||
$("#daftar_gadai").prop('disabled', false);
|
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'error',
|
icon: 'error',
|
||||||
title: 'Unit Komoditi Berbaki Minima',
|
title: 'Unit Komoditi Berbaki Minima',
|
||||||
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
||||||
});
|
});
|
||||||
|
$("#daftar_gadai").prop('disabled', false);
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
if (icbaru.length > 0) {
|
if (Number(data['unit_komuditi']) <= min_komoditi) {
|
||||||
window.location.href =
|
$("#daftar_gadai").prop('disabled', false);
|
||||||
"{{ route('gadaian', ['noic' => $customer_info['kpbaru']]) }}";
|
Swal.fire({
|
||||||
|
icon: 'error',
|
||||||
|
title: 'Unit Komoditi Berbaki Minima',
|
||||||
|
text: 'Sila Hubungi Operasi Untuk Membuat Pembelian Komoditi'
|
||||||
|
});
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
window.location.href =
|
if (icbaru.length > 0) {
|
||||||
"{{ route('gadaian', ['noic' => $customer_info['kplama']]) }}";
|
window.location.href =
|
||||||
|
"{{ route('gadaian', ['noic' => $customer_info['kpbaru']]) }}";
|
||||||
|
} else {
|
||||||
|
window.location.href =
|
||||||
|
"{{ route('gadaian', ['noic' => $customer_info['kplama']]) }}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
|
$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
|
||||||
// here is the new selected tab id
|
// here is the new selected tab id
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
getPusherResponse();
|
getPusherResponse();
|
||||||
|
|
||||||
async function getPusherResponse(){
|
async function getPusherResponse(){
|
||||||
let api_url = "{{ api_url_for_browser() }}";
|
let api_url = "<?php echo $api_url ?>";
|
||||||
const jsonData = {
|
const jsonData = {
|
||||||
norujukan: "{{ $errorapproval['norujukan'] }}",
|
norujukan: "{{ $errorapproval['norujukan'] }}",
|
||||||
kodcaw: "{{ Auth::user()->cawangan }}",
|
kodcaw: "{{ Auth::user()->cawangan }}",
|
||||||
|
|||||||
@@ -215,7 +215,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
$('form input').keydown(function (e) {
|
$('form input').keydown(function (e) {
|
||||||
if (e.keyCode == 13) {
|
if (e.keyCode == 13) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -242,7 +242,7 @@
|
|||||||
@endphp
|
@endphp
|
||||||
@endif
|
@endif
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
$('form input').keydown(function (e) {
|
$('form input').keydown(function (e) {
|
||||||
if (e.keyCode == 13) {
|
if (e.keyCode == 13) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -326,7 +326,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<script src="{{ asset('js/rounded-methods.js') }}"></script>
|
<script src="{{ asset('js/rounded-methods.js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw_ujrah = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw_ujrah = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$('form input').keydown(function (e) {
|
$('form input').keydown(function (e) {
|
||||||
@@ -768,7 +768,7 @@
|
|||||||
|
|
||||||
// Call API to get specific MaxMutuEmas data by karat
|
// Call API to get specific MaxMutuEmas data by karat
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/specific',
|
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
data: { karat: karat, nilaimarhun: nm },
|
data: { karat: karat, nilaimarhun: nm },
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
@@ -1816,7 +1816,7 @@
|
|||||||
rowsData.forEach((rowData) => {
|
rowsData.forEach((rowData) => {
|
||||||
// Call API to get margin data for each individual item
|
// Call API to get margin data for each individual item
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/specific',
|
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
|
|||||||
@@ -217,68 +217,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</diV>
|
</diV>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12" id="cara_terima_section" style="display:none;">
|
|
||||||
<hr>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-md-3">
|
|
||||||
Cara Terima Pembiayaan
|
|
||||||
</div>
|
|
||||||
<div class="col-md-9">
|
|
||||||
<div class="form-check form-check-inline">
|
|
||||||
<input class="form-check-input" type="radio" name="cara_terima" id="cara_terima_tunai" value="TUNAI" checked>
|
|
||||||
<label class="form-check-label" for="cara_terima_tunai">Tunai</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check form-check-inline">
|
|
||||||
<input class="form-check-input" type="radio" name="cara_terima" id="cara_terima_online" value="ONLINE">
|
|
||||||
<label class="form-check-label" for="cara_terima_online">Online (Akaun Bank)</label>
|
|
||||||
</div>
|
|
||||||
<small class="form-text text-muted">Pilihan Online untuk pembiayaan RM5,000 – RM50,000 sahaja.</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="bank_online_section" style="display:none;">
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-md-3">Modal Online</div>
|
|
||||||
<div class="col-md-9">
|
|
||||||
<div id="modal_online_status" class="mb-1">Memeriksa baki...</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-md-3">Bank</div>
|
|
||||||
<div class="col-md-4">
|
|
||||||
@php
|
|
||||||
$banks_list = Http::withOptions(['verify' => config('app.api_verify')])
|
|
||||||
->get($api_url . '/api/bank')
|
|
||||||
->json();
|
|
||||||
@endphp
|
|
||||||
<select class="form-control" name="kodbank" id="gadai_kodbank">
|
|
||||||
<option value="">-- Pilih Bank --</option>
|
|
||||||
@foreach ($banks_list as $banks)
|
|
||||||
<option value="{{ $banks['abbreviation'] }}"
|
|
||||||
{{ ($customer_info['kodbank'] ?? '') == $banks['abbreviation'] ? 'selected' : '' }}
|
|
||||||
data-nama="{{ $banks['name'] }}">
|
|
||||||
{{ $banks['name'] }}
|
|
||||||
</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">No. Akaun</div>
|
|
||||||
<div class="col-md-3">
|
|
||||||
<input type="text" class="form-control" name="noakaun" id="gadai_noakaun"
|
|
||||||
value="{{ $customer_info['noakaun'] ?? '' }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-md-3">Nama Akaun</div>
|
|
||||||
<div class="col-md-9">
|
|
||||||
<input type="text" class="form-control" name="nama_akaun" id="gadai_nama_akaun"
|
|
||||||
value="{{ $customer_info['nama'] ?? '' }}">
|
|
||||||
<input type="hidden" name="nama_bank" id="gadai_nama_bank" value="">
|
|
||||||
<input type="hidden" name="nama_pelanggan" value="{{ $customer_info['nama'] ?? '' }}">
|
|
||||||
<input type="hidden" name="nopelanggan" id="nopelanggan" value="{{ $customer_info['nopelanggan'] ?? '' }}">
|
|
||||||
</div>
|
|
||||||
</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>
|
||||||
@@ -393,7 +331,7 @@
|
|||||||
@endif
|
@endif
|
||||||
<script src="{{ asset('js/rounded-methods.js') }}"></script>
|
<script src="{{ asset('js/rounded-methods.js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw_ujrah = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw_ujrah = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
$('form input').keydown(function (e) {
|
$('form input').keydown(function (e) {
|
||||||
if (e.keyCode == 13) {
|
if (e.keyCode == 13) {
|
||||||
@@ -746,7 +684,6 @@
|
|||||||
var nokp = $('#nokp').val();
|
var nokp = $('#nokp').val();
|
||||||
//console.log('DEBUG NOKP:', nokp, kadarupah);
|
//console.log('DEBUG NOKP:', nokp, kadarupah);
|
||||||
|
|
||||||
toggleCaraTerima(pinjaman);
|
|
||||||
|
|
||||||
// var keuntungan_sebulan = pinjaman * kadarupah;
|
// var keuntungan_sebulan = pinjaman * kadarupah;
|
||||||
// var keuntungan_6bln = keuntungan_sebulan * 6;
|
// var keuntungan_6bln = keuntungan_sebulan * 6;
|
||||||
@@ -1258,170 +1195,9 @@
|
|||||||
.then(response => response.json());
|
.then(response => response.json());
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleCaraTerima(pinjaman) {
|
|
||||||
if (pinjaman >= 5000 && pinjaman <= 50000) {
|
|
||||||
$('#cara_terima_section').show();
|
|
||||||
toggleBankOnlineSection();
|
|
||||||
} else {
|
|
||||||
$('#cara_terima_section').hide();
|
|
||||||
$('#bank_online_section').hide();
|
|
||||||
$('#cara_terima_tunai').prop('checked', true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleBankOnlineSection() {
|
|
||||||
if ($('input[name="cara_terima"]:checked').val() === 'ONLINE') {
|
|
||||||
$('#bank_online_section').show();
|
|
||||||
var nama = $('#gadai_kodbank option:selected').data('nama') || '';
|
|
||||||
$('#gadai_nama_bank').val(nama);
|
|
||||||
refreshModalOnlineStatus();
|
|
||||||
} else {
|
|
||||||
$('#bank_online_section').hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).on('change', 'input[name="cara_terima"]', function () {
|
|
||||||
toggleBankOnlineSection();
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('change', '#gadai_kodbank', function () {
|
|
||||||
$('#gadai_nama_bank').val($('#gadai_kodbank option:selected').data('nama') || '');
|
|
||||||
});
|
|
||||||
|
|
||||||
async function getModalOnline() {
|
|
||||||
let kodcaw = $('#kodcaw').val();
|
|
||||||
let apiUrl = api_url + '/api/modal-online/' + kodcaw;
|
|
||||||
return $.ajax({
|
|
||||||
method: 'GET',
|
|
||||||
url: apiUrl,
|
|
||||||
dataType: 'json',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function refreshModalOnlineStatus() {
|
|
||||||
var $el = $('#modal_online_status');
|
|
||||||
$el.removeClass('text-success text-danger text-warning text-muted').addClass('text-muted').text('Memeriksa baki...');
|
|
||||||
try {
|
|
||||||
var modal = await getModalOnline();
|
|
||||||
var pending = modal.pending_request || null;
|
|
||||||
var closed = Number(modal.ditutup || 0) === 1;
|
|
||||||
var missing = !!modal.missing;
|
|
||||||
var baki = Number(modal.baki || 0);
|
|
||||||
var had = Number(modal.had || 0) + Number(modal.tambah || 0);
|
|
||||||
|
|
||||||
if (closed) {
|
|
||||||
$el.removeClass('text-muted').addClass('text-danger')
|
|
||||||
.text('Modal online hari ini sudah ditutup (EOD). Gadai online tidak dibenarkan.');
|
|
||||||
return modal;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pending) {
|
|
||||||
$el.removeClass('text-muted').addClass('text-warning')
|
|
||||||
.text('Menunggu kelulusan Operasi: RM ' + formatter.format(Number(pending.amaun || 0)) +
|
|
||||||
' (' + (pending.dimohon_oleh || '-') + ').');
|
|
||||||
} else if (missing) {
|
|
||||||
$el.removeClass('text-muted').addClass('text-danger')
|
|
||||||
.text('Belum ada had hari ini. Sila hubungi PC.');
|
|
||||||
} else {
|
|
||||||
$el.removeClass('text-muted').addClass('text-success')
|
|
||||||
.text('Baki RM ' + formatter.format(baki) + ' / Had RM ' + formatter.format(had));
|
|
||||||
}
|
|
||||||
return modal;
|
|
||||||
} catch (e) {
|
|
||||||
$el.removeClass('text-muted').addClass('text-danger').text('Gagal semak modal online.');
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function checkDisbursementFloat(pinjaman) {
|
|
||||||
var cara = $('input[name="cara_terima"]:checked').val() || 'TUNAI';
|
|
||||||
if (!(pinjaman >= 5000 && pinjaman <= 50000)) {
|
|
||||||
cara = 'TUNAI';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cara === 'ONLINE') {
|
|
||||||
var kodbank = $('#gadai_kodbank').val();
|
|
||||||
var noakaun = ($('#gadai_noakaun').val() || '').trim();
|
|
||||||
$('#gadai_nama_bank').val($('#gadai_kodbank option:selected').data('nama') || '');
|
|
||||||
if (!kodbank || !noakaun) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Amaran!',
|
|
||||||
text: 'Sila lengkapkan maklumat bank untuk pembayaran online.'
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var modal;
|
|
||||||
try {
|
|
||||||
modal = await getModalOnline();
|
|
||||||
} catch (e) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Amaran!',
|
|
||||||
text: 'Gagal semak modal online. Sila cuba lagi.'
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Number(modal.ditutup || 0) === 1) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Amaran!',
|
|
||||||
text: 'Modal online hari ini sudah ditutup (EOD). Sila pilih Tunai.'
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (modal.pending_request) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'info',
|
|
||||||
title: 'Menunggu Operasi',
|
|
||||||
text: 'Permohonan RM ' + formatter.format(Number(modal.pending_request.amaun || 0)) +
|
|
||||||
' masih PENDING. Sila tunggu kelulusan Operasi atau pilih Tunai.'
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (modal.missing) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Amaran!',
|
|
||||||
text: 'Belum ada had modal online hari ini. Sila hubungi PC.'
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Number(modal.baki || 0) < pinjaman) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Amaran!',
|
|
||||||
text: 'Baki modal online tidak mencukupi. Sila hubungi PC untuk mohon tambah modal, atau pilih Tunai.'
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
let dataCawangan = await getDataCawangan();
|
|
||||||
let bakiAkhir = dataCawangan.baki;
|
|
||||||
if (bakiAkhir < pinjaman) {
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: 'Amaran!',
|
|
||||||
text: 'Baki Akhir Tunai Lebih Rendah Daripada Nilai Marhun Yang Ingin Digadaikan. Sila Tambah Pendahuluan di Laman Aliran Tunai Segera. '
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function verifyGadai(func){
|
async function verifyGadai(func){
|
||||||
$("#terima_gadai").prop('disabled', true);
|
$("#terima_gadai").prop('disabled', true);
|
||||||
if (typeof event !== 'undefined' && event && event.preventDefault) {
|
event.preventDefault();
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
var kodcaw = $('#kodcaw').val();
|
var kodcaw = $('#kodcaw').val();
|
||||||
var nokp = $('#nokp').val();
|
var nokp = $('#nokp').val();
|
||||||
var nopelanggan = $('#nopelanggan').val();
|
var nopelanggan = $('#nopelanggan').val();
|
||||||
@@ -1448,16 +1224,23 @@
|
|||||||
title: 'Amaran!',
|
title: 'Amaran!',
|
||||||
text: 'Pembiayaan Tidak Lengkap'
|
text: 'Pembiayaan Tidak Lengkap'
|
||||||
});
|
});
|
||||||
|
event.preventDefault();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let floatOk = await checkDisbursementFloat(pinjaman);
|
let dataCawangan = await getDataCawangan();
|
||||||
if (!floatOk) {
|
let bakiAkhir = dataCawangan.baki;
|
||||||
$("#terima_gadai").prop('disabled', false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(true){
|
if(bakiAkhir < pinjaman){
|
||||||
|
$("#terima_gadai").prop('disabled', false);
|
||||||
|
Swal.fire({
|
||||||
|
icon: 'error',
|
||||||
|
title: 'Amaran!',
|
||||||
|
text: 'Baki Akhir Tunai Lebih Rendah Daripada Nilai Marhun Yang Ingin Digadaikan. Sila Tambah Pendahuluan di Laman Aliran Tunai Segera. '
|
||||||
|
});
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
|
||||||
if($.isNumeric(pinjaman) == false){
|
if($.isNumeric(pinjaman) == false){
|
||||||
$("#terima_gadai").prop('disabled', false);
|
$("#terima_gadai").prop('disabled', false);
|
||||||
@@ -2198,7 +1981,7 @@
|
|||||||
rowsData.forEach((rowData) => {
|
rowsData.forEach((rowData) => {
|
||||||
// Call API to get margin data for each individual item
|
// Call API to get margin data for each individual item
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '{{ api_url_for_browser() }}/api/maxmutuemas/specific',
|
url: '{{ config("api.url") }}/api/maxmutuemas/specific',
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
data: { karat: rowData.karat, nilaimarhun: rowData.nilaiMarhun },
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
|
|||||||
@@ -262,10 +262,6 @@
|
|||||||
<a href="{{ url('pendahuluanserahan') }}"
|
<a href="{{ url('pendahuluanserahan') }}"
|
||||||
class="btn btn-info btn-lg btn-block mb-3">Pendahuluan - Serahan</a>
|
class="btn btn-info btn-lg btn-block mb-3">Pendahuluan - Serahan</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
|
||||||
<a href="{{ route('pembiayaan.online.pc') }}"
|
|
||||||
class="btn btn-info btn-lg btn-block mb-3">Pembiayaan Online</a>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<a href="{{ route('khazanah.indexwakil') }}"
|
<a href="{{ route('khazanah.indexwakil') }}"
|
||||||
class="btn btn-info btn-lg btn-block mb-3">Surat Wakil</a>
|
class="btn btn-info btn-lg btn-block mb-3">Surat Wakil</a>
|
||||||
@@ -324,7 +320,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
const initialambilan = [
|
const initialambilan = [
|
||||||
|
|||||||
@@ -14,16 +14,13 @@
|
|||||||
</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 d-inline-block m-1">Kelulusan Anggota</a>
|
<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 d-inline-block m-1">Kelulusan</a>
|
<a href="{{ route('operasi.kelulusan') }}" class="btn btn-info btn-lg">Kelulusan</a>
|
||||||
<a href="{{ route('pembiayaan.online.operasi') }}" class="btn btn-info btn-lg d-inline-block m-1">Pembiayaan Online</a>
|
<a href="{{ route('daftar.kakitangan') }}" class="btn btn-info btn-lg">Kakitangan</a>
|
||||||
<a href="{{ route('pembiayaan.online.operasi.topup') }}" class="btn btn-info btn-lg d-inline-block m-1">Modal Online</a>
|
<a href="{{ route('parameter') }}" class="btn btn-info btn-lg">Parameter</a>
|
||||||
<a href="{{ route('pembiayaan.online.operasi.eod') }}" class="btn btn-info btn-lg d-inline-block m-1">EOD Modal Online</a>
|
<a href="{{ route('komuditi') }}" class="btn btn-info btn-lg">Komoditi</a>
|
||||||
<a href="{{ route('daftar.kakitangan') }}" class="btn btn-info btn-lg d-inline-block m-1">Kakitangan</a>
|
<a href="{{ route('perubatan') }}" class="btn btn-info btn-lg">Perubatan</a>
|
||||||
<a href="{{ route('parameter') }}" class="btn btn-info btn-lg d-inline-block m-1">Parameter</a>
|
<a href="{{ route('operasi.laporan.audit') }}" class="btn btn-info btn-lg">Laporan Audit</a>
|
||||||
<a href="{{ route('komuditi') }}" class="btn btn-info btn-lg d-inline-block m-1">Komoditi</a>
|
|
||||||
<a href="{{ route('perubatan') }}" class="btn btn-info btn-lg d-inline-block m-1">Perubatan</a>
|
|
||||||
<a href="{{ route('operasi.laporan.audit') }}" class="btn btn-info btn-lg d-inline-block m-1">Laporan Audit</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -267,7 +267,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var cawangan = "{{ Auth::user()->cawangan }}";
|
var cawangan = "{{ Auth::user()->cawangan }}";
|
||||||
var teller = "{{ Auth::user()->name }}";
|
var teller = "{{ Auth::user()->name }}";
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
let teller = "{{ Auth::user()->name }}";
|
let teller = "{{ Auth::user()->name }}";
|
||||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
function pelangganclick()
|
function pelangganclick()
|
||||||
{
|
{
|
||||||
// $getTunai2=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/GetCurrentTunai/'.$auth_user['cawangan'],['kodlaluan' => $kodlaluan])->json();
|
// $getTunai2=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/GetCurrentTunai/'.$auth_user['cawangan'],['kodlaluan' => $kodlaluan])->json();
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -315,7 +315,7 @@
|
|||||||
const d = new Date();
|
const d = new Date();
|
||||||
let tahunsemasa = d.getFullYear();
|
let tahunsemasa = d.getFullYear();
|
||||||
let pusherenv = "{{ env('PUSHER_APP_KEY') }}";
|
let pusherenv = "{{ env('PUSHER_APP_KEY') }}";
|
||||||
let api_url = "{{ api_url_for_browser() }}";
|
let api_url = "{{ $api_url }}";
|
||||||
|
|
||||||
const formatter = new Intl.NumberFormat('en-US', {
|
const formatter = new Intl.NumberFormat('en-US', {
|
||||||
minimumFractionDigits: 2
|
minimumFractionDigits: 2
|
||||||
|
|||||||
@@ -230,7 +230,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var cawangan = "{{ Auth::user()->cawangan }}";
|
var cawangan = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -318,7 +318,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var search = "<?php echo $search ?>";
|
var search = "<?php echo $search ?>";
|
||||||
var type_id = "<?php echo $idtype ?>";
|
var type_id = "<?php echo $idtype ?>";
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -410,7 +410,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var ppc = "{{ Auth::user()->name }}";
|
var ppc = "{{ Auth::user()->name }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
|
|||||||
@@ -177,7 +177,7 @@
|
|||||||
"scrollX": true
|
"scrollX": true
|
||||||
});
|
});
|
||||||
|
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
var kodcaw = "{{ Auth::user()->cawangan }}";
|
var kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
const formatter = new Intl.NumberFormat('en-US', {
|
const formatter = new Intl.NumberFormat('en-US', {
|
||||||
@@ -271,7 +271,7 @@
|
|||||||
|
|
||||||
async function updatelulus(e)
|
async function updatelulus(e)
|
||||||
{
|
{
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
const { value: katalaluan } = await Swal.fire({
|
const { value: katalaluan } = await Swal.fire({
|
||||||
|
|||||||
@@ -299,7 +299,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$(document).ready( function () {
|
$(document).ready( function () {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tabletebus = $('#myTable').DataTable({
|
var tabletebus = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablebatalgadai = $('#myTable').DataTable({
|
var tablebatalgadai = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablegadai = $('#myTable').DataTable({
|
var tablegadai = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$(document).ready( function () {
|
$(document).ready( function () {
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$(document).ready( function () {
|
$(document).ready( function () {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablebatalgadai = $('#myTable').DataTable({
|
var tablebatalgadai = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
// alert(btoa(api_url));
|
// alert(btoa(api_url));
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tabletebus = $('#myTable').DataTable({
|
var tabletebus = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var panjartebus = $('#myTable').DataTable({
|
var panjartebus = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$(document).ready( function () {
|
$(document).ready( function () {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$(document).ready( function () {
|
$(document).ready( function () {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tabletuntutbaki = $('#myTable').DataTable({
|
var tabletuntutbaki = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var advansurtable = $('#myTable').DataTable({
|
var advansurtable = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tabletebus = $('#myTable').DataTable({
|
var tabletebus = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablegadai = $('#myTable').DataTable({
|
var tablegadai = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
var tablecustomers = $('#myTable').DataTable({
|
var tablecustomers = $('#myTable').DataTable({
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<script src="{{ asset('js/main.js') }}"></script>
|
<script src="{{ asset('js/main.js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
var kodcaw = "<?php echo $cawangan_info['kodcaw'] ?>";
|
||||||
|
|
||||||
$(".modal.fade").on("show.bs.modal", function(e) {
|
$(".modal.fade").on("show.bs.modal", function(e) {
|
||||||
@@ -1087,7 +1087,7 @@
|
|||||||
if (suratBtn) {
|
if (suratBtn) {
|
||||||
const norujukan = suratBtn.getAttribute('data-norujukan');
|
const norujukan = suratBtn.getAttribute('data-norujukan');
|
||||||
|
|
||||||
let gadaianDetail = await fetch("{{ api_url_for_browser() }}" + `/api/gadai/norujukankodcaw/${kodcaw}/${norujukan}`)
|
let gadaianDetail = await fetch("{{ config('api.url') }}" + `/api/gadai/norujukankodcaw/${kodcaw}/${norujukan}`)
|
||||||
.then(response => response.json());
|
.then(response => response.json());
|
||||||
|
|
||||||
askOperasiApproval(gadaianDetail[0][0]);
|
askOperasiApproval(gadaianDetail[0][0]);
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ Auth::user()->cawangan }}";
|
var kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -304,7 +304,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
let kodcaw = "{{ Auth::user()->cawangan }}";
|
let kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
let teller = "{{ Auth::user()->name }}";
|
let teller = "{{ Auth::user()->name }}";
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
"ordering": false
|
"ordering": false
|
||||||
});
|
});
|
||||||
|
|
||||||
var api_url = '{{ api_url_for_browser() }}';
|
var api_url = '{{ $api_url }}';
|
||||||
|
|
||||||
$('#PermohonanWang').on('hidden.bs.modal', function (e) {
|
$('#PermohonanWang').on('hidden.bs.modal', function (e) {
|
||||||
$(this)
|
$(this)
|
||||||
|
|||||||
@@ -81,7 +81,7 @@
|
|||||||
"ordering": false
|
"ordering": false
|
||||||
});
|
});
|
||||||
|
|
||||||
var api_url = '{{ api_url_for_browser() }}';
|
var api_url = '{{ $api_url }}';
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
var api_arrahnbid = "<?php echo config('app.api_arrahnbid') ?>";
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
|
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ Auth::user()->cawangan }}";
|
var kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -179,7 +179,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
|
|
||||||
var cawangan = "{{ Auth::user()->cawangan }}";
|
var cawangan = "{{ Auth::user()->cawangan }}";
|
||||||
|
|
||||||
|
|||||||
@@ -410,7 +410,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var ppc = "{{ Auth::user()->name }}";
|
var ppc = "{{ Auth::user()->name }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
|
|||||||
@@ -466,7 +466,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
var kodcaw = "{{ $cawangan_info['kodcaw'] }}";
|
||||||
var ppc = "{{ Auth::user()->name }}";
|
var ppc = "{{ Auth::user()->name }}";
|
||||||
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
var tagarrahnbid = "{{ $cawangan_info['tagarrahnbid'] }}";
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var api_url = "{{ api_url_for_browser() }}";
|
var api_url = "<?php echo $api_url ?>";
|
||||||
var search = "<?php echo $search ?>";
|
var search = "<?php echo $search ?>";
|
||||||
var type_id = "<?php echo $idtype ?>";
|
var type_id = "<?php echo $idtype ?>";
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
@if(Auth::user()->roles == 'ppc' || Auth::user()->roles == 'pc')
|
@if(Auth::user()->roles == 'ppc' || Auth::user()->roles == 'pc')
|
||||||
<script>
|
<script>
|
||||||
window.api = "{{ api_url_for_browser() }}";
|
window.api = "{{ config('api.url') }}";
|
||||||
window.kodcaw = "{{ Auth::user()->cawangan }}";
|
window.kodcaw = "{{ Auth::user()->cawangan }}";
|
||||||
window.apikey = "{{ env('PUSHER_APP_KEY') }}";
|
window.apikey = "{{ env('PUSHER_APP_KEY') }}";
|
||||||
</script>
|
</script>
|
||||||
@@ -199,7 +199,7 @@
|
|||||||
<!-- Right Side Of Navbar -->
|
<!-- Right Side Of Navbar -->
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ml-auto">
|
||||||
|
|
||||||
@include('layouts.partials.impersonation_nav')
|
|
||||||
|
|
||||||
@php $auth_user = Auth::user(); @endphp
|
@php $auth_user = Auth::user(); @endphp
|
||||||
@if ($auth_user['roles'] == 'ppc' || $auth_user['roles'] == 'pc')
|
@if ($auth_user['roles'] == 'ppc' || $auth_user['roles'] == 'pc')
|
||||||
@@ -381,7 +381,6 @@
|
|||||||
<a class="dropdown-item" href="{{ route('profile') }}">
|
<a class="dropdown-item" href="{{ route('profile') }}">
|
||||||
{{ __('Profile') }}
|
{{ __('Profile') }}
|
||||||
</a>
|
</a>
|
||||||
@if(!(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated()))
|
|
||||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||||
onclick="event.preventDefault();
|
onclick="event.preventDefault();
|
||||||
document.getElementById('logout-form').submit();">
|
document.getElementById('logout-form').submit();">
|
||||||
@@ -391,7 +390,6 @@
|
|||||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||||
@csrf
|
@csrf
|
||||||
</form>
|
</form>
|
||||||
@endif
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,6 @@
|
|||||||
|
|
||||||
<!-- Right Side Of Navbar -->
|
<!-- Right Side Of Navbar -->
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ml-auto">
|
||||||
@include('layouts.partials.impersonation_nav')
|
|
||||||
<!-- <li class="nav-item dropdown" style="margin-right:10px;">
|
<!-- <li class="nav-item dropdown" style="margin-right:10px;">
|
||||||
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
||||||
<i id="bell" class="fa fa-bell"></i>
|
<i id="bell" class="fa fa-bell"></i>
|
||||||
@@ -144,7 +143,6 @@
|
|||||||
<a class="dropdown-item" href="{{ route('profile') }}">
|
<a class="dropdown-item" href="{{ route('profile') }}">
|
||||||
{{ __('Profile') }}
|
{{ __('Profile') }}
|
||||||
</a>
|
</a>
|
||||||
@if(!(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated()))
|
|
||||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||||
onclick="event.preventDefault();
|
onclick="event.preventDefault();
|
||||||
document.getElementById('logout-form').submit();">
|
document.getElementById('logout-form').submit();">
|
||||||
@@ -154,7 +152,6 @@
|
|||||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||||
@csrf
|
@csrf
|
||||||
</form>
|
</form>
|
||||||
@endif
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,6 @@
|
|||||||
|
|
||||||
<!-- Right Side Of Navbar -->
|
<!-- Right Side Of Navbar -->
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ml-auto">
|
||||||
@include('layouts.partials.impersonation_nav')
|
|
||||||
<li class="nav-item dropdown" style="margin-right:10px;">
|
<li class="nav-item dropdown" style="margin-right:10px;">
|
||||||
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
<a id="navbarDropdown" class="nav-link " href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
||||||
<i id="bell" class="fa fa-bell"></i>
|
<i id="bell" class="fa fa-bell"></i>
|
||||||
@@ -234,7 +233,6 @@
|
|||||||
<a class="dropdown-item" href="{{ route('profile') }}">
|
<a class="dropdown-item" href="{{ route('profile') }}">
|
||||||
{{ __('Profile') }}
|
{{ __('Profile') }}
|
||||||
</a>
|
</a>
|
||||||
@if(!(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated()))
|
|
||||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||||
onclick="event.preventDefault();
|
onclick="event.preventDefault();
|
||||||
document.getElementById('logout-form').submit();">
|
document.getElementById('logout-form').submit();">
|
||||||
@@ -244,7 +242,6 @@
|
|||||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||||
@csrf
|
@csrf
|
||||||
</form>
|
</form>
|
||||||
@endif
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
@if(Auth::check() && method_exists(Auth::user(), 'isImpersonated') && Auth::user()->isImpersonated())
|
|
||||||
<li class="nav-item" style="margin-right:10px;">
|
|
||||||
<form method="post" action="{{ route('impersonate.leave') }}" class="m-0">
|
|
||||||
@csrf
|
|
||||||
<button type="submit" class="btn btn-sm btn-warning" title="Stop impersonate">
|
|
||||||
Keluar Penyamaran
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var api = "{{ api_url_for_browser() }}";
|
var api = '<?php echo $api_url ?>';
|
||||||
let nw = 0;
|
let nw = 0;
|
||||||
|
|
||||||
function wakilfunction(e)
|
function wakilfunction(e)
|
||||||
@@ -536,7 +536,7 @@ function ubahwakil(e)
|
|||||||
{
|
{
|
||||||
|
|
||||||
let norujukan = $('#norujukan').val();
|
let norujukan = $('#norujukan').val();
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
let nowakil = nw;
|
let nowakil = nw;
|
||||||
let jenis = '';
|
let jenis = '';
|
||||||
|
|
||||||
@@ -627,7 +627,7 @@ function ubahwakil(e)
|
|||||||
|
|
||||||
|
|
||||||
let norujukan = $('#norujukan').val();
|
let norujukan = $('#norujukan').val();
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
let nowakil = 0;
|
let nowakil = 0;
|
||||||
let jenis = '';
|
let jenis = '';
|
||||||
let mohon = '';
|
let mohon = '';
|
||||||
|
|||||||
@@ -229,7 +229,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var api = "{{ api_url_for_browser() }}";
|
var api = '<?php echo $api_url ?>';
|
||||||
let nw = 0;
|
let nw = 0;
|
||||||
|
|
||||||
function wakilfunction(e)
|
function wakilfunction(e)
|
||||||
@@ -565,7 +565,7 @@ function ubahwakil(e)
|
|||||||
{
|
{
|
||||||
|
|
||||||
let norujukan = $('#norujukan').val();
|
let norujukan = $('#norujukan').val();
|
||||||
let api = "{{ api_url_for_browser() }}";
|
let api = "{{ config('api.url') }}";
|
||||||
let nowakil = nw;
|
let nowakil = nw;
|
||||||
let jenis = '';
|
let jenis = '';
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user