Merge branch 'fasa2lelong' into 'main'

Fasa2lelong

See merge request online-sistem1/admin-portal!25
This commit is contained in:
hafifie rahman
2022-08-09 17:36:19 +00:00
20 changed files with 844 additions and 323445 deletions
+2 -3
View File
@@ -13,6 +13,5 @@ npm-debug.log
yarn-error.log
/.idea
/.vscode
/public/css
/public/js
/public/css/app.css
/public/js/app.js
+51
View File
@@ -831,4 +831,55 @@ class AkaunController extends Controller
return view('audit.cetakanexcel', compact('laporan','cawangan_detail','tarikhasal','jenistebus'));
}
}
public function cetakLaporanAging(Request $request)
{
$api_url = $request->hostname;
$auth_user = Auth::user();
$current = Carbon::now();
$current = new Carbon();
$tarikh_cetak = $current->toDateString();
$kodcaw = $request->kodcaw;
$split_date = explode('-',$request->dateaging);
$bulan = $split_date[0];
$tahun = $split_date[1];
if($bulan == 1){
$namabulan = 'Januari';
}elseif($bulan == 2){
$namabulan = 'Februari';
}elseif($bulan == 3){
$namabulan = 'Mac';
}elseif($bulan == 4){
$namabulan = 'April';
}elseif($bulan == 5){
$namabulan = 'Mei';
}elseif($bulan == 6){
$namabulan = 'Jun';
}elseif($bulan == 7){
$namabulan = 'Julai';
}elseif($bulan == 8){
$namabulan = 'Ogos';
}elseif($bulan == 9){
$namabulan = 'September';
}elseif($bulan == 10){
$namabulan = 'Oktober';
}elseif($bulan == 11){
$namabulan = 'November';
}elseif($bulan == 12){
$namabulan = 'Disember';
}
$tebus_date = $namabulan . ' ' . $tahun;
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$kodcaw)->json();
$cawangan_detail=$cawangan[0];
$aging = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/admin/laporan/aging',['kodcaw' => $kodcaw,'tahun'=>$tahun,'bulan'=>$bulan])->json();
$pdf = PDF::loadView('akaun.laporan_aging', compact('aging','cawangan_detail','tarikh_cetak','tebus_date','api_url'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_aging_' . $request->kodcaw .'_'. $tebus_date . '.pdf');
// return view('akaun.laporan_aging', compact('aging','cawangan_detail','tarikh_cetak','tebus_date','api_url'));
}
}
+1
View File
@@ -38,6 +38,7 @@
"apexcharts": "^3.35.0",
"jw-vue-pagination": "^1.0.3",
"laravel-echo": "^1.11.4",
"npm-watch": "^0.11.0",
"pusher-js": "^7.0.6",
"table2excel": "^1.0.4",
"vue-apexcharts": "^1.6.2",
-182245
View File
File diff suppressed because it is too large Load Diff
-140949
View File
File diff suppressed because one or more lines are too long
+99
View File
@@ -0,0 +1,99 @@
<template>
<div class="container">
<div class="flex w-full">
<div class="xl:w-2/3 2xl:w-1/2 p-8 mx-auto">
<div class="bg-yellow-600 text-gray-200 text-lg px-6 py-4 rounded-t-lg">
<router-link to="/akaunhome">
<i class="fas fa-backspace text-white"></i>
</router-link>
<span class="text-center mx-auto text-white font-bold">Laporan Aging</span>
</div>
<form method="get" id="formaging" :action="Urlredirect()" target="_blank">
<div class="rounded bg-white shadow p-6">
<div class="pb-6">
<label for="username" class="font-semibold text-gray-700 block pb-1">Tarikh</label>
<div class="flex">
<input :value="$kodcaw" name="kodcaw" hidden/>
<input :value="$hostname" name="hostname" hidden/>
<input :value="jenisgenerate" type="hidden" name="jenis" />
<input :value="mula" type="hidden" name="dateaging"/>
<span style="background-color: #F9FAFB" class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap">Mula</span>
<!-- <input id="tarikhmula" name="datestokauditbackdate" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" /> -->
<flat-pickr v-model="mula" :config="config" class="border border-2 rounded-r px-4 py-2 w-80r mr-2"></flat-pickr>
<!-- <button @click.prevent="generatepdf" class=" mr-2 border border-yellow-600 text-yellow-600 font-montserrat py-2 px-8 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300"><i class="fas fa-file-pdf mr-2"></i>PDF</button> -->
<button @click.prevent="generateview" class="border border-yellow-600 text-yellow-600 font-montserrat py-2 px-8 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300"><i class="fas fa-eye mr-2"></i>View</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</template>
<script>
import monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect/index.js'
import 'flatpickr/dist/plugins/monthSelect/style.css'
export default {
data(){
return{
mula: null,
jenisgenerate:'none',
kodcaw: '',
config: {
wrap: false, // set wrap to true only when using 'input-group'
maxDate: 'today',
plugins: [
new monthSelectPlugin({
shorthand: true, //defaults to false
dateFormat: "m-Y", //defaults to "F Y"
altFormat: "F Y", //defaults to "F Y"
})
]
},
}
},
methods: {
// async generatepdf(){
// await this.setJenis('pdf');
// Vue.swal({
// title: 'Memuatkan...',
// allowEscapeKey : false,
// allowOutsideClick: false,
// showCancelButton: false,
// showConfirmButton: false,
// timer: 8000,
// });
// document.getElementById("formringkasanharian").submit();
// },
async generateview(){
await this.setJenis('view');
Vue.swal({
title: 'Memuatkan...',
allowEscapeKey : false,
allowOutsideClick: false,
showCancelButton: false,
showConfirmButton: false,
timer: 8000,
});
document.getElementById("formaging").submit();
},
Urlredirect: function() {
return window.route('cetak.aging')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
</script>
+5
View File
@@ -96,6 +96,11 @@
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Stok Audit Back-date</h2>
</router-link>
</div>
<div class="bg-white ml-2 shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<router-link to="/akaunhome/Aging">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Aging</h2>
</router-link>
</div>
</div>
+60 -12
View File
@@ -1,46 +1,94 @@
<template>
<div>
<router-link to="/wtd">
<i class="fas fa-backspace fa-3x text-yellow-500"></i>
</router-link>
<div class="mx-auto mt-10 mb-10 flex justify-center grid grid-cols-4">
<div v-for="(sb,i) in serahbakiarray" :key="i">
<div v-for="(sb,i) in serahbakiarray.data" :key="i">
<router-link :to="{ name: '/selectwtd', params: { batchno: sb.batchno }, query:{ aktif: sb.aktif,totalbaki: sb.baki },}">
<a href="#" class="block p-6 max-w-sm bg-white rounded-lg border border-gray-200 shadow-md hover:bg-gray-100 dark:bg-gray-800 dark:border-gray-700 dark:hover:bg-gray-700">
<a href="#" class="block p-6 mr-2 bg-white rounded-lg border border-gray-200 shadow-md hover:bg-gray-100 dark:bg-gray-800 dark:border-gray-700 dark:hover:bg-gray-700">
<h5 class="mb-2 text-2xl font-bold tracking-tight text-gray-900 dark:text-white">BATCH NO : {{ sb.batchno }}</h5>
<p class="font-normal text-gray-700 dark:text-gray-400">Jumlah Wang Tak Dituntut : RM {{ formattext(sb.baki) }}</p>
<p class="font-normal text-gray-700 dark:text-gray-400">Diprocess : {{ sb.aktif ? 'Sudah Diproses' : 'Belum Diproses' }}</p>
<div class="flex flex-row font-normal text-gray-700 dark:text-gray-400">
<div class="w-1/3">Jumlah WTD</div>
<div>:</div>
<div class="ml-2 w-1/3"><b>RM {{ formattext(sb.baki) }} </b></div>
</div>
<div class="flex flex-row font-normal text-gray-700 dark:text-gray-400">
<div class="w-1/3">Diprocess
</div>
<div>:</div>
<div class="w-1/3 ml-2">
<span v-bind:class="getClass(sb.aktif)" class="text-xs font-semibold inline-block py-1 px-2 uppercase rounded uppercase last:mr-0 mr-1">{{ sb.aktif ? 'Selesai' : 'Belum' }} </span>
</div>
</div>
</a>
</router-link>
</div>
</div>
<pagination :data="serahbakiarray" @clickEvent_="getRekod"></pagination>
</div>
</template>
<script>
import pagination from '../components/pagination.vue'
import {
ChevronLeftIcon,
ChevronRightIcon,
ChevronDoubleRightIcon,
ChevronDoubleLeftIcon
} from '@vue-hero-icons/solid'
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
components: {
ChevronLeftIcon,
ChevronRightIcon,
ChevronDoubleLeftIcon,
ChevronDoubleRightIcon,
pagination
},
data() {
return {
cawangan: '',
serahbakiarray: {},
loaderserah: false,
currentPage: 1,
paginate: {},
}
},
methods: {
formattext: function (value) {
return formatter.format(value);
},
getClass(property) {
return {
'text-green-600 bg-green-200 ': property,
'text-pink-600 bg-pink-200 ': !property
}
},
getRekod(pageNumber) {
this.axios.get(this.$hostname + '/admin/wtd/rekod/', {
params: {
kodcaw: this.$kodcaw,
page: pageNumber
}
}).then(response => {
this.serahbakiarray = response.data;
this.paginate = response.data
this.currentPage = pageNumber
})
}
},
mounted() {
this.axios.get(this.$hostname + '/admin/wtd/rekod/', {
params: {
kodcaw: this.$kodcaw,
}
}).then(response => {
this.serahbakiarray = response.data;
})
this.getRekod(this.currentPage)
}
}
</script>
+14 -3
View File
@@ -1,12 +1,16 @@
<template>
<div>
<router-link to="/wtd">
<i class="fas fa-backspace fa-3x text-yellow-500"></i>
</router-link>
<div v-if="arraybakilelong.length > 0" class="relative bg-white overflow-x-auto shadow-md sm:rounded-lg px-8 py-6">
<div class="flex justify-between">
<div class="p-4">
<h1 class="text-xl font-bold bg-clip-text text-transparent bg-gradient-to-br from-gray-500 to-gray-700">JUMLAH = RM {{ this.totalbaki }}</h1>
<h1 class="text-xl font-bold bg-clip-text text-transparent bg-gradient-to-br from-gray-500 to-gray-700">JUMLAH = RM {{ formattext(this.totalbaki) }}</h1>
</div>
<div class="p-4">
<button @click.prevent="proseswtd" :disabled="aktif == 1" :class="{'hover:bg-yellow-600 bg-yellow-600 border-yellow-600': aktif == 0}" class="border border-yellow-300 text-white bg-yellow-300 font-montserrat py-2 px-8 font-medium rounded-xl transition-all duration-300">Proses WTD</button>
@@ -51,10 +55,10 @@
{{ bl.t_lelong }}
</td>
<td class="px-6 py-4">
{{ bl.pinjaman }}
{{ formattext(bl.pinjaman) }}
</td>
<td class="px-6 py-4">
{{ bl.baki }}
{{ formattext(bl.baki) }}
</td>
</tr>
</tbody>
@@ -64,6 +68,10 @@
</template>
<script>
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
data() {
return {
@@ -110,6 +118,9 @@ export default {
}
});
},
formattext: function (value) {
return formatter.format(value);
}
}
}
</script>
+8 -3
View File
@@ -65,10 +65,10 @@
{{ bl.t_lelong }}
</td>
<td class="px-6 py-4">
{{ bl.pinjaman }}
{{ formattext(bl.pinjaman) }}
</td>
<td class="px-6 py-4">
{{ bl.baki }}
{{ formattext(bl.baki) }}
</td>
</tr>
</tbody>
@@ -98,6 +98,9 @@ export default {
},
props: ['bakilelong', 'bulanmula', 'bulanhingga'],
methods: {
formattext: function (value) {
return formatter.format(value);
},
async associate() {
this.arraybakilelong = this.$props.bakilelong;
},
@@ -211,7 +214,7 @@ export default {
}).then((result) => {
if (result.isConfirmed) {
this.blockwtd();
blockseterusnya = true;
this.blockseterusnya = true;
}
})
@@ -244,6 +247,7 @@ export default {
});
},
cetaksenarai: function () {
let cawangan = this.$kodcaw;
if (this.selectedNorujukan.length > 0) {
let urldirect = window.route('wtd.cetak');
let noruj = JSON.stringify(this.selectedNorujukan);
@@ -258,6 +262,7 @@ export default {
},
cetakpdf: function () {
let cawangan = this.$kodcaw;
if (this.selectedNorujukan.length > 0) {
let urldirect = window.route('wtd.cetak');
let noruj = JSON.stringify(this.selectedNorujukan);
+13 -17
View File
@@ -1,13 +1,12 @@
<template>
<div class="mx-auto">
<div v-if="loadbakilelong == 'process'" class="inset-0 z-30 h-full w-full flex mx-auto p-20 m-20" id="loading">
<i class="animate-spin fas fa-circle-notch fa-4x m-auto text-yellow-500"></i>
</div>
<div v-if="loadbakilelong == null" class=" w-2/5 mx-auto">
<form class="bg-white shadow-md rounded-lg px-8 pt-6 pb-4 mb-4" onclick="return false">
<div class="mb-4">
<label class="block text-gray-500 font-medium text-sm mb-2">Pilihan Melalui Bulan dan Tahun</label>
<div class="flex flex-wrap">
@@ -27,8 +26,6 @@
</form>
</div>
<senarai-baki :bakilelong="bakilelong" :bulanmula="mula" :bulanhingga="hingga" ref="senaraibaki" @updateLoad="updateLoad"></senarai-baki>
</div>
</template>
@@ -44,22 +41,22 @@ export default {
mula: null,
hingga: null,
loadbakilelong: null,
bakilelong:[],
bakilelong: [],
config: {
wrap: false, // set wrap to true only when using 'input-group'
maxDate: 'today',
plugins: [
new monthSelectPlugin({
shorthand: true, //defaults to false
dateFormat: "m-Y", //defaults to "F Y"
altFormat: "F Y", //defaults to "F Y"
shorthand: true, //defaults to false
dateFormat: "m-Y", //defaults to "F Y"
altFormat: "F Y", //defaults to "F Y"
})
]
]
},
}
},
methods: {
async generatebakilelong () {
async generatebakilelong() {
let cawangan = this.$kodcaw;
this.loadbakilelong = 'process';
@@ -76,22 +73,21 @@ export default {
this.bakilelong = response.data;
this.loadbakilelong = 'success';
if(this.bakilelong.length <= 0)
{
if (this.bakilelong.length <= 0) {
this.loadbakilelong = null;
this.$swal(
'Amaran',
'Baki lelong tiada dalam senarai',
'error'
'Amaran',
'Baki lelong tiada dalam senarai',
'error'
)
}
});
await this.$refs.senaraibaki.associate();
}
},
updateLoad: function(){
updateLoad: function () {
this.loadbakilelong = null;
this.bakilelong = null;
this.mula = null;
+3 -3
View File
@@ -126,18 +126,18 @@ Vue.use(require('vue-pusher'), {
}
});
Vue.prototype.$api1 = 'http://api.arrahn/'
Vue.prototype.$api1 = 'http://api.arrahn'
Vue.prototype.$username = document.querySelector("meta[name='user_name']").getAttribute('content');
Vue.prototype.$userroles = document.querySelector("meta[name='user_roles']").getAttribute('content');
let initial = 'KB2';
let initialhostname = 'http://api.arrahn/';
let initialhostname = 'http://api.arrahn';
const store = new Vuex.Store({
state: {
$kodcaw: 'KB2',
$hostname: 'http://api.arrahn/'
$hostname: 'http://api.arrahn'
},
plugins: [createPersistedState()],
mutations: {
+218 -196
View File
@@ -1,203 +1,225 @@
<template>
<div class="mb-4 w-full grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8">
<div class="mb-4 w-full grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
<h3 class="text-xl font-bold text-gray-500">Data Lelong</h3>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datasebenar === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="relative overflow-x-auto shadow-md sm:rounded-lg">
<table class="w-full text-sm text-left text-gray-500 dark:text-gray-400">
<thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th scope="col" class="px-6 py-3">
Bulan
</th>
<th scope="col" class="px-6 py-3">
Bil
</th>
<th scope="col" class="px-6 py-3">
%
</th>
<th scope="col" class="px-6 py-3">
RM
</th>
</tr>
</thead>
<tbody>
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<th class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
1
</th>
<td class="px-6 py-4">
21
</td>
<td class="px-6 py-4">
10
</td>
<td class="px-6 py-4">
1,232.32
</td>
</tr>
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
2
</th>
<td class="px-6 py-4">
11
</td>
<td class="px-6 py-4">
43
</td>
<td class="px-6 py-4">
5,000.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
<tr class="bg-white dark:bg-gray-800">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
3
</th>
<td class="px-6 py-4">
3
</td>
<td class="px-6 py-4">
54
</td>
<td class="px-6 py-4">
3,432.00
</td>
</tr>
</tbody>
</table>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datasebenar === true">
<h3 class="text-xl font-bold text-gray-500 mb-4">Data Sebenar</h3>
<div class="relative overflow-x-auto shadow-md sm:rounded-lg">
<table class="w-full text-sm text-left text-gray-500 dark:text-gray-400">
<thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th scope="col" class="px-6 py-3">
Tempoh
</th>
<th scope="col" class="px-6 py-3">
Bil
</th>
<th scope="col" class="px-6 py-3">
RM
</th>
</tr>
</thead>
<tbody>
<tr v-for="(n,index) in 13" :key="index" class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<th class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
{{ (n == 13) ? '12 > ' : n }} Bulan
</th>
<td class="px-6 py-4">
{{ collectionsebenar.count[index].toFixed(0) }}
</td>
<td class="px-6 py-4">
{{ formatterfunction(collectionsebenar.sum[index]) }}
</td>
</tr>
</tbody>
<tfoot class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th class="px-6 py-4">Keseluruhan</th>
<th class="px-6 py-4">{{ collectionsebenar.count[13].toFixed(0) }}</th>
<th class="px-6 py-4">{{ formatterfunction(collectionsebenar.sum[13]) }}</th>
</tr>
</tfoot>
</table>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8">das</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8">dasdsa</div>
</div>
</template>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datalelong === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datalelong === true">
<h3 class="text-xl font-bold text-gray-500 mb-4">Data Lelong</h3>
<div class="relative overflow-x-auto shadow-md sm:rounded-lg">
<table class="w-full text-sm text-left text-gray-500 dark:text-gray-400">
<thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th scope="col" class="px-6 py-3">
Tempoh
</th>
<th scope="col" class="px-6 py-3">
Bil
</th>
<th scope="col" class="px-6 py-3">
RM
</th>
</tr>
</thead>
<tbody>
<tr v-for="(n,index) in 13" :key="index" class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<th class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
{{ (n == 13) ? '12 > ' : n }} Bulan
</th>
<td class="px-6 py-4">
{{ collectionlelong.count[index].toFixed(0) }}
</td>
<td class="px-6 py-4">
{{ formatterfunction(collectionlelong.sum[index]) }}
</td>
</tr>
</tbody>
<tfoot class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th class="px-6 py-4">Keseluruhan</th>
<th class="px-6 py-4">{{ collectionlelong.count[13].toFixed(0) }}</th>
<th class="px-6 py-4">{{ formatterfunction(collectionlelong.sum[13]) }}</th>
</tr>
</tfoot>
</table>
</div>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datafilter === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datafilter === true">
<h3 class="text-xl font-bold text-gray-500 mb-4">Data Filter</h3>
<div class="relative overflow-x-auto shadow-md sm:rounded-lg">
<table class="w-full text-sm text-left text-gray-500 dark:text-gray-400">
<thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th scope="col" class="px-6 py-3">
Tempoh
</th>
<th scope="col" class="px-6 py-3">
Bil
</th>
<th scope="col" class="px-6 py-3">
RM
</th>
</tr>
</thead>
<tbody>
<tr v-for="(n,index) in 13" :key="index" class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<th class="px-6 py-4 font-medium text-gray-900 dark:text-white whitespace-nowrap">
{{ (n == 13) ? '12 > ' : n }} Bulan
</th>
<td class="px-6 py-4">
{{ collectionfilter.count[index].toFixed(0) }}
</td>
<td class="px-6 py-4">
{{ formatterfunction(collectionfilter.sum[index]) }}
</td>
</tr>
</tbody>
<tfoot class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<th class="px-6 py-4">Keseluruhan</th>
<th class="px-6 py-4">{{ collectionfilter.count[13].toFixed(0) }}</th>
<th class="px-6 py-4">{{ formatterfunction(collectionfilter.sum[13]) }}</th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</template>
<script>
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
data() {
return {
collectionsebenar: {},
collectionlelong: {},
collectionfilter: {},
datasebenar: false,
datalelong: false,
datafilter: false,
}
},
async created() {
await this.getDataSebenar();
await this.getDataLelong();
await this.getDataFilter();
},
methods: {
getDataSebenar() {
this.axios.get(this.$hostname + '/admin/dashboard/aging', {
params: {
kodcaw: this.$kodcaw,
options: 'sebenar'
}
}).then(response => {
this.collectionsebenar = response.data;
if (this.datasebenar == false)
this.datasebenar = true;
});
},
getDataLelong() {
this.axios.get(this.$hostname + '/admin/dashboard/aging', {
params: {
kodcaw: this.$kodcaw,
options: 'datalelong'
}
}).then(response => {
this.collectionlelong = response.data;
if (this.datalelong == false)
this.datalelong = true;
});
},
getDataFilter() {
this.axios.get(this.$hostname + '/admin/dashboard/aging', {
params: {
kodcaw: this.$kodcaw,
options: 'filter'
}
}).then(response => {
this.collectionfilter = response.data;
if (this.datafilter == false)
this.datafilter = true;
});
},
formatterfunction(value) {
return formatter.format(value);
}
}
}
</script>
+9 -9
View File
@@ -16,19 +16,19 @@
<div v-if="data.total > 0" class="hidden sm:flex-1 sm:flex flex sm:items-center sm:justify-between ">
<div>
<p class="text-sm text-gray-700">
Showing
<!--Showing --> Menunjukkan
{{ ' ' }}
<span class="font-medium">{{ to }}</span>
<span class="font-medium"><b>{{ to }}</b></span>
{{ ' ' }}
to
<!-- to --> hingga
{{ ' ' }}
<span class="font-medium">{{ from }}</span>
<span class="font-medium"><b>{{ from }}</b></span>
{{ ' ' }}
of
<!-- of --> daripada
{{ ' ' }}
<span class="font-medium">{{ total }}</span>
<span class="font-medium"><b>{{ total }}</b></span>
{{ ' ' }}
records
<!-- records --> rekod
</p>
</div>
@@ -37,7 +37,7 @@
<button @click.prevent="getPreviousPage"
class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500"
:class="data.current_page == 1 ? 'text-gray-300 cursor-not-allowed' : 'hover:bg-gray-50' ">
<span class="sr-only">Previous</span>
<span class="sr-only"> <!-- Previous -->Sebelum</span>
<svg class="h-5 w-5" :class="{'text-gray-400': data.current_page == 1}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
@@ -66,7 +66,7 @@
<button @click.prevent="getNextPage"
class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
:class="{'text-gray-300 cursor-not-allowed': data.current_page >= data.last_page}">
<span class="sr-only">Next</span>
<span class="sr-only"><!--Next-->Selepas</span>
<svg class="h-5 w-5" :class="{'text-gray-400': data.current_page >= data.last_page}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
+3
View File
@@ -17,6 +17,8 @@ import Perbelanjaan from './Akaun/Perbelanjaan'
import RingkasanHarian from './Akaun/RingkasanHarian'
import RingkasanTerkumpul from './Akaun/RingkasanTerkumpul'
import StokAuditBackdate from './Akaun/StokAuditBackdate'
import Aging from './Akaun/Aging'
@@ -66,6 +68,7 @@ export default new VueRouter({
{ path: '/akaunhome/RingkasanHarian', component: RingkasanHarian },
{ path: '/akaunhome/RingkasanTerkumpul', component: RingkasanTerkumpul },
{ path: '/akaunhome/StokAuditBackdate', component: StokAuditBackdate },
{ path: '/akaunhome/Aging', component: Aging },
{ path: '/bajet/kemaskini', component: SenaraiBajet },
@@ -0,0 +1,351 @@
<style>
#header {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#header td,
#customers th {
padding: 4px;
font-size: 10px;
}
#header tr:nth-child(even) {
background-color: #ffffff;
}
#header tr:hover {
background-color: #ddd;
}
#header th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<style>
#scan {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#scan td,
#scan th {
padding: 8px;
font-size: 11px;
}
#scan tr:nth-child(even) {
background-color: #ffffff;
}
#scan tr:hover {
background-color: #ddd;
}
#scan th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<style>
#scan {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#scan td,
#scan th {
border-collapse: collapse;
padding: 8px;
font-size: 11px;
}
#scan tr:nth-child(even) {
background-color: #ffffff;
}
#scan tr:hover {
background-color: #ddd;
}
#scan th {
border-collapse: collapse;
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<style>
#details {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 50%;
}
#details td,
#details th {
padding: 8px;
font-size: 11px;
}
#details tr:nth-child(even) {
background-color: #ffffff;
}
#details tr:hover {
background-color: #ffffff;
}
#details th {
padding-top: 12px;
font-style: bold;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<style>
#sign {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#sign td,
#sign th {
padding: 8px;
font-size: 11px;
text-align: center;
}
#sign tr:nth-child(even) {
background-color: #ffffff;
}
#sign tr:hover {
background-color: #ddd;
}
#sign th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<style>
#title {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 50%;
}
#title td,
#title th {
padding: 4px;
font-size: 12px;
border: 0px solid #fff;
}
#title tr:nth-child(even) {
background-color: #ffffff;
}
#title tr:hover {
background-color: #ddd;
}
#title th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<style>
#details {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 80%;
}
#details td,
#details th {
padding: 4px;
font-size: 12px;
border: 0px solid #ddd;
}
#details tr:nth-child(even) {
background-color: #ffffff;
}
#details tr:hover {
background-color: #ddd;
}
#details th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding: 4px;
color: black;
}
</style>
<table id="header">
<tr>
<th rowspan="4" style="width:50px"><br><img src="{{ asset('img/ARRAHN1.png') }}" style="width:70px"></img></th>
<th colspan="1">KOPERASI PERMODALAN KELANTAN BERHAD</th>
</tr>
<tr>
<td>{{ $cawangan_detail['namacaw'] }}</td>
<td></td>
</tr>
<tr>
<td>{{ $cawangan_detail['alamat1'] }}</td>
<td></td>
</tr>
<tr>
<td>{{ $cawangan_detail['alamat2'].' No Tel : '. $cawangan_detail['notel'].' No Faks : '. $cawangan_detail['nofaks'] }}
</td>
<td></td>
</tr>
</table>
<br>
<br>
<br>
<table id="title">
<tr>
<th> </th>
<th> LAPORAN AGING BULANAN </th>
</tr>
<tr>
<td style="width:60px"> <b> TARIKH :</b> </td>
<td> {{ $tebus_date }} </td>
</table>
<br>
<table id="details">
<tr>
<th style="width:50%">TEMPOH </th>
<th style="width:30%"> BIL GADAIAN </th>
<th style="width:50%"> BAKI PEMBIAYAAN (RM) </th>
</tr>
@php $jumlahcount = 0;$jumlahsum = 0; @endphp
@foreach($aging[0]['count'] as $index=>$ag)
@php
$jumlahcount += $ag; $jumlahsum += $aging[0]['sum'][$index];
@endphp
<tr>
<td>{{ ($index == 12) ? '12 >' : $index+1 }}
BULAN</td>
<td>{{ number_format($ag) }}</td>
<td>{{ number_format($aging[0]['sum'][$index],2) }}</td>
</tr>
@endforeach
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td style="width:50%"> <b>JUMLAH</b></td>
<td style="width:30%"><b> {{ number_format($jumlahcount) }} </b></td>
<td style="width:30%"><b> {{ number_format($jumlahsum,2) }} </b></td>
<td> </td>
</tr>
</table>
<br>
<br>
<br>
<table id="details">
<tr>
<th> </th>
<th> DISEMAK </th>
<th></th>
<th> DISAHKAN </th>
<th></th>
</tr>
<tr>
<td></td>
<td>........................................................</td>
<td></td>
<td>......................................................... </td>
<td> </td>
</tr>
</table>
<br>
+2 -2
View File
@@ -159,9 +159,9 @@
@endif
@else
@if(Auth::user()->roles == 'operasi')
<div class="mr-4">
{{-- <div class="mr-4">
<notify-component></notify-component>
</div>
</div> --}}
@endif
<logout-component csrftoken="{{ csrf_token() }}" :route={{ json_encode(route('logout')) }}></logout-component>
+1 -1
View File
@@ -1,6 +1,6 @@
<footer class="bg-white md:flex md:items-center md:justify-between shadow rounded-lg p-4 md:p-6 xl:p-8 my-6 mx-4">
<ul class="flex items-center flex-wrap mb-6 md:mb-0">
<li><p class="text-sm font-normal text-gray-500 mr-4 md:mr-6">Permodalan Kelantan Berhad © 2022 All Rights Reserved</p></li>
<li><p class="text-sm font-normal text-gray-500 mr-4 md:mr-6">Permodalan Kelantan Berhad © 2022 Hak cipta terpelihara</p></li>
{{-- <li><p class="text-sm font-normal text-gray-500 mr-4 md:mr-6">Paparan terbaik menggunakan Mozilla Firefox, Google Chrome & Internet Explorer 9.0 ke atas dengan resolusi 1920 x 1080</p></li> --}}
</ul>
+2 -2
View File
@@ -170,7 +170,7 @@
</li>
</a>
<a href="{{ route('kelulusan') }}" class="rounded mb-2 mr-2 {{ Route::is('kelulusan') || Route::is('kelulusan.*') ? 'bg-gray-200 rounded text-white-500' : 'hover:bg-yellow-300 ' }}">
{{-- <a href="{{ route('kelulusan') }}" class="rounded mb-2 mr-2 {{ Route::is('kelulusan') || Route::is('kelulusan.*') ? 'bg-gray-200 rounded text-white-500' : 'hover:bg-yellow-300 ' }}">
<li class="flex w-full justify-between text-gray-600 hover:text-gray-500 cursor-pointer items-center ">
<div class="flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
@@ -179,7 +179,7 @@
<span class="text-sm ml-2 text-lg">Kelulusan</span>
</div>
</li>
</a>
</a> --}}
<a href="{{ route('akaun.home') }}" class="rounded mb-2 mr-2 {{ Route::is('akaun.home') || Route::is('akaun.home.*') ? 'bg-gray-200 rounded text-white-500' : 'hover:bg-yellow-300 ' }}">
+2
View File
@@ -89,6 +89,8 @@ Route::get('/akaunhome/cetaklelong',['as'=>'cetak.lelong','uses'=>'App\Http\Cont
Route::get('/akaunhome/cetakperbelanjaan',['as'=>'cetak.perbelanjaan','uses'=>'App\Http\Controllers\AkaunController@cetaklaporan_perbelanjaan'])->middleware(['roleChecker:admin,akaun,operasi']);
Route::get('/akaunhome/cetakringkasanterkumpul',['as'=>'cetak.ringkasanterkumpul','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanRingkasanTerkumpul'])->middleware(['roleChecker:admin,akaun,operasi']);
Route::get('/akaunhome/cetakstokauditbackdate',['as'=>'cetak.stokauditbackdate','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanStokAuditBackdate'])->middleware(['roleChecker:admin,akaun,operasi']);
Route::get('/akaunhome/cetakaging',['as'=>'cetak.aging','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanAging'])->middleware(['roleChecker:admin,akaun,operasi']);
//Resit