48 lines
1.2 KiB
SQL
48 lines
1.2 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_transfer`(
|
|
vItemShelvingFk INT,
|
|
vShelvingFk VARCHAR(10)
|
|
)
|
|
BEGIN
|
|
/**
|
|
* Transfiere producto de una ubicación a otra, fusionando si coincide el
|
|
* packing y la fecha.
|
|
*
|
|
* @param vItemShelvingFk Identificador de itemShelving
|
|
* @param vShelvingFk Identificador de shelving
|
|
*/
|
|
DECLARE vNewItemShelvingFk INT DEFAULT 0;
|
|
|
|
SELECT MAX(ish.id)
|
|
INTO vNewItemShelvingFk
|
|
FROM itemShelving ish
|
|
JOIN (
|
|
SELECT
|
|
itemFk,
|
|
packing,
|
|
created,
|
|
buyFk
|
|
FROM itemShelving
|
|
WHERE id = vItemShelvingFk
|
|
) ish2 ON ish2.itemFk = ish.itemFk
|
|
AND ish2.packing = ish.packing
|
|
AND date(ish2.created) = date(ish.created)
|
|
AND ish2.buyFk = ish.buyFk
|
|
WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci;
|
|
|
|
IF vNewItemShelvingFk THEN
|
|
UPDATE itemShelving ish
|
|
JOIN itemShelving ish2 ON ish2.id = vItemShelvingFk
|
|
SET ish.visible = ish.visible + ish2.visible
|
|
WHERE ish.id = vNewItemShelvingFk;
|
|
|
|
DELETE FROM itemShelving
|
|
WHERE id = vItemShelvingFk;
|
|
ELSE
|
|
UPDATE itemShelving
|
|
SET shelvingFk = vShelvingFk
|
|
WHERE id = vItemShelvingFk;
|
|
END IF;
|
|
SELECT true;
|
|
END$$
|
|
DELIMITER ; |