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;
|
|
|
|
DECLARE vNextRoadmapId INT;
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
SELECT AUTO_INCREMENT INTO vNextRoadmapId
|
|
|
|
FROM information_schema.tables
|
|
|
|
WHERE table_name = 'roadmap'
|
|
|
|
AND table_schema = 'vn';
|
|
|
|
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.roadmapsToCopy
|
|
|
|
ENGINE = MEMORY
|
|
|
|
SELECT ROW_NUMBER() OVER(ORDER BY id) rowOrder,
|
|
|
|
id,
|
|
|
|
`name`,
|
|
|
|
roadmapAddressFk,
|
|
|
|
etd,
|
|
|
|
eta,
|
|
|
|
observations,
|
|
|
|
price
|
|
|
|
FROM roadmap
|
|
|
|
WHERE etd BETWEEN vDateToCopy AND util.dayEnd(vDateToCopy);
|
|
|
|
|
|
|
|
INSERT INTO roadmap (`name`, roadmapAddressFk, etd, eta, observations, price)
|
|
|
|
SELECT `name`,
|
|
|
|
roadmapAddressFk,
|
|
|
|
etd + INTERVAL vDaysDiff DAY,
|
|
|
|
eta + INTERVAL vDaysDiff DAY,
|
|
|
|
observations,
|
|
|
|
price
|
|
|
|
FROM tmp.roadmapsToCopy;
|
|
|
|
|
|
|
|
INSERT INTO roadmapStop (roadmapFk, roadmapAddressFk, eta, `description`, bufferFk)
|
|
|
|
SELECT (rtc.rowOrder - 1) + vNextRoadmapId,
|
|
|
|
rs.roadmapAddressFk,
|
|
|
|
rs.eta + INTERVAL vDaysDiff DAY,
|
|
|
|
rs.description,
|
|
|
|
rs.bufferFk
|
|
|
|
FROM tmp.roadmapsToCopy rtc
|
|
|
|
JOIN roadmapStop rs ON rs.roadmapFk = rtc.id;
|
|
|
|
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
DROP TEMPORARY TABLE tmp.roadmapsToCopy;
|
|
|
|
END$$
|
|
|
|
DELIMITER ;
|