diff --git a/db/changes/10110-postCampaign/00-workerTimeControlAdd.sql b/db/changes/10110-postCampaign/00-workerTimeControlAdd.sql new file mode 100644 index 0000000000..c2091ff830 --- /dev/null +++ b/db/changes/10110-postCampaign/00-workerTimeControlAdd.sql @@ -0,0 +1,73 @@ +DROP function IF EXISTS `vn`.`workerTimeControl_add`; + +DELIMITER $$ +CREATE DEFINER=`root`@`%` FUNCTION `vn`.`workerTimeControl_add`( vUserFk INT, vWarehouseFk INT, vTimed DATETIME, vIsManual BOOL) RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE vDirection VARCHAR(6); + DECLARE vLastIn DATETIME; + DECLARE vDayStayMax INT; + DECLARE vHasDirectionOut INT; + DECLARE vLastInsertedId INT; + + SELECT dayStayMax INTO vDayStayMax + FROM workerTimeControlParams; + + SELECT timeWorkerControl_getDirection(vUserFk,vTimed) INTO vDirection; + + IF vDirection = 'out' THEN + + SELECT MAX(timed) INTO vLastIn + FROM workerTimeControl + WHERE userFk = vUserFk + AND direction = 'in' + AND timed < vTimed; + + UPDATE workerTimeControl wtc + SET wtc.direction = 'middle' + WHERE userFk = vUserFk + AND direction = 'out' + AND timed BETWEEN vLastIn AND vTimed; + + ELSE IF vDirection = 'in' THEN + + SELECT COUNT(*) INTO vHasDirectionOut + FROM workerTimeControl wtc + WHERE userFk = vUserFk + AND direction = 'out' + AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); + + UPDATE workerTimeControl wtc + SET wtc.direction = IF (vHasDirectionOut,'middle','out') + WHERE userFk = vUserFk + AND direction = 'in' + AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); + + END IF; + END IF; + + INSERT INTO workerTimeControl(userFk, timed, warehouseFk, direction, manual) + VALUES(vUserFk, vTimed, vWarehouseFk, vDirection, vIsManual); + + SET vLastInsertedId = LAST_INSERT_ID(); + + CALL workerTimeControlSOWP(vUserFk, vTimed); + + RETURN vLastInsertedId; +END$$ + +DELIMITER ; + + + +DROP procedure IF EXISTS `vn`.`workerTimeControl_add`; + +DELIMITER $$ +CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`workerTimeControl_add`(IN vUserFk INT, IN vWarehouseFk INT, IN vTimed DATETIME, IN vIsManual BOOL) +BEGIN + + + SELECT workerTimeControl_add(vUserFk,vWarehouseFk,vTimed,vIsManual); +END$$ + +DELIMITER ; \ No newline at end of file diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 16e11cb80e..86ee0a6120 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -1835,12 +1835,12 @@ INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `dated`) (8, 'day', DATE_ADD(CURDATE(), INTERVAL +5 DAY)), (8, 'day', DATE_ADD(CURDATE(), INTERVAL +6 DAY)); -INSERT INTO `vn`.`workerTimeControl`(`userFk`,`timed`,`manual`, `direction`) +INSERT INTO `vn`.`workerTimeControl`(`userFk`, `timed`, `order`, `manual`, `direction`) VALUES - (106, CONCAT(CURDATE(), ' 07:00'), TRUE, 'in'), - (106, CONCAT(CURDATE(), ' 10:00'), TRUE, 'middle'), - (106, CONCAT(CURDATE(), ' 10:10'), TRUE, 'middle'), - (106, CONCAT(CURDATE(), ' 15:00'), TRUE, 'out'); + (106, CONCAT(CURDATE(), ' 07:00'), 1, TRUE, 'in'), + (106, CONCAT(CURDATE(), ' 10:00'), 2, TRUE, 'middle'), + (106, CONCAT(CURDATE(), ' 10:10'), 3, TRUE, 'middle'), + (106, CONCAT(CURDATE(), ' 15:00'), 4, TRUE, 'out'); INSERT INTO `vn`.`dmsType`(`id`, `name`, `path`, `readRoleFk`, `writeRoleFk`, `code`) VALUES diff --git a/front/core/components/tooltip/tooltip.spec.js b/front/core/components/tooltip/tooltip.spec.js index 15595c61bd..74cb410ffd 100644 --- a/front/core/components/tooltip/tooltip.spec.js +++ b/front/core/components/tooltip/tooltip.spec.js @@ -1,7 +1,6 @@ import './tooltip'; -// #1615 migrar karma a jest -xdescribe('Component vnTooltip', () => { +describe('Component vnTooltip', () => { let $element; let controller; let $parent; @@ -21,8 +20,8 @@ xdescribe('Component vnTooltip', () => { $parent.css({ backgroundColor: 'red', position: 'absolute', - width: '10px', - height: '10px', + width: '100px', + height: '100px', top: '0', left: '0' }); @@ -36,13 +35,13 @@ xdescribe('Component vnTooltip', () => { describe('show()', () => { it(`should check that tooltip is visible into the screen`, () => { + expect(element.classList).not.toContain('show'); + controller.show($parent[0]); let rect = element.getBoundingClientRect(); - let style = window.getComputedStyle(element); - expect(style.visibility).toEqual('visible'); - expect(style.display).not.toEqual('none'); + expect(element.classList).toContain('show'); expect(0).toBeLessThanOrEqual(rect.top); expect(0).toBeLessThanOrEqual(rect.left); @@ -54,14 +53,16 @@ xdescribe('Component vnTooltip', () => { describe('hide()', () => { it(`should check that tooltip is not visible`, () => { controller.show($parent[0]); - controller.hide(); - let style = window.getComputedStyle(element); - expect(style.display).toEqual('none'); + expect(element.classList).toContain('show'); + controller.hide(); + + expect(element.classList).not.toContain('show'); }); }); - describe('relocate()', () => { + // #1892 reparar unitarios front tooltip.js + xdescribe('relocate()', () => { it(`should reallocate tooltip on top-left`, () => { controller.show($parent[0]); let rect = element.getBoundingClientRect(); diff --git a/modules/worker/back/methods/worker-time-control/addTimeEntry.js b/modules/worker/back/methods/worker-time-control/addTimeEntry.js index 6493641511..86030d7133 100644 --- a/modules/worker/back/methods/worker-time-control/addTimeEntry.js +++ b/modules/worker/back/methods/worker-time-control/addTimeEntry.js @@ -34,7 +34,9 @@ module.exports = Self => { const subordinate = await Worker.findById(data.workerFk); const timed = new Date(data.timed); - return Self.rawSql('CALL vn.workerTimeControl_add(?, ?, ?, ?)', [ + let [result] = await Self.rawSql('SELECT vn.workerTimeControl_add(?, ?, ?, ?) AS id', [ subordinate.userFk, null, timed, true]); + + return result; }; }; diff --git a/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js b/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js index bcc15225a0..ff5e13a2d9 100644 --- a/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js +++ b/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js @@ -1,7 +1,8 @@ const app = require('vn-loopback/server/server'); describe('workerTimeControl addTimeEntry()', () => { - let insertedTime; + let timeEntry; + let createdTimeEntry; it('should fail to add a time entry if the target user is not a subordinate', async() => { let error; @@ -52,11 +53,9 @@ describe('workerTimeControl addTimeEntry()', () => { timed: todayAtSix }; - await app.models.WorkerTimeControl.addTimeEntry(ctx, data); + timeEntry = await app.models.WorkerTimeControl.addTimeEntry(ctx, data); - insertedTime = await app.models.WorkerTimeControl.findOne({where: {timed: data.timed}}); - - let createdTimeEntry = await app.models.WorkerTimeControl.findById(insertedTime.id); + createdTimeEntry = await app.models.WorkerTimeControl.findById(timeEntry.id); expect(createdTimeEntry).toBeDefined(); }); @@ -66,10 +65,6 @@ describe('workerTimeControl addTimeEntry()', () => { let teamBossId = 13; let ctx = {req: {accessToken: {userId: teamBossId}}}; - let createdTimeEntry = await app.models.WorkerTimeControl.findById(insertedTime.id); - - expect(createdTimeEntry).toBeDefined(); - try { await app.models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id); } catch (e) { @@ -85,14 +80,12 @@ describe('workerTimeControl addTimeEntry()', () => { let HHRRId = 37; let ctx = {req: {accessToken: {userId: HHRRId}}}; - let createdTimeEntry = await app.models.WorkerTimeControl.findById(insertedTime.id); - expect(createdTimeEntry).toBeDefined(); ctx.req.accessToken.userId = HHRRId; - await app.models.WorkerTimeControl.deleteTimeEntry(ctx, insertedTime.id); + await app.models.WorkerTimeControl.deleteTimeEntry(ctx, timeEntry.id); - createdTimeEntry = await app.models.WorkerTimeControl.findById(insertedTime.id); + createdTimeEntry = await app.models.WorkerTimeControl.findById(timeEntry.id); expect(createdTimeEntry).toBeNull(); }); diff --git a/modules/worker/front/time-control/index.html b/modules/worker/front/time-control/index.html index c3700992ba..10691d301e 100644 --- a/modules/worker/front/time-control/index.html +++ b/modules/worker/front/time-control/index.html @@ -4,7 +4,7 @@ filter="::$ctrl.filter" data="$ctrl.hours"> - + @@ -31,8 +31,8 @@ - -
+ +
{{::hour.timed | date: 'HH:mm'}} diff --git a/modules/worker/front/time-control/style.scss b/modules/worker/front/time-control/style.scss index 5d82c6d31c..8555e827b7 100644 --- a/modules/worker/front/time-control/style.scss +++ b/modules/worker/front/time-control/style.scss @@ -12,6 +12,7 @@ vn-worker-time-control { & > section { display: flex; align-items: center; + justify-content: center; padding: .3em 0; & > vn-icon { diff --git a/print/boot.js b/print/boot.js index 4067c9e7b6..ae604db2c5 100644 --- a/print/boot.js +++ b/print/boot.js @@ -19,7 +19,6 @@ module.exports = app => { require('./core/database').init(); // Init SMTP Instance require('./core/smtp').init(); - // require('./core/mixins'); require('./core/filters'); require('./core/directives'); diff --git a/print/templates/email/printer-setup/printer-setup.js b/print/templates/email/printer-setup/printer-setup.js index 12a2b14c99..86ae0044a2 100755 --- a/print/templates/email/printer-setup/printer-setup.js +++ b/print/templates/email/printer-setup/printer-setup.js @@ -29,7 +29,7 @@ module.exports = { LEFT JOIN worker w ON w.id = c.salesPersonFk LEFT JOIN account.user wu ON wu.id = w.userFk WHERE c.id = ?`, [clientId]); - }, + } }, components: { 'email-header': emailHeader.build(),