This commit is contained in:
Sergio De la torre 2023-06-14 13:15:37 +02:00
parent c62e6fa0eb
commit 927c0fddc6
1 changed files with 36 additions and 28 deletions

View File

@ -12,7 +12,7 @@ INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `pri
VALUES VALUES
('PackingSiteAdvanced', '*', '*', 'ALLOW', 'ROLE', 'production'); ('PackingSiteAdvanced', '*', '*', 'ALLOW', 'ROLE', 'production');
DROP PROCEDURE IF EXISTS `vn`.`packingSite_startCollection`; DROP PROCEDURE IF EXISTS `vn`.`packingSite_startCollection`;
DELIMITER $$ DELIMITER $$
$$ $$
@ -22,40 +22,48 @@ proc: BEGIN
* @param vSelf packingSite id * @param vSelf packingSite id
* @param vTicketFk A ticket id from the collection to start * @param vTicketFk A ticket id from the collection to start
*/ */
DECLARE vNewCollectionFk INT; DECLARE vExists BOOL;
DECLARE vIsAdvanced BOOL; DECLARE vIsAdvanced BOOL;
DECLARE vOldCollectionFk INT; DECLARE vNewCollectionFk INT;
DECLARE vIsPackingByOther BOOL; DECLARE vOldCollectionFk INT;
DECLARE vIsPackingByOther BOOL;
SELECT COUNT(*) > 0 SELECT id, collectionFk
INTO vIsAdvanced INTO vExists, vOldCollectionFk
FROM packingSiteAdvanced FROM packingSite
WHERE ticketFk = vTicketFk; WHERE id = vSelf;
IF vIsAdvanced THEN IF NOT vExists THEN
LEAVE proc; CALL util.throw('packingSiteNotExists');
END IF; END IF;
SELECT collectionFk INTO vNewCollectionFk SELECT COUNT(*) > 0
FROM ticketCollection WHERE ticketFk = vTicketFk; INTO vIsAdvanced
FROM packingSiteAdvanced
WHERE ticketFk = vTicketFk;
SELECT collectionFk INTO vOldCollectionFk IF vIsAdvanced THEN
FROM packingSite WHERE id = vSelf; LEAVE proc;
END IF;
IF NOT (vOldCollectionFk <=> vNewCollectionFk) THEN SELECT collectionFk INTO vNewCollectionFk
SELECT COUNT(*) > 0 FROM ticketCollection WHERE ticketFk = vTicketFk;
INTO vIsPackingByOther
FROM packingSite
WHERE id <> vSelf
AND collectionFk = vOldCollectionFk;
IF NOT vIsPackingByOther AND NOT collection_isPacked(vOldCollectionFk) AND vSelf IS NOT NULL THEN IF vOldCollectionFk IS NOT NULL
CALL util.throw('cannotChangeCollection'); AND vOldCollectionFk <> vNewCollectionFk THEN
END IF; SELECT COUNT(*) > 0
END IF; INTO vIsPackingByOther
FROM packingSite
WHERE id <> vSelf
AND collectionFk = vOldCollectionFk;
UPDATE packingSite SET collectionFk = vNewCollectionFk IF NOT vIsPackingByOther AND NOT collection_isPacked(vOldCollectionFk) THEN
WHERE id = vSelf; CALL util.throw('cannotChangeCollection');
END IF;
END IF;
UPDATE packingSite SET collectionFk = vNewCollectionFk
WHERE id = vSelf;
END$$ END$$
DELIMITER ; DELIMITER ;