salix/db/routines/vn/procedures/itemShelving_transfer.sql

57 lines
1.5 KiB
MySQL
Raw Normal View History

DELIMITER $$
2024-08-20 08:06:10 +00:00
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_transfer`(
vItemShelvingFk INT,
2024-11-13 08:03:44 +00:00
vShelvingCode VARCHAR(10)
)
BEGIN
/**
2024-09-03 05:45:25 +00:00
* Transfiere producto de una ubicación a otra
* fusionando si coincide el packing y la fecha.
*
* @param vItemShelvingFk Identificador de itemShelving
2024-11-13 08:03:44 +00:00
* @param vShelvingCode Código de shelving
*/
2024-09-03 05:45:25 +00:00
DECLARE vNewItemShelvingFk INT;
2024-11-13 08:03:44 +00:00
DECLARE vShelvingFk INT;
SELECT id INTO vShelvingFk
FROM shelving
WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
2024-09-03 05:45:25 +00:00
SELECT MAX(ish.id) INTO vNewItemShelvingFk
FROM itemShelving ish
JOIN (
2024-09-03 05:45:25 +00:00
SELECT itemFk,
packing,
created,
buyFk
FROM itemShelving
WHERE id = vItemShelvingFk
) ish2 ON ish2.itemFk = ish.itemFk
AND ish2.packing = ish.packing
2024-09-03 05:45:25 +00:00
AND DATE(ish2.created) = DATE(ish.created)
2024-02-06 12:31:58 +00:00
AND ish2.buyFk = ish.buyFk
2024-11-13 08:03:44 +00:00
WHERE ish.shelvingFk = vShelvingFk;
IF vNewItemShelvingFk THEN
UPDATE itemShelving ish
JOIN itemShelving ish2 ON ish2.id = vItemShelvingFk
2024-09-24 14:48:48 +00:00
SET ish.visible = ish.visible + ish2.visible,
ish.available = ish.available + ish2.available
WHERE ish.id = vNewItemShelvingFk;
DELETE FROM itemShelving
WHERE id = vItemShelvingFk;
ELSE
2024-11-13 08:03:44 +00:00
IF (SELECT EXISTS(SELECT id FROM shelving WHERE id = vShelvingFk)) THEN
2024-09-03 05:45:25 +00:00
UPDATE itemShelving
SET shelvingFk = vShelvingFk
WHERE id = vItemShelvingFk;
ELSE
CALL util.throw('The shelving not exists');
END IF;
END IF;
2024-09-03 05:45:25 +00:00
SELECT TRUE;
END$$
2024-09-03 05:45:25 +00:00
DELIMITER ;