49 lines
1.1 KiB
SQL
49 lines
1.1 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_deleteAdded`(
|
|
vSelf INT(11)
|
|
)
|
|
proc: BEGIN
|
|
/**
|
|
* Borra una reservea devolviendo la cantidad al itemShelving
|
|
*
|
|
* @param vSelf Identificador del itemShelvingSale
|
|
*/
|
|
DECLARE vSaleFk INT;
|
|
DECLARE vHasSalesPicked BOOL;
|
|
|
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
BEGIN
|
|
ROLLBACK;
|
|
RESIGNAL;
|
|
END;
|
|
|
|
START TRANSACTION;
|
|
|
|
SELECT iss.saleFk INTO vSaleFk
|
|
FROM itemShelvingSale iss
|
|
JOIN sale s ON s.id = iss.saleFk
|
|
WHERE iss.id = vSelf AND s.isAdded
|
|
FOR UPDATE;
|
|
|
|
IF vSaleFk IS NULL THEN
|
|
CALL util.throw('The sale can not be deleted');
|
|
END IF;
|
|
|
|
SELECT COUNT(*) INTO vHasSalesPicked
|
|
FROM itemShelvingSale
|
|
WHERE saleFk = vSaleFk AND isPicked;
|
|
|
|
IF vHasSalesPicked THEN
|
|
CALL util.throw('A sale with picked sales cannot be deleted');
|
|
END IF;
|
|
|
|
UPDATE itemShelvingSale iss
|
|
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
|
|
SET ish.available = ish.available + iss.quantity
|
|
WHERE iss.saleFk = vSaleFk;
|
|
|
|
DELETE FROM sale WHERE id = vSaleFk;
|
|
|
|
COMMIT;
|
|
END$$
|
|
DELIMITER ; |