2023-06-14 08:51:22 +00:00
|
|
|
CREATE TABLE `vn`.`packingSiteAdvanced` (
|
|
|
|
`ticketFk` int(11),
|
|
|
|
`workerFk` int(10) unsigned,
|
|
|
|
PRIMARY KEY (`ticketFk`),
|
|
|
|
KEY `packingSiteAdvanced_FK_1` (`workerFk`),
|
|
|
|
CONSTRAINT `packingSiteAdvanced_FK` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
CONSTRAINT `packingSiteAdvanced_FK_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
|
|
|
|
VALUES
|
|
|
|
('PackingSiteAdvanced', '*', '*', 'ALLOW', 'ROLE', 'production');
|
|
|
|
|
2023-06-14 11:15:37 +00:00
|
|
|
DROP PROCEDURE IF EXISTS `vn`.`packingSite_startCollection`;
|
2023-06-14 08:51:22 +00:00
|
|
|
|
|
|
|
DELIMITER $$
|
|
|
|
$$
|
|
|
|
CREATE 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
|
|
|
|
*/
|
2023-06-14 11:15:37 +00:00
|
|
|
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;
|
2023-06-14 08:51:22 +00:00
|
|
|
END$$
|
|
|
|
DELIMITER ;
|
|
|
|
|
|
|
|
|
|
|
|
|