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.
240 lines
9.2 KiB
JavaScript
240 lines
9.2 KiB
JavaScript
import { accnil, _bbData2, _bbData, _perbandingan, _triwulan, ekuitas } from "{{PATH}}/assets-js/module-lap-bb.js?v={time}";
|
|
import { temp } from "{{PATH}}/assets-js/module-lap-filterbeban.js?v={time}";
|
|
import { xlsx } from "{{PATH}}/assets-js/module-export-xlsx.js?v={time}";
|
|
import { Footer, _header, head } from "{{PATH}}/assets-js/module-lap-ekuitas-footer2.js?v={time}";
|
|
|
|
const _main = JSON.parse(_id('main').innerHTML);
|
|
globalThis.acc = JSON.parse(_id('acc').innerHTML);
|
|
acc = acc.sortArrayObjectAsc('main')
|
|
|
|
temp();
|
|
|
|
|
|
const dataAccounting = function(a){
|
|
return {
|
|
data: a,
|
|
bln: [
|
|
'Jan'
|
|
,'Feb'
|
|
,'Mar'
|
|
,'Apr'
|
|
,'Mei'
|
|
,'Jun'
|
|
,'Jul'
|
|
,'Aug'
|
|
,'Sep'
|
|
,'Okt'
|
|
,'Nov'
|
|
,'Des'
|
|
],
|
|
dataBebanSatuTahun : function(body){
|
|
let bln = this.bln;
|
|
let beban = this.data.beban;
|
|
let data = this.data.data;
|
|
let acc = [].concat(this.data.acc.cond(_val('app'), 'app').cond('BEBAN', 'amain'));
|
|
let dataBeban = data.filter(function(e){
|
|
if (e.nama.toLowerCase().indexOf('b.') != -1){
|
|
return e;
|
|
}
|
|
});
|
|
let bebanData = acc.map(function(r){
|
|
let s = r;
|
|
let [q] = data.cond(r.kode,'rek');
|
|
if(q){
|
|
for (let bln = 0; bln <= 13; bln++) {
|
|
let b = 'b'+bln.pad(2);
|
|
s[b] = q[b];
|
|
}
|
|
let b = 'ba0';
|
|
s[b] = q[b];
|
|
}else{
|
|
for (let bln = 0; bln <= 13; bln++) {
|
|
let b = 'b'+bln.pad(2);
|
|
s[b] = 0;
|
|
}
|
|
let b = 'ba0';
|
|
s[b] = 0;
|
|
}
|
|
return s;
|
|
});
|
|
|
|
let group = {}
|
|
let dataBBN = bebanData.sortArrayObjectAsc('main');
|
|
dataBBN.forEach(function(w){
|
|
if(!group[w.main]){
|
|
group[w.main] = {
|
|
nama: w.nama_main,
|
|
data: []
|
|
};
|
|
}
|
|
group[w.main].data.push(w);
|
|
});
|
|
|
|
let dataHtmlRender = Object.keys(group).map(function(databbn){
|
|
let databbns = group[databbn];
|
|
let h = `
|
|
<tr style="border-bottom: 1px solid #999;">
|
|
<td style="border-bottom: 1px solid #333;padding:0 5px;border-left:1px solid #ddd;text-align:left;">${databbn}</td>
|
|
<td style="border-bottom: 1px solid #333;padding:0 5px;border-left:1px solid #ddd;text-align:left;">${databbns.nama}</td>
|
|
${(function(){
|
|
let h = '';
|
|
for (let a = 0; a < 15; a++) {
|
|
h += `
|
|
<td style="border-bottom: 1px solid #333;padding:0 5px;border-left:1px solid #ddd;text-align:left;"></td>
|
|
`;
|
|
}
|
|
return h;
|
|
})()}
|
|
</tr>
|
|
`+databbns.data.map(function(r){
|
|
let html = '<tr style="border-bottom: 1px solid #999;">';
|
|
html += '<td style="border-bottom: 1px solid #333;padding:0 5px;border-left:1px solid #ddd;padding-left:20px;">'+(r.kode)+'</td>';
|
|
html += '<td style="border-bottom: 1px solid #333;padding:0 5px;border-left:1px solid #ddd;padding-left:20px;">'+(r.nama)+'</td>';
|
|
html += '<td class="number" style="border-bottom: 1px solid #333;padding:0 5px;border-left:1px solid #ddd;text-align:right;">' + ('Rp ' + Number(r['b00']).currency() ) +'</td>';
|
|
let totalAkhir = 0;
|
|
for (let bln = 1; bln <= 13; bln++) {
|
|
let b = 'b' + bln.pad(2);
|
|
let nominal = ('Rp '+r[b].currency(0));
|
|
if(bln == 13){
|
|
totalAkhir = (Number(r[b]) - Number(r['b00']));
|
|
nominal = ('Rp '+(Number(r[b]) - Number(r['b00'])).currency(0))
|
|
}
|
|
html += `<td class="number" style="border-bottom: 1px solid #333; mso-number-format:"#,##0";padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">` + nominal + '</td>';
|
|
}
|
|
html += `<td class="number" style="border-bottom: 1px solid #333; mso-number-format:"#,##0";padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">` + ('Rp ' + (Number(r['b00']) - totalAkhir ).currency(0)) + '</td>';
|
|
html += '</tr>';
|
|
return html;
|
|
}).join('');
|
|
return h;
|
|
}).join("")
|
|
|
|
+`
|
|
${ (function () {
|
|
let html = '<tr style="border-bottom: 4px double #333; border-top: 2px solid #333;">';
|
|
html += '<th style="border-bottom: 1px solid #333;" colspan="2">Jumlah</th>';
|
|
for (let bln = 0; bln <= 13; bln++) {
|
|
let b = 'b' + bln.pad(2);
|
|
html += '<td class="number" style="border-bottom: 1px solid #333;mso-number-format:"#,##0";padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">Rp ' + (bebanData.sum(b).currency(0)) + '</td>';
|
|
}
|
|
html += '<td class="number" style="border-bottom: 1px solid #333;mso-number-format:"#,##0";padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">Rp ' + ((bebanData.sum('b13') - bebanData.sum('b00') ).currency(0)) + '</td>';
|
|
html += '</tr>';
|
|
return html;
|
|
})() }
|
|
`;
|
|
|
|
|
|
body.innerHTML = dataHtmlRender;
|
|
}
|
|
}
|
|
}
|
|
|
|
const loader = function (r, callback) {
|
|
let h = _id('report').querySelector('thead');
|
|
let d = _id('report').querySelector('tbody');
|
|
let namaBln = [
|
|
'Jan'
|
|
, 'Feb'
|
|
, 'Mar'
|
|
, 'Apr'
|
|
, 'Mei'
|
|
, 'Jun'
|
|
, 'Jul'
|
|
, 'Aug'
|
|
, 'Sep'
|
|
, 'Okt'
|
|
, 'Nov'
|
|
, 'Des'
|
|
];
|
|
h.innerHTML = `
|
|
${
|
|
(function(){
|
|
let html = '<tr style="border-bottom: 4px double #333; border-top: 2px solid #333;">';
|
|
html += '<td colspan="2" style="font-weight:bold;">ANGGARAN BEBAN (' + (_id('app').value == 'acc' ? "INDUK": "USP" )+') KPRI WARPEKA TH. ' + _id('tahun').value +'</td>';
|
|
html += '<td style="padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">Anggaran</td>';
|
|
for (let bln = 1; bln <= 12; bln++) {
|
|
let b = namaBln[bln-1];
|
|
html += '<td style="padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">' + (b) + '</td>';
|
|
}
|
|
html += '<td style="padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">Jml</td>';
|
|
html += '<td style="padding:0 5px;border-left:1px solid #ddd; min-width:120px;text-align:right;">Selisih</td>';
|
|
html += '</tr>';
|
|
return html;
|
|
})()
|
|
}
|
|
`;
|
|
dataAccounting(r).dataBebanSatuTahun(d);
|
|
setTimeout(function () {
|
|
callback();
|
|
});
|
|
}
|
|
|
|
const getNode = function (className, doc) {
|
|
let nod = document.querySelectorAll('.' + className);
|
|
if (doc !== undefined) {
|
|
nod = doc.querySelectorAll(className)
|
|
}
|
|
return Array.from(
|
|
nod
|
|
);
|
|
}
|
|
|
|
const setUpData = function () {
|
|
let laporantype = _id('laporantype').value;
|
|
if (laporantype == 'u') {
|
|
let total = getNode('top-total');
|
|
total.forEach(function (tot) {
|
|
let info = getNode('td', tot)[0];
|
|
info.innerHTML = info.innerHTML.replace(/Total/g, "");
|
|
getNode('td', tot).forEach(function (cj) {
|
|
cj.style.background = 'white';
|
|
})
|
|
});
|
|
} else {
|
|
getNode('data-top').forEach(function (j) {
|
|
j.style.display = 'table-row';
|
|
})
|
|
getNode('title-top').forEach(function (j) {
|
|
j.style.display = 'table-row';
|
|
})
|
|
}
|
|
}
|
|
|
|
function loadData(callback) {
|
|
let _load = cssLoader();
|
|
accnil(_id('tahun').value, _id('app').value, function(r){
|
|
_load.remove();
|
|
callback(r);
|
|
});
|
|
};
|
|
|
|
loadData(function (r) {
|
|
loader(r, function () {
|
|
});
|
|
});
|
|
|
|
_id('play').addEventListener('click', function () {
|
|
loadData(function (r) {
|
|
loader(r, function () {
|
|
});
|
|
});
|
|
});
|
|
|
|
_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['p'], '{{PATH}}/assets/css/bootstrap.min.css'],
|
|
header: false,
|
|
});
|
|
}, false);
|
|
|
|
_id('exportExcel').addEventListener('click', function () {
|
|
xlsx("#report", 'Beban '+_val('tahun')+' '+Date.now());
|
|
}, false);
|