2025-01-24 10:20:16 +00:00
|
|
|
DELIMITER $$
|
|
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`roadmap_cloneDay`(
|
|
|
|
vDateToCopy DATE,
|
|
|
|
vDateToPaste DATE
|
|
|
|
)
|
|
|
|
BEGIN
|
|
|
|
/**
|
|
|
|
* Clona roadmaps de un día a otro, incluyendo las paradas y sin algunos
|
|
|
|
* campos de la tabla principal, como matrículas, conductores...
|
|
|
|
*
|
|
|
|
* @param vDateToCopy Fecha para copiar
|
|
|
|
* @param vDateToPaste Fecha para pegar
|
|
|
|
*/
|
|
|
|
DECLARE vDaysDiff INT;
|
2025-02-04 07:27:21 +00:00
|
|
|
DECLARE vRoadmapFk INT;
|
|
|
|
DECLARE vNewRoadmapFk INT;
|
|
|
|
DECLARE vDone BOOL DEFAULT FALSE;
|
|
|
|
DECLARE vRoadmaps CURSOR FOR
|
|
|
|
SELECT id
|
|
|
|
FROM roadmap
|
|
|
|
WHERE etd BETWEEN vDateToCopy AND util.dayEnd(vDateToCopy);
|
2025-01-24 10:20:16 +00:00
|
|
|
|
2025-02-04 07:27:21 +00:00
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
2025-01-24 10:20:16 +00:00
|
|
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
|
|
BEGIN
|
|
|
|
ROLLBACK;
|
|
|
|
RESIGNAL;
|
|
|
|
END;
|
|
|
|
|
|
|
|
SET vDaysDiff = DATEDIFF(vDateToPaste, vDateToCopy);
|
|
|
|
|
2025-01-27 10:04:34 +00:00
|
|
|
IF vDaysDiff IS NULL THEN
|
2025-01-24 10:20:16 +00:00
|
|
|
CALL util.throw("No valid dates");
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
START TRANSACTION;
|
|
|
|
|
2025-02-04 07:27:21 +00:00
|
|
|
OPEN vRoadmaps;
|
|
|
|
l: LOOP
|
|
|
|
SET vDone = FALSE;
|
|
|
|
FETCH vRoadmaps INTO vRoadmapFk;
|
2025-01-24 10:20:16 +00:00
|
|
|
|
2025-02-04 07:27:21 +00:00
|
|
|
IF vDone THEN
|
|
|
|
LEAVE l;
|
|
|
|
END IF;
|
2025-01-24 10:20:16 +00:00
|
|
|
|
|
|
|
INSERT INTO roadmap (`name`, roadmapAddressFk, etd, eta, observations, price)
|
|
|
|
SELECT `name`,
|
|
|
|
roadmapAddressFk,
|
|
|
|
etd + INTERVAL vDaysDiff DAY,
|
|
|
|
eta + INTERVAL vDaysDiff DAY,
|
|
|
|
observations,
|
|
|
|
price
|
2025-02-04 07:27:21 +00:00
|
|
|
FROM roadmap
|
|
|
|
WHERE id = vRoadmapFk;
|
|
|
|
|
|
|
|
SET vNewRoadmapFk = LAST_INSERT_ID();
|
2025-01-24 10:20:16 +00:00
|
|
|
|
|
|
|
INSERT INTO roadmapStop (roadmapFk, roadmapAddressFk, eta, `description`, bufferFk)
|
2025-02-04 07:27:21 +00:00
|
|
|
SELECT vNewRoadmapFk,
|
|
|
|
roadmapAddressFk,
|
|
|
|
eta + INTERVAL vDaysDiff DAY,
|
|
|
|
`description`,
|
|
|
|
bufferFk
|
|
|
|
FROM roadmapStop
|
|
|
|
WHERE roadmapFk = vRoadmapFk;
|
|
|
|
END LOOP;
|
|
|
|
CLOSE vRoadmaps;
|
2025-01-24 10:20:16 +00:00
|
|
|
|
|
|
|
COMMIT;
|
|
|
|
END$$
|
|
|
|
DELIMITER ;
|