Files

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;