feat: refs #8139 Added if is campaign
gitea/salix/pipeline/pr-dev There was a failure building this commit
Details
gitea/salix/pipeline/pr-dev There was a failure building this commit
Details
This commit is contained in:
parent
6f47d04598
commit
93f5b0ea54
|
@ -24,7 +24,7 @@ BEGIN
|
||||||
DECLARE vNextOut DATETIME;
|
DECLARE vNextOut DATETIME;
|
||||||
DECLARE vNextDirection ENUM('in', 'out');
|
DECLARE vNextDirection ENUM('in', 'out');
|
||||||
DECLARE vLastDirection ENUM('in', 'out');
|
DECLARE vLastDirection ENUM('in', 'out');
|
||||||
DECLARE vDayMaxTime INTEGER;
|
DECLARE vDayMaxTime INTEGER;
|
||||||
DECLARE vDayBreak INT;
|
DECLARE vDayBreak INT;
|
||||||
DECLARE vShortWeekBreak INT;
|
DECLARE vShortWeekBreak INT;
|
||||||
DECLARE vLongWeekBreak INT;
|
DECLARE vLongWeekBreak INT;
|
||||||
|
@ -52,7 +52,7 @@ BEGIN
|
||||||
WHERE w.id = vWorkerFk;
|
WHERE w.id = vWorkerFk;
|
||||||
|
|
||||||
SELECT `description` INTO vErrorMessage
|
SELECT `description` INTO vErrorMessage
|
||||||
FROM workerTimeControlError
|
FROM workerTimeControlError
|
||||||
WHERE `code` = vErrorCode;
|
WHERE `code` = vErrorCode;
|
||||||
|
|
||||||
IF vErrorMessage IS NULL THEN
|
IF vErrorMessage IS NULL THEN
|
||||||
|
@ -64,7 +64,7 @@ BEGIN
|
||||||
' no ha podido fichar por el siguiente problema: ',
|
' no ha podido fichar por el siguiente problema: ',
|
||||||
vErrorMessage)
|
vErrorMessage)
|
||||||
INTO vErrorMessage;
|
INTO vErrorMessage;
|
||||||
|
|
||||||
CALL mail_insert( vMailTo, vMailTo, 'Error al fichar', vErrorMessage);
|
CALL mail_insert( vMailTo, vMailTo, 'Error al fichar', vErrorMessage);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
@ -98,6 +98,19 @@ BEGIN
|
||||||
WHERE b.workerFk = vWorkerFk
|
WHERE b.workerFk = vWorkerFk
|
||||||
AND vDated BETWEEN b.started AND IFNULL(b.ended, vDated);
|
AND vDated BETWEEN b.started AND IFNULL(b.ended, vDated);
|
||||||
|
|
||||||
|
SELECT EXISTS (
|
||||||
|
SELECT id FROM campaign
|
||||||
|
WHERE vTimed BETWEEN dated - INTERVAL scopeDays DAY
|
||||||
|
AND dated + INTERVAL vLongWeekBreak SECOND
|
||||||
|
) INTO vIsCampaing;
|
||||||
|
|
||||||
|
IF vIsCampaing THEN
|
||||||
|
SET vWeekScope = vWeekScope * 2;
|
||||||
|
ELSE
|
||||||
|
SET vLongWeekBreak = vShortWeekBreak,
|
||||||
|
vMaxWorkLongCycle = vMaxWorkShortCycle;
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- CONTRATO EN VIGOR
|
-- CONTRATO EN VIGOR
|
||||||
IF vDayBreak IS NULL THEN
|
IF vDayBreak IS NULL THEN
|
||||||
SET vErrorCode = 'INACTIVE_BUSINESS';
|
SET vErrorCode = 'INACTIVE_BUSINESS';
|
||||||
|
@ -105,7 +118,7 @@ BEGIN
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- FICHADAS A FUTURO
|
-- FICHADAS A FUTURO
|
||||||
IF vTimed > util.VN_NOW() + INTERVAL 1 MINUTE THEN
|
IF vTimed > util.VN_NOW() + INTERVAL 1 MINUTE THEN
|
||||||
SET vErrorCode = 'IS_NOT_ALLOWED_FUTURE';
|
SET vErrorCode = 'IS_NOT_ALLOWED_FUTURE';
|
||||||
CALL util.throw(vErrorCode);
|
CALL util.throw(vErrorCode);
|
||||||
END IF;
|
END IF;
|
||||||
|
@ -142,7 +155,7 @@ BEGIN
|
||||||
SET vErrorCode = 'WRONG_DIRECTION';
|
SET vErrorCode = 'WRONG_DIRECTION';
|
||||||
IF(SELECT option1 IS NULL AND option2 IS NULL
|
IF(SELECT option1 IS NULL AND option2 IS NULL
|
||||||
FROM tmp.workerTimeControlDirection) THEN
|
FROM tmp.workerTimeControlDirection) THEN
|
||||||
|
|
||||||
SET vErrorCode = 'DAY_MAX_TIME';
|
SET vErrorCode = 'DAY_MAX_TIME';
|
||||||
END IF;
|
END IF;
|
||||||
CALL util.throw(vErrorCode);
|
CALL util.throw(vErrorCode);
|
||||||
|
@ -229,40 +242,35 @@ BEGIN
|
||||||
ORDER BY timed ASC
|
ORDER BY timed ASC
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
|
|
||||||
IF (vDirection ='in'
|
IF (vDirection ='in'
|
||||||
AND vNextDirection = 'out'
|
AND vNextDirection = 'out'
|
||||||
AND UNIX_TIMESTAMP(vNextOut) - UNIX_TIMESTAMP(vTimed) > vDayMaxTime) OR
|
AND UNIX_TIMESTAMP(vNextOut) - UNIX_TIMESTAMP(vTimed) > vDayMaxTime) OR
|
||||||
(vDirection ='out'
|
(vDirection ='out'
|
||||||
AND vLastDirection = 'in'
|
AND vLastDirection = 'in'
|
||||||
AND UNIX_TIMESTAMP(vTimed) -UNIX_TIMESTAMP(vLastIn) > vDayMaxTime) THEN
|
AND UNIX_TIMESTAMP(vTimed) -UNIX_TIMESTAMP(vLastIn) > vDayMaxTime) THEN
|
||||||
SET vErrorCode = 'DAY_MAX_TIME';
|
SET vErrorCode = 'DAY_MAX_TIME';
|
||||||
CALL util.throw(vErrorCode);
|
CALL util.throw(vErrorCode);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
SELECT EXISTS (
|
|
||||||
SELECT id FROM campaign
|
|
||||||
WHERE vTimed BETWEEN dated - INTERVAL scopeDays DAY AND dated
|
|
||||||
) INTO vIsCampaing;
|
|
||||||
|
|
||||||
-- VERIFICA DESCANSO SEMANAL
|
-- VERIFICA DESCANSO SEMANAL
|
||||||
WITH wtc AS(
|
WITH wtc AS(
|
||||||
(SELECT timed
|
(SELECT timed
|
||||||
FROM vn.workerTimeControl
|
FROM vn.workerTimeControl
|
||||||
WHERE userFk = vWorkerFk
|
WHERE userFk = vWorkerFk
|
||||||
AND direction IN ('in', 'out')
|
AND direction IN ('in', 'out')
|
||||||
AND timed BETWEEN vTimed - INTERVAL (vWeekScope * 2) SECOND
|
AND timed BETWEEN vTimed - INTERVAL vWeekScope SECOND
|
||||||
AND vTimed + INTERVAL (vWeekScope * 2) SECOND )
|
AND vTimed + INTERVAL vWeekScope SECOND)
|
||||||
UNION
|
UNION
|
||||||
(SELECT vTimed)
|
(SELECT vTimed)
|
||||||
), wtcGap AS(
|
), wtcGap AS(
|
||||||
SELECT timed,
|
SELECT timed,
|
||||||
TIMESTAMPDIFF(SECOND, LAG(timed) OVER (ORDER BY timed), timed) gap
|
TIMESTAMPDIFF(SECOND, LAG(timed) OVER (ORDER BY timed), timed) gap
|
||||||
FROM wtc
|
FROM wtc
|
||||||
ORDER BY timed
|
ORDER BY timed
|
||||||
), wtcBreak AS(
|
), wtcBreak AS(
|
||||||
SELECT timed,
|
SELECT timed,
|
||||||
IF(IFNULL(gap, 0) > vShortWeekBreak, TRUE, FALSE) hasShortBreak,
|
IF(IFNULL(gap, 0) > vShortWeekBreak, TRUE, FALSE) hasShortBreak,
|
||||||
IF(IFNULL(gap, 0) > vLongWeekBreak AND NOT vIsCampaing, TRUE, FALSE) hasLongBreak
|
IF(IFNULL(gap, 0) > vLongWeekBreak, TRUE, FALSE) hasLongBreak
|
||||||
FROM wtcGap
|
FROM wtcGap
|
||||||
ORDER BY timed
|
ORDER BY timed
|
||||||
), wtcBreakCounter AS(
|
), wtcBreakCounter AS(
|
||||||
|
@ -270,8 +278,8 @@ BEGIN
|
||||||
SUM(hasShortBreak) OVER (ORDER BY timed) breakCounter ,
|
SUM(hasShortBreak) OVER (ORDER BY timed) breakCounter ,
|
||||||
LEAD(hasLongBreak) OVER (ORDER BY timed) nextHasLongBreak
|
LEAD(hasLongBreak) OVER (ORDER BY timed) nextHasLongBreak
|
||||||
FROM wtcBreak
|
FROM wtcBreak
|
||||||
)SELECT TIMESTAMPDIFF(SECOND, MIN(timed), MAX(timed)) > vMaxWorkLongCycle OR
|
)SELECT TIMESTAMPDIFF(SECOND, MIN(timed), MAX(timed)) > vMaxWorkLongCycle OR
|
||||||
(TIMESTAMPDIFF(SECOND, MIN(timed), MAX(timed)) > vMaxWorkShortCycle
|
(TIMESTAMPDIFF(SECOND, MIN(timed), MAX(timed)) > vMaxWorkShortCycle
|
||||||
AND NOT SUM(IFNULL(nextHasLongBreak, 1)))
|
AND NOT SUM(IFNULL(nextHasLongBreak, 1)))
|
||||||
hasError INTO vIsError
|
hasError INTO vIsError
|
||||||
FROM wtcBreakCounter
|
FROM wtcBreakCounter
|
||||||
|
|
Loading…
Reference in New Issue