You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
878 lines
26 KiB
JavaScript
878 lines
26 KiB
JavaScript
const data = JSON.parse(_id('data').innerHTML);
|
|
console.log(data);
|
|
const kekayaan = _id('kekayaan');
|
|
const pj = [
|
|
{
|
|
kode: 'REG',
|
|
nama: 'USP Reguler'
|
|
}
|
|
, {
|
|
kode: 'USP1',
|
|
nama: 'USP1 (Pembiayaan Elektronik)'
|
|
}
|
|
, {
|
|
kode: 'USP2',
|
|
nama: 'USP2 (Pembiayaan Elektronik)'
|
|
}
|
|
, {
|
|
kode: 'USP3',
|
|
nama: 'USP3 (Pembiayaan Haji / Umroh)'
|
|
}
|
|
, {
|
|
kode: 'KHUSUS',
|
|
nama: 'KHUSUS'
|
|
}
|
|
];
|
|
|
|
const namaBulan = [
|
|
"Januari",
|
|
"Februari",
|
|
"Maret",
|
|
"April",
|
|
"Mei",
|
|
"Juni",
|
|
"Juli",
|
|
"Agustus",
|
|
"September",
|
|
"Oktober",
|
|
"November",
|
|
"Desember"
|
|
];
|
|
|
|
|
|
const cekdata = function (data) {
|
|
return {
|
|
data : typeof data === 'object'? data:{},
|
|
search : function (cari) {
|
|
this.data = this.data && this.data[cari]? this.data[cari] : null;
|
|
return this;
|
|
}
|
|
}
|
|
}
|
|
|
|
const tableCreator = function (mydata) {
|
|
let {anggota, simp, simpanan, pinjaman} = mydata;
|
|
|
|
let header = [
|
|
{
|
|
name: 'NO URUT',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'NO INDUK',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'NAMA',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'TEMTALA',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'JENIS KELAMIN',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'NO. TELP',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'ALAMAT RUMAH',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'UNIT KERJA',
|
|
rowspan: 2
|
|
}
|
|
, {
|
|
name: 'TAHUN MASUK',
|
|
rowspan: 2
|
|
}
|
|
];
|
|
|
|
let subheader = [];
|
|
|
|
simp.forEach(function (x) {
|
|
header.push({
|
|
name: x.nama.toUpperCase(),
|
|
colspan: x.nama.toLowerCase() == 'tabungan khusus'? 16 : 15
|
|
})
|
|
subheader.push({
|
|
name: 'Awal Tahun',
|
|
colspan: 1
|
|
})
|
|
namaBulan.forEach(function (bln) {
|
|
subheader.push({
|
|
name: bln,
|
|
colspan: 1
|
|
})
|
|
})
|
|
subheader.push({
|
|
name: 'Tahun Berjalan',
|
|
colspan: 1
|
|
})
|
|
if(x.nama.toLowerCase() == 'tabungan khusus'){
|
|
subheader.push({
|
|
name: 'Dibagi',
|
|
colspan: 1
|
|
})
|
|
}
|
|
subheader.push({
|
|
name: 'Akhir Tahun',
|
|
colspan: 1
|
|
})
|
|
});
|
|
|
|
pj.forEach(function (x) {
|
|
header.push({
|
|
name: x.nama.toUpperCase(),
|
|
colspan: 6
|
|
})
|
|
let y = [
|
|
'SALDO AWAL'
|
|
, 'ANGSURAN/ PELUNASAN SHU'
|
|
, 'PELUNASAN NON SHU'
|
|
, 'JASA USP REGULER'
|
|
, 'PINJAMAN BARU'
|
|
, 'SALDO AKHIR'
|
|
];
|
|
y.forEach(function (g) {
|
|
subheader.push({
|
|
name: g,
|
|
colspan: 1
|
|
})
|
|
})
|
|
|
|
});
|
|
|
|
|
|
let sumData = [];
|
|
|
|
let headerExcel = [];
|
|
|
|
headerExcel.push(header.map(function (q) {
|
|
return {
|
|
name: q.name,
|
|
colspan: q.colspan != undefined ? q.colspan : 1,
|
|
rowspan: q.rowspan != undefined ? q.rowspan : 1
|
|
}
|
|
}))
|
|
headerExcel.push(subheader.map(function (q) {
|
|
return {
|
|
name: q.name,
|
|
colspan: q.colspan != undefined ? q.colspan : 1
|
|
}
|
|
}));
|
|
|
|
let dataObject = [];
|
|
|
|
let dataSimpanan = {};
|
|
|
|
simpanan.forEach(function (x) {
|
|
if(!dataSimpanan[x.kodesp]){
|
|
dataSimpanan[x.kodesp] = {};
|
|
}
|
|
if(!dataSimpanan[x.kodesp][x.bulan]){
|
|
dataSimpanan[x.kodesp][x.bulan] = {};
|
|
}
|
|
if(!dataSimpanan[x.kodesp][x.bulan][x.kode]){
|
|
dataSimpanan[x.kodesp][x.bulan][x.kode] = [];
|
|
}
|
|
dataSimpanan[x.kodesp][x.bulan][x.kode].push(x);
|
|
});
|
|
|
|
let dataPinjaman = {};
|
|
let dataSHU = {};
|
|
let dataNONSHU = {};
|
|
pinjaman.forEach(function (x) {
|
|
if(!dataPinjaman[x.kodesp]){
|
|
dataPinjaman[x.kodesp] = {};
|
|
}
|
|
if(!dataPinjaman[x.kodesp][x.kode]){
|
|
dataPinjaman[x.kodesp][x.kode] = [];
|
|
}
|
|
if(!dataSHU[x.kodesp]){
|
|
dataSHU[x.kodesp] = {};
|
|
}
|
|
if(!dataSHU[x.kodesp][x.kode]){
|
|
dataSHU[x.kodesp][x.kode] = [];
|
|
}
|
|
if(!dataNONSHU[x.kodesp]){
|
|
dataNONSHU[x.kodesp] = {};
|
|
}
|
|
if(!dataNONSHU[x.kodesp][x.kode]){
|
|
dataNONSHU[x.kodesp][x.kode] = [];
|
|
}
|
|
dataPinjaman[x.kodesp][x.kode].push(x);
|
|
if(x.tr == 'G'){
|
|
dataSHU[x.kodesp][x.kode].push(x);
|
|
}
|
|
if(x.tr == 'L'){
|
|
dataNONSHU[x.kodesp][x.kode].push(x);
|
|
}
|
|
})
|
|
|
|
let x = 0;
|
|
for (let ang of anggota) {
|
|
let tmp = [];
|
|
tmp.push(x + 1);
|
|
tmp.push(ang.kode);
|
|
tmp.push(ang.nama);
|
|
tmp.push(`${ang.kota}, ${tanggal(ang.tgllahir).sekarang}`);
|
|
tmp.push(ang.jk);
|
|
tmp.push(ang.telp);
|
|
tmp.push(ang.alamat);
|
|
tmp.push(ang.unitkerja);
|
|
tmp.push(ang.masuk.split('-')[0]);
|
|
|
|
for(let h of simp){
|
|
let jln = 0;
|
|
|
|
let datAwl = data.simplast
|
|
.cond(h.kode, 'kodesp')
|
|
.cond(ang.kode, 'kode');
|
|
|
|
let [dw] = datAwl;
|
|
let awl = dw? datAwl.sum('jumlah') : 0;
|
|
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: '00',
|
|
kode: 'awl',
|
|
ang: ang.kode,
|
|
value: Number(awl)
|
|
});
|
|
|
|
tmp.push(awl);
|
|
|
|
namaBulan.forEach(function (b, i) {
|
|
let bl = i + 1;
|
|
let dat = dataSimpanan[h.kode] ? dataSimpanan[h.kode] : null;
|
|
dat = dat && dat[bl] ? dat[bl] : null;
|
|
dat = dat && dat[ang.kode] ? dat[ang.kode] : null;
|
|
let [data] = dat?dat:[];
|
|
if (data != undefined) {
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: bl.pad(2),
|
|
kode: 'sim',
|
|
ang: ang.kode,
|
|
value: Number(data.jumlah)
|
|
})
|
|
jln += Number(data.jumlah);
|
|
tmp.push(Number(data.jumlah));
|
|
} else {
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: bl.pad(2),
|
|
kode: 'sim',
|
|
ang: ang.kode,
|
|
value: 0
|
|
})
|
|
tmp.push(0)
|
|
}
|
|
});
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: '00',
|
|
kode: 'jln',
|
|
ang: ang.kode,
|
|
value: Number(jln)
|
|
});
|
|
let dataTk = data.tk.cond(ang.kode, 'kode');
|
|
let [tk] = dataTk;
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: '00',
|
|
kode: 'akr',
|
|
ang: ang.kode,
|
|
value: Number(awl + jln)
|
|
});
|
|
if(h.kode == 'TK'){
|
|
h.kode == 'TK' && tk ?
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: '00',
|
|
kode: 'bagi',
|
|
ang: ang.kode,
|
|
value: dataTk.sum('jumlah')
|
|
})
|
|
:
|
|
sumData.push({
|
|
kodesp: h.kode,
|
|
bulan: '00',
|
|
kode: 'bagi',
|
|
ang: ang.kode,
|
|
value: 0
|
|
})
|
|
}
|
|
tmp.push(Number(jln));
|
|
if (h.kode == 'TK') {
|
|
h.kode == 'TK' && tk?
|
|
tmp.push(dataTk.sum('jumlah'))
|
|
:
|
|
tmp.push(0)
|
|
;
|
|
}
|
|
tmp.push(Number(awl + jln - (h.kode == 'TK' && tk?dataTk.sum('jumlah'):0) ));
|
|
}
|
|
|
|
pj.forEach(function (q) {
|
|
let y = ['awl'
|
|
, 'shu'
|
|
, 'nonshu'
|
|
, 'bunga'
|
|
, 'baru'
|
|
, 'akhir'
|
|
];
|
|
|
|
function shu(q) {
|
|
let { kode } = q;
|
|
let dat = cekdata(dataSHU).search(kode).search(ang.kode).data;
|
|
let g = dat?dat:[];
|
|
let [data] = g;
|
|
if (data != undefined) {
|
|
let { angpokok, kode } = data;
|
|
if (angpokok != null && angpokok != undefined) {
|
|
return {
|
|
pokok: angpokok.number(2)
|
|
,kode : kode
|
|
};
|
|
}
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
function nonshu(q) {
|
|
let { kode } = q;
|
|
let dat = cekdata(dataNONSHU).search(kode).search(ang.kode).data;
|
|
let g = dat?dat:[];
|
|
let [data] = g;
|
|
if (data != undefined) {
|
|
let { angpokok, kode } = data;
|
|
if (angpokok != null && angpokok != undefined) {
|
|
return {
|
|
pokok: angpokok.number(2)
|
|
, kode : kode
|
|
};
|
|
}
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
function bunga(q) {
|
|
let { kode } = q;
|
|
let dat = cekdata(dataPinjaman).search(kode).search(ang.kode).data;
|
|
let g = dat?dat:[];
|
|
if (g.length > 1) {
|
|
let v = g.map(function (cj) {
|
|
return {
|
|
pokok : cj.angbunga ? cj.angbunga.number(2) : 0
|
|
,kode : cj.kode
|
|
}
|
|
}).sum('pokok');
|
|
return v;
|
|
}
|
|
let [data] = g;
|
|
if (data != undefined) {
|
|
let { angbunga } = data;
|
|
if (angbunga != null && angbunga != undefined) {
|
|
return angbunga.number(2);
|
|
}
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
function pokok(q, ts = 0) {
|
|
let { kode } = q;
|
|
let dat = cekdata(dataPinjaman).search(kode).search(ang.kode).data;
|
|
if(ts == 1){
|
|
}
|
|
let g = dat?dat:[];
|
|
if (g.length > 1) {
|
|
let v = g.map(function (cj) {
|
|
return {
|
|
pokok : cj.pokok.number(2)
|
|
,kode : cj.kode
|
|
}
|
|
}).sum('pokok');
|
|
return v;
|
|
}
|
|
let [data] = g;
|
|
if (data != undefined) {
|
|
let { pokok } = data;
|
|
return pokok.number(2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
y.forEach(function (s) {
|
|
if (s == 'shu') {
|
|
sumData.push({
|
|
kodesp: q.kode,
|
|
bulan: '00',
|
|
kode: 'shu',
|
|
ang: typeof shu(q) == 'object' ? shu(q).kode : null,
|
|
value: typeof shu(q) == 'object' ? shu(q).pokok : shu(q)
|
|
})
|
|
tmp.push(shu(q));
|
|
} else if (s == 'nonshu') {
|
|
sumData.push({
|
|
kodesp: q.kode,
|
|
bulan: '00',
|
|
kode: 'nonshu',
|
|
ang: typeof nonshu(q) == 'object' ? nonshu(q).kode : null,
|
|
value: typeof nonshu(q) == 'object' ? nonshu(q).pokok : nonshu(q)
|
|
})
|
|
tmp.push(nonshu(q));
|
|
} else if (s == 'bunga') {
|
|
sumData.push({
|
|
kodesp: q.kode,
|
|
bulan: '00',
|
|
kode: 'bunga',
|
|
ang: typeof bunga(q) == 'object' ? bunga(q).kode : null,
|
|
value: typeof bunga(q) == 'object' ? bunga(q).pokok : bunga(q)
|
|
})
|
|
if (typeof bunga(q) == 'object') {
|
|
}
|
|
tmp.push(bunga(q));
|
|
} else if (s == 'baru') {
|
|
sumData.push({
|
|
kodesp: q.kode,
|
|
bulan: '00',
|
|
kode: 'baru',
|
|
ang: typeof pokok(q) == 'object' ? pokok(q).kode : pokok(q),
|
|
value: typeof pokok(q) == 'object' ? pokok(q).pokok : pokok(q)
|
|
});
|
|
if (typeof pokok(q) == 'object'){
|
|
}
|
|
tmp.push(pokok(q));
|
|
} else if (s == 'akhir') {
|
|
let vpokok = typeof pokok(q) == 'object' ? pokok(q).pokok : pokok(q);
|
|
let vnonshu = typeof nonshu(q) == 'object' ? nonshu(q).pokok : nonshu(q);
|
|
let vshu = typeof shu(q) == 'object' ? shu(q).pokok : shu(q);
|
|
let vang = typeof shu(q) == 'object' ? shu(q).kode : null;
|
|
vang = vang ? vang : ( typeof nonshu(q) == 'object' ? nonshu(q).kode : null);
|
|
vang = vang ? vang : ( typeof bunga(q) == 'object' ? bunga(q).kode : null);
|
|
vang = vang ? vang : ( typeof pokok(q) == 'object' ? pokok(q).kode : null);
|
|
sumData.push({
|
|
kodesp: q.kode,
|
|
bulan: '00',
|
|
kode: 'akhir',
|
|
ang: vang,
|
|
value: (vpokok - vnonshu - vshu)
|
|
})
|
|
if (isNaN(vpokok - vnonshu - vshu)){
|
|
}
|
|
tmp.push((vpokok - vnonshu - vshu));
|
|
} else {
|
|
let vang = typeof shu(q) == 'object' ? shu(q).kode : null;
|
|
vang = vang ? vang : (typeof nonshu(q) == 'object' ? nonshu(q).kode : null);
|
|
vang = vang ? vang : (typeof bunga(q) == 'object' ? bunga(q).kode : null);
|
|
vang = vang ? vang : (typeof pokok(q) == 'object' ? pokok(q).kode : null);
|
|
sumData.push({
|
|
kodesp: q.kode,
|
|
bulan: '00',
|
|
kode: 'awl',
|
|
ang: vang,
|
|
value: 0
|
|
})
|
|
tmp.push(0);
|
|
}
|
|
});
|
|
})
|
|
|
|
dataObject.push(tmp);
|
|
x++;
|
|
}
|
|
|
|
|
|
let dataSum = {};
|
|
for(let itemOf of sumData){
|
|
if(itemOf.ang){
|
|
if(!dataSum[itemOf.ang]){
|
|
dataSum[itemOf.ang] = {};
|
|
}
|
|
if(!dataSum[itemOf.ang][itemOf.kodesp]){
|
|
dataSum[itemOf.ang][itemOf.kodesp] = {};
|
|
}
|
|
if(!dataSum[itemOf.ang][itemOf.kodesp][itemOf.kode]){
|
|
dataSum[itemOf.ang][itemOf.kodesp][itemOf.kode] = [];
|
|
}
|
|
dataSum[itemOf.ang][itemOf.kodesp][itemOf.kode].push(itemOf);
|
|
}
|
|
}
|
|
|
|
return {
|
|
header: headerExcel,
|
|
body: dataObject,
|
|
sum: sumData,
|
|
sumData:dataSum
|
|
};
|
|
|
|
}
|
|
|
|
const dataJson = tableCreator(data);
|
|
const dJson = dataJson.sumData;
|
|
|
|
let coloms = el('div').class('row');
|
|
|
|
let mapSelect2Anggota = data.anggota.map(function (q) {
|
|
return {
|
|
id: q.kode
|
|
, text: q.nama
|
|
}
|
|
});
|
|
|
|
|
|
$('#anggota').select2({
|
|
data: mapSelect2Anggota,
|
|
placeholder: 'Pilih Anggota',
|
|
dropdownAutoWidth : true,
|
|
multiple: true,
|
|
dropdownCssClass: "select2-dropdown-scroll",
|
|
width: '100%',
|
|
containerCssClass: "select2-scroll",
|
|
minimumResultsForSearch: Infinity
|
|
}).change(function () {
|
|
let val = $(this).val();
|
|
let getData = document.querySelectorAll('[data-ang]');
|
|
if(val.length > 0){
|
|
for (let item of getData) {
|
|
let kode = item.dataset.ang;
|
|
let cek = val.indexOf(kode) >= 0?true:false;
|
|
item.style.display = cek?'block':'none';
|
|
}
|
|
}else{
|
|
for (let item of getData) {
|
|
item.style.display = 'block';
|
|
}
|
|
}
|
|
});
|
|
|
|
let totalsSimpanan = _json('totals');
|
|
|
|
for(let itemAng of data.anggota){
|
|
|
|
let dataInfo = el('div').class('row');
|
|
if(dJson[itemAng.kode]){
|
|
for(let itemKode of Object.keys(dJson[itemAng.kode])){
|
|
let [akr] = dJson[itemAng.kode][itemKode].akr?dJson[itemAng.kode][itemKode].akr:[];
|
|
let [ttl] = totalsSimpanan.cond(itemAng.kode,'kode').cond(itemKode, 'kodesp')
|
|
dataInfo.child(
|
|
el('div').class('col-sm-12 col-md-6 col-lg-6')
|
|
.child(
|
|
el('div').css({
|
|
borderBottom: '1px solid #ddd'
|
|
, display: 'grid', gridTemplateColumns: '70px calc(100% - 80px)'
|
|
, gridGap: '10px'
|
|
})
|
|
.child(
|
|
el('h6').css({
|
|
display: 'flex',
|
|
color: 'black',
|
|
alignItems: 'center',
|
|
textAlign: 'left',
|
|
padding: '0px 10px',
|
|
margin: '0',
|
|
height: '24px',
|
|
whiteSpace: 'nowrap'
|
|
}).class('btn btn-sm btn-success').text(itemKode)
|
|
)
|
|
.child(
|
|
el('div').child(
|
|
el('p').margin('0px').css({textAlign: 'right'})
|
|
.html(`<span style="float:left">Rp</span>`+(ttl && ttl.jumlah? ttl.jumlah: 0).currency(2))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
let card = el('div').data('ang', itemAng.kode).css('margin-bottom', '10px').class('col-sm-12 col-lg-6');
|
|
card.child(
|
|
el('div').class('card').height("100%").margin("10px 0px").child(
|
|
el('div').class('card-body').child(
|
|
el('div').class('row')
|
|
.child(
|
|
el('div').class('text-center').class('col-sm-2 col-lg-3')
|
|
.child(
|
|
el('img').css({maxWidth:'80px'}).class('img-fluid').attr('src', "https://cdn-icons-png.flaticon.com/512/9187/9187604.png")
|
|
)
|
|
)
|
|
.child(
|
|
el('div').class('col-sm-10 col-lg-9')
|
|
.child(
|
|
el('h5').margin('0px').class('card-title').text(itemAng.nama)
|
|
)
|
|
.child(
|
|
el('p').margin(0).css({
|
|
display: 'grid',
|
|
gridTemplateColumns: '70px calc(100% - 80px)',
|
|
gridGap: '10px'
|
|
})
|
|
.child(
|
|
el('span').text(`Kode`)
|
|
)
|
|
.child(
|
|
el('p').margin('0px').text(': '+itemAng.kode)
|
|
)
|
|
)
|
|
.child(
|
|
el('p').margin(0).css({
|
|
display: 'grid',
|
|
gridTemplateColumns: '70px calc(100% - 80px)',
|
|
gridGap: '10px'
|
|
})
|
|
.child(
|
|
el('span').text(`Alamat`)
|
|
)
|
|
.child(
|
|
el('p').margin('0px').text(`: `+itemAng.alamat)
|
|
)
|
|
)
|
|
)
|
|
.child(
|
|
el('div').css({
|
|
marginTop: '10px'
|
|
}).class('col-12')
|
|
.child(dataInfo)
|
|
)
|
|
)
|
|
)
|
|
);
|
|
|
|
coloms.child(card);
|
|
}
|
|
|
|
kekayaan.appendChild(coloms.get());
|
|
|
|
|
|
let myObject = [];
|
|
|
|
|
|
function toAA(col,row){
|
|
var dd = "";
|
|
var aa = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
|
|
|
|
while(col>0){
|
|
var mod = (col-1) % 26;
|
|
col = parseInt((col-1)/26);
|
|
dd = aa[mod] + dd;
|
|
}
|
|
|
|
return dd + row;
|
|
}
|
|
let headName = [];
|
|
let merge = [];
|
|
let started = 0;
|
|
let [dataHead, subHead] = dataJson.header;
|
|
started++;
|
|
let n = 0;
|
|
let p = [];
|
|
let subT = [];
|
|
for(let itemH of dataHead){
|
|
let c = n;
|
|
let x = itemH.colspan ? itemH.colspan : started;
|
|
let y = itemH.rowspan ? itemH.rowspan : started;
|
|
n += x;
|
|
if(x>1){
|
|
p.push(itemH.name);
|
|
for(let i=0;i<(x-1);i++) {
|
|
p.push("");
|
|
}; //x
|
|
merge.push({ s: toAA(c + 1, started), e: toAA(n, started) });
|
|
}else{
|
|
p.push(itemH.name);
|
|
subT.push("");
|
|
merge.push({ s: toAA(c+1,1), e: toAA(c+1,y) });
|
|
}
|
|
}
|
|
|
|
for (let sH of subHead){
|
|
subT.push(sH.name);
|
|
}
|
|
|
|
myObject.push(p);
|
|
myObject.push(subT);
|
|
|
|
myObject = myObject.concat(dataJson.body);
|
|
|
|
let excelTyle = {
|
|
header : {
|
|
fill: {
|
|
fgColor: {
|
|
rgb: '0070C0'
|
|
},
|
|
patternType: 'solid'
|
|
},
|
|
font: {
|
|
color: {
|
|
rgb: 'FFFFFF'
|
|
}
|
|
},
|
|
border: {
|
|
left: {
|
|
style: 'thin',
|
|
color: { rgb: 'FFFFFF' }
|
|
},
|
|
right: {
|
|
style: 'thin',
|
|
color: { rgb: 'FFFFFF' }
|
|
},
|
|
top: {
|
|
style: 'thin',
|
|
color: { rgb: 'FFFFFF' }
|
|
},
|
|
bottom: {
|
|
style: 'thin',
|
|
color: { rgb: 'FFFFFF' }
|
|
}
|
|
},
|
|
alignment: {
|
|
horizontal: 'center',
|
|
vertical: 'center',
|
|
wrapText: true
|
|
}
|
|
}
|
|
,body : {
|
|
fill: {
|
|
fgColor: {
|
|
rgb: 'FFFFFF'
|
|
},
|
|
patternType: 'solid'
|
|
},
|
|
font: {
|
|
sz: 10,
|
|
color: {
|
|
rgb: '000000'
|
|
}
|
|
},
|
|
border: {
|
|
left: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
},
|
|
right: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
},
|
|
top: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
},
|
|
bottom: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
}
|
|
},
|
|
alignment: {
|
|
horizontal: 'left',
|
|
vertical: 'center',
|
|
},
|
|
}
|
|
,body2 : {
|
|
fill: {
|
|
fgColor: {
|
|
rgb: 'FFFFFF'
|
|
},
|
|
patternType: 'solid'
|
|
},
|
|
font: {
|
|
sz: 10,
|
|
color: {
|
|
rgb: '000000'
|
|
}
|
|
},
|
|
border: {
|
|
left: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
},
|
|
right: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
},
|
|
top: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
},
|
|
bottom: {
|
|
style: 'thin',
|
|
color: { rgb: 'C0C0C0' }
|
|
}
|
|
},
|
|
alignment: {
|
|
horizontal: 'right',
|
|
vertical: 'center',
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
window.exportWSPlus = function() {
|
|
let myFile = "Kekayaan Anggota " + tanggal(Date.now()).sekarang2 +'-'+Date.now()+".xlsx";
|
|
|
|
let jjAr = [];
|
|
for (let jj = 0; jj < n; jj++) {
|
|
jjAr.push('');
|
|
}
|
|
|
|
myObject.push(jjAr);
|
|
|
|
let myWorkSheet = XLSX.utils.aoa_to_sheet(myObject);
|
|
|
|
let wscols = [
|
|
{ wch: 6 }
|
|
, { wch: 6 }
|
|
, { wch: 20 }
|
|
, { wch: 20 }
|
|
, { wch: 8 }
|
|
, { wch: 15 }
|
|
, { wch: 28 }
|
|
, { wch: 26 }
|
|
, { wch: 7 }
|
|
];
|
|
let ws = wscols.length;
|
|
let sisa = n - wscols.length;
|
|
|
|
while(sisa > 0){
|
|
wscols.push({ wch: 16 });
|
|
sisa--;
|
|
}
|
|
|
|
myWorkSheet['!cols'] = wscols;
|
|
|
|
for(let i=1;i <= n;i++){
|
|
myWorkSheet[ toAA(i,1) ].s = excelTyle.header;
|
|
myWorkSheet[ toAA(i,2) ].s = excelTyle.header;
|
|
for (let s = 0; s < dataJson.body.length; s++) {
|
|
if(i >= ws ){
|
|
myWorkSheet[toAA(i, (3 + s))] ? myWorkSheet[ toAA(i, (3+s) ) ].s = excelTyle.body2:null;
|
|
myWorkSheet[toAA(i, (3 + s))] ? myWorkSheet[toAA(i, (3 + s))].z = '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)':null;
|
|
}else{
|
|
myWorkSheet[toAA(i, (3 + s))] ? myWorkSheet[ toAA(i, (3+s) ) ].s = excelTyle.body:null;
|
|
}
|
|
}
|
|
}
|
|
for (let ix = 1; ix <= n; ix++) {
|
|
if(ix > 9){
|
|
myWorkSheet[ toAA(ix, (myObject.length)) ].f = "SUM("+toAA(ix,3)+":"+toAA(ix, (myObject.length-1) )+")";
|
|
myWorkSheet[ toAA(ix, (myObject.length)) ].s = excelTyle.body2;
|
|
myWorkSheet[toAA(ix, (myObject.length))].z = '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)'; // format currency IDR
|
|
}
|
|
}
|
|
|
|
|
|
myWorkSheet['!merges'] = merge;
|
|
var myWorkBook = XLSX.utils.book_new();
|
|
XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "Kekayaan Anggota");
|
|
XLSX.writeFile(myWorkBook, myFile);
|
|
}
|