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.

319 lines
9.2 KiB
JavaScript

import { dtData, formData } from "{js}ts-simpanan-form.js?v={time}";
import { print } from '{js}ts-simpanan-print.js?v={time}';
const getRangeDate = function (lap) {
if (typeof _startDate != 'undefined') {
let start = _startDate.format("DD-MM-YYYY");
let end = _endDate.format("DD-MM-YYYY");
return lap + " PERIODE " + start + " s/d " + end;
};
return "";
};
window.objectForm = {
title: function () {
return 'Simpanan ';
},
titleReport: function () {
return getRangeDate("SIMPANAN");
},
table: "msimpan",
idform: "containerforms",
newkode: ``,
orientation: "l",
kode: 'faktur',
serverSide: true,
fixed: 2,
noAction: true,
view: ['status', 'kodesp', 'tgl', 'faktur', 'nama', 'jumlah', 'keterangan'],
columnsExport: [2, 3, 4, 5, 6, 7],
dataSelect: ["msimpan.*, msimpan.faktur print, (SELECT nama FROM anggota WHERE kode = msimpan.kode) nama"],
queryTemp: `SELECT {select} FROM msimpan || ORDER BY tgl DESC, faktur DESC`,
validasiForm: ['kodesp', 'tgl', 'faktur', 'jumlah', 'keterangan'],
oncreate: function (a) {
_setval('kode', '');
dtData.clear();
_setval('tgl', tanggal().normal);
_setval('jumlah', 0);
globalThis._radioAct.open('kodesp').setVal('kodesp', 'SP');
_setval('username', dataApi.username);
_setval('userlog', timestamp());
_setval('dk', globalThis.kodedk);
$(".form-d#kode").val("").trigger('change');
},
custOrder: ['faktur'],
onupdate: function (dt) {
dtData.set(dt);
if (dt.cash === null) {
_setval('cash', _master('acc', 'acc')[0].id);
}
_setval('tgl', tanggal(dt.tgl).normal);
_radioAct.disable('kodesp').setVal('kodesp', dt.kodesp, 1);
_setval('username', dataApi.username);
_setval('userlog', timestamp());
_setval('dk', dt.dk);
_setval('kode', dt.kode);
if (dt.keterangan == '' || dt.keterangan == '-') {
var f = tanggal(_getval('tgl')).sekarang2.split(' ');
var kodesp = dt.kodesp;
globalThis['keterangan'].parent.value = kodesp + ' ' + f[1] + ' ' + f[2];
}
var ang = JSON.parse(_id('anggota').innerHTML).cond(dt.kode, 'id')[0];
_setval('nip', ang.nip);
_setval('unitkerja', ang.unitkerja);
_setval('golgaji', ang.golongan);
},
custome: {
status: function (a) {
if (a == '0') {
return 'Lunas';
} else {
return 'Gagal bayar';
}
},
kodesp: function (a) {
if (JSON.parse(_id('jpinjam').innerHTML).cond(a, 'id').length > 0) {
return JSON.parse(_id('jpinjam').innerHTML).cond(a, 'id')[0].text;
}
return a;
},
kode: function (a) {
if (JSON.parse(_id('anggota').innerHTML).cond(a, 'id').length > 0) {
return JSON.parse(_id('anggota').innerHTML).cond(a, 'id')[0].text;
}
return a;
},
jumlah: function (a, b) {
return _viewrp(a, b);
}
}
,
disableSave: true,
filldate: true,
datekode: 'tgl',
custcondition: function (a) {
if (window._startDate != undefined) {
return a + ' WHERE dk = "' + globalThis.kodedk + '" ' + ` AND tgl >= "${window._startDate.format('YYYY-MM-DD')}" AND tgl <= "${window._endDate.format('YYYY-MM-DD')} "`;
} else {
return a + ' WHERE dk = "' + globalThis.kodedk + '" ';
};
},
debug: false,
custButton: function (a, i) {
var f;
if (typeof a == 'object') {
f = a.faktur;
} else {
f = _getval('faktur');
};
if (a.keterangan.toLowerCase().indexOf('posting:') != -1) {
return `
<button data-id="${i}" data-kode="${f}" class="btn btn-sm btn-clear edit" style="color:#666ee8;"><i class="icon-note"></i></button>
<button kode-print="${f}" class="kode-print btn btn-sm btn-clear" style="color:black;"><i class="la la-print"></i></button>
`;
}
return `
<button data-id="${i}" data-kode="${f}" class="btn btn-sm btn-clear edit" style="color:#666ee8;"><i class="icon-note"></i></button>
<button data-id="${i}" data-kode="${f}" class="btn btn-sm btn-clear hapus" style="color:red;">
<i class="icon-trash"></i>
</button>
<button kode-print="${f}" class="kode-print btn btn-sm btn-clear" style="color:black;"><i class="la la-print"></i></button>
`;
},
data: formData
};
globalThis.kodedk = 'D';
const configSimpanan = function () {
objectForm.title = function () {
return 'Simpanan ';
}
objectForm.data[0].data = JSON.parse(_id('jpinjam').innerHTML).cond('0', 'status');
if (typeof __forms != 'undefined') {
__forms()
}
}
const configPenarikan = function () {
objectForm.title = function () {
return 'Penarikan ';
}
objectForm.data[0].data = JSON.parse(_id('jpinjam').innerHTML).cond('0', 'status').filter(function (as) {
if (as.id != 'BW') {
return as;
}
});
if (typeof __forms != 'undefined') {
__forms()
}
}
window.statusSimpanan = 'D';
Array.from(document.querySelectorAll('.nav-tabs .nav-link')).forEach(function (tabs) {
tabs.addEventListener('click', function () {
var g = this.getAttribute('data-kode');
globalThis.kodedk = g;
statusSimpanan = g;
if (g === 'D') {
configSimpanan();
} else {
configPenarikan();
};
_load();
}, false);
});
(function cron() {
if (globalThis['kasir'] != undefined && globalThis['jam'] != undefined) {
globalThis['kasir'].parent.value = usernama;
globalThis['jam'].parent.value = _times();
}
setTimeout(() => {
cron();
}, 100);
})();
var printV = el('iframe').css('display', 'none').get();
document.body.appendChild(printV);
window._printStruck = function (v) {
var win1 = printV.contentWindow;
$.ajax({
url: '{{PATH}}/admin/posting/simpanan/struk/' + btoa(v),
success: function (res) {
if (_App.qzStatus() === true) {
var f = div().html(res).get();
window._r = f;
var config = qz.configs.create(_App.posprintget());
var data = [{
type: 'pixel',
format: 'html',
flavor: 'plain', // or 'plain' if the data is raw HTML
data: '<html>' +
'<body>' +
_r.querySelector('table').outerHTML +
'</body>' +
'</html>'
}];
qz.print(config, data).catch(function (e) { console.error(e); });
throw 'stop actrion';
};
win1.document.open();
win1.document.write(res);
win1.document.close();
win1.print();
}
});
};
globalThis._update = function () {
_setupKodesp('kodesp');
var f = globalThis.faktur.parent.value;
window._printStruck(f);
let updateData = {
rekdebit: _getval('cash')
};
let y = {
table: 'msimpan',
faktur: 'faktur',
tgl: 'tgl',
ket: 'keterangan',
username: 'username',
data: updateData
};
if (statusSimpanan === 'K') {
updateData = {
rekkredit: _getval('cash')
}
y = {
table: 'msimpan',
faktur: 'faktur',
tgl: 'tgl',
ket: 'keterangan',
username: 'username',
data: updateData,
reverse: true
};
}
_bbup(y);
};
globalThis._insert = function () {
_setupKodesp('kodesp')
var f = globalThis.faktur.parent.value;
window._printStruck(f);
let updateData = {
rekdebit: _getval('cash')
};
let y = {
table: 'msimpan',
faktur: 'faktur',
tgl: 'tgl',
ket: 'keterangan',
username: 'username',
data: updateData
};
if (statusSimpanan === 'K') {
updateData = {
rekkredit: _getval('cash')
}
y = {
table: 'msimpan',
faktur: 'faktur',
tgl: 'tgl',
ket: 'keterangan',
username: 'username',
data: updateData,
reverse: true
};
}
_bbup(y);
};
globalThis._delete = function (val) {
_bbdown(val);
};
document.body.addEventListener('click', function (event) {
var t = event.target;
if (
t.tagName == 'I'
&& t.parentNode.tagName == 'BUTTON'
&& t.parentNode.className.indexOf('kode-print') != -1
) {
print(t.parentNode.getAttribute('kode-print'));
};
if (
t.tagName == 'BUTTON'
&& t.className.indexOf('kode-print') != -1
) {
print(t.getAttribute('kode-print'));
};
}, false);
globalThis._validasi = function () {
var saldo = _getval('saldo').number();
if (saldo < 0) {
Swal('Info', 'Maaf nilai saldo tidak boleh minus', 'info');
throw 'stop action';
}
}