#6924 Notify absences only to department boss #3175

Merged
jon merged 12 commits from 6924-NotifyOnlyToBoss into dev 2024-11-21 07:06:28 +00:00
1 changed files with 21 additions and 23 deletions

View File

@ -58,9 +58,8 @@ module.exports = Self => {
if (!isSubordinate || (isSubordinate && userId == id && !isTeamBoss)) if (!isSubordinate || (isSubordinate && userId == id && !isTeamBoss))
throw new UserError(`You don't have enough privileges`); throw new UserError(`You don't have enough privileges`);
const labour = await models.WorkerLabour.findById(args.businessFk, { const labour = await models.WorkerLabour.findById(args.businessFk,
include: {relation: 'department'} {fields: ['started', 'ended', 'businessFk']}, myOptions);
}, myOptions);
if (args.dated < labour.started || (labour.ended != null && args.dated > labour.ended)) if (args.dated < labour.started || (labour.ended != null && args.dated > labour.ended))
throw new UserError(`The contract was not active during the selected date`); throw new UserError(`The contract was not active during the selected date`);
@ -87,7 +86,8 @@ module.exports = Self => {
`SELECT COUNT(*) halfHolidayCounter `SELECT COUNT(*) halfHolidayCounter
FROM vn.calendar c FROM vn.calendar c
JOIN vn.business b ON b.id = c.businessFk JOIN vn.business b ON b.id = c.businessFk
WHERE c.dayOffTypeFk = 6 JOIN vn.absenceType at ON at.id = c.dayOffTypeFk
WHERE at.code = 'halfHoliday'
AND b.workerFk = ? AND b.workerFk = ?
AND c.dated BETWEEN util.firstDayOfYear(?) AND c.dated BETWEEN util.firstDayOfYear(?)
AND LAST_DAY(DATE_ADD(?, INTERVAL 12 - MONTH(?) MONTH))`, [id, date, now, now]); AND LAST_DAY(DATE_ADD(?, INTERVAL 12 - MONTH(?) MONTH))`, [id, date, now, now]);
@ -119,25 +119,23 @@ module.exports = Self => {
dated: args.dated dated: args.dated
}, myOptions); }, myOptions);
const department = labour.department(); const account = await models.VnUser.findById(userId, null, myOptions);
if (department && department.notificationEmail) { const subordinated = await models.VnUser.findById(id, null, myOptions);
const absenceType = await models.AbsenceType.findById(args.absenceTypeId, null, myOptions); const worker = await models.Worker.findById(subordinated.id, null, myOptions);
const account = await models.VnUser.findById(userId, null, myOptions); const departmentBoss = await models.VnUser.findById(worker.bossFk, null, myOptions);
const subordinated = await models.VnUser.findById(id, null, myOptions); const url = await Self.app.models.Url.getUrl();
const url = await Self.app.models.Url.getUrl(); const body = $t('Created absence', {
const body = $t('Created absence', { author: account.nickname,
author: account.nickname, employee: subordinated.nickname,
employee: subordinated.nickname, absenceType: absenceType.name,
absenceType: absenceType.name, dated: formatDate(args.dated),
dated: formatDate(args.dated), workerUrl: `${url}worker/${id}/calendar`
workerUrl: `${url}worker/${id}/calendar` });
}); await models.Mail.create({
await models.Mail.create({ subject: $t('Absence change notification on the labour calendar'),
subject: $t('Absence change notification on the labour calendar'), body: body,
body: body, receiver: departmentBoss.email
receiver: department.notificationEmail }, myOptions);
}, myOptions);
}
if (tx) await tx.commit(); if (tx) await tx.commit();