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.

336 lines
11 KiB
JavaScript

function addLine(w, a, b) {
var f = _ff[a](b);
w.appendChild(f);
}
function addRow(par, t = {}) {
if (_id('second-form') == undefined) {
var n = div().id('second-form').class('col-12')
.html(`
<div style="overflow-x:scroll;border:1px dotted #ddd; padding: 10px;">
<div style="min-width:800px;grid-gap:5px;display:grid;grid-template-columns:50px auto auto auto" class="mb-1 form">
</div>
</div>
<div style="text-align:center;padding-top:10px;">
<button style="margin-top:5px;" class="btn btn-clear newt"><i class="icon-plus"></i> Colom Baru</button>
</div>
`)
_insertAfter(n.get(), par);
var nm = _id('second-form').querySelector(".form");
nm.innerHTML = '';
var nw = _id('second-form').querySelector(".newt");
nw.datas = t;
window.globalEventsAdd = nw;
nw.addEventListener('click', function () {
var ds = this.datas;
if (Object.keys(ds).length > 0) {
window.xnum = ds.tr.number(2);
} else {
window.xnum++;
}
var f = [
{
title: '',
type: 'num',
name: 'tr',
row: 6,
readonly: true,
val: (function (ds) {
if (Object.keys(ds).length > 0) {
return ds.tr
}
return window.xnum;
})(ds),
action: function () {
},
},
{
title: '',
type: 'select',
name: 'akun',
row: 6,
readonly: false,
val: (function (ds) {
if (Object.keys(ds).length > 0) {
return ds.akun
}
return '';
})(ds),
data: acc,
action: function () {
},
}
, {
title: '',
type: 'text',
name: 'ket',
row: 6,
readonly: false,
val: (function (ds) {
if (Object.keys(ds).length > 0) {
return ds.ket
}
return '';
})(ds),
action: function () {
},
}
, {
title: '',
type: 'num',
name: 'jumlah',
row: 6,
readonly: false,
val: (function (ds) {
if (Object.keys(ds).length > 0) {
return ds.jumlah.number(2);
}
return '0';
})(ds),
action: function () {
},
}
];
f.forEach(function (x) {
addLine(nm, x.type, x);
})
_setoptionmulti('second-form', 'akun', acc);
this.datas = {};
}, false);
};
}
var objectForm = {
debug: true,
title: function () {
return 'Kas Keluar'
},
table: "mts",
idform: "containerforms",
newkode: ``,
kode: 'kode',
filldate: true,
datekode: 'tgl',
view: ['kode', 'tgl', 'ket', 'jumlah'],
dataSelect: ["kode, tgl, ket, jumlah"],
disableEditor: function (a, b, c) {
let dayNow = tanggal(tanggal().normal).milisecond;
let datTransaction = tanggal(b.tgl).milisecond;
if (datTransaction < dayNow) {
return `
<button data-id="${c}" data-kode="${a}" class="btn btn-sm btn-clear edit" style="color:red;"><i class="icon-note"></i></button>
`;
} else {
return `
<button data-id="${c}" data-kode="${a}" class="btn btn-sm btn-clear edit" style="color:red;"><i class="icon-note"></i></button>
<button data-id="${c}" data-kode="${a}" class="btn btn-sm btn-clear hapus" style="color:red;"><i class="icon-trash"></i></button>
`;
}
},
beforeDelete: async function (data) {
let dayNow = tanggal(tanggal().normal).milisecond;
let datTransaction = tanggal(data.tgl).milisecond;
console.log(data.tgl);
console.log(datTransaction, dayNow);
if (datTransaction < dayNow) {
console.log("lewat");
swal('Warning', 'Maaf transaksi lewat dari 1 hari. Data tidak dapat dihapus. Silakan hubungi Admin.', 'warning')
throw "stop action";
}
},
queryTemp: "SELECT {select} FROM (SELECT kode, tgl, ket, sum(jumlah) jumlah FROM mts GROUP BY kode) a WHERE a.kode IS NOT NULL AND a.kode LIKE 'CASH/OUT%' || ORDER BY kode DESC",
validasiForm: ['app', 'cash', 'tgl'],
oncreate: function () {
globalThis._news.code({
code: 'CASH',
row: 'kode',
table: 'mts',
data: 'OUT',
});
var par = _parentForm('tag');
if (_id('second-form') != undefined) {
_id('second-form').querySelector(".form").innerHTML = '';
} else {
addRow(par);
}
window.xnum = 0;
globalEventsAdd.click();
_setVal('tgl', tanggal().normal)
_setVal('app', 'acc')
},
onupdate: function (dt) {
var par = _parentForm('tag');
if (_id('second-form') != undefined) {
_id('second-form').querySelector(".form").innerHTML = '';
} else {
addRow(par);
}
window.xnum = 0;
_setVal('tgl', tanggal().normal)
_setVal('app', 'acc')
AuditDevQuery(`SELECT * FROM mts WHERE kode = "${dt.kode}"`, function (a) {
a.forEach(function (x) {
globalEventsAdd.datas = x;
globalEventsAdd.click();
})
})
},
custcondition: function (a) {
return a + '';
}
,
custome: {
jumlah: function (w) {
if (w != undefined) {
return w.number(2).currency(0)
}
}
},
_condDeleteStop: [
{ id: 'statusposting', val: '1' }
]
, onviewonly: function (dat) {
var ft = getFormData('second-form')
ft.addItemObject('kode', _getval('kode'));
ft.addItemObject('tgl', _getval('tgl'));
ft.addItemObject('app', _getval('app'));
ft.addItemObject('cash', _getval('cash'));
ft.addItemObject('tag', _getval('tag'));
ft.addItemObject('dk', 'K');
ft.addItemObject('username', username);
ft.addItemObject('userlog', timestamp());
ft.ToInsert('mts');
var fg = getFormData('second-form')
fg.addItemObject('rekkredit', _getval('cash'));
fg.addItemObject('kode', _getval('kode'));
fg.addItemObject('tgl', _getval('tgl'));
fg.addItemObject('app', _getval('app'));
fg.addItemObject('table_name', 'mts');
fg.addItemObject('username', username);
fg.addItemObject('userlog', timestamp());
fg.renameItemObject('akun', 'rekdebit');
fg.renameItemObject('ket', 'keterangan');
fg.renameItemObject('jumlah', 'debit');
fg.renameItemObject('jumlah', 'kredit');
fg.removeItemObject('akun');
fg.removeItemObject('jumlah');
fg.removeItemObject('ket');
fg.ToInsert('lap_bb');
if (window._w != 'u') {
var ld = cssLoader();
AuditDevQuery(ft.ToInsert('mts'), function () {
AuditDevQuery(fg.ToInsert('lap_bb'), function () {
ld.remove();
Swal('info', 'Data telah disimpan', 'success');
_load();
})
})
} else {
var ld = cssLoader();
console.log(fg.ToInsert('lap_bb', ['kode', 'tr']));
AuditDevQuery(ft.ToInsert('mts', ['kode', 'tr']), function () {
AuditDevQuery(fg.ToInsert('lap_bb', ['kode', 'tr']), function () {
AuditDevQuery(ft.ToUpdate('mts', ['kode', 'tr']), function () {
AuditDevQuery(fg.ToUpdate('lap_bb', ['kode', 'tr']), function () {
ld.remove();
Swal('info', 'Data telah diupdate', 'success');
_load();
})
})
})
})
}
}
, data: [
{
title: 'Kode Transaksi',
type: 'text',
name: 'kode',
row: 4,
line: 120,
readonly: true,
action: function () {
},
}
, {
title: 'App',
type: 'select',
name: 'app',
row: 4,
line: 50,
data: AppData,
readonly: false,
action: function (a) {
_Evchange(a, function () {
var v = this.value;
var m = acc;
_setoption('cash', m);
if (_id('second-form') != undefined) {
_setoptionmulti('second-form', 'akun', m);
}
})
},
}
, {
title: 'Bayar Dari',
type: 'select',
name: 'cash',
row: 4,
line: 70,
data: acc,
readonly: false,
action: function () {
},
}
, {
title: 'Tanggal',
type: 'date',
name: 'tgl',
row: 4,
line: 120,
readonly: false,
action: function () {
},
}
, {
title: 'Tag',
type: 'text',
name: 'tag',
row: 8,
line: 50,
readonly: false,
action: function () {
},
}
]
};
globalThis._delete = function (kode) {
var dp = cssLoader();
AuditDevQuery(`DELETE FROM mts WHERE kode = "${kode}" `, function (a) {
AuditDevQuery(`DELETE FROM lap_bb WHERE kode = "${kode}" `, function (a) {
dp.remove();
});
});
};
globalThis._validasi = function () {
var ft = getFormData('second-form')
if (ft.length < 1) {
Swal('info', 'Colom minimal 1 baris', 'warning');
throw 'stop';
}
}