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'); })