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

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);
};