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.

896 lines
37 KiB
JavaScript

import { _bbData, _perbandingan, _triwulan } from "{{PATH}}/assets-js/module-lap-bb.js?v={time}";
import { temp } from "{{PATH}}/assets-js/module-lap-filterneraca.js?v={time}";
import { xlsx } from "{{PATH}}/assets-js/module-export-xlsx.js?v={time}";
globalThis.acc = JSON.parse(_id('acc').innerHTML);
let d = _id('report').querySelector('tbody');
let main = [];
_fullScreen();
temp();
_id('bulan').value = tanggal().normal.split('-')[1];
const headerTemp = function () {
let year = _id('tahun').value.number(2);
let mnt = ['03', '06', '09', '12'];
let jn = _id('jenislap').value;
if (jn == 2) {
_id('report').querySelector('thead').innerHTML = `
<tr>
<th style="font-size:12px;" colspan="8" class="text-center">Neraca</th>
</tr>
<tr style="border-bottom: 1px solid #777;">
<th style="font-size:12px;" colspan="8" class="text-center">Tahun ${year}</th>
</tr>
<tr style="border-bottom: 4px double #333;">
<th style="padding:2px 3px;font-size:12px; min-width:60px;">Kode</th>
<th style="padding:2px 3px;font-size:12px;">Aktiva</th>
<th style="text-align:right;padding:2px 3px;font-size:12px;max-width:140px;min-width:140px;">${_id('tahun').value.number(2)}</th>
<th style="text-align:right;padding:2px 3px;font-size:12px;max-width:140px;min-width:140px;">${_id('tahun').value.number(2) - 1}</th>
<th style="border-left: 1px solid #777; padding:2px 3px;font-size:12px;">Kode</th>
<th style="padding:2px 3px;font-size:12px;">Pasiva</th>
<th style="text-align:right;padding:2px 3px;font-size:12px;max-width:140px;min-width:140px;">${_id('tahun').value.number(2)}</th>
<th style="text-align:right;padding:2px 3px;font-size:12px;max-width:140px;min-width:140px;">${_id('tahun').value.number(2) - 1}</th>
</tr>
`
} else if (jn == 1) {
_id('report').querySelector('thead').innerHTML = `
<tr>
<th style="font-size:12px;" colspan="8" class="text-center">Neraca</th>
</tr>
<tr style="border-bottom: 1px solid #777;">
<th style="font-size:12px;" colspan="8" class="text-center">Tahun ${year}</th>
</tr>
<tr style="border-bottom: 4px double #333;">
<th style="padding:2px 3px;font-size:12px;">Kode</th>
<th style="padding:2px 3px;font-size:12px;">Aktiva</th>
${mnt.map(function (h) {
return `
<th style="text-align:right;padding:2px 3px;font-size:12px;">${h + '-' + _id('tahun').value.number(2)}</th>
`
}).join('')}
<th style="border-left: 1px solid #777; padding:2px 3px;font-size:12px;">Kode</th>
<th style="padding:2px 3px;font-size:12px;">Pasiva</th>
${mnt.map(function (h) {
return `
<th style="text-align:right;padding:2px 3px;font-size:12px;">${h + '-' + _id('tahun').value.number(2)}</th>
`
}).join('')}
</tr>
`
} else {
_id('report').querySelector('thead').innerHTML = `
<tr>
<th style="font-size:12px;" colspan="6" class="text-center">KPRI WARPEKA GRESIK</th>
</tr>
<tr>
<th style="font-size:12px;" colspan="6" class="text-center">Neraca</th>
</tr>
<tr style="border-bottom: 1px solid #777;">
<th style="font-size:12px;" colspan="6" class="text-center">Per <span id="tgl2"></span></th>
</tr>
<tr style="border-bottom: 4px double #333;">
<th style="padding:2px 3px;font-size:12px;">Kode</th>
<th style="padding:2px 3px;font-size:12px;">Aktiva</th>
<th style="text-align:right;padding:2px 3px;font-size:12px;">Nominal</th>
<th style="border-left: 1px solid #777; padding:2px 3px;font-size:12px;">Kode</th>
<th style="padding:2px 3px;font-size:12px;">Pasiva</th>
<th style="text-align:right;padding:2px 3px;font-size:12px;">Nominal</th>
</tr>
`
}
}
const subTitle = function (s) {
let type = _val('laporantype');
let [dataR] = main.cond((type === 'u' ? s.kode : s.main), 'kode');
s.mainkel = dataR.mainkel;
s.subkel = dataR.subkel;
return `
<tr>
<td colspan=3 style="padding:2px 3px;font-size:12px;white-space:nowrap;border-right: 1px solid #777;">${s.mainkel}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" data-name="akun"></td>
<td class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<td class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<tr>
`;
}
const tempContent = function (s, i, status = 0) {
let year = _id('tahun').value.number(2);
let mnt = ['03', '06', '09', '12'];
let jn = _id('jenislap').value;
if (status == 0) {
if (jn == 2) {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.nama}</td>
<td class="nmap" data-kode="${s.kode}" year="${year}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<td class="nmap" data-kode="${s.kode}" year="${year - 1}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="kode"></td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="akun"></td>
<td posisi="${i}" data-name="nom" year="${year}" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<td posisi="${i}" data-name="nom" year="${year - 1}" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
</tr>
`
} else if (jn == 1) {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.nama}</td>
${mnt.map(function (h) {
return `
<td class="nmap" data-kode="${s.kode}" year="${h}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
`;
}).join('')}
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="kode"></td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="akun"></td>
${mnt.map(function (h) {
return `
<td posisi="${i}" data-name="nom" year="${h}" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
`;
}).join('')}
</tr>
`
} else {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.nama}</td>
<td class="nmap" data-kode="${s.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="kode"></td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="akun"></td>
<td posisi="${i}" data-name="nom" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
</tr>
`
}
} else {
if (jn == 2) {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="kode"></td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="akun"></td>
<td posisi="${i}" year="${year}" data-name="nom" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;white-space:nowrap;text-align:right; ">Rp. 0</td>
<td posisi="${i}" year="${year - 1}" data-name="nom" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;white-space:nowrap;text-align:right; ">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;">${s.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.nama}</td>
<td class="nmap" year="${year}" data-kode="${s.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
<td class="nmap" year="${year - 1}" data-kode="${s.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
</tr>
`
} else if (jn == 1) {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="kode"></td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="akun"></td>
${mnt.map(function (h) {
return `
<td posisi="${i}" year="${h}" data-name="nom" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;white-space:nowrap;text-align:right; ">Rp. 0</td>
`;
}).join('')}
<td posisi="${i}" year="${year - 1}" data-name="nom" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;white-space:nowrap;text-align:right; ">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;">${s.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.nama}</td>
${mnt.map(function (h) {
return `
<td class="nmap" year="${h}" data-kode="${s.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
`;
}).join('')}
</tr>
`
} else {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="kode"></td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" posisi="${i}" data-name="akun"></td>
<td posisi="${i}" data-name="nom" class="nmap" data-kode="-" style="padding:2px 3px;font-size:12px;white-space:nowrap;text-align:right; ">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;">${s.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${s.nama}</td>
<td class="nmap" data-kode="${s.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;">Rp. 0</td>
</tr>
`
}
}
}
const footerTTD = `
<tr>
<td colspan="3" class="dated"></td>
</tr>
<tr>
<td colspan="3">Pengurus :</td>
</tr>
<tr>
<td>1</td>
<td>${dataProfile ? dataProfile.get('ketua1') : ''}</td>
</tr>
<tr>
<td>2</td>
<td>Drs. H. Nadlif, M.Si</td>
</tr>
<tr>
<td>3</td>
<td>Drs. H. Sami'an, M.Pd</td>
</tr>
<tr>
<td>4</td>
<td>Drs. Siswandi Wibowo K, M.Si</td>
</tr>
<tr>
<td>5</td>
<td>${dataProfile ? dataProfile.get('bendahara') : ''}</td>
</tr>
`
const tempContentFooter = function () {
let year = _id('tahun').value.number(2);
let mnt = ['03', '06', '09', '12'];
let jn = _id('jenislap').value;
if (jn == 2) {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" colspan="2">Grand Total Aktiva</td>
<td year="${year}" style="width:180px;padding:2px year 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totald">Rp. 0</td>
<td year="${year - 1}" style="width:180px;padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totald">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;" colspan="2">Grand Total Pasiva</td>
<td year="${year}" style="width:180px; padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totalk">Rp. 0</td>
<td year="${year - 1}" style="width:180px; padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totalk">Rp. 0</td>
</tr>
${footerTTD}
`
} else if (jn == 1) {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" colspan="2">Grand Total Aktiva</td>
${mnt.map(function (s) {
return `
<td year="${s}" style="padding:2px year 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totald">Rp. 0</td>
`;
}).join("")}
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;" colspan="2">Grand Total Pasiva</td>
${mnt.map(function (s) {
return `
<td year="${s}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totalk">Rp. 0</td>
`;
}).join("")}
</tr>
${footerTTD}
`
} else {
return `
<tr style="border-bottom: 1px solid #333;">
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;" colspan="2">Grand Total Aktiva</td>
<td style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totald">Rp. 0</td>
<td style="border-left: 1px solid #777;padding:2px 3px;font-size:12px;white-space:nowrap;" colspan="2">Grand Total Pasiva</td>
<td style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;" class="totalk">Rp. 0</td>
</tr>
${footerTTD}
`
}
}
function spaceString(n) {
let r = '';
for (let q = 0; q < n; q++) {
r += '&nbsp;&nbsp;'
}
return r;
}
let showDataTable = function (x) {
let type = _val('laporantype')
let app = _val('app');
let pmain = _json('pmainacc');
let nr = acc.removeDuplicate(['main', 'nr', 'app']);
let data = (type == 'u' ? main.map(function (p) {
let [n] = nr.cond(p.kode, 'main');
p.nr = n.nr;
p.app = n.app;
return p;
}) : acc.map(function (e) {
let [q] = main.cond(e.main, 'kode');
e.mainkel = q.mainkel;
e.subkel = q.subkel;
return e;
}));
data = data.map(function (q) {
let [s] = pmain.cond(q.mainkel, 'main');
q.posisi = s.posisi;
return q;
});
let allData = data.cond((x == 'D' ? 1 : 2), 'posisi');
let dataCek = (
app.indexOf(',') != -1 ? allData
: data.cond(app, 'app')
).cond('N', 'nr');
let dataRender = (
app.indexOf(',') != -1 ? allData
: data.cond(app, 'app')
)
.cond((x == 'D' ? 1 : 2), 'posisi').cond('N', 'nr').map(function (w) {
return type == 'u' ? {
subkel: w.subkel,
mainkel: w.mainkel,
kode: w.kode,
nama: w.nama,
} : {
subkel: w.subkel,
mainkel: w.mainkel,
kode: w.kode,
nama: w.nama,
}
}).sortArrayObjectAsc('kode');
let tree = {}
dataRender.removeDuplicate(['mainkel'])
.forEach(function (o) {
tree[o.mainkel] = {};
});
dataRender.removeDuplicate(['mainkel', 'subkel'])
.forEach(function (i) {
if (!tree[i.mainkel][i.subkel]) {
tree[i.mainkel][i.subkel] = [];
}
});
dataRender.removeDuplicate(['mainkel', 'subkel', 'kode', 'nama'])
.forEach(function (i) {
if (tree[i.mainkel][i.subkel]) {
tree[i.mainkel][i.subkel].push(i);
}
});
let newData = [];
function subSum(d) {
let n = 0;
}
let xd = x;
(function gt(tr, n = 0) {
if (!Array.isArray(tr)) {
Object.keys(tr).forEach(function (x) {
newData.push({
urut: n,
kode: '',
nama: x,
});
gt(tr[x], n + 1);
if (n > 0) {
if (x == 'EKUITAS') {
}
newData.push({
urut: n,
total: 'total',
kode: x,
hide: true,
nama: 'TOTAL ' + x,
});
} else {
newData.push({
urut: n,
total: 'total',
kode: x,
hide: true,
nama: 'TOTAL ' + x,
});
}
});
} else {
tr.forEach(function (c, o) {
newData.push({
urut: n + '-' + o,
kode: c.kode,
nama: c.nama,
})
});
}
})(tree);
let kiri = dataCek.cond(1, 'posisi').length;
let kanan = dataCek.cond(2, 'posisi').length + 1;
let d = newData.cond('EKUITAS', 'kode')
if (d.length > 0) {
newData.push({
kode: ""
, nama: "SHU"
, urut: 1
})
newData.push({
urut: 3,
kode: 'SHU',
name: 'nom',
nama: app == 'usp' ? 'USP' : 'INDUK',
});
}
if (kiri > kanan) {
if (x == 'K') {
let sisa = kiri - kanan;
for (let j = 0; j < sisa; j++) {
newData.push({
urut: 4,
kode: '',
nama: '',
})
}
}
} else {
if (x == 'D') {
let sisa = kanan - kiri;
for (let j = 0; j < sisa; j++) {
newData.push({
urut: 4,
kode: '',
nama: '',
})
}
}
}
let
toHtml = newData.map(function (x) {
let jlp = _val('jenislap');
return jlp == 2 ?
`
<tr style="border-bottom: 1px solid #ddd;">
${x.kode == '' ?
`
<td colspan=2 style="padding:2px 3px;font-size:12px;white-space:nowrap;min-width:60px;">${spaceString(x.urut + 1)} ${x.nama}</td>
`
:
`
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;min-width:60px;text-align:right;">${x.hide ? `` : x.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${x.urut == 0 && x.total ? '&nbsp;&nbsp;&nbsp;&nbsp;' + x.nama : x.nama}</td>
`
}
<td class="nmap ${x.total ? `total` : ``}" year="${_val('tahun')}" ${x.name ? `data-name="${x.name}"` : ``} data-kode="${x.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;min-width:140px;"></td>
<td class="nmap ${x.total ? `total` : ``}" year="${Number(_val('tahun')) - 1}" ${x.name ? `data-name="${x.name}"` : ``} data-kode="${x.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;min-width:140px;"></td>
</tr>
`
:
jlp == 1 ?
(function () {
let mnt = ['03', '06', '09', '12'];
return `
<tr style="border-bottom: 1px solid #ddd;">
${x.kode == '' ?
`
<td colspan=2 style="padding:2px 3px;font-size:12px;white-space:nowrap;min-width:60px;">${spaceString(x.urut + 1)} ${x.nama}</td>
`
:
`
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;min-width:60px;text-align:right;">${x.hide ? `` : x.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${x.urut == 0 && x.total ? '&nbsp;&nbsp;&nbsp;&nbsp;' + x.nama : x.nama}</td>
`
}
`+ mnt.map(function (q) {
return `
<td class="nmap ${x.total ? `total` : ``}" year="${q}" ${x.name ? `data-name="${x.name}"` : ``} data-kode="${x.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;min-width:140px;"></td>
`
}).join('') +
`
</tr>
`
})()
:
`
<tr style="border-bottom: 1px solid #ddd;">
${x.kode == '' ?
`
<td colspan=2 style="padding:2px 3px;font-size:12px;white-space:nowrap;min-width:60px;">${spaceString(x.urut + 1)} ${x.nama}</td>
`
:
`
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;min-width:60px;text-align:right;">${x.hide ? `` : x.kode}</td>
<td style="padding:2px 3px;font-size:12px;white-space:nowrap;">${x.urut == 0 && x.total ? '&nbsp;&nbsp;&nbsp;&nbsp;' + x.nama : x.nama}</td>
`
}
<td class="nmap ${x.total ? `total` : ``}" ${x.name ? `data-name="${x.name}"` : ``} data-kode="${x.kode}" style="padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;"></td>
</tr>
`
}).join('');
return `
<table style="width:100%;">
${toHtml}
</table>
`;
}
let bodyContaner = function () {
let body = _id('report').querySelector('tbody');
let jlp = _val('jenislap');
let columsn = jlp == 2 ? 4 : jlp == 1 ? 6 : 3;
body.innerHTML = '';
body.appendChild(
el('tr')
.child(
el('td')
.attr('colspan', columsn)
.html(showDataTable('D'))
)
.child(
el('td')
.css({
borderLeft: '1px solid #ddd'
})
.html(showDataTable('K'))
.attr('colspan', columsn)
)
.get()
);
let total = el('tr')
.css('border-top', '1px solid #ddd')
.css('border-bottom', '1px solid #333')
total.child(
el('td')
.attr('colspan', '2').html('TOTAL ASET')
);
jlp == 2 ?
(function () {
total.child(
el('td')
.attr('year', _val('tahun'))
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;width:140px;max-width:140px;min-width:140px;`)
.class('totald')
);
total.child(
el('td')
.attr('year', Number(_val('tahun')) - 1)
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;width:140px;max-width:140px;min-width:140px;`)
.class('totald')
);
})()
:
jlp == 1 ?
(function () {
let mnt = ['03', '06', '09', '12'];
mnt.forEach(q => {
total.child(
el('td')
.attr('year', q)
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;width:140px;max-width:140px;min-width:140px;`)
.class('totald')
);
});
})()
:
total.child(
el('td')
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;`)
.class('totald')
);
;
total.child(
el('td')
.css({
borderLeft: '1px solid #ddd'
})
.attr('colspan', '2').html('TOTAL KEWAJIBAN DAN EKUITAS')
);
jlp == 2 ?
(function () {
total.child(
el('td')
.attr('year', _val('tahun'))
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;width:140px;max-width:140px;min-width:140px;`)
.class('totalk')
);
total.child(
el('td')
.attr('year', Number(_val('tahun')) - 1)
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;width:140px;max-width:140px;min-width:140px;`)
.class('totalk')
);
})()
:
jlp == 1 ?
(function () {
let mnt = ['03', '06', '09', '12'];
mnt.forEach(q => {
total.child(
el('td')
.attr('year', q)
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;width:140px;max-width:140px;min-width:140px;`)
.class('totalk')
);
});
})()
:
total.child(
el('td')
.attr('style', `padding:2px 3px;font-size:12px;text-align:right; white-space:nowrap;`)
.class('totalk')
);
;
body.appendChild(
total.get()
);
body.appendChild(
el('tr')
.child(
el('td')
.attr('colspan', (columsn * 2))
.html(`
<table>
${footerTTD}
</table>
`)
)
.get()
);
}
let loader = function (callback) {
let year = _id('tahun').value.number(2);
let mnt = ['03', '06', '09', '12'];
let jn = _id('jenislap').value;
headerTemp();
bodyContaner();
setTimeout(function () {
callback();
})
}
AuditDevQuery(`SELECT * FROM mainacc`, function (a) {
main = a;
loader(function () {
setTimeout(function () {
loadData();
}, 100)
})
});
_id('play').addEventListener('click', function () {
loader(function () {
setTimeout(function () {
loadData();
}, 100)
})
});
function LoadDataPartial(d, lb, c = '') {
d = d.filter(function (c) {
if (c.main != null) {
return c;
}
});
let akunP = Array.from(document.querySelectorAll('td[data-kode]' + c))
let totd = document.querySelector('td.totald' + c)
let totk = document.querySelector('td.totalk' + c)
let totDeb = 0;
let totKre = 0;
let laporantype = _id('laporantype').value;
let kodeGet = 'rek';
if (laporantype === 'u') {
kodeGet = 'main';
}
let dataKel = {};
akunP.forEach(function (k) {
let g = d.cond(k.dataset.kode, kodeGet);
if (g.length > 0) {
let g = d.cond(k.dataset.kode, kodeGet);
if (g.length > 0) {
let [read] = g;
let [kel] = main.cond(read.main, 'kode');
let total = g.sum('total');
if (g.singleItem('dk') == 'D') {
totDeb += total
} else {
totKre += total
}
k.innerHTML = total.rp(0);
kel ? (function (kel, total) {
if (!dataKel[kel.subkel]) {
dataKel[kel.subkel] = []
}
dataKel[kel.subkel].push(total)
})(kel, total) : null;
}
}
});
let gt = {}
mainacc.removeDuplicate(['mainkel', 'subkel']).forEach(function (c) {
if (!gt[c.mainkel]) {
gt[c.mainkel] = [];
}
gt[c.mainkel].push(dataKel[c.subkel] ? dataKel[c.subkel].sum() : 0);
});
Array.from(document.querySelectorAll(`td.total` + c)).forEach((s) => {
let kode = s.dataset.kode;
if (gt[kode]) {
s.innerHTML = kode.indexOf('EKUITAS') != -1 ? (gt[kode]).sum().rp(0) : gt[kode].sum().rp(0);
}
})
Object.keys(dataKel).forEach(function (s) {
let l = Array.from(document.querySelectorAll(`td.total` + c));
l.forEach(function (o) {
let kode = o.dataset.kode;
let numberDatas = dataKel[kode];
if (kode == 'EKUITAS') {
numberDatas = [...dataKel[kode]];
}
if (dataKel[kode]) {
o.innerHTML = (numberDatas.sum()).rp(0);
}
})
});
totd.innerHTML = totDeb.rp(0).replace(/IDR/g, "Rp")
totk.innerHTML = totKre.rp(0).replace(/IDR/g, "Rp")
if (lb != undefined) {
let t = document.querySelector('td[data-kode="SHU"]' + c);
if (t != undefined) {
t.innerHTML = (lb * -1).rp().replace(/IDR/g, "Rp");
totk.innerHTML = (totKre + (lb * -1)).rp(0).replace(/IDR/g, "Rp")
}
}
Array.from(document.querySelectorAll("[data-kode]")).forEach(function (a) {
if (a.dataset.kode != '' && a.innerHTML == '') {
a.innerHTML = (0).rp(2);
}
})
}
function loadData() {
let year = _id('tahun').value.number(2);
let jn = _id('jenislap').value;
let mnt = ['03', '06', '09', '12'];
if (jn == 2) {
_perbandingan(function (d, lb, dd, lbd) {
LoadDataPartial(d, lb, `[year="${year}"]`);
LoadDataPartial(dd, lbd, `[year="${year - 1}"]`);
}
, function () {
(function () {
let day = tanggal(_val('tahun') + '-' + _val('bulan')).normal3;
let daySecond = day.split('-');
Array.from(document.querySelectorAll('.dated'))
.forEach(function (w) {
w.innerHTML = `Gresik, ` + tanggal(tanggal(day).normal3).sekarang2;
});
})();
let day = tanggal(_id('tahun').value + '-12').normal3
if (_id('app').value == 'usp') {
return ` WHERE lap_bb.tgl LIKE "${_val('tahun')}%" AND lap_bb.tgl <= "${day}" AND acc.app = 'usp'`;
} else if (_id('app').value == 'acc') {
return ` WHERE lap_bb.tgl LIKE "${_val('tahun')}%" AND lap_bb.tgl <= "${day}" AND acc.app = 'acc'`;
} else {
return ` WHERE lap_bb.tgl LIKE "${_val('tahun')}%" AND lap_bb.tgl <= "${day}"`;
}
}
, function () {
let day = tanggal((_id('tahun').value.number(2) - 1) + '-12').normal3
if (_id('app').value == 'usp') {
return ` WHERE lap_bb.tgl like '${(_id('tahun').value.number(2) - 1)}%' AND lap_bb.tgl <= "${day}" AND acc.app = 'usp'`;
} else if (_id('app').value == 'acc') {
return ` WHERE lap_bb.tgl like '${(_id('tahun').value.number(2) - 1)}%' AND lap_bb.tgl <= "${day}" AND acc.app = 'acc'`;
} else {
return ` WHERE lap_bb.tgl like '${(_id('tahun').value.number(2) - 1)}%' AND lap_bb.tgl <= "${day}"`;
}
}
)
} else if (jn == 1) {
_triwulan(function (a) {
let day = tanggal(_val('tahun') + '-' + _val('bulan')).normal3;
let daySecond = day.split('-');
Array.from(document.querySelectorAll('.dated'))
.forEach(function (w) {
w.innerHTML = `Gresik, ` + tanggal(tanggal(day).normal3).sekarang2;
});
mnt.forEach(function (h, z) {
let q = (z * 2);
let w = (z * 2) + 1; 0
LoadDataPartial(a[q], a[w][0].total, `[year="${h}"]`);
})
}, year, function () {
if (_id('app').value == 'usp') {
return ` AND acc.app = 'usp'`;
}
else if (_id('app').value == 'acc') {
return ` AND acc.app = 'acc'`;
}
else if (_id('app').value == 'acc,usp') {
return ` AND acc.app = 'acc' OR acc.app = 'usp'`;
}
else {
return ``;
}
})
} else {
console.log("single")
_bbData(function (d, lb) {
LoadDataPartial(d, lb)
}, function () {
let day = tanggal(_val('tahun') + '-' + _val('bulan')).normal3;
let daySecond = day.split('-');
_id('tgl2').innerHTML = tanggal(tanggal(day).normal3).sekarang2;
Array.from(document.querySelectorAll('.dated'))
.forEach(function (w) {
w.innerHTML = `Gresik, ` + tanggal(tanggal(day).normal3).sekarang2;
})
if (_id('app').value == 'usp') {
return ` WHERE lap_bb.tgl LIKE "${daySecond[0]}%" AND lap_bb.tgl <= "${day}" AND acc.app = 'usp'`;
}
else if (_id('app').value == 'acc') {
return ` WHERE lap_bb.tgl LIKE "${daySecond[0]}%" AND lap_bb.tgl <= "${day}" AND acc.app = 'acc'`;
}
else if (_id('app').value == 'acc,usp') {
return ` WHERE lap_bb.tgl LIKE "${daySecond[0]}%" AND lap_bb.tgl <= "${day}" AND (acc.app = 'acc' OR acc.app = 'usp')`;
}
else {
return ` WHERE lap_bb.tgl LIKE "${daySecond[0]}%" AND lap_bb.tgl <= "${day}"`;
}
}, function () {
if (Number(_val('tahun')) > thprogram) {
let cek = _val('app').indexOf(',') != -1 ? null : _val('app');
let g = _json('dataprofile').like('kode', 'shubl').map(function (j) {
j.kode = j.kode.indexOf('induk') != -1 ? 'acc' : 'usp';
return {
kode: j.kode,
rek: j.data
}
});
let cekGol = [(cek ? g.cond(cek, 'kode') : g).shift()].map(function (w) {
return `
SELECT main, nama_main, dk, kode rek, nama, total FROM bbtahunan WHERE tahun = '${Number(_val('tahun')) - 1}' ${_val('app') == 'acc,usp' ? `` : ` AND app = '${_val('app')}' `} AND nr = 'N'
`;
}).join('[;]');
return `
${cekGol}
UNION ALL
`
} else {
return ``;
}
})
}
};
_id('print').addEventListener('click', function () {
let layout = {
"p": "a4portrait.css",
"l": "a4landscape.css"
}
$('#report').printThis({
// base: 'https://jasonday.github.io/printThis',
header: null, // prefix to html
footer: null,
importCSS: true,
loadCSS: ["{{PATH}}/" + layout['l'], '{{PATH}}/assets/css/bootstrap.min.css'],
header: false,
});
}, false)
_id('exportExcel').addEventListener('click', function () {
xlsx("#report");
}, false);