Files
Fuchs_Intranet/Fuchs/js/intranet/modules/fis.req.js
T

287 lines
14 KiB
JavaScript

let gi = (n, c) => $$.sc('glyphicon glyphicon-' + n).aC(c);
let $inv = {}, $req = {
init2: function (type, options) {
type = type || 'inv';
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;
$req.init3(type, options);
});
}, init3: async function (type, options) {
let cf = $fis.cf(true), lf = $fis.lf(true);
$('#topbar').ocmsmenu([]); //{ lbl: 'home', fnc: $inv.init3 }
$('#activemodule').text($rct.mdl);
await $fis.prepAuth('fds_req,fds_inv,fds_reminder');
let pa = [(async () => {
if ($fis.isAuth('fds_req', 1) === true) {
$req.prepLst('');
lf.aC('fix'); //initially should be shown - for convenience
}
})(), new Promise((resolve, reject) => {
lf.find('div.oreq2').aC('selected');
$req.renderreq(fdt(new Date(), 'yy-MM-dd'), 'r');
resolve();
})];
await Promise.all(pa);
}, 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 opn = $$.dc('mth oreq', lf).text($rct.or).click(function (ev) {
let mth = $(this);
ev.stopPropagation();
mth.siblings().rC('selected');
if (mth.is('.selected') === true) {
mth.tC('selected');
$req.renderreq(fdt(new Date(), 'yy-MM-dd'), 'o');
}
mth.aC('selected');
});
let opnr = $$.dc('mth oreq2', lf).text($rct.orr).click(function (ev) {
let mth = $(this);
ev.stopPropagation();
mth.siblings().rC('selected');
if (mth.is('.selected') === true) {
mth.tC('selected');
$req.renderreq(fdt(new Date(), 'yy-MM-dd'), 'r');
}
mth.aC('selected');
});
let osb = $$.i({ placeholder: $rct.rn }).appendTo($$.dc('mth oreqn', 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');
$req.renderreq('n:' + v, 's');
mth.val('');
}
});
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($rct.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($rct.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');
$req.renderreq(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(($rct.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');
$req.renderreq(tgt, 'w');
mth.siblings().rC('selected').find('.wk').rC('selected');
mth.aC('selected').find('.wk').rC('selected');
wk.aC('selected');
});
let wkdl = $$.dc('wkdl', wk).append($$.sc('ico glyphicon glyphicon-compressed'));
if ($fis.isAuth('fds_inv', 2) === true) {
wkdl.click({
rd: new Date(rd)
}, function (ev) {
ev.stopPropagation();
let tgt = fdt(ev.data.rd, 'yy-MM-dd');
$req.downloadzip.call(tgt, 'w');
});
}
rd.setDate(rd.getDate() + 7);
}
}
}
lf.ldng(0);
}, renderreq: 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('req/reql'), 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 = $rcol.req;
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.requests || [], (ri, rw) => {
if (ctr > 0 && ctr !== rw.ParentServiceRequestId) {
cst = !cst;
}
let tr = $$.tr(ts.bdy).tC('alt', cst);
ctr = rw.ParentServiceRequestId;
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');
});
tr.tC('child', rw.isChild);
let raux = $$.td(tr, { class: 'raux' });
if (bool(rw.open, false) === true) {
$$.dc('ihd ilbtn', raux).append(gi('eye-close', 'ico')).click({ id: rw.Id }, $req.tHd);
}
$$.dc('iitm ilbtn', raux).append(gi('list', 'ico')).click({ id: rw.Id }, $req.showitm);
if ($fis.isAuth('fds_inv', 2) === true) {
$$.dc('invc ilbtn', raux).append(gi('edit', 'ico')).click({ id: rw.Id }, $inv.cInv);
}
$.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 (cx.name || '') {
case 'State':
td.text($rct.sts[val || '-']);
break;
case 'Name':
td.aC(cx.name.toLowerCase());
break;
case 'vat':
$$.sel().appendTo($$.td(tr, { class: 'vsel' })).click(function (ev) { ev.stopPropagation(); }).append([$$.opt('19,0 %', '19,0 %'), $$.opt('16,0 %', '16,0 %'), $$.opt('0,0 %', '0,0 %')]).val(rw[cx.name]).change().change({ frm: invfrm, tgt: tgt, mode: mode, id: rw.Id, td: td }, $req.setvat);
td.tC('hl', rw[cx.name].substr(0, 2) !== '19').click(function (ev) {
ev.stopPropagation();
$(this).tC('av');
});
break;
case 'balance':
td.aC('sh_' + (rw.SollHaben || '').toLowerCase());
break;
case 'InvoiceId':
td.aC('keep');
break;
}
switch (typeof cx.title) {
case 'function':
cx.title.call(td, rw);
break;
case 'string':
td.attr('title', cs.title);
}
});
});
}, complete: () => { invlst.ldng(0); }
});
}, tHd: function (ev) {
let tr = $(this).closest('tr');
ev.stopPropagation();
if (tr.is('.selected') === false) {
return;
} else if (confirm($rct.cthd)){
$ocms.postXT({
url: $ocms.url('req/rthd'), data: { id: ev.data.id }, success: (response) => {
if (response.id === ev.data.id && bool(response.visible, true) === false) {
if (tr.is('.tbhd') === false) {
setTimeout(() => { tr.filter('.tbhd').remove(); }, 15000); // by the filter, it can be prevented by removing the class
}
tr.aC('tbhd');
} else if (response.id === ev.data.id) {
tr.rC('tbhd');
}
}
});
}
}, showitm: function (ev) {
let tr = $(this).closest('tr');
ev.stopPropagation();
if (tr.is('.selected') === false) {
return;
}
let fr = $$.dc('rfrm').ldng(1);
$ocms.postXT({
url: $ocms.url('req/pget'), data: { id: ev.data.id }, success: (response) => {
$ocms.postXT({
url: $ocms.url('req/get'), data: { id: ev.data.id, mode: 'ful' }, success: (response) => {
let rqa = {};
if ((response.requests || []).length < 1) {
fr.text($rct.nd);
} else {
let rq = $$.dc('srq', fr);
let rif = $$.tblset({ class: 'if' }, rq);
$.each(response.requests || [], function (ri, rx) {
if (ri > 0) {
$$.tr(rif.bdy).aC('sep').append($$.td({ colspan: 6 }));
}
let rtr = $$.tr(rif.bdy).aC('title'), cl = $rcol.itm.lbl();
let worknotes = $inv.worknotes(rx);
$$.td(rtr, { colspan: 6 }).append([$$.s($rcol.req.label_sng), $$.sc('eid', rx.ExternalId), $$.sc('nme', fdt(rx.WorkDoneAt,'dd.MM.yy') + ': ' + worknotes.ne(rx.Name))]);
let sdh = $$.tr(rif.bdy).aC('shd').append([$$.td(), $$.td(cl.NameOrNumber), $$.td(cl.Type), $$.td(cl.net_pos), $$.td(cl.bo_pos), $$.td(cl.vat)]); /* header row for items */
$.each(rx.items || [], (ii, ix) => {
let sid = ix.ServiceRequestId;
let itr = $$.tr(rif.bdy, { id: 'itm' + ix.Id }).aC(ix.Type);
$$.td(itr).aC('ico');
$$.td(itr).text(ix.NameOrNumber);
$$.td(itr).text(ix.Type);
$$.td(itr).aC('currency').text(ix.net_pos);
$$.td(itr).aC('currency').text(ix.bo_pos);
$$.td(itr).aC('num').text(ix.vat);
});
});
}
}, error: () => {
fr.text($t.t12);
}, complete: () => {
fr.ldng(0);
}
});
}, error: () => {
fr.text($t.t12);
fr.ldng(0);
}
});
$ocms.dlg(fr, { width: 1000 });
}
}
let $$req = { init2: $req.init2, auth: {} };
export default $$req;