49 lines
1.1 KiB
MySQL
49 lines
1.1 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_clone`(vSelf INT, vDays INT, OUT vNewTravelFk INT)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Clona un travel el número de dias indicado y devuelve su id.
|
||
|
*
|
||
|
* @param vSelf Identificador de vn.travel
|
||
|
* @param vDays Número de dias a futuro
|
||
|
* @return vNewTravelFk Nuevo número de travel
|
||
|
*/
|
||
|
SELECT tr.id INTO vNewTravelFk
|
||
|
FROM vn.travel tr
|
||
|
JOIN vn.travel tr2 USING(shipped, warehouseInFk, warehouseOutFk, agencyModeFk, `ref`)
|
||
|
WHERE tr2.id = vSelf
|
||
|
AND tr.landed = TIMESTAMPADD(DAY, vDays, tr2.landed);
|
||
|
|
||
|
IF ISNULL(vNewTravelFk) THEN
|
||
|
START TRANSACTION;
|
||
|
|
||
|
INSERT INTO vn.travel( shipped,
|
||
|
shipmentHour,
|
||
|
landed,
|
||
|
landingHour,
|
||
|
warehouseInFk,
|
||
|
warehouseOutFk,
|
||
|
agencyModeFk,
|
||
|
`ref`,
|
||
|
cargoSupplierFk,
|
||
|
clonedFrom)
|
||
|
SELECT shipped,
|
||
|
shipmentHour,
|
||
|
TIMESTAMPADD(DAY, vDays, landed),
|
||
|
landingHour,
|
||
|
warehouseInFk,
|
||
|
warehouseOutFk,
|
||
|
agencyModeFk,
|
||
|
`ref`,
|
||
|
cargoSupplierFk,
|
||
|
vSelf
|
||
|
FROM vn.travel
|
||
|
WHERE id = vSelf;
|
||
|
|
||
|
SELECT LAST_INSERT_ID() INTO vNewTravelFk;
|
||
|
|
||
|
COMMIT;
|
||
|
END IF;
|
||
|
END$$
|
||
|
DELIMITER ;
|