const kekayaan = _id('kekayaan');
kekayaan.style.overflowX = 'scroll';
kekayaan.style.overflowy = 'scroll';
kekayaan.style.height = '350px';
function doit(elm, type, fn) {
var elt = elm;
var wb = XLSX.utils.table_to_book(elt, { sheet: "Sheet JS" });
XLSX.writeFile(wb, fn || ('SheetJSTableExport.' + (type || 'xlsx')));
}
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 tableCreator = function () {
let [anggota, simp, simpanan, pinjaman] = arguments;
console.log(pinjaman);
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: 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
})
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
})
})
});
kekayaan.appendChild(
el('table').css({
cellSpacing: 0
}).html(`
${(function () {
return '' + header.map(function (q) {
if (q.rowspan != undefined) {
return `
${q.name} |
`
} else {
return `
${q.name} |
`
}
}).join('') + '
'
})()}
${(function () {
return '' + subheader.map(function (q) {
if (q.rowspan != undefined) {
return `
${q.name} |
`
} else {
return `
${q.name} |
`
}
}).join('') + '
'
})()}
${anggota.map(function (ang, i) {
if (i < 20) {
let j = '';
j += `${i + 1} | `;
j += `${ang.kode} | `;
j += `${ang.nama} | `;
j += `${ang.kota}, ${tanggal(ang.tgllahir).sekarang} | `;
j += `${ang.jk} | `;
j += `${ang.telp} | `;
j += `${ang.alamat} | `;
j += `${ang.unitkerja} | `;
j += `${ang.masuk.split('-')[0]} | `;
simp.forEach(function (h) {
let awl = 0;
let jln = 0;
j += `0 | `;
namaBulan.forEach(function (b, i) {
let bl = i + 1;
let [data] = simpanan.cond(h.kode, 'kodesp').cond(bl, 'bulan').cond(ang.kode, 'kode');
if (data != undefined) {
jln += Number(data.jumlah);
j += `${Number(data.jumlah).currency(0).replace(/\./g, ',')} | `;
} else {
j += `0 | `;
}
})
j += `${Number(jln).currency(0).replace(/\./g, ',')} | `;
j += `${Number(awl + jln).currency(0).replace(/\./g, ',')} | `;
});
pj.forEach(function (q) {
let y = ['awl'
, 'shu'
, 'nonshu'
, 'bunga'
, 'baru'
, 'akhir'
];
function shu(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond('G', 'tr')
.cond(ang.kode, 'kode')
;
let [data] = g;
if (data != undefined) {
let { angpokok } = data;
if (angpokok != null && angpokok != undefined) {
return Number(angpokok);
}
return 0;
}
return 0;
}
function nonshu(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond('L', 'tr')
.cond(ang.kode, 'kode')
;
let [data] = g;
if (data != undefined) {
let { angpokok } = data;
if (angpokok != null && angpokok != undefined) {
return angpokok.number(2);
}
return 0;
}
return 0;
}
function bunga(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond(ang.kode, 'kode')
;
if (g.length > 1) {
let v = g.map(function (cj) {
return cj.angbunga ? cj.angbunga.number(2) : 0
}).sum();
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) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond(ang.kode, 'kode')
;
if (g.length > 1) {
let v = g.map(function (cj) {
return cj.pokok.number(2)
}).sum();
return v;
}
let [data] = g;
if (data != undefined) {
let { pokok } = data;
return pokok.number(2);
}
return 0;
}
y.forEach(function (s) {
if (s == 'shu') {
let data = shu(q).currency(0);
j += `${data} | `;
} else if (s == 'nonshu') {
let data = nonshu(q).currency(0);
j += `${data} | `;
} else if (s == 'bunga') {
let data = bunga(q).currency(0);
j += `${data} | `;
} else if (s == 'baru') {
let data = pokok(q).currency(0);
j += `${data} | `;
} else if (s == 'akhir') {
let data = (pokok(q) - nonshu(q) - shu(q)).currency(0);
j += `${data} | `;
} else {
j += `0 | `;
}
});
})
j += '
';
return j;
} else {
return '';
}
}).join('')}
`).get()
)
let sumData = [];
let headerExcel = [];
headerExcel.push(header.map(function (q) {
if (q.rowspan != undefined) {
return {
rowspan : q.rowspan,
name : q.name,
}
} else {
return {
rowspan : q.rowspan,
name : q.name,
}
}
}))
(function () {
return '' + subheader.map(function (q) {
if (q.rowspan != undefined) {
return `
${q.name} |
`
} else {
return `
${q.name} |
`
}
}).join('') + '
'
})()
anggota.map(function (ang, i) {
let j = '';
j += `${i + 1} | `;
j += `${ang.kode} | `;
j += `${ang.nama} | `;
j += `${ang.kota}, ${tanggal(ang.tgllahir).sekarang} | `;
j += `${ang.jk} | `;
j += `${ang.telp} | `;
j += `${ang.alamat} | `;
j += `${ang.unitkerja} | `;
j += `${ang.masuk.split('-')[0]} | `;
simp.forEach(function (h) {
let awl = 0;
let jln = 0;
sumData.push({
kodesp: h.kode,
bulan: '00',
kode: 'awl',
value: Number(0)
})
j += `0 | `;
namaBulan.forEach(function (b, i) {
let bl = i + 1;
let [data] = simpanan.cond(h.kode, 'kodesp').cond(bl, 'bulan').cond(ang.kode, 'kode');
if (data != undefined) {
sumData.push({
kodesp: h.kode,
bulan: bl.pad(2),
kode: 'sim',
value: Number(data.jumlah)
})
jln += Number(data.jumlah);
j += `${Number(data.jumlah).currency(0).replace(/\./g, ',')} | `;
} else {
sumData.push({
kodesp: h.kode,
bulan: bl.pad(2),
kode: 'sim',
value: 0
})
j += `0 | `;
}
})
sumData.push({
kodesp: h.kode,
bulan: '00',
kode: 'jln',
value: Number(jln)
})
sumData.push({
kodesp: h.kode,
bulan: '00',
kode: 'akr',
value: Number(awl + jln)
})
j += `${Number(jln).currency(0).replace(/\./g, ',')} | `;
j += `${Number(awl + jln).currency(0).replace(/\./g, ',')} | `;
});
pj.forEach(function (q) {
let y = ['awl'
, 'shu'
, 'nonshu'
, 'bunga'
, 'baru'
, 'akhir'
];
function shu(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond('G', 'tr')
.cond(ang.kode, 'kode')
;
let [data] = g;
if (data != undefined) {
let { angpokok } = data;
if (angpokok != null && angpokok != undefined) {
return angpokok.number(2);
}
return 0;
}
return 0;
}
function nonshu(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond('L', 'tr')
.cond(ang.kode, 'kode')
;
let [data] = g;
if (data != undefined) {
let { angpokok } = data;
if (angpokok != null && angpokok != undefined) {
return angpokok.number(2);
}
return 0;
}
return 0;
}
function bunga(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond(ang.kode, 'kode')
;
if (g.length > 1) {
let v = g.map(function (cj) {
return cj.angbunga ? cj.angbunga.number(2) : 0
}).sum();
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) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond(ang.kode, 'kode')
;
if (g.length > 1) {
let v = g.map(function (cj) {
return cj.pokok.number(2)
}).sum();
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',
value: shu(q)
})
let data = shu(q);
j += `${data} | `;
} else if (s == 'nonshu') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'nonshu',
value: nonshu(q)
})
let data = nonshu(q);
j += `${data} | `;
} else if (s == 'bunga') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'bunga',
value: bunga(q)
})
let data = bunga(q);
j += `${data} | `;
} else if (s == 'baru') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'baru',
value: pokok(q)
})
let data = pokok(q);
j += `${data} | `;
} else if (s == 'akhir') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'akhir',
value: (pokok(q) - nonshu(q) - shu(q))
})
let data = (pokok(q) - nonshu(q) - shu(q)).currency(0).replace(/\./g, ',');
j += `${data} | `;
} else {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'awl',
value: 0
})
j += `0 | `;
}
});
})
j += '
';
return j;
}).join('')
window.printDataHtmlExcel =
el('table').css({
cellSpacing: 0
}).html(`
${(function () {
return '' + header.map(function (q) {
if (q.rowspan != undefined) {
return `
${q.name} |
`
} else {
return `
${q.name} |
`
}
}).join('') + '
'
})()}
${(function () {
return '' + subheader.map(function (q) {
if (q.rowspan != undefined) {
return `
${q.name} |
`
} else {
return `
${q.name} |
`
}
}).join('') + '
'
})()}
${anggota.map(function (ang, i) {
let j = '';
j += `${i + 1} | `;
j += `${ang.kode} | `;
j += `${ang.nama} | `;
j += `${ang.kota}, ${tanggal(ang.tgllahir).sekarang} | `;
j += `${ang.jk} | `;
j += `${ang.telp} | `;
j += `${ang.alamat} | `;
j += `${ang.unitkerja} | `;
j += `${ang.masuk.split('-')[0]} | `;
simp.forEach(function (h) {
let awl = 0;
let jln = 0;
sumData.push({
kodesp: h.kode,
bulan: '00',
kode: 'awl',
value: Number(0)
})
j += `0 | `;
namaBulan.forEach(function (b, i) {
let bl = i + 1;
let [data] = simpanan.cond(h.kode, 'kodesp').cond(bl, 'bulan').cond(ang.kode, 'kode');
if (data != undefined) {
sumData.push({
kodesp: h.kode,
bulan: bl.pad(2),
kode: 'sim',
value: Number(data.jumlah)
})
jln += Number(data.jumlah);
j += `${Number(data.jumlah).currency(0).replace(/\./g, ',')} | `;
} else {
sumData.push({
kodesp: h.kode,
bulan: bl.pad(2),
kode: 'sim',
value: 0
})
j += `0 | `;
}
})
sumData.push({
kodesp: h.kode,
bulan: '00',
kode: 'jln',
value: Number(jln)
})
sumData.push({
kodesp: h.kode,
bulan: '00',
kode: 'akr',
value: Number(awl + jln)
})
j += `${Number(jln).currency(0).replace(/\./g, ',')} | `;
j += `${Number(awl + jln).currency(0).replace(/\./g, ',')} | `;
});
pj.forEach(function (q) {
let y = ['awl'
, 'shu'
, 'nonshu'
, 'bunga'
, 'baru'
, 'akhir'
];
function shu(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond('G', 'tr')
.cond(ang.kode, 'kode')
;
let [data] = g;
if (data != undefined) {
let { angpokok } = data;
if (angpokok != null && angpokok != undefined) {
return angpokok.number(2);
}
return 0;
}
return 0;
}
function nonshu(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond('L', 'tr')
.cond(ang.kode, 'kode')
;
let [data] = g;
if (data != undefined) {
let { angpokok } = data;
if (angpokok != null && angpokok != undefined) {
return angpokok.number(2);
}
return 0;
}
return 0;
}
function bunga(q) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond(ang.kode, 'kode')
;
if (g.length > 1) {
let v = g.map(function (cj) {
return cj.angbunga ? cj.angbunga.number(2) : 0
}).sum();
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) {
let { kode } = q;
let g = pinjaman
.cond(kode, 'kodesp')
.cond(ang.kode, 'kode')
;
if (g.length > 1) {
let v = g.map(function (cj) {
return cj.pokok.number(2)
}).sum();
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',
value: shu(q)
})
let data = shu(q);
j += `${data} | `;
} else if (s == 'nonshu') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'nonshu',
value: nonshu(q)
})
let data = nonshu(q);
j += `${data} | `;
} else if (s == 'bunga') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'bunga',
value: bunga(q)
})
let data = bunga(q);
j += `${data} | `;
} else if (s == 'baru') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'baru',
value: pokok(q)
})
let data = pokok(q);
j += `${data} | `;
} else if (s == 'akhir') {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'akhir',
value: (pokok(q) - nonshu(q) - shu(q))
})
let data = (pokok(q) - nonshu(q) - shu(q)).currency(0).replace(/\./g, ',');
j += `${data} | `;
} else {
sumData.push({
kodesp: q.kode,
bulan: '00',
kode: 'awl',
value: 0
})
j += `0 | `;
}
});
})
j += '
';
return j;
}).join('')}
${(function () {
return `
Grand Total |
${simp.map(function (h) {
let y = sumData.cond('awl', 'kode').cond(h.kode, 'kodesp').map(function (c) {
return c.value
}).sum();
let jln = sumData.cond('jln', 'kode').cond(h.kode, 'kodesp').map(function (c) {
return c.value
}).sum();
let akr = sumData.cond('akr', 'kode').cond(h.kode, 'kodesp').map(function (c) {
return c.value
}).sum();
return `${y} | `
+ namaBulan.map(function (b, i) {
let bl = (i + 1).pad(2);
let y = sumData.cond(bl, 'bulan').cond('sim', 'kode').cond(h.kode, 'kodesp').map(function (c) {
return c.value
}).sum();
return `${y} | `
})
+ `${jln} | `
+ `${akr} | `
}).join('')
}
${pj.map(function (q) {
let cc = ['awl', 'shu', 'nonshu', 'bunga', 'baru', 'akhir'];
return cc.map(function (s) {
let y = sumData.cond(q.kode, 'kodesp').cond(s, 'kode').map(function (c) {
return c.value
}).sum();
return `${y} | `
})
}).join('')
}
`
})()}
`).get();
}
const load = function () {
AuditDevQuery(`
SELECT * FROM anggota a ORDER BY jurubayar DESC, kode DESC
[;]
SELECT kode, nama FROM jpinjam WHERE typetransaksi = 'simpanan' AND rw <> '-'
[;]
SELECT kode, kodesp, month(tgl) bulan, sum(jumlah) jumlah
FROM msimpan WHERE tgl like '2023%' GROUP BY bulan, kode, kodesp
[;]
SELECT * FROM (
SELECT tr, kode, kodesp, sum(mpinjam.pokok) pokok, b.pokok angpokok, b.bunga angbunga FROM mpinjam
LEFT JOIN (
SELECT m.faktur, sum(mags.pokok) pokok, sum(mags.bunga) bunga FROM mags
LEFT JOIN mpinjam m ON m.faktur = mags.fkt GROUP BY faktur
) b ON b.faktur = mpinjam.faktur
GROUP BY kode, kodesp, tr
) a
`, function (x) {
tableCreator(...x);
})
}
load();
$("#export-data").click(function () {
let reportExcel = window.printDataHtmlExcel;
doit(reportExcel, 'xlsx', 'kekayaananggota.xlsx')
// let content = new Blob([reportExcel], {
// type: 'application/vdn.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
// });
// saveAs(content, 'export' + '.xls');
})