342 lines
13 KiB
JavaScript
342 lines
13 KiB
JavaScript
const moment = require('moment');
|
|
// Nyomtatási kép generálás alkalmazottak
|
|
// Segéd funkciók
|
|
function convertMinsToHrsMins(minutes) {
|
|
var h = Math.floor(minutes / 60);
|
|
var m = minutes % 60;
|
|
h = h < 10 ? '0' + h : h;
|
|
m = m < 10 ? '0' + m : m;
|
|
return h + ':' + m;
|
|
}
|
|
|
|
function convertMinsToHrsMins_R(minutes) {
|
|
var h = Math.floor(minutes / 60);
|
|
var m = minutes % 60;
|
|
if (m>=30) {
|
|
h+=1;
|
|
}
|
|
h = h < 10 ? '0' + h : h;
|
|
//m = m < 10 ? '0' + m : m;
|
|
return h;// + ':' + m;
|
|
}
|
|
|
|
exports.printPage=function(employee,som,month,weekend,mindate,holidaysArray,sickpaysArray,msz)
|
|
{
|
|
var dt = new Date();
|
|
var item=[];
|
|
var i=1;
|
|
var namePostfix="";
|
|
var drShift="";
|
|
// Munkaszüneti napok ellenőrzése és kijelzése
|
|
//var msz=getMunkaszunet(mindate);
|
|
moment.locale('hu');
|
|
|
|
if (employee.isStudent==='on') namePostfix='Diák';
|
|
|
|
som.sort(function(a, b) {
|
|
return moment(a.date,'YYYY.MM.DD') - moment(b.date,'YYYY.MM.DD');
|
|
});
|
|
|
|
|
|
item.push(['Dátum', //{text:'Nap', alignment: 'rleft'},
|
|
{text:'Helyszín', alignment: 'center'},
|
|
{text:'Érkezés', alignment: 'center'},
|
|
{text:'Távozás', alignment: 'center'},
|
|
{text:'Órák', alignment: 'center'},
|
|
{text:'Ebéd', alignment: 'center'},
|
|
{text:'Elszámolt', alignment: 'center'},
|
|
{text:'Túlóra', alignment: 'center'},
|
|
{text:'Pótlék', alignment: 'center'},
|
|
'Megjegyzés']);
|
|
som.forEach(element => {
|
|
var arrives="";
|
|
var getaways="";
|
|
var locs="";
|
|
var dreportList='';
|
|
var workReport='';
|
|
var locShift='';
|
|
var wrShift='';
|
|
var date = moment(element.date,'YYYY.MM.DD. HH:mm').format('DD')+' '+moment(element.date,'YYYY.MM.DD. HH:mm').format('dd').toUpperCase();
|
|
var notes="";
|
|
|
|
|
|
//if (element.dailyReport!='') drShift='\r\n'; else drShift='';
|
|
drShift='';
|
|
if (element.dailyReport)
|
|
{
|
|
if (element.dailyReport.length)
|
|
{
|
|
//drShift='\r\n';
|
|
locShift='\r\n'
|
|
}
|
|
element.dailyReport.forEach(drelem=>{
|
|
dreportList+= drelem.name.substring(0,60);
|
|
if (element.dailyReport.length>1) dreportList+='\r\n'
|
|
drShift+='\r\n';
|
|
})
|
|
}
|
|
else
|
|
{
|
|
drShift='';
|
|
}
|
|
if (element.isHoliday==false || element.isSickpay==false || element.isMunkaszunet==false)
|
|
// else
|
|
{
|
|
if (element.workReport){
|
|
locShift='\r\n'
|
|
//if (Object.keys(element.workReport).length!=0){
|
|
if (Object.entries(element.workReport).length)
|
|
{
|
|
workReport='M: '+element.workReport.wt+' '+element.workReport.wf;
|
|
workReport=workReport.substring(0,60);
|
|
wrShift='\r\n'
|
|
}
|
|
}
|
|
element.notes.forEach(note=>{
|
|
notes+=note.userNote+' '+note.companyNote
|
|
})
|
|
if (element.isWeekend)
|
|
{
|
|
// Hétvége
|
|
|
|
element.startStop.forEach(interval=>{
|
|
arrives+=moment(interval.start,'YYYY.MM.DD. HH:mm').format('HH:mm')+"\r\n";
|
|
if (interval.stop==='-')
|
|
{
|
|
getaways+='-\r\n';
|
|
}
|
|
else
|
|
{
|
|
getaways+=moment(interval.stop,'YYYY.MM.DD. HH:mm').format('HH:mm')+"\r\n";
|
|
}
|
|
})
|
|
|
|
item.push([
|
|
{text:date, style:'tableDataWe'},
|
|
{text:dreportList+workReport+locShift+element.locations[0].arriveLoc+' - '+element.locations[0].getawayLoc, style:'tableDataWe', alignment: 'center'},
|
|
{text:drShift+wrShift+arrives, style:'tableDataWe', alignment: 'center'},
|
|
{text:drShift+wrShift+getaways, style:'tableDataWe', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.fullHours), style:'tableDataWe', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.lunchtime), style:'tableDataWe', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.hours), style:'tableDataWe', alignment: 'center'}, //Elszámolt
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.overTime), style:'tableDataWe', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.Surrogate), style:'tableDataWe', alignment: 'center'}, //Pótlék
|
|
{text:drShift+wrShift+notes, style:'tableDataWe', alignment: 'left'}]);
|
|
}
|
|
else
|
|
{
|
|
// Hétköznap
|
|
element.startStop.forEach(interval=>{
|
|
arrives+=moment(interval.start,'YYYY.MM.DD. HH:mm').format('HH:mm')+"\r\n";
|
|
if (interval.stop==='-')
|
|
{
|
|
getaways+='-\r\n';
|
|
}
|
|
else
|
|
{
|
|
getaways+=moment(interval.stop,'YYYY.MM.DD. HH:mm').format('HH:mm')+"\r\n";
|
|
}
|
|
|
|
})
|
|
element.locations.forEach(interval=>{
|
|
locs+=interval.arriveLoc+' - '+interval.getawayLoc+"\r\n";
|
|
})
|
|
item.push([
|
|
{text:date, style:'tableData'},
|
|
[{text:dreportList+workReport, style:'dailyReport'},{text:locs, style:'tableDataLoc', alignment: 'center'}],
|
|
{text:drShift+wrShift+arrives, style:'tableData', alignment: 'center'},
|
|
{text:drShift+wrShift+getaways, style:'tableData', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.fullHours), style:'tableData', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.lunchtime), style:'tableData', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.hours), style:'tableData', alignment: 'center'}, //Elszámolt
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.overTime), style:'tableData', alignment: 'center'},
|
|
{text:drShift+wrShift+convertMinsToHrsMins(element.Surrogate), style:'tableData', alignment: 'center'}, //Pótlék
|
|
{text:drShift+wrShift+notes, style:'tableDataWe', alignment: 'left'}]);
|
|
}
|
|
}else{
|
|
if (element.isHoliday || element.isSickpay || element.isMunkaszunet)
|
|
{
|
|
var txt='';
|
|
var st='';
|
|
if (element.isHoliday) {txt='Szabadság';st='tableDataHo';}
|
|
if (element.isSickpay) {txt='Táppénz';st='tableDataSp';}
|
|
if (element.isMunkaszunet) {txt='Ünnep';st='tableDataHo';}
|
|
item.push([
|
|
{text:date, style:st},
|
|
{text:' --- ', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text:'--:--', style:st, alignment: 'center'},
|
|
{text: txt, style:st, alignment: 'left'}]);
|
|
}
|
|
}
|
|
return
|
|
});
|
|
item.push([
|
|
{text:'Összesen:', style:'tableSum',colSpan: 6},
|
|
// {text:'', style:'tableSum'},
|
|
{text:'', style:'tableSum'},
|
|
{text:'', style:'tableSum'},
|
|
{text:'', style:'tableSum'},
|
|
{text:'', style:'tableSum'},
|
|
{text:'', style:'tableSum'},
|
|
{text: convertMinsToHrsMins(month.workHours), style:'tableSum', alignment: 'center'},
|
|
{text: convertMinsToHrsMins(month.overTime), style:'tableSum', alignment: 'center'},
|
|
{text: convertMinsToHrsMins(weekend.Saturday.Surrogate+weekend.Sunday.Surrogate), style:'tableSum', alignment: 'center'},
|
|
{text:'', style:'tableSum'},
|
|
])
|
|
// playground requires you to assign document definition to a variable called dd
|
|
|
|
if (employee.isSubcontractor==='on') employee.name+=" Alvállalkozó"
|
|
if (employee.isStudent==='on') employee.name+=" Tanuló"
|
|
var dd = {
|
|
pageOrientation: 'landscape',
|
|
footer: function(currentPage, pageCount) { return {text: currentPage.toString() + ' / ' + pageCount, alignment: 'center'}},
|
|
header: {
|
|
alignment: 'justify',
|
|
columns: [
|
|
{text: 'Jelenléti ív '+employee.name+' '+namePostfix, style: 'header',margin: [ 20, 10, 10, 20 ],width: '*'},
|
|
{text: mindate, style: 'datum',margin: [ 5, 10, 20, 20 ],width: '*'}
|
|
]
|
|
},
|
|
content: [
|
|
|
|
|
|
{
|
|
style: 'tableExample',
|
|
table: {
|
|
|
|
headerRows: 1,
|
|
widths: ['auto', 'auto','auto','auto','auto','auto','auto','auto','auto','*'],
|
|
body: [],
|
|
|
|
}
|
|
},
|
|
{
|
|
stack:[
|
|
{alignment: 'justify', columnGap: 10,
|
|
columns:[
|
|
{style: 'subheader',width: 'auto',alignment: 'left',margin: [ 5, 2, 0, 5 ],text: 'Ledolgozott órák:\n'+
|
|
'Túlórák:\n'+
|
|
'Hétvégi pótlékok:' },
|
|
{style: 'subheader',width: 'auto',alignment: 'right',margin: [ 5, 2, 0, 5 ],text: `${convertMinsToHrsMins(month.workHours)} óra\n${convertMinsToHrsMins(month.overTime)} óra\n${convertMinsToHrsMins(weekend.Saturday.Surrogate+weekend.Sunday.Surrogate)} óra\n`}
|
|
]},
|
|
{alignment: 'justify',
|
|
columns:[
|
|
{style: 'subheader',width: 'auto',alignment: 'left',margin: [ 5, 2, 0, 5 ],text: 'Kiadott szabadság:\n'+
|
|
'Táppénz:\n'+
|
|
'Munkaszüneti napok:'},
|
|
{style: 'subheader',width: '*',alignment: 'left',margin: [ 5, 2, 0, 5 ],text: `${holidaysArray.length} nap\n${month.sickPays} nap\n${msz.length} nap (${msz})\n`}
|
|
]},
|
|
|
|
|
|
|
|
],
|
|
unbreakable: true,
|
|
id:'signature'
|
|
}
|
|
],
|
|
pageBreakBefore: function(currentNode, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage) {
|
|
//check if signature part is completely on the last page, add pagebreak if not
|
|
if (currentNode.id === 'signature' && (currentNode.pageNumbers.length != 1 || currentNode.pageNumbers[0] != currentNode.pages)) {
|
|
return true;
|
|
}
|
|
//check if last paragraph is entirely on a single page, add pagebreak if not
|
|
else if (currentNode.id === 'closingParagraph' && currentNode.pageNumbers.length != 1) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
styles: {
|
|
header: {
|
|
fontSize: 18,
|
|
bold: true,
|
|
fillColor: '#eeeeee',
|
|
margin: [0, 0, 0, 10]
|
|
},
|
|
dailyReport: {
|
|
fontSize: 8,
|
|
bold: true,
|
|
fillColor: '#494',
|
|
alignment: 'center'
|
|
},
|
|
datum: {
|
|
fontSize: 18,
|
|
bold: true,
|
|
fillColor: '#eeeeee',
|
|
alignment: 'right'
|
|
},
|
|
subheader: {
|
|
fontSize: 14,
|
|
bold: true,
|
|
fillColor: '#eeeeee',
|
|
margin: [0, 10, 0, 5]
|
|
},
|
|
tableExample: {
|
|
margin: [0, 5, 0, 15]
|
|
},
|
|
tableHeader: {
|
|
bold: true,
|
|
fontSize: 10,
|
|
fillColor: '#eeeeee',
|
|
color: 'red'
|
|
},
|
|
tableData: {
|
|
bold: false,
|
|
fontSize: 10,
|
|
italics: true,
|
|
color: 'green'
|
|
},
|
|
tableSum: {
|
|
bold: true,
|
|
fontSize: 10,
|
|
italics: true,
|
|
fillColor: '#ddddff',
|
|
color: 'black'
|
|
},
|
|
tableDataLoc: {
|
|
bold: false,
|
|
fontSize: 8,
|
|
italics: true,
|
|
color: 'green'
|
|
},
|
|
tableDataWe: {
|
|
bold: false,
|
|
fontSize: 10,
|
|
italics: true,
|
|
fillColor: '#eeffee',
|
|
color: 'red'
|
|
},
|
|
tableDataHo: {
|
|
bold: false,
|
|
fontSize: 10,
|
|
italics: true,
|
|
fillColor: '#eeeeff',
|
|
color: 'red'
|
|
},
|
|
tableDataSp: {
|
|
bold: false,
|
|
fontSize: 10,
|
|
italics: true,
|
|
fillColor: '#eeeeee',
|
|
color: 'brown'
|
|
}
|
|
},
|
|
defaultStyle: {
|
|
// alignment: 'justify'
|
|
}
|
|
};
|
|
dd.content[0].table.body=item;
|
|
|
|
//pdf.createPdf(dd).open();
|
|
// callback(null,dd);
|
|
return dd;
|
|
// ...
|
|
|
|
|
|
}
|