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