diff --git a/back/methods/collection/getTickets.js b/back/methods/collection/getTickets.js
index 677c9e4444..85d1111dfe 100644
--- a/back/methods/collection/getTickets.js
+++ b/back/methods/collection/getTickets.js
@@ -40,6 +40,7 @@ module.exports = Self => {
 
         const sales = await Self.rawSql(`
             SELECT s.ticketFk,
+                    NULL ticketOrder,
                     sgd.saleGroupFk,
                     s.id saleFk,
                     s.itemFk,
@@ -83,6 +84,7 @@ module.exports = Self => {
                 GROUP BY s.id, ish.id, p.code, p2.code
             UNION ALL
             SELECT s.ticketFk,
+                DENSE_RANK() OVER (ORDER BY ss.id),
                 sgd.saleGroupFk,
                 s.id saleFk,
                 s.itemFk,
diff --git a/db/routines/vn/triggers/workerManaExcluded_beforeInsert.sql b/db/routines/vn/triggers/workerManaExcluded_beforeInsert.sql
new file mode 100644
index 0000000000..824f0982b3
--- /dev/null
+++ b/db/routines/vn/triggers/workerManaExcluded_beforeInsert.sql
@@ -0,0 +1,9 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerManaExcluded_beforeInsert`
+	BEFORE INSERT ON `workerManaExcluded`
+	FOR EACH ROW
+BEGIN
+	DELETE FROM workerMana
+		WHERE workerFk = NEW.workerFk;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/workerManaExcluded_beforeUpdate.sql b/db/routines/vn/triggers/workerManaExcluded_beforeUpdate.sql
new file mode 100644
index 0000000000..83d73e131f
--- /dev/null
+++ b/db/routines/vn/triggers/workerManaExcluded_beforeUpdate.sql
@@ -0,0 +1,9 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerManaExcluded_beforeUpdate`
+	BEFORE UPDATE ON `workerManaExcluded`
+	FOR EACH ROW
+BEGIN
+	DELETE FROM workerMana
+		WHERE workerFk = NEW.workerFk;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/workerMana_beforeInsert.sql b/db/routines/vn/triggers/workerMana_beforeInsert.sql
new file mode 100644
index 0000000000..2d27004e3d
--- /dev/null
+++ b/db/routines/vn/triggers/workerMana_beforeInsert.sql
@@ -0,0 +1,10 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerMana_beforeInsert`
+	BEFORE INSERT ON `workerMana`
+	FOR EACH ROW
+BEGIN
+	IF (SELECT EXISTS(SELECT TRUE FROM workerManaExcluded WHERE workerFk = NEW.workerFk)) THEN
+		CALL util.throw('Worker is excluded from mana');
+	END IF;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/workerMana_beforeUpdate.sql b/db/routines/vn/triggers/workerMana_beforeUpdate.sql
new file mode 100644
index 0000000000..6916733cb6
--- /dev/null
+++ b/db/routines/vn/triggers/workerMana_beforeUpdate.sql
@@ -0,0 +1,10 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerMana_beforeUpdate`
+	BEFORE UPDATE ON `workerMana`
+	FOR EACH ROW
+BEGIN
+	IF (SELECT EXISTS(SELECT TRUE FROM workerManaExcluded WHERE workerFk = NEW.workerFk)) THEN
+		CALL util.throw('Worker is excluded from mana');
+	END IF;
+END$$
+DELIMITER ;
diff --git a/db/versions/11396-blueErica/00-firstScript.sql b/db/versions/11396-blueErica/00-firstScript.sql
new file mode 100644
index 0000000000..b21965fe8c
--- /dev/null
+++ b/db/versions/11396-blueErica/00-firstScript.sql
@@ -0,0 +1,5 @@
+DELETE FROM vn.workerMana
+	WHERE workerFk IN (
+		SELECT workerFk
+			FROM vn.workerManaExcluded
+	);
diff --git a/modules/route/back/methods/route/driverRouteEmail.js b/modules/route/back/methods/route/driverRouteEmail.js
index bbac2b0e8d..78069683dd 100644
--- a/modules/route/back/methods/route/driverRouteEmail.js
+++ b/modules/route/back/methods/route/driverRouteEmail.js
@@ -8,7 +8,7 @@ module.exports = Self => {
                 arg: 'id',
                 type: 'number',
                 required: true,
-                description: 'The client id',
+                description: 'The route id',
                 http: {source: 'path'}
             }, {
                 arg: 'replyTo',
@@ -31,26 +31,13 @@ module.exports = Self => {
     });
 
     Self.driverRouteEmail = async(ctx, id) => {
-        const models = Self.app.models;
-        const {workerFk, agencyMode} = await Self.findById(id, {
-            fields: ['workerFk', 'agencyModeFk'],
+        const {agencyMode} = await Self.findById(id, {
+            fields: ['agencyModeFk'],
             include: {relation: 'agencyMode'}
         });
         const {reportMail} = agencyMode();
-        let user;
-        let account;
-
-        if (workerFk) {
-            user = await models.VnUser.findById(workerFk, {
-                fields: ['active', 'id'],
-                include: {relation: 'emailUser'}
-            });
-            account = await models.Account.findById(workerFk);
-        }
-
-        if (user?.active && account) ctx.args.recipient = user.emailUser().email;
-        else ctx.args.recipient = reportMail;
 
+        ctx.args.recipient = reportMail;
         if (!ctx.args.recipient) throw new UserError('An email is necessary');
         return Self.sendTemplate(ctx, 'driver-route');
     };
diff --git a/modules/worker/back/methods/worker-time-control/sendMail.js b/modules/worker/back/methods/worker-time-control/sendMail.js
index 2e1e00d83e..5fd5f65ff1 100644
--- a/modules/worker/back/methods/worker-time-control/sendMail.js
+++ b/modules/worker/back/methods/worker-time-control/sendMail.js
@@ -41,22 +41,10 @@ module.exports = Self => {
         const stmts = [];
         let stmt;
 
-        if (!args.week || !args.year) {
-            const from = Date.vnNew();
-            const to = Date.vnNew();
+        const {date: started, week, year} = Self.getMondayWeekYear(args.week, args.year);
+        args.week = week;
+        args.year = year;
 
-            const time = await models.Time.findOne({
-                where: {
-                    dated: {between: [from.setDate(from.getDate() - 10), to.setDate(to.getDate() - 4)]}
-                },
-                order: 'week ASC'
-            }, myOptions);
-
-            args.week = time.week;
-            args.year = time.year;
-        }
-
-        const started = getStartDateOfWeekNumber(args.week, args.year);
         started.setHours(0, 0, 0, 0);
 
         const ended = new Date(started);
@@ -388,17 +376,6 @@ module.exports = Self => {
         return true;
     };
 
-    function getStartDateOfWeekNumber(week, year) {
-        const simple = new Date(year, 0, 1 + (week - 1) * 7);
-        const dow = simple.getDay();
-        const weekStart = simple;
-        if (dow <= 4)
-            weekStart.setDate(simple.getDate() - simple.getDay() + 1);
-        else
-            weekStart.setDate(simple.getDate() + 8 - simple.getDay());
-        return weekStart;
-    }
-
     function getTime(timeString) {
         const [hours, minutes, seconds] = timeString.split(':');
         return [parseInt(hours), parseInt(minutes), parseInt(seconds)];
diff --git a/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js b/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js
index e352eb3cb1..eadbecb008 100644
--- a/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js
+++ b/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js
@@ -55,8 +55,8 @@ module.exports = Self => {
             }
         }, myOptions);
 
-        const dated = getMondayDateFromYearWeek(args.year, args.week);
-        const timestamp = dated.getTime() / 1000;
+        const {date} = Self.getMondayWeekYear(args.week, args.year);
+        const timestamp = date.getTime() / 1000;
 
         const url = `${salix.url}worker/${args.workerId}/time-control?timestamp=${timestamp}`;
         ctx.args.url = url;
@@ -64,23 +64,4 @@ module.exports = Self => {
         await models.WorkerTimeControl.updateMailState(ctx, ctx.args.workerId, myOptions);
         return Self.sendTemplate(ctx, 'weekly-hour-record');
     };
-
-    function getMondayDateFromYearWeek(yearNumber, weekNumber) {
-        const yearStart = new Date(yearNumber, 0, 1);
-        const firstMonday = new Date(yearStart.getTime() + ((7 - yearStart.getDay() + 1) % 7) * 86400000);
-        const firstMondayWeekNumber = getWeekNumber(firstMonday);
-
-        if (firstMondayWeekNumber > 1)
-            firstMonday.setDate(firstMonday.getDate() + 7);
-
-        firstMonday.setDate(firstMonday.getDate() + (weekNumber - 1) * 7);
-
-        return firstMonday;
-    }
-
-    function getWeekNumber(date) {
-        const firstDayOfYear = new Date(date.getFullYear(), 0, 1);
-        const daysPassed = (date - firstDayOfYear) / 86400000;
-        return Math.ceil((daysPassed + firstDayOfYear.getDay() + 1) / 7);
-    }
 };
diff --git a/modules/worker/back/models/worker-time-control.js b/modules/worker/back/models/worker-time-control.js
index 92f1bacf07..cdf51b7122 100644
--- a/modules/worker/back/models/worker-time-control.js
+++ b/modules/worker/back/models/worker-time-control.js
@@ -1,4 +1,5 @@
 const UserError = require('vn-loopback/util/user-error');
+const moment = require('moment');
 
 module.exports = Self => {
     require('../methods/worker-time-control/filter')(Self);
@@ -19,4 +20,15 @@ module.exports = Self => {
             return new UserError(`The introduced hour already exists`);
         return err;
     });
+
+    Self.getMondayWeekYear = (week, year) => {
+        if (!week || !year) {
+            const today = Date.vnNew();
+            today.setDate(today.getDate() - 7);
+            week = moment(today).isoWeek();
+            year = moment(today).isoWeekYear();
+        }
+        const date = moment(year, 'YYYY').week(week).startOf('isoweek').toDate();
+        return {date, year, week};
+    };
 };