feat: refs #8227 Update roadmap triggers to manage eta adjustments and prevent recursive calls #3428

Merged
guillermo merged 8 commits from 8227-roadmapChanges into test 2025-02-14 10:54:19 +00:00
4 changed files with 65 additions and 22 deletions
Showing only changes of commit e19e50de14 - Show all commits

View File

@ -19,6 +19,9 @@ BEGIN
CALL util.throw('Departure time can not be after arrival time');
END IF;
IF @roadmapTriggerIsActive IS NULL THEN
SET @roadmapTriggerIsActive = TRUE;
SELECT MAX(eta) INTO vMaxEta
FROM roadmapStop
WHERE roadmapFk = NEW.roadmapFk
@ -37,6 +40,10 @@ BEGIN
SET eta = vMaxEta
WHERE id = NEW.roadmapFk;
END IF;
SET @roadmapTriggerIsActive = NULL;
END IF;
END IF;
END$$
DELIMITER ;

View File

@ -1,17 +1,26 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate`
AFTER UPDATE ON `roadmap`
FOR EACH ROW
AFTER UPDATE ON `roadmap`
FOR EACH ROW
BEGIN
DECLARE vSeconds INT;
IF @roadmapTriggerIsActive IS NULL THEN
SET @roadmapTriggerIsActive = TRUE;
IF NOT (NEW.etd <=> OLD.etd) THEN
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
UPDATE roadmapStop
UPDATE vn.roadmapStop
SET eta = eta + INTERVAL vSeconds SECOND
WHERE roadmapFk = NEW.id;
SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND;
END IF;
END IF;
SET @roadmapTriggerIsActive = NULL;
END IF;
END$$
DELIMITER ;

View File

@ -3,6 +3,8 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_beforeUpdate`
BEFORE UPDATE ON `roadmap`
FOR EACH ROW
BEGIN
DECLARE vSeconds INT;
SET NEW.editorFk = account.myUser_getId();
IF NOT (NEW.name <=> OLD.name) THEN
@ -37,5 +39,23 @@ BEGIN
FROM worker w
WHERE w.id = NEW.driverChangeFk);
END IF;
IF @trigger_active IS NULL THEN
SET @trigger_active = TRUE;
IF NOT (NEW.etd <=> OLD.etd) THEN
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
guillermo marked this conversation as resolved Outdated

IF vSeconds <> 0 THEN
amb açò suficient

`IF vSeconds <> 0 THEN` amb açò suficient
UPDATE vn.roadmapStop
SET eta = eta + INTERVAL vSeconds SECOND
WHERE roadmapFk = NEW.id;
SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND;
END IF;
END IF;
SET @trigger_active = NULL;
END IF;
END$$
DELIMITER ;

View File

@ -0,0 +1,7 @@
ALTER TABLE vn.roadmap
MODIFY COLUMN dollyPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL COMMENT
'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción';
GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss;
ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;