319 lines
14 KiB
JavaScript
319 lines
14 KiB
JavaScript
let gi = (n, c) => $$.sc(`glyphicon glyphicon-${n}`).aC(c);
|
|
let $bam = {
|
|
init2: function (type, options) {
|
|
type = type || 'bam';
|
|
options = options || {};
|
|
$ocms.getScript([
|
|
//{ script: 'web/jstree.min.js', css: 'web/jstree.min.css', condition: typeof $.fn.jstree !== 'function' }
|
|
//, { script: 'web/jquery.qtip.min.js', css: 'web/jquery.qtip.min.css', condition: typeof $.fn.qtip !== 'function' }
|
|
//, { script: 'web/typeahead.min.js', css: '', condition: typeof $.fn.typeahead !== 'function' }
|
|
//, { script: 'web/fullcalendar.min.js', module: 'FullCalendar', css: 'web/fullcalendar.min.css', condition: typeof FullCalendar !== 'object' }
|
|
], function () {
|
|
//FullCalendar = $vm.FullCalendar;
|
|
$bam.init3(type, options);
|
|
});
|
|
}, init3: async function (type, options) {
|
|
$fis.cf(true);
|
|
let lf = $fis.lf(true);
|
|
$bam.eM();
|
|
$('#activemodule').text($bct.mdl);
|
|
await $fis.prepAuth('fds_bam,fds_inv,fds_reminder');
|
|
let pa = [(async () => {
|
|
if ($fis.isAuth('fds_bam', 1) === true) {
|
|
$bam.prepLst('');
|
|
lf.aC('fix'); //initially should be shown - for convenience
|
|
}
|
|
})(), (async () => {
|
|
if ($fis.isAuth('fds_bam', 1) === true) {
|
|
$bam.renderLst(false);
|
|
//lf.aC('fix'); //initially should be shown - for convenience
|
|
}
|
|
})(), new Promise((resolve, reject) => {
|
|
//$bam.123()
|
|
})];
|
|
await Promise.all(pa);
|
|
}, iMn: (ix) => {
|
|
let fds = bool(ix.fds, false), id = ix.taID, m = [];
|
|
m.push({ lbl: $bct.smd, fnc: () => { $bam.smd(id); } });
|
|
m.push({ lbl: $bct.ati, fnc: () => { $bam.ati(id); } });
|
|
return $('#topbar').ocmsmenu(m);
|
|
}, eM : (r, re, opt) => {
|
|
let m = [];
|
|
if ($fis.isAuth('fds_bam', 2) === true) {
|
|
m.push({ lbl: $bct.upl, fnc: $bam.ubs});
|
|
}
|
|
if (bool(r, false) === true) {
|
|
m.push({ lbl: $bct.rel, fnc: $bam.renderLst });
|
|
}
|
|
return $('#topbar').ocmsmenu(m); /* empty Array => empty menu */
|
|
}, prepLst: function (includes) {
|
|
let td = new Date();
|
|
let lf = $fis.lf(true).ldng(1), sd = new Date('2021-01-01');
|
|
let frm = $fis.frm_list();
|
|
frm.IN(function () { });
|
|
let osb = $$.i({ placeholder: $bct.in }).appendTo($$.dc('mth ivn', lf)).enterKey(function (ev) {
|
|
let mth = $(this), v = mth.val() || '';
|
|
ev.stopPropagation();
|
|
mth.parent().siblings().rC('selected');
|
|
if (v.length > 3) {
|
|
mth.parent().aC('selected');
|
|
$bam.renderbt('i:' + v, 's');
|
|
mth.val('');
|
|
}
|
|
});
|
|
let osb2 = $$.i({ placeholder: $bct.bt }).appendTo($$.dc('mth ivn', lf)).enterKey(function (ev) {
|
|
let mth = $(this), v = mth.val() || '';
|
|
ev.stopPropagation();
|
|
mth.parent().siblings().rC('selected');
|
|
if (v.length > 3) {
|
|
mth.parent().aC('selected');
|
|
$bam.renderbt('b:' + v, 's');
|
|
mth.val('');
|
|
}
|
|
});
|
|
let osb3 = $$.i({ placeholder: $bct.bv }).appendTo($$.dc('mth ivn', lf)).enterKey(function (ev) {
|
|
let mth = $(this), v = mth.val() || '';
|
|
ev.stopPropagation();
|
|
mth.parent().siblings().rC('selected');
|
|
if (v.length > 3) {
|
|
mth.parent().aC('selected');
|
|
$bam.renderbt(`v:${v}`, 's');
|
|
mth.val('');
|
|
}
|
|
});
|
|
let opn = $$.dc('mth oreq', lf).text($bct.dqb).click(function (ev) {
|
|
let mth = $(this);
|
|
ev.stopPropagation();
|
|
mth.siblings().rC('selected');
|
|
if (mth.is('.selected') === true) {
|
|
mth.tC('selected');
|
|
$bam.renderLst(false);
|
|
}
|
|
mth.aC('selected');
|
|
});
|
|
lf.append('<hr />');
|
|
let mthl = $$.dc('mthl', lf), thisyear = td.getFullYear(), thismonth = td.getMonth() + 1;
|
|
for (let tyr = sd.getFullYear(); tyr <= thisyear; tyr++) {
|
|
let yr = $$.dc('yr').prependTo(mthl).text(`${$bct.iov[includes]} - ${tyr.toString()}`).toggleClass('selected', tyr === thisyear);
|
|
yr.click({
|
|
yr: tyr
|
|
}, function (ev) {
|
|
ev.stopPropagation();
|
|
yr.siblings().rC('selected');
|
|
yr.aC('selected');
|
|
});
|
|
let mfrm = $$.dc('mfrm', yr);
|
|
for (let tmt = 0; tmt < (tyr !== thisyear ? 12 : thismonth); tmt++) {
|
|
sd = new Date(tyr, tmt, 1);
|
|
let mth = $$.dc('mth').prependTo(mfrm).text(`${$bct.iov[includes]} - ${fdt(sd, 'MMM yyyy')}`);
|
|
mth.click({
|
|
yr: tyr, mt: tmt
|
|
}, function (ev) {
|
|
ev.stopPropagation();
|
|
mth.siblings().rC('selected');
|
|
if (mth.is('.selected') === true) {
|
|
mth.tC('selected');
|
|
|
|
let tgt = fdt(new Date(ev.data.yr, ev.data.mt, 1), 'yy-MM-dd');
|
|
$bam.renderbt(tgt, 'm');
|
|
}
|
|
mth.aC('selected');
|
|
});
|
|
|
|
let fwf = getMonday(sd), rd = fwf, lwf = new Date(sd);
|
|
lwf.setMonth(lwf.getMonth() + 1);
|
|
lwf.setDate(0);
|
|
lwf = getMonday(lwf);
|
|
let wfrm = $$.dc('wfrm', mth);
|
|
while (rd <= lwf) {
|
|
let wk = $$.dc('wk', wfrm).text(`${($bct.wk || "W")} ${fdt(rd, "dd.MM.yy")}`);
|
|
wk.click({
|
|
rd: new Date(rd)
|
|
}, function (ev) {
|
|
ev.stopPropagation();
|
|
let tgt = fdt(ev.data.rd, 'yy-MM-dd');
|
|
$bam.renderbt(tgt, 'w');
|
|
mth.siblings().rC('selected').find('.wk').rC('selected');
|
|
mth.aC('selected').find('.wk').rC('selected');
|
|
wk.aC('selected');
|
|
});
|
|
rd.setDate(rd.getDate() + 7);
|
|
}
|
|
}
|
|
}
|
|
lf.ldng(0);
|
|
}, renderbt: function (tgt, mode) {
|
|
let invlst = $fis.frm_list().ldng(1), invfrm = $$.dc('invfrm', invlst).aC('md' + mode);
|
|
let lf = $fis.lf();
|
|
$ocms.postXT({
|
|
url: $ocms.url('bam/btl'), data: { mode: mode, tgt: tgt }, success: (response) => {
|
|
lf.rC('fix').aC('hd');
|
|
$$.dc('ovhd', invfrm).append($$.s(response.admin.title)).appendIf($$.sc('note', response.admin.note), ne(response.admin.note, '') !== '');
|
|
let ts = $$.tblset({}, invfrm), fd = $bcol.qtl;
|
|
let thr = $$.tr(ts.hd), haux = $$.th(thr);
|
|
$.each(fd.fields || [], (ci, cx) => {
|
|
$$.th(thr).text(cx.label);
|
|
if (cx.name === 'vat') {
|
|
$$.th(thr);
|
|
}
|
|
});
|
|
let ctr = 0, cst = false;
|
|
$.each(response.bank || [], (ri, rw) => {
|
|
if (ctr > 0) { cst = !cst; }
|
|
let tr = $$.tr(ts.bdy).tC('alt', cst);
|
|
tr.click(function () {
|
|
lf.rC('fix').aC('hd');
|
|
tr.tC('selected').siblings().rC('selected').find('td.av').rC('av');
|
|
tr.find('td.av').rC('av');
|
|
});
|
|
let raux = $$.td(tr, { class: 'raux' });
|
|
$.each(fd.fields || [], (ci, cx) => {
|
|
let td = $$.td(tr).aC(cx.dtype), val = rw[cx.name];
|
|
if (typeof cx.dfnc === 'function') {
|
|
cx.dfnc.call(td, val, rw);
|
|
} else {
|
|
switch (cx.type || '') {
|
|
case 'date':
|
|
td.text(fdt(rw[cx.name], 'dd.MM.yy'));
|
|
break;
|
|
case 'datetime':
|
|
td.text(fdt(rw[cx.name]));
|
|
break;
|
|
case 'html':
|
|
td.append($$.dc('ctw').html(val));
|
|
td.append($$.dc('ttip').html(val));
|
|
break;
|
|
default:
|
|
td.text(rw[cx.name]);
|
|
}
|
|
}
|
|
switch (typeof cx.title) {
|
|
case 'function':
|
|
cx.title.call(td, rw);
|
|
break;
|
|
case 'string':
|
|
td.attr('title', cs.title);
|
|
}
|
|
});
|
|
});
|
|
}, complete: () => { invlst.ldng(0); }
|
|
});
|
|
}, renderLst: function () {
|
|
let mode = 'l'; //dummy for now
|
|
let bslst = $fis.frm_list(true, true).ldng(1), bamfrm = $$.dc('bamfrm', bslst).aC('md' + mode);
|
|
let lf = $fis.lf();
|
|
$bam.eM(true);
|
|
$ocms.postXT({
|
|
url: $ocms.url('bam/qtl'), data: { mode: mode }, success: (response) => {
|
|
lf.rC('fix').aC('hd');
|
|
$$.dc('ovhd', bamfrm).append($$.s(response.admin.title)).appendIf($$.sc('note', response.admin.note), ne(response.admin.note, '') !== '');
|
|
let ts = $$.tblset({}, bamfrm), fd = $bcol.qtl;
|
|
let thr = $$.tr(ts.hd);
|
|
let haux = $$.th(thr);
|
|
$.each(fd.fields || [], (ci, cx) => {
|
|
$$.th(thr).text(cx.label);
|
|
});
|
|
$.each(response.bs || [], (ri, rw) => {
|
|
let tr = $$.tr(ts.bdy, { id: `bt${rw.taID}` });
|
|
tr.click(function () {
|
|
lf.rC('fix').aC('hd');
|
|
tr.toggleClass('selected').siblings().rC('selected').find('td.av').rC('av');
|
|
tr.find('td.av').rC('av');
|
|
if (tr.is('.selected') === true) {
|
|
$bam.iMn(rw);
|
|
} else {
|
|
$bam.eM(true);
|
|
}
|
|
});
|
|
let raux = $$.td(tr, { class: 'raux' });
|
|
$.each(fd.fields || [], (ci, cx) => {
|
|
let td = $$.td(tr).aC(cx.dtype), sel, o;
|
|
if ((cx.type || '') === 'select') {
|
|
td.text((cx.url || {})[rw[cx.name]] || '');
|
|
} else {
|
|
td.text(rw[cx.name])
|
|
}
|
|
});
|
|
});
|
|
}, complete: () => { bslst.ldng(0); }
|
|
});
|
|
}, ubs : function () {
|
|
$ocms.dlgform($bcol.bsu, {
|
|
title: $bcol.bsu.label_sng || '',
|
|
submit: function (e) {
|
|
var c = $(this).ldng(1);
|
|
var qs = new FormData();
|
|
let fi = c.find(':input[name="bsu"]');
|
|
if (fi.length > 0 && fi[0].files.length > 0) {
|
|
$.each(fi[0].files, function (f, fl) {
|
|
qs.append('bsu', fl);
|
|
});
|
|
|
|
$ocms.postXT({
|
|
url: $ocms.url('bam/up'), data: qs, success: function (response) {
|
|
c.trigger('modal_close');
|
|
}, error: function () {
|
|
alert($t.l17);
|
|
}, complete: function () {
|
|
c.ldng(0);
|
|
$bam.renderLst();
|
|
}, timeout: 0
|
|
});
|
|
} else {
|
|
options.success.call(this, qs);
|
|
c.trigger('modal_close');
|
|
}
|
|
}, typedvalues: true
|
|
});
|
|
|
|
}, smd: (taid) => {
|
|
if (confirm($bct.smdc)) {
|
|
$ocms.postXT({
|
|
url: $ocms.url('bam/smd'), data: { taid: taid }, success: (response) => {
|
|
$(`#bt${taid}`).aC('mdone');
|
|
}
|
|
});
|
|
}
|
|
}, ati: (taid) => {
|
|
let f = $$.dc('form'), fb = $$.dc('form-body',f), fg = $$.dc('form-group', fb), kl = $$.lbl($bct.ino, { for: 'rno' }).appendTo(fg), i = $$.i({ id: 'rno', placeholder: 'Rechnungs-Nummer' }).appendTo(fg);
|
|
let r = $$.dc('rfrm bam', fb);
|
|
i.change(function (ev) {
|
|
$ocms.postXT({
|
|
url: $ocms.url('bam/vfi'), data: { invid: i.val() }, success: (response) => {
|
|
r.empty();
|
|
if (response.length > 0) {
|
|
$$.dc('nfo', r, $bct.fi);
|
|
$.each(response, function (ri, rx) {
|
|
let v = $$.dc('rinv', r, rx.InvoiceId).data('inv', rx).click(function (ex) { $(this).addClass('selected').siblings('.rinv').removeClass('selected'); });
|
|
$$.dc('invsta', v).rwText(rx.SendToAddress);
|
|
});
|
|
} else {
|
|
r.text($bct.ni);
|
|
}
|
|
|
|
}
|
|
});
|
|
|
|
|
|
});
|
|
$ocms.dlg(f, {
|
|
title: $bct.ati, size: [500, 700], confirm: function (e) {
|
|
let c = $(this), inv = c.find('.rinv.selected:first');
|
|
if (inv.length === 1) {
|
|
let rx = inv.data('inv') || {};
|
|
if (confirm(string($bct.atic, [rx.InvoiceId]))) {
|
|
$ocms.postXT({
|
|
url: $ocms.url('bam/ati'), data: { taid: taid, iid: rx.Id }, success: (response) => {
|
|
$(`#bt${taid}`).aC('mdone');
|
|
c.trigger('modal_close');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
let $$bam = { init2: $bam.init2, auth: {} };
|
|
export default $$bam; |