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.
377 lines
15 KiB
JavaScript
377 lines
15 KiB
JavaScript
import { AlertWarning } from '{js}alert-warning.js?v={time}';
|
|
import { print } from '{js}ts-pinjaman-print.js?v={time}';
|
|
import { fpinjam } from '{js}ts-pinjaman-form.js?v={time}';
|
|
|
|
globalThis._printKwintansi = print;
|
|
const acc = _master('acc', 'acc');
|
|
|
|
|
|
const cekAngsuran = function(_kode){
|
|
return new Promise((resolve, reject)=>{
|
|
try{
|
|
AuditDevQuery(`call total_angsuran('${_kode}')`, function(res){
|
|
let [{total}] = res;
|
|
resolve(total);
|
|
})
|
|
}catch(e){
|
|
reject(e);
|
|
}
|
|
})
|
|
}
|
|
|
|
window.opendetail = function () {
|
|
|
|
_pdetail.open(function (_pd) {
|
|
let body = _pd.body()
|
|
body.html(`
|
|
<div style="margin:20px;padding: 28px;">
|
|
<div class="row">
|
|
<div class="col-sm-12 col-lg-8" id="content">
|
|
</div>
|
|
<div class="col-sm-12 col-lg-4">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<p>Jurnal disamping di buat berdasarkan autojurnal di setup wakrpeka </p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`);
|
|
let content = body.get().querySelector('#content');
|
|
let _l = cssLoader();
|
|
AuditDevQuery(`
|
|
SELECT m.faktur, b.* FROM lap_bb b
|
|
LEFT JOIN mpinjam m on b.kode = m.faktur
|
|
WHERE m.kode IS NOT NULL AND m.tgl >= '${_startDate.format('YYYY-MM-DD')}'
|
|
AND m.tgl <= '${_endDate.format('YYYY-MM-DD')}'
|
|
`, function (a) {
|
|
_l.remove();
|
|
a.forEach(function (data) {
|
|
content.appendChild(
|
|
div().class('card').html(`
|
|
<div class="card-body">
|
|
${(function (a) {
|
|
return `
|
|
<table class="table">
|
|
<tr>
|
|
<th>
|
|
Faktur
|
|
</th>
|
|
<th colspan="3">
|
|
${a.faktur}
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<th>
|
|
Posisi : ${(function () {
|
|
if (a.app === 'usp') {
|
|
return 'USP';
|
|
}
|
|
return 'Induk';
|
|
})()}
|
|
</th>
|
|
<th colspan="3">
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<th>
|
|
Jurnal:
|
|
</th>
|
|
<th colspan="3">
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<th>
|
|
Akun Debit
|
|
</th>
|
|
<th>
|
|
Nominal
|
|
</th>
|
|
<th>
|
|
Akun Kredit
|
|
</th>
|
|
<th>
|
|
Nominal
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
${(function () {
|
|
const nm = acc.cond(a.app,'app').cond(a.rekdebit, 'id')
|
|
if (nm.length > 0) {
|
|
return a.rekdebit + ' - ' + nm[0].text;
|
|
}
|
|
return a.rekdebit
|
|
})()}
|
|
</td>
|
|
<td>
|
|
${a.debit.number(2).currency(0)}
|
|
</td>
|
|
<td>
|
|
${(function () {
|
|
const nm = acc.cond(a.app, 'app').cond(a.rekkredit, 'id')
|
|
if (nm.length > 0) {
|
|
return a.rekkredit + ' - ' + nm[0].text;
|
|
}
|
|
return a.rekkredit
|
|
})()}
|
|
</td>
|
|
<td>
|
|
${a.kredit.number(2).currency(0)}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
`;
|
|
})(data)}
|
|
</div>
|
|
`).get()
|
|
);
|
|
});
|
|
})
|
|
|
|
_pd.title('Detail Pinjaman Periode ' + _startDate.format('DD-MM-YYYY') + ' s/d ' + _endDate.format('DD-MM-YYYY'));
|
|
})
|
|
|
|
}
|
|
|
|
let objectForm = {
|
|
title: function () {
|
|
return 'Pinjaman ' + globalThis.kodespAct;
|
|
},
|
|
table: "mpinjam",
|
|
idform: "containerforms",
|
|
fixed: 2,
|
|
noAction: true,
|
|
debug: false,
|
|
connection: [
|
|
{
|
|
table: "mags",
|
|
kode: "fkt",
|
|
}
|
|
],
|
|
newkode: `SELECT LPAD( (ifnull((SELECT kode FROM anggota ORDER BY kode DESC LIMIT 1),0) + 1), 10,0) kode`,
|
|
kode: 'faktur',
|
|
alias: {
|
|
print: 'faktur'
|
|
},
|
|
beforeDelete: async function (data) {
|
|
let dayNow = tanggal(tanggal().normal).milisecond;
|
|
let datTransaction = tanggal(data.tgl).milisecond;
|
|
console.log(data);
|
|
let angsuran = await cekAngsuran(data.kode);
|
|
if(Number(angsuran) > 0){
|
|
swal('Warning', 'Maaf sudah ada angsuran masuk. Data tidak dapat dihapus. Silakan hubungi Admin.', 'warning')
|
|
throw "stop action";
|
|
}
|
|
if (datTransaction < dayNow) {
|
|
swal('Warning', 'Maaf transaksi lewat dari 1 hari. Data tidak dapat dihapus. Silakan hubungi Admin.', 'warning')
|
|
throw "stop action";
|
|
}
|
|
},
|
|
custButton: function (a, i) {
|
|
return `
|
|
<button data-id="${i}" data-tgl=${a.tgl} data-kode="${a.faktur}" class="btn btn-sm btn-clear hapus" style="color:red;">
|
|
<i class="icon-trash"></i>
|
|
</button>
|
|
`;
|
|
},
|
|
deleteInfoWarning: 'Pinjaman sudah ada angsuran. Tidak boleh dihapus!',
|
|
custome: {
|
|
print: function(a,b){
|
|
let c = b;
|
|
b = btoa(JSON.stringify(b));
|
|
let edit = `
|
|
<div style="padding: 8px 0px; display: inline-block;">
|
|
<button onclick="window.updateNilaiTr(this)" style="margin-top:5px;" class='btn btn-clear' data-nilai="${c.tr}" data-kode='${btoa(a)}'>Non Gaji</button>
|
|
</div>
|
|
`;
|
|
console.log(c.tr);
|
|
if (c.tr === 'G') {
|
|
edit = `
|
|
<div style="padding: 8px 0px; display: inline-block;">
|
|
<button onclick="window.updateNilaiTr(this)" style="margin-top:5px;" class='btn btn-clear' data-nilai="${c.tr}" data-kode='${btoa(a)}'>Potong Gaji</button>
|
|
</div>
|
|
`;
|
|
}
|
|
|
|
if(c.tr === 'L'){
|
|
return `
|
|
<div>
|
|
<button style="margin-bottom:5px !important;" onclick="globalThis._printKwintansi('${a}', '${b}')" class="btn btn-clear btn-sm"> <i class="icon-printer"></i> kwitansi</button>
|
|
<a style="margin-bottom:5px !important;" target=”_blank” class="btn btn-clear btn-sm" href="{{PATH}}/admin/formulir/pinjaman/${btoa(a)}"> <i class="icon-printer"></i> Formulir Non Gaji</a>
|
|
${edit}
|
|
</div>
|
|
`;
|
|
};
|
|
return `
|
|
<div>
|
|
<button onclick="globalThis._printKwintansi('${a}', '${b}')" class="btn btn-clear btn-sm"> <i class="icon-printer"></i> kwitansi</button>
|
|
<a target=”_blank” class="btn btn-clear btn-sm" href="{{PATH}}/admin/formulir/pinjaman/${btoa(a)}"> <i class="icon-printer"></i> Formulir Potong Gaji</a>
|
|
${edit}
|
|
</div>
|
|
`;
|
|
},
|
|
kode:function(a){
|
|
let nama = _master('anggota', 'anggota').cond(a, 'id');
|
|
if(nama.length > 0){
|
|
return nama[0].text;
|
|
}
|
|
return a;
|
|
},
|
|
jumlah:function(a){
|
|
if(typeof a === 'number'){
|
|
return a.currency(0).replace(/\./g,',');
|
|
}
|
|
return a.number(2).currency(0).replace(/\./g,',');
|
|
},
|
|
angsuran: function (a) {
|
|
if (typeof a === 'number') {
|
|
return a.currency(0).replace(/\./g,',');
|
|
}
|
|
return a.number(2).currency(0).replace(/\./g,',');
|
|
}
|
|
},
|
|
custOrder: ['userlog'],
|
|
columnsExport: [2, 3, 4, 5, 6, 7],
|
|
view: ['print', 'tgl', 'faktur', 'nama', 'nip', 'jumlah', 'angsuran', 'userlog', 'user'],
|
|
dataSelect: ["mpinjam.tr, a.nama, mpinjam.faktur print, mpinjam.kode nip, mpinjam.kode, mpinjam.faktur, mpinjam.tglmohon, mpinjam.tgl, mpinjam.jumlah, mpinjam.angsuran, mpinjam.user, mpinjam.userlog "],
|
|
queryTemp: `SELECT {select} FROM mpinjam
|
|
LEFT JOIN gpinjam ON gpinjam.jenis = mpinjam.jenis
|
|
LEFT JOIN anggota a ON a.kode = mpinjam.kode
|
|
|| ORDER BY mpinjam.faktur DESC`,
|
|
validasiForm: ['kode', 'faktur', 'jumlah', 'lama', 'tr', 'bungath'],
|
|
oncreate: function (a) {
|
|
$("#tglmohon").change(function(){
|
|
let v = $(this).val();
|
|
$("#tgl").val(v);
|
|
})
|
|
let code1 = tanggal().normal.split('-')[0].substring(2, 4);
|
|
globalThis['kodesp'].parent.value = globalThis.kodespAct;
|
|
let cssLd = cssLoader();
|
|
$("#kode").val('').trigger('change');
|
|
AuditDevQuery(`
|
|
SELECT concat('BKK/${globalThis.kodespAct}/${code1}/',lpad( ifnull(
|
|
(SELECT substring_index(faktur, '${code1}/',-1) FROM mpinjam WHERE faktur LIKE 'BKK/${globalThis.kodespAct}/${code1}/%' ORDER BY faktur DESC LIMIT 1)
|
|
,0
|
|
) + 1,6,0)) faktur
|
|
`, function (a) {
|
|
cssLd.remove();
|
|
globalThis['faktur'].parent.value = a[0].faktur;
|
|
$('#jenis').val(1).trigger('change');
|
|
_setval('tglmohon', tanggal().normal);
|
|
_setval('tgl', tanggal().normal);
|
|
$("#kode").val('').trigger('change');
|
|
})
|
|
$("#jenis").prop("disabled", true);
|
|
globalThis['user'].parent.value = dataApi.username;
|
|
globalThis['userlog'].parent.value = timestamp();
|
|
},
|
|
onupdate: function (dt) {
|
|
let f = cssLoader();
|
|
AuditDevQuery(`SELECT * FROM anggota WHERE kode = "${dt.kode}"`, function (w) {
|
|
f.remove();
|
|
w = w[0];
|
|
globalThis['nama'].parent.value = w.nama;
|
|
globalThis['nip'].parent.value = w.nip;
|
|
globalThis['gaji'].parent.value = w.gaji.number(2).currency(2);
|
|
globalThis['golgaji'].parent.value = w.gaji.number(2).currency(2);
|
|
globalThis['dept'].parent.value = w.unitkerja;
|
|
globalThis['nota'].parent.value = w.jurubayar;
|
|
});
|
|
globalThis['jumlah'].parent.value = dt.jumlah.number(2).currency(0);
|
|
globalThis['lama'].parent.value = dt.lama.number(2).currency(0);
|
|
$("#jenis").prop("disabled", true);
|
|
globalThis['user'].parent.value = dataApi.username;
|
|
globalThis['userlog'].parent.value = timestamp();
|
|
},
|
|
filldate: false,
|
|
serverSide: true,
|
|
datekode: 'tgl',
|
|
custcondition: function (a) {
|
|
a = a + ` WHERE kodesp = "${globalThis.kodespAct}" `;
|
|
if (window._startDate != undefined) {
|
|
a += ` AND tgl >= "${window._startDate.format('YYYY-MM-DD')}" AND tgl <= "${window._endDate.format('YYYY-MM-DD')} "`;
|
|
}
|
|
return a;
|
|
},
|
|
data: fpinjam
|
|
};
|
|
globalThis.kodespAct = 'REG';
|
|
Array.from(document.querySelectorAll('.nav-tabs .nav-link')).forEach(function (tabs) {
|
|
tabs.addEventListener('click', function () {
|
|
let g = this.getAttribute('data-kode');
|
|
globalThis.kodespAct = g;
|
|
_load();
|
|
}, false);
|
|
});
|
|
|
|
(function cron() {
|
|
|
|
if (globalThis['jumlah'] != undefined) {
|
|
let jml = globalThis['jumlah'].parent.value.number();
|
|
let masa = globalThis['lama'].parent.value.number();
|
|
let bungath = globalThis['bungath'].parent.value.number() / 100;
|
|
|
|
let bunga = jml * bungath;
|
|
globalThis['bunga'].parent.value = bunga.currency(0);
|
|
globalThis['bungabln'].parent.value = (bunga / masa).currency(0);
|
|
|
|
globalThis['pokok'].parent.value = jml.currency(0);
|
|
globalThis['angsuran'].parent.value = ((jml + bunga) / masa).currency(0);
|
|
}
|
|
|
|
setTimeout(() => {
|
|
cron();
|
|
}, 100);
|
|
})();
|
|
|
|
globalThis._update = function () {
|
|
_setupKodesp('kodesp');
|
|
_bbup({
|
|
table: 'mpinjam',
|
|
faktur: 'faktur',
|
|
tgl: 'tgl',
|
|
ket: 'keterangan',
|
|
username: 'user'
|
|
});
|
|
};
|
|
|
|
window.updateNilaiTr = function(nodeData){
|
|
let data = nodeData.dataset;
|
|
let jsonData = {
|
|
kode: atob(data.kode)
|
|
,nilai: data.nilai
|
|
}
|
|
AlertWarning({
|
|
title: 'Update pembayaran',
|
|
text: 'Anda ingin melakukan update status pembayaran ?'
|
|
}, function(){
|
|
console.log(jsonData);
|
|
let newValue = 'L';
|
|
if(jsonData.nilai == 'L'){
|
|
newValue = 'G';
|
|
};
|
|
AuditDevQuery(`UPDATE mpinjam SET tr = '${newValue}' WHERE faktur = '${jsonData.kode}'`,function(){
|
|
Swal('info', 'Data update', 'info');
|
|
if(typeof _load != 'undefined'){
|
|
_load();
|
|
}
|
|
});
|
|
})
|
|
}
|
|
|
|
globalThis._insert = function () {
|
|
_setupKodesp('kodesp');
|
|
_bbup({
|
|
table: 'mpinjam',
|
|
faktur: 'faktur',
|
|
tgl: 'tgl',
|
|
ket: 'keterangan',
|
|
username: 'user'
|
|
});
|
|
};
|
|
globalThis._delete = function (val) {
|
|
_bbdown(val);
|
|
};
|