feat: docker setup and sync lejer am/imbang duga with kaunter (#1)
Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
.git
|
||||||
|
.gitea
|
||||||
|
node_modules
|
||||||
|
vendor
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
storage/logs
|
||||||
|
storage/framework/cache
|
||||||
|
storage/framework/sessions
|
||||||
|
storage/framework/views
|
||||||
|
storage/debugbar
|
||||||
|
npm-debug.log
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
docker-compose.staging.yml
|
||||||
+14
-11
@@ -2,10 +2,11 @@ APP_NAME=Laravel
|
|||||||
APP_ENV=local
|
APP_ENV=local
|
||||||
APP_KEY=base64:I+gVCBqCeGsUQ3vwwW23D5wVgdgMqwM2ozBkqDFY9o0=
|
APP_KEY=base64:I+gVCBqCeGsUQ3vwwW23D5wVgdgMqwM2ozBkqDFY9o0=
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
APP_URL=http://adminv3.localhost
|
APP_URL=http://localhost:8082
|
||||||
API_URL=http://apiv3.localhost
|
API_BROWSER_URL=http://localhost:8080
|
||||||
API_URL_KOOP=http://apiv3.localhost
|
API_URL=http://api_arrahn-app-1:8000
|
||||||
API_URL_PKB=http://apiv2.localhost
|
API_URL_KOOP=http://api_arrahn-app-1:8000
|
||||||
|
API_URL_PKB=http://api_arrahn-app-1:8000
|
||||||
API_ARRAHN_PORTAL_URL=http://pay.arrahn.com.my
|
API_ARRAHN_PORTAL_URL=http://pay.arrahn.com.my
|
||||||
ADMIN_VERSION=V3
|
ADMIN_VERSION=V3
|
||||||
|
|
||||||
@@ -14,11 +15,13 @@ LOG_DEPRECATIONS_CHANNEL=null
|
|||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
DB_HOST=database_arosv3
|
DB_HOST=host.docker.internal
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_DATABASE=kaunterpkb
|
DB_DATABASE=kaunter_erahn
|
||||||
DB_USERNAME=root
|
DB_USERNAME=root
|
||||||
DB_PASSWORD=secret
|
DB_PASSWORD=root
|
||||||
|
# Windows host IP from WSL: ip route | awk '/default/{print $3}'
|
||||||
|
LARAGON_HOST=172.28.0.1
|
||||||
|
|
||||||
BROADCAST_DRIVER=pusher
|
BROADCAST_DRIVER=pusher
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=file
|
||||||
@@ -56,7 +59,7 @@ MIX_USE_DOCKER=true
|
|||||||
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
# MIX_API_URL=http://api.arrahn
|
# MIX_API_URL=http://api.arrahn
|
||||||
MIX_API_URL=http://apiv3.localhost
|
MIX_API_URL=http://localhost:8080
|
||||||
MIX_API_URL_ZONE1=http://apiv3.localhost
|
MIX_API_URL_ZONE1=http://localhost:8080
|
||||||
MIX_API_URL_ZONE2=http://apiv3.localhost
|
MIX_API_URL_ZONE2=http://localhost:8080
|
||||||
MIX_API_URL_ZONE3=http://apiv3.localhost
|
MIX_API_URL_ZONE3=http://localhost:8080
|
||||||
|
|||||||
@@ -43,24 +43,23 @@ class AkaunController extends Controller
|
|||||||
$current = Carbon::now();
|
$current = Carbon::now();
|
||||||
$current = new Carbon();
|
$current = new Carbon();
|
||||||
$tarikh_cetak = $current->toDateString();
|
$tarikh_cetak = $current->toDateString();
|
||||||
|
$tarikh_mula = $tarikh_cetak;
|
||||||
|
$tarikh_akhir = $tarikh_cetak;
|
||||||
|
|
||||||
if($request->datemula == null){
|
if($request->datemula != null){
|
||||||
$tarikh_cetak = $current->toDateString();
|
$tarikh_mula = $request->datemula;
|
||||||
}else {
|
|
||||||
$split_date = explode('-',$request->datemula);
|
|
||||||
// $tarikh_mula = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
|
|
||||||
$tarikh_mula = $request->datemula;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if($request->datehingga == null){
|
if($request->datehingga != null){
|
||||||
$tarikh_cetak = $current->toDateString();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$split_date = explode('-',$request->datehingga);
|
|
||||||
// $tarikh_akhir = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
|
|
||||||
$tarikh_akhir = $request->datehingga;
|
$tarikh_akhir = $request->datehingga;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$had_response = Http::get($request->hostname . '/api/ModalOnlineLejer/' . $request->kodcaw, [
|
||||||
|
'mula' => $tarikh_mula,
|
||||||
|
'hingga' => $tarikh_akhir,
|
||||||
|
])->json();
|
||||||
|
$had_modal_online = $had_response['had'] ?? 0;
|
||||||
|
|
||||||
$lejeramdata = Lejeram::orderBy('glcode')->get();
|
$lejeramdata = Lejeram::orderBy('glcode')->get();
|
||||||
$lejeram = array();
|
$lejeram = array();
|
||||||
$len = count($lejeramdata);
|
$len = count($lejeramdata);
|
||||||
@@ -100,6 +99,11 @@ class AkaunController extends Controller
|
|||||||
$kredit = ${$lejer['variable']}[$lejer->namakredit];
|
$kredit = ${$lejer['variable']}[$lejer->namakredit];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($lejer->glcode == '7000/102')
|
||||||
|
{
|
||||||
|
$kredit = floatval($kredit) + $had_modal_online;
|
||||||
|
}
|
||||||
|
|
||||||
$totalkredit += floatval($kredit);
|
$totalkredit += floatval($kredit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +196,14 @@ class AkaunController extends Controller
|
|||||||
$hapuskira = Http::get($request->hostname.'/api/CalculationHapusKira/' . $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
$hapuskira = Http::get($request->hostname.'/api/CalculationHapusKira/' . $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
||||||
$xtra = Http::get($request->hostname.'/api/Xtra/' . $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
$xtra = Http::get($request->hostname.'/api/Xtra/' . $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
||||||
|
|
||||||
|
$rebetAnnur = !empty(($cawangan_info['features'] ?? [])['rebet_annur']);
|
||||||
|
$rebetpromo = 0;
|
||||||
|
$pelarasanrebate = 0;
|
||||||
|
if ($rebetAnnur) {
|
||||||
|
$rebetpromo = Http::get($request->hostname.'/api/RebetPromoCalculation/' . $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
||||||
|
$pelarasanrebate = Http::get($request->hostname.'/api/PelarasanRebate/' . $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
||||||
|
}
|
||||||
|
|
||||||
//TunaiDitangan Sementara Upah
|
//TunaiDitangan Sementara Upah
|
||||||
if($tarikh_imbangan2 >= '2021-04-22' && $tarikh_imbangan2 < '2021-05-05')
|
if($tarikh_imbangan2 >= '2021-04-22' && $tarikh_imbangan2 < '2021-05-05')
|
||||||
{
|
{
|
||||||
@@ -229,24 +240,10 @@ class AkaunController extends Controller
|
|||||||
$untungrugiterkumpul = Http::get($request->hostname. '/api/UntungRugiTerkumpul/'. $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
$untungrugiterkumpul = Http::get($request->hostname. '/api/UntungRugiTerkumpul/'. $request->kodcaw,['tarikh' => $tarikh_imbangan2])->json();
|
||||||
|
|
||||||
$hartasemasa = [];
|
$hartasemasa = [];
|
||||||
|
|
||||||
if($request->kodcaw == '010219')
|
|
||||||
{
|
|
||||||
if($tarikh_imbangan2 >= '2023-02-16')
|
|
||||||
{
|
|
||||||
$hutang = Http::withOptions(['verify' => config('app.api_verify')])->get($request->hostname.'/admin/ig/penghutang' ,['kodcaw' => $request->kodcaw, 'tarikh' => $tarikh_imbangan2])->json();
|
|
||||||
$bayaran_hutang = Http::withOptions(['verify' => config('app.api_verify')])->get($request->hostname.'/admin/ig/bayaran_penghutang' ,['kodcaw' => $request->kodcaw, 'tarikh' => $tarikh_imbangan2])->json();
|
|
||||||
//if($bayaran_hutang > 0) array_push($hartasemasa,['glcode' => '8000/501','descpt' => 'Bayaran Penghutang', 'amaun' => $bayaran_hutang]);
|
|
||||||
$totaltunaiditangan = $totaltunaiditangan;
|
|
||||||
$penghutangkaki = $hutang['bakihutang'] - $bayaran_hutang;
|
|
||||||
}else{
|
|
||||||
$penghutangkaki = $penghutangkaki;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// $hartasemasa = ['serahan' => $imbangduga['serahan'],'pinjamankoop' => $pinjamandiberi['pinjamankoop'],'emaspalsu' => $pinjamandiberi['emaspalsu'],'tunaiditangan' => $tunaiditangan['bakiakhir']];
|
// $hartasemasa = ['serahan' => $imbangduga['serahan'],'pinjamankoop' => $pinjamandiberi['pinjamankoop'],'emaspalsu' => $pinjamandiberi['emaspalsu'],'tunaiditangan' => $tunaiditangan['bakiakhir']];
|
||||||
|
|
||||||
if($totaltunaiditangan > 0) array_push($hartasemasa,['glcode' => '1000/011','descpt' => 'Tunai Di Tangan', 'amaun' => $totaltunaiditangan]);
|
if($totaltunaiditangan > 0) array_push($hartasemasa,['glcode' => '1000/010','descpt' => 'Tunai Di Tangan', 'amaun' => $totaltunaiditangan]);
|
||||||
if($pembiayaantawarruq > 0) array_push($hartasemasa,['glcode' => '1000/021','descpt' => 'Pembiayaan Di Bawah Tawarruq', 'amaun' => $pembiayaantawarruq]);
|
if($pembiayaantawarruq > 0) array_push($hartasemasa,['glcode' => '1000/010','descpt' => 'Pembiayaan Di Bawah Tawarruq', 'amaun' => $pembiayaantawarruq]);
|
||||||
if($penghutangkaki > 0) array_push($hartasemasa,['glcode' => '1000/011','descpt' => 'Penghutang Kakitangan', 'amaun' => $penghutangkaki]);
|
if($penghutangkaki > 0) array_push($hartasemasa,['glcode' => '1000/011','descpt' => 'Penghutang Kakitangan', 'amaun' => $penghutangkaki]);
|
||||||
//array_push($hartasemasa,['glcode' => '1000/045','descpt' => 'Serahan Bayaran Online', 'amaun' => 0.00]);
|
//array_push($hartasemasa,['glcode' => '1000/045','descpt' => 'Serahan Bayaran Online', 'amaun' => 0.00]);
|
||||||
if($keuntungan > 0) array_push($hartasemasa,['glcode' => '1000/211','descpt' => 'Keuntungan Tertangguh', 'amaun' => $keuntungan]);
|
if($keuntungan > 0) array_push($hartasemasa,['glcode' => '1000/211','descpt' => 'Keuntungan Tertangguh', 'amaun' => $keuntungan]);
|
||||||
@@ -258,6 +255,7 @@ class AkaunController extends Controller
|
|||||||
if($imbangduga['pindahkekpkb'] > 0) array_push($hartasemasa,['glcode' => '1000/090','descpt' => 'Pindah Ke KPKB(IP)', 'amaun' => $imbangduga['pindahkekpkb']]);
|
if($imbangduga['pindahkekpkb'] > 0) array_push($hartasemasa,['glcode' => '1000/090','descpt' => 'Pindah Ke KPKB(IP)', 'amaun' => $imbangduga['pindahkekpkb']]);
|
||||||
if($peruntukanhapuskira > 0) array_push($hartasemasa,['glcode' => '1000/015','descpt' => 'Peruntukan Hapus Kira', 'amaun' => $peruntukanhapuskira]);
|
if($peruntukanhapuskira > 0) array_push($hartasemasa,['glcode' => '1000/015','descpt' => 'Peruntukan Hapus Kira', 'amaun' => $peruntukanhapuskira]);
|
||||||
if($belian1stop > 0) array_push($hartasemasa,['glcode' => '8000/501','descpt' => 'Belian 1 Stop', 'amaun' => $belian1stop]);
|
if($belian1stop > 0) array_push($hartasemasa,['glcode' => '8000/501','descpt' => 'Belian 1 Stop', 'amaun' => $belian1stop]);
|
||||||
|
if($rebetpromo > 0) array_push($hartasemasa,['glcode' => '5000/242','descpt' => 'Diskaun Promosi', 'amaun' => ($rebetpromo * -1)]);
|
||||||
|
|
||||||
$totalhartasemasa = 0;
|
$totalhartasemasa = 0;
|
||||||
foreach($hartasemasa as $index => $hs)
|
foreach($hartasemasa as $index => $hs)
|
||||||
@@ -278,7 +276,7 @@ class AkaunController extends Controller
|
|||||||
if($panjar['keraian'] > 0) array_push($tanggungansemasa,['glcode' => '3000/019','descpt' => 'Panjar - Keraian Dan Promosi','amaun' => -$panjar['keraian']]);
|
if($panjar['keraian'] > 0) array_push($tanggungansemasa,['glcode' => '3000/019','descpt' => 'Panjar - Keraian Dan Promosi','amaun' => -$panjar['keraian']]);
|
||||||
if($bakilelong['bakilelong'] != 0) array_push($tanggungansemasa,['glcode' => '7000/090','descpt' => 'Baki Lelong','amaun' => $bakilelong['bakilelong']]);
|
if($bakilelong['bakilelong'] != 0) array_push($tanggungansemasa,['glcode' => '7000/090','descpt' => 'Baki Lelong','amaun' => $bakilelong['bakilelong']]);
|
||||||
if($bakilelong['rugilelong'] != 0) array_push($tanggungansemasa,['glcode' => '3000/020','descpt' => 'Kerugian Lelong','amaun' => $bakilelong['rugilelong']]);
|
if($bakilelong['rugilelong'] != 0) array_push($tanggungansemasa,['glcode' => '3000/020','descpt' => 'Kerugian Lelong','amaun' => $bakilelong['rugilelong']]);
|
||||||
if($wtd > 0) array_push($tanggungansemasa,['glcode' => '3000/021','descpt' => 'Wang Tak Dituntut','amaun' => $wtd]);
|
if($wtd > 0) array_push($tanggungansemasa,['glcode' => '3000/021','descpt' => 'SERAHAN WANG TAK DITUNTUT','amaun' => $wtd]);
|
||||||
if($cajlelong > 0) array_push($tanggungansemasa,['glcode' => '5000/213','descpt' => 'Pendapatan Caj Lelong','amaun' => $cajlelong]);
|
if($cajlelong > 0) array_push($tanggungansemasa,['glcode' => '5000/213','descpt' => 'Pendapatan Caj Lelong','amaun' => $cajlelong]);
|
||||||
if($untungrugiterkumpul != 0) array_push($tanggungansemasa,['glcode' => '7000/101','descpt' => 'Untung/Rugi Terkumpul','amaun' => $untungrugiterkumpul]);
|
if($untungrugiterkumpul != 0) array_push($tanggungansemasa,['glcode' => '7000/101','descpt' => 'Untung/Rugi Terkumpul','amaun' => $untungrugiterkumpul]);
|
||||||
if($cajperkhidmatan > 0) array_push($tanggungansemasa,['glcode' => '5000/213','descpt' => 'Caj Perkhidmatan Terkumpul','amaun' => $cajperkhidmatan]);
|
if($cajperkhidmatan > 0) array_push($tanggungansemasa,['glcode' => '5000/213','descpt' => 'Caj Perkhidmatan Terkumpul','amaun' => $cajperkhidmatan]);
|
||||||
@@ -289,6 +287,8 @@ class AkaunController extends Controller
|
|||||||
if($utgterkumpulxtra > 0) array_push($tanggungansemasa,['glcode' => '7000/201','descpt' => 'Untung/Rugi Terkumpul Xtra','amaun' => $utgterkumpulxtra]);
|
if($utgterkumpulxtra > 0) array_push($tanggungansemasa,['glcode' => '7000/201','descpt' => 'Untung/Rugi Terkumpul Xtra','amaun' => $utgterkumpulxtra]);
|
||||||
if($jualan1stop > 0) array_push($tanggungansemasa,['glcode' => '9000/501','descpt' => 'Jualan 1 Stop','amaun' => $jualan1stop]);
|
if($jualan1stop > 0) array_push($tanggungansemasa,['glcode' => '9000/501','descpt' => 'Jualan 1 Stop','amaun' => $jualan1stop]);
|
||||||
if($hapuskira > 0) array_push($tanggungansemasa,['glcode' => '3000/011','descpt' => 'Hapus Kira','amaun' => -$hapuskira]);
|
if($hapuskira > 0) array_push($tanggungansemasa,['glcode' => '3000/011','descpt' => 'Hapus Kira','amaun' => -$hapuskira]);
|
||||||
|
if($rebetpromo > 0) array_push($tanggungansemasa,['glcode' => '5000/242','descpt' => 'Diskaun Promosi', 'amaun' => ($rebetpromo * -1)]);
|
||||||
|
if($pelarasanrebate > 0) array_push($tanggungansemasa,['glcode' => '5000/243','descpt' => 'Pelarasan Rebate', 'amaun' => ($pelarasanrebate * -1)]);
|
||||||
|
|
||||||
$totaltanggungansemasa = 0;
|
$totaltanggungansemasa = 0;
|
||||||
foreach($tanggungansemasa as $index => $ts)
|
foreach($tanggungansemasa as $index => $ts)
|
||||||
@@ -303,18 +303,15 @@ class AkaunController extends Controller
|
|||||||
$totaluntungrugi = 0;
|
$totaluntungrugi = 0;
|
||||||
$totaluntungrugi = $totaltanggungansemasa + $untungrugi;
|
$totaluntungrugi = $totaltanggungansemasa + $untungrugi;
|
||||||
|
|
||||||
if(isset($request->jenis))
|
$viewData = compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail');
|
||||||
|
|
||||||
|
if($request->jenis == 'pdf')
|
||||||
{
|
{
|
||||||
if($request->jenis == 'pdf')
|
$pdf = PDF::loadView('akaun.laporan_imbanduga', $viewData)->setPaper('a4', 'potrait');
|
||||||
{
|
return $pdf->download('laporan_imbangduga_' . $request->kodcaw .'_'. $tarikh_imbangan2 . '.pdf');
|
||||||
$pdf = PDF::loadView('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'))->setPaper('a4', 'potrait');
|
|
||||||
return $pdf->download('laporan_imbangduga_' . $request->kodcaw .'_'. $tarikh_imbangan2 . '.pdf');
|
|
||||||
}else{
|
|
||||||
return view('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// return view('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
|
return view('akaun.laporan_imbanduga', $viewData);
|
||||||
}
|
}
|
||||||
////ainizazi
|
////ainizazi
|
||||||
public function cetakLaporanGadai(Request $request){
|
public function cetakLaporanGadai(Request $request){
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class Kernel extends HttpKernel
|
|||||||
*/
|
*/
|
||||||
protected $middlewareGroups = [
|
protected $middlewareGroups = [
|
||||||
'web' => [
|
'web' => [
|
||||||
|
\App\Http\Middleware\RewriteApiHostname::class,
|
||||||
\App\Http\Middleware\EncryptCookies::class,
|
\App\Http\Middleware\EncryptCookies::class,
|
||||||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
||||||
\Illuminate\Session\Middleware\StartSession::class,
|
\Illuminate\Session\Middleware\StartSession::class,
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class RewriteApiHostname
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Vue posts the browser API URL as "hostname". PHP must call the
|
||||||
|
* Docker-reachable API_URL instead of localhost.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @param \Closure $next
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function handle(Request $request, Closure $next)
|
||||||
|
{
|
||||||
|
if ($request->has('hostname')) {
|
||||||
|
$request->merge([
|
||||||
|
'hostname' => api_url_for_server($request->input('hostname')),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!function_exists('api_url_for_browser')) {
|
||||||
|
/**
|
||||||
|
* Base URL for JavaScript in the browser.
|
||||||
|
* API_URL may be a Docker-only hostname (api_arrahn-app-1). Browsers use API_BROWSER_URL.
|
||||||
|
* Docker dev often uses host.docker.internal for PHP→host; browsers may not resolve it.
|
||||||
|
* Production URLs are unchanged when API_BROWSER_URL is empty.
|
||||||
|
*/
|
||||||
|
function api_url_for_browser(): string
|
||||||
|
{
|
||||||
|
$browser = rtrim((string) config('api.browser_url'), '/');
|
||||||
|
if ($browser !== '') {
|
||||||
|
return $browser;
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = rtrim((string) config('api.url'), '/');
|
||||||
|
|
||||||
|
return str_ireplace('host.docker.internal', '127.0.0.1', $url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('api_url_for_server')) {
|
||||||
|
/**
|
||||||
|
* Base URL for PHP Http::get/put from this container.
|
||||||
|
* Vue posts MIX_API_URL (localhost:8080) as "hostname"; that is for the browser.
|
||||||
|
* Inside Docker, localhost is this container — map it to API_URL.
|
||||||
|
*/
|
||||||
|
function api_url_for_server(?string $url = null): string
|
||||||
|
{
|
||||||
|
$internal = rtrim((string) config('api.url'), '/');
|
||||||
|
|
||||||
|
if ($url === null || $url === '') {
|
||||||
|
return $internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = rtrim($url, '/');
|
||||||
|
$browser = rtrim((string) config('api.browser_url'), '/');
|
||||||
|
|
||||||
|
if ($internal === '') {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($browser !== '' && strcasecmp($url, $browser) === 0) {
|
||||||
|
return $internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
$host = parse_url($url, PHP_URL_HOST);
|
||||||
|
if (in_array($host, ['localhost', '127.0.0.1', 'host.docker.internal'], true)) {
|
||||||
|
return $internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-1
@@ -32,7 +32,10 @@
|
|||||||
"App\\": "app/",
|
"App\\": "app/",
|
||||||
"Database\\Factories\\": "database/factories/",
|
"Database\\Factories\\": "database/factories/",
|
||||||
"Database\\Seeders\\": "database/seeders/"
|
"Database\\Seeders\\": "database/seeders/"
|
||||||
}
|
},
|
||||||
|
"files": [
|
||||||
|
"app/helpers.php"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'url' => env('API_URL'),
|
'url' => env('API_URL'),
|
||||||
|
'browser_url' => env('API_BROWSER_URL'),
|
||||||
'url_koop' => env('API_URL_KOOP'),
|
'url_koop' => env('API_URL_KOOP'),
|
||||||
'url_pkb' => env('API_URL_PKB'),
|
'url_pkb' => env('API_URL_PKB'),
|
||||||
'url_arrahn_portal' => env('API_ARRAHN_PORTAL_URL'),
|
'url_arrahn_portal' => env('API_ARRAHN_PORTAL_URL'),
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
name: admin_erahn_staging
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: ${APP_IMAGE:-git.koppkb.com/kopkb/admin-erahn}:${IMAGE_TAG:-staging}
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/php/Dockerfile
|
||||||
|
target: staging
|
||||||
|
container_name: admin_erahn_staging_app
|
||||||
|
working_dir: /var/www/html
|
||||||
|
volumes:
|
||||||
|
- storage_staging:/var/www/html/storage
|
||||||
|
- ./.env.staging:/var/www/html/.env.staging:ro
|
||||||
|
env_file:
|
||||||
|
- .env.staging
|
||||||
|
environment:
|
||||||
|
APP_ENV: staging
|
||||||
|
USE_STAGING_ENV: "true"
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: nginx:1.25-alpine
|
||||||
|
container_name: admin_erahn_staging_web
|
||||||
|
ports:
|
||||||
|
- "${HTTP_PORT:-8092}:80"
|
||||||
|
volumes:
|
||||||
|
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
|
- ./public:/var/www/html/public:ro
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.0
|
||||||
|
container_name: admin_erahn_staging_mysql
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:${MYSQL_PUBLISH_PORT:-3310}:3306"
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: admin_erahn
|
||||||
|
MYSQL_USER: adminuser
|
||||||
|
MYSQL_PASSWORD: password
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
volumes:
|
||||||
|
- mysql_staging_data:/var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-proot"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 30
|
||||||
|
start_period: 20s
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql_staging_data:
|
||||||
|
storage_staging:
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
root /var/www/html/public;
|
||||||
|
index index.php index.html;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
client_max_body_size 50M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
# Production Apache public/.htaccess 301-strips trailing slashes.
|
||||||
|
# Nginx ignores .htaccess, so without this /path/ 404s while /path works.
|
||||||
|
rewrite ^/(.*)/$ /$1 last;
|
||||||
|
try_files $uri @php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @php {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME /var/www/html/public/index.php;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_pass app:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_read_timeout 120s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_pass app:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_read_timeout 120s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
FROM php:7.4-fpm AS base
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
# PHP 7.4 uses Debian Bullseye; use its archived package repositories.
|
||||||
|
# Archived security metadata expires, but package signatures remain verified.
|
||||||
|
RUN printf '%s\n' \
|
||||||
|
'deb https://archive.debian.org/debian bullseye main' \
|
||||||
|
'deb [check-valid-until=no] https://archive.debian.org/debian-security bullseye-security main' \
|
||||||
|
> /etc/apt/sources.list \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& apt-get -o Acquire::Retries=3 update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
git \
|
||||||
|
pkg-config \
|
||||||
|
unzip \
|
||||||
|
libonig-dev \
|
||||||
|
libzip-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libjpeg62-turbo-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||||
|
&& docker-php-ext-install -j"$(nproc)" \
|
||||||
|
pdo_mysql \
|
||||||
|
mbstring \
|
||||||
|
bcmath \
|
||||||
|
zip \
|
||||||
|
exif \
|
||||||
|
gd \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
||||||
|
|
||||||
|
COPY docker/php/php.ini /usr/local/etc/php/conf.d/app.ini
|
||||||
|
COPY docker/php/zz-clear-env.conf /usr/local/etc/php-fpm.d/zz-clear-env.conf
|
||||||
|
COPY docker/php/entrypoint.sh /usr/local/bin/app-entrypoint.sh
|
||||||
|
|
||||||
|
# Normalize Windows checkout line endings before executing the script.
|
||||||
|
RUN sed -i 's/\r$//' /usr/local/bin/app-entrypoint.sh \
|
||||||
|
&& chmod +x /usr/local/bin/app-entrypoint.sh \
|
||||||
|
&& usermod -u 1000 www-data && groupmod -g 1000 www-data
|
||||||
|
|
||||||
|
ENTRYPOINT ["app-entrypoint.sh"]
|
||||||
|
CMD ["php-fpm"]
|
||||||
|
|
||||||
|
FROM base AS staging
|
||||||
|
|
||||||
|
COPY --chown=www-data:www-data . /var/www/html
|
||||||
|
|
||||||
|
RUN composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader --no-scripts \
|
||||||
|
&& mkdir -p \
|
||||||
|
storage/logs \
|
||||||
|
storage/framework/cache/data \
|
||||||
|
storage/framework/views \
|
||||||
|
storage/framework/sessions \
|
||||||
|
storage/app/public \
|
||||||
|
bootstrap/cache \
|
||||||
|
&& chown -R www-data:www-data storage bootstrap/cache vendor
|
||||||
|
|
||||||
|
FROM base AS development
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd /var/www/html
|
||||||
|
|
||||||
|
if [ "${USE_STAGING_ENV:-false}" = "true" ] && [ -f .env.staging ]; then
|
||||||
|
cp .env.staging .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f composer.json ]; then
|
||||||
|
if [ -f vendor/autoload.php ] && [ "${USE_STAGING_ENV:-false}" = "true" ]; then
|
||||||
|
: # vendor is baked into the staging image
|
||||||
|
elif [ "${USE_STAGING_ENV:-false}" = "true" ]; then
|
||||||
|
composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader --no-scripts
|
||||||
|
else
|
||||||
|
composer install --no-interaction --prefer-dist
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p \
|
||||||
|
storage/logs \
|
||||||
|
storage/framework/cache/data \
|
||||||
|
storage/framework/views \
|
||||||
|
storage/framework/sessions \
|
||||||
|
storage/app/public \
|
||||||
|
bootstrap/cache
|
||||||
|
|
||||||
|
if [ -f artisan ]; then
|
||||||
|
php artisan package:discover --ansi
|
||||||
|
php artisan storage:link --force >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown -R www-data:www-data storage bootstrap/cache
|
||||||
|
|
||||||
|
exec docker-php-entrypoint "$@"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
memory_limit=512M
|
||||||
|
upload_max_filesize=50M
|
||||||
|
post_max_size=50M
|
||||||
|
max_execution_time=120
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[www]
|
||||||
|
; Pass container env vars (from compose env_file) through to PHP workers.
|
||||||
|
clear_env = no
|
||||||
@@ -55,15 +55,13 @@
|
|||||||
<i class="animate-spin fas fa-circle-notch fixed fa-4x m-auto text-yellow-500" style="left:48% !important;top:45% !important;"></i>
|
<i class="animate-spin fas fa-circle-notch fixed fa-4x m-auto text-yellow-500" style="left:48% !important;top:45% !important;"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<vue-friendly-iframe v-show="showLoader == false" :style="{visibility: showLoader ? 'hidden' : 'visible'}" class="h-full w-full"
|
<iframe
|
||||||
:src="''"
|
v-show="showLoader == false"
|
||||||
frame-id="myIframe"
|
class="h-full w-full"
|
||||||
@load="onLoad"
|
name="iframe_laporan"
|
||||||
@iframe-load="LoadedReady"
|
ref="reportFrame"
|
||||||
name="iframe_laporan"
|
@load="onReportLoad"
|
||||||
ref="friendlyIframe"></vue-friendly-iframe>
|
></iframe>
|
||||||
|
|
||||||
<!-- <iframe :style="{visibility: showLoader ? 'hidden' : 'visible'}" name="iframe_laporan" scrolling="true" :load="onLoad()"></iframe> -->
|
|
||||||
</div>
|
</div>
|
||||||
<!--footer-->
|
<!--footer-->
|
||||||
<div class="flex items-center justify-end p-6 border-t border-solid border-blueGray-200 rounded-b">
|
<div class="flex items-center justify-end p-6 border-t border-solid border-blueGray-200 rounded-b">
|
||||||
@@ -84,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<style>
|
<style>
|
||||||
.vue-friendly-iframe iframe {
|
iframe[name="iframe_laporan"] {
|
||||||
height:100% !important;
|
height:100% !important;
|
||||||
width:100% !important;
|
width:100% !important;
|
||||||
}
|
}
|
||||||
@@ -127,32 +125,22 @@ export default {
|
|||||||
},
|
},
|
||||||
async generateview(){
|
async generateview(){
|
||||||
await this.setJenis('view');
|
await this.setJenis('view');
|
||||||
|
this.showLoader = true;
|
||||||
// Vue.swal({
|
this.pendingStatus = 'loading';
|
||||||
// title: 'Memuatkan...',
|
|
||||||
// allowEscapeKey : false,
|
|
||||||
// allowOutsideClick: false,
|
|
||||||
// showCancelButton: false,
|
|
||||||
// showConfirmButton: false
|
|
||||||
|
|
||||||
// });
|
|
||||||
this.showModal = true;
|
this.showModal = true;
|
||||||
|
await this.$nextTick();
|
||||||
|
this.$refs.formimbangduga.submit();
|
||||||
},
|
},
|
||||||
toggleModal: function(){
|
toggleModal: function(){
|
||||||
this.showLoader = true
|
this.showLoader = true
|
||||||
this.pendingStatus = 'none'
|
this.pendingStatus = 'none'
|
||||||
this.showModal = !this.showModal;
|
this.showModal = !this.showModal;
|
||||||
},
|
},
|
||||||
async onLoad() {
|
onReportLoad() {
|
||||||
await this.$refs.formimbangduga.submit()
|
if (this.pendingStatus === 'loading') {
|
||||||
},
|
this.showLoader = false;
|
||||||
async LoadedReady(){
|
this.pendingStatus = 'ok';
|
||||||
await setTimeout(() => {
|
}
|
||||||
this.showLoader = false
|
|
||||||
this.pendingStatus = 'ok'
|
|
||||||
}, 10000);
|
|
||||||
},
|
},
|
||||||
Urlredirect: function() {
|
Urlredirect: function() {
|
||||||
return window.route('cetak.imbangduga')
|
return window.route('cetak.imbangduga')
|
||||||
|
|||||||
@@ -409,28 +409,16 @@
|
|||||||
|
|
||||||
<table id="tarikh_ib">
|
<table id="tarikh_ib">
|
||||||
<tr>
|
<tr>
|
||||||
@php
|
<td cospan="2" > <B><U>LAPORAN IMBANGAN DUGA CAWANGAN</U></B></td>
|
||||||
$api_url = request()->hostname;
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
@if(Str::contains($api_url, 'apiv3.arrahn'))
|
|
||||||
<th colspan="5"><b>LAPORAN IMBANGAN DUGA CAWANGAN (arOSv3)</b></th>
|
|
||||||
@else
|
|
||||||
<th> </th>
|
|
||||||
<td cospan="2" > <B><U>LAPORAN IMBANGAN DUGA CAWANGAN</U></B></td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table id="tarikh_ib">
|
<table id="tarikh_ib">
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr><td style="width:10px" ><b>Tarikh Laporan</b></td ><td style="width:20px"> {{ ($tarikh_imbangan2) ? $tarikh_imbangan2 : ''}} </td><td style="width:18px" ><b>Tarikh Cetak</b></td><td style="width:25px" > {{$tarikh_cetak}} </td> </tr>
|
||||||
<td style="width:20%; white-space: nowrap;"><b>Tarikh Laporan</b></td >
|
|
||||||
<td style="width:20%; white-space: nowrap;"> {{ ($tarikh_imbangan2) ? $tarikh_imbangan2 : ''}} </td>
|
|
||||||
<td style="width:150%; white-space: nowrap;"><b>Tarikh Cetak</b></td>
|
|
||||||
<td style="width:20%; white-space: nowrap;"> {{$tarikh_cetak}} </td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -323,15 +323,7 @@
|
|||||||
<br>
|
<br>
|
||||||
|
|
||||||
<table id="title">
|
<table id="title">
|
||||||
@php
|
<td> <b><u>LEJER AM</u></b></td>
|
||||||
$api_url = request()->hostname;
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
@if(Str::contains($api_url, 'apiv3.arrahn'))
|
|
||||||
<td> <b><u>LEJER AM (arOSv3)</u></b></td>
|
|
||||||
@else
|
|
||||||
<td> <b><u>LEJER AM</u></b></td>
|
|
||||||
@endif
|
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -339,19 +331,19 @@
|
|||||||
<div class="tarikhcetak">
|
<div class="tarikhcetak">
|
||||||
<span style="font-weight: bold;">[ TARIKH DARI : </span>
|
<span style="font-weight: bold;">[ TARIKH DARI : </span>
|
||||||
<span>@php
|
<span>@php
|
||||||
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_mula);
|
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_mula);
|
||||||
// $tarikhmula = $myDateTime->format('d-m-Y');
|
$tarikhmula = $myDateTime->format('d-m-Y');
|
||||||
echo($tarikh_mula)
|
echo($tarikhmula)
|
||||||
@endphp</span>
|
@endphp</span>
|
||||||
<span style="font-weight: bold;"> ..... </span>
|
<span style="font-weight: bold;"> ..... </span>
|
||||||
<span style="font-weight: bold;">HINGGA : </span><span>@php
|
<span style="font-weight: bold;">HINGGA : </span><span>@php
|
||||||
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_akhir);
|
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_akhir);
|
||||||
// $tarikhakhir = $myDateTime->format('d-m-Y');
|
$tarikhakhir = $myDateTime->format('d-m-Y');
|
||||||
echo($tarikh_akhir)
|
echo($tarikhakhir)
|
||||||
@endphp<span style="font-weight:bold"> ]</span></span>
|
@endphp<span style="font-weight:bold"> ]</span></span>
|
||||||
<span style="margin-left:50px;font-weight: bold;">TARIKH CETAK : </span><span>@php
|
<span style="margin-left:50px;font-weight: bold;">TARIKH CETAK : </span><span>@php
|
||||||
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
|
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
|
||||||
// $tarikh_cetak = $myDateTime->format('d-m-Y');
|
$tarikh_cetak = $myDateTime->format('d-m-Y');
|
||||||
echo($tarikh_cetak)
|
echo($tarikh_cetak)
|
||||||
@endphp</span>
|
@endphp</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -431,7 +423,7 @@
|
|||||||
|
|
||||||
</table> --}}
|
</table> --}}
|
||||||
|
|
||||||
{{-- <div style="margin-left:70px;">
|
<div style="margin-left:70px;">
|
||||||
<span class ="signature"><span style="margin-top:20px;">Disemak Oleh</span></span>
|
<span class ="signature"><span style="margin-top:20px;">Disemak Oleh</span></span>
|
||||||
<span class ="signature">Disahkan Oleh</span>
|
<span class ="signature">Disahkan Oleh</span>
|
||||||
</div> --}}
|
</div>
|
||||||
|
|||||||
@@ -301,16 +301,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<table id="title">
|
<table id="title">
|
||||||
@php
|
<td> <b><u>LEJER AM</u></b></td>
|
||||||
$api_url = request()->hostname;
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
@if(Str::contains($api_url, 'apiv3.arrahn'))
|
|
||||||
<td> <b><u>LEJER AM (arOSv3) - {{ $cawangan_detail['namacaw'] }}</u></b></td>
|
|
||||||
@else
|
|
||||||
<td> <b><u>LEJER AM - {{ $cawangan_detail['namacaw'] }}</u></b></td>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -318,19 +309,19 @@
|
|||||||
<div class="tarikhcetak">
|
<div class="tarikhcetak">
|
||||||
<span style="font-weight: bold;">[ TARIKH DARI : </span>
|
<span style="font-weight: bold;">[ TARIKH DARI : </span>
|
||||||
<span>@php
|
<span>@php
|
||||||
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_mula);
|
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_mula);
|
||||||
// $tarikhmula = $myDateTime->format('d-m-Y');
|
$tarikhmula = $myDateTime->format('d-m-Y');
|
||||||
echo($tarikh_mula)
|
echo($tarikhmula)
|
||||||
@endphp</span>
|
@endphp</span>
|
||||||
<span style="font-weight: bold;"> ..... </span>
|
<span style="font-weight: bold;"> ..... </span>
|
||||||
<span style="font-weight: bold;">HINGGA : </span><span>@php
|
<span style="font-weight: bold;">HINGGA : </span><span>@php
|
||||||
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_akhir);
|
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_akhir);
|
||||||
// $tarikhakhir = $myDateTime->format('d-m-Y');
|
$tarikhakhir = $myDateTime->format('d-m-Y');
|
||||||
echo($tarikh_akhir)
|
echo($tarikhakhir)
|
||||||
@endphp<span style="font-weight:bold"> ]</span></span>
|
@endphp<span style="font-weight:bold"> ]</span></span>
|
||||||
<span style="margin-left:50px;font-weight: bold;">TARIKH CETAK : </span><span>@php
|
<span style="margin-left:50px;font-weight: bold;">TARIKH CETAK : </span><span>@php
|
||||||
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
|
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
|
||||||
// $tarikh_cetak = $myDateTime->format('d-m-Y');
|
$tarikh_cetak = $myDateTime->format('d-m-Y');
|
||||||
echo($tarikh_cetak)
|
echo($tarikh_cetak)
|
||||||
@endphp</span>
|
@endphp</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
// =====================
|
// =====================
|
||||||
// Fetch Cawangan API
|
// Fetch Cawangan API
|
||||||
// =====================
|
// =====================
|
||||||
fetch("{{ config('api.url') }}/api/cawangan")
|
fetch("{{ api_url_for_browser() }}/api/cawangan")
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
container.innerHTML = '';
|
container.innerHTML = '';
|
||||||
|
|||||||
Reference in New Issue
Block a user