52 lines
1.4 KiB
SQL
52 lines
1.4 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`packingSite_startCollection`(vSelf INT, vTicketFk INT)
|
|
proc: BEGIN
|
|
/**
|
|
* @param vSelf packingSite id
|
|
* @param vTicketFk A ticket id from the collection to start
|
|
*/
|
|
DECLARE vExists BOOL;
|
|
DECLARE vIsAdvanced BOOL;
|
|
DECLARE vNewCollectionFk INT;
|
|
DECLARE vOldCollectionFk INT;
|
|
DECLARE vIsPackingByOther BOOL;
|
|
|
|
SELECT id, collectionFk
|
|
INTO vExists, vOldCollectionFk
|
|
FROM packingSite
|
|
WHERE id = vSelf;
|
|
|
|
IF NOT vExists THEN
|
|
CALL util.throw('packingSiteNotExists');
|
|
END IF;
|
|
|
|
SELECT COUNT(*) > 0
|
|
INTO vIsAdvanced
|
|
FROM packingSiteAdvanced
|
|
WHERE ticketFk = vTicketFk;
|
|
|
|
IF vIsAdvanced THEN
|
|
LEAVE proc;
|
|
END IF;
|
|
|
|
SELECT collectionFk INTO vNewCollectionFk
|
|
FROM ticketCollection WHERE ticketFk = vTicketFk;
|
|
|
|
IF vOldCollectionFk IS NOT NULL
|
|
AND vOldCollectionFk <> vNewCollectionFk THEN
|
|
SELECT COUNT(*) > 0
|
|
INTO vIsPackingByOther
|
|
FROM packingSite
|
|
WHERE id <> vSelf
|
|
AND collectionFk = vOldCollectionFk;
|
|
|
|
IF NOT vIsPackingByOther AND NOT collection_isPacked(vOldCollectionFk) THEN
|
|
CALL util.throw('cannotChangeCollection');
|
|
END IF;
|
|
END IF;
|
|
|
|
UPDATE packingSite SET collectionFk = vNewCollectionFk
|
|
WHERE id = vSelf;
|
|
END$$
|
|
DELIMITER ;
|