feat: previas con sitema de reservas refs #6861
gitea/salix/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Carlos Andrés 2024-06-11 12:44:25 +02:00
parent 32aafc3545
commit ed7218c133
10 changed files with 94 additions and 111 deletions

View File

@ -48,21 +48,14 @@ BEGIN
IF vAvailable < vQuantity THEN IF vAvailable < vQuantity THEN
SET vHasThrow = TRUE; SET vHasThrow = TRUE;
SELECT vAvailable, vQuantity;
ELSE ELSE
START TRANSACTION;
SELECT `name`, SELECT `name`,
CONCAT(getUser(), ' ', DATE_FORMAT(util.VN_NOW(), '%H:%i'), ' ', name) CONCAT(getUser(), ' ', DATE_FORMAT(util.VN_NOW(), '%H:%i'), ' ', name)
INTO vItemName, vConcept INTO vItemName, vConcept
FROM item FROM item
WHERE id = vItemFk; WHERE id = vItemFk;
INSERT INTO ticketLog START TRANSACTION;
SET originFk = vTicketFk,
userFk = getUser(),
`action` = 'update',
`description` = CONCAT('Añadido articulo ', vItemName, ' cantidad:', vQuantity);
INSERT INTO sale INSERT INTO sale
SET itemFk = vItemFk, SET itemFk = vItemFk,
@ -88,8 +81,9 @@ BEGIN
INSERT INTO saleGroupDetail INSERT INTO saleGroupDetail
SET saleFk = vSaleFk, SET saleFk = vSaleFk,
saleGroupFk = vSaleGroupFk; saleGroupFk = vSaleGroupFk;
END IF;
COMMIT; COMMIT;
END IF; END IF;
END IF ;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -1,11 +1,14 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_getAssigned`( CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_getAssigned`(
vUserFk INT, vUserFk INT,
OUT vCollectionFk INT) OUT vCollectionFk INT
proc:BEGIN )
/* Comprueba si existen colecciones libres que se ajustan al perfil del usuario BEGIN
/**
* Comprueba si existen colecciones libres que se ajustan al perfil del usuario
* y le asigna la más antigua. * y le asigna la más antigua.
* Añade un registro al semillero de colecciones y hace la reserva para la colección * Añade un registro al semillero de colecciones y hace la reserva para la colección
*
* @param vUserFk Id de usuario * @param vUserFk Id de usuario
* @param vCollectionFk Id de colección * @param vCollectionFk Id de colección
*/ */
@ -28,17 +31,16 @@ proc:BEGIN
CALL collection_get(vUserFk); CALL collection_get(vUserFk);
SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0,
collection_assign_lockname pc.collection_assign_lockname
INTO vHasTooMuchCollections, INTO vHasTooMuchCollections,
vLockName vLockName
FROM tCollection FROM tCollection tc
JOIN productionConfig pc; JOIN productionConfig pc;
DROP TEMPORARY TABLE tCollection; DROP TEMPORARY TABLE tCollection;
IF vHasTooMuchCollections THEN IF vHasTooMuchCollections THEN
CALL util.throw('Hay colecciones pendientes'); CALL util.throw('Hay colecciones pendientes');
LEAVE proc;
END IF; END IF;
SELECT warehouseFk, itemPackingTypeFk SELECT warehouseFk, itemPackingTypeFk

View File

@ -26,7 +26,7 @@ BEGIN
JOIN vn.saleTracking st ON st.saleFk = sa.saleFk JOIN vn.saleTracking st ON st.saleFk = sa.saleFk
JOIN vn.`state` s ON s.id = st.stateFk JOIN vn.`state` s ON s.id = st.stateFk
WHERE st.isChecked WHERE st.isChecked
AND s.semaphore = 1 AND s.`code` IN ('PREVIOUS_PREPARATION', 'OK PREVIOUS', 'OK STOWAWAY')
GROUP BY sa.saleFk GROUP BY sa.saleFk
) SELECT s.saleFk ) SELECT s.saleFk
FROM sales s FROM sales s

View File

@ -0,0 +1,50 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_moveReserv`(
vItemShelvingFk INT(10),
vItemFk INT(10)
)
BEGIN
/**
* Elimina reservas de un itemShelvingSale e intenta reservar en otra ubicación
*
* @param vItemShelvingFk Id itemShelving
*/
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
RESIGNAL;
END;
START TRANSACTION;
SELECT id INTO vItemShelvingFk
FROM itemShelving
WHERE id = vItemShelvingFk
AND FALSE
FOR UPDATE;
UPDATE itemShelving
SET visible = 0,
available = 0
WHERE id = vItemShelvingFk
AND itemFk = vItemFk;
INSERT INTO itemShelvingSaleReserv (saleFk)
SELECT DISTINCT iss.saleFk
FROM itemShelvingSale iss
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
WHERE iss.itemShelvingFk = vItemShelvingFk
AND ish.itemFk = vItemFk
AND NOT iss.isPicked;
DELETE iss
FROM itemShelvingSale iss
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
WHERE iss.itemShelvingFk = vItemShelvingFk
AND ish.itemFk = vItemFk
AND NOT iss.isPicked;
COMMIT;
CALL itemShelvingSale_doReserve();
END$$
DELIMITER ;

View File

@ -1,5 +1,5 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setSaleGroup`( CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setPicked`(
vSaleGroupFk INT(10) vSaleGroupFk INT(10)
) )
BEGIN BEGIN

View File

@ -46,10 +46,8 @@ BEGIN
CALL util.throw('La cantidad no puede distinta a la reserva'); CALL util.throw('La cantidad no puede distinta a la reserva');
END IF; END IF;
START TRANSACTION; START TRANSACTION;
UPDATE itemShelvingSale UPDATE itemShelvingSale
SET isPicked = TRUE, SET isPicked = TRUE,
quantity = vQuantity quantity = vQuantity
@ -62,41 +60,10 @@ BEGIN
FOR UPDATE; FOR UPDATE;
UPDATE itemShelving UPDATE itemShelving
SET visible = IF(vIsItemShelvingSaleEmpty, 0, GREATEST(0, visible - vQuantity)) SET visible = GREATEST(0, visible - vQuantity)
WHERE id = vItemShelvingFk; WHERE id = vItemShelvingFk;
COMMIT;
IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
UPDATE itemShelving
SET visible = 0,
available = 0
WHERE id = vItemShelvingFk
AND itemFk = vItemFk;
CALL itemShelvingSale_addBySale(vSaleFk);
START TRANSACTION;
INSERT INTO itemShelvingSaleReserv (saleFk)
SELECT DISTINCT iss.saleFk
FROM itemShelvingSale iss
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
WHERE iss.itemShelvingFk = vItemShelvingFk
AND ish.itemFk = vItemFk
AND NOT iss.isPicked;
DELETE iss
FROM itemShelvingSale iss
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
WHERE iss.itemShelvingFk = vItemShelvingFk
AND ish.itemFk = vItemFk
AND NOT iss.isPicked;
COMMIT;
CALL itemShelvingSale_doReserve();
END IF;
SELECT SUM(IF(isPicked, 0, quantity)), SUM(quantity) SELECT SUM(IF(isPicked, 0, quantity)), SUM(quantity)
INTO vRemainingQuantity, vTotalQuantity INTO vRemainingQuantity, vTotalQuantity
@ -104,8 +71,6 @@ BEGIN
WHERE saleFk = vSaleFk; WHERE saleFk = vSaleFk;
IF vRemainingQuantity = 0 THEN IF vRemainingQuantity = 0 THEN
START TRANSACTION;
CALL saleTracking_new( CALL saleTracking_new(
vSaleFk, vSaleFk,
TRUE, TRUE,
@ -119,8 +84,12 @@ BEGIN
SET s.quantity = vTotalQuantity, SET s.quantity = vTotalQuantity,
isPicked = TRUE isPicked = TRUE
WHERE s.id = vSaleFk; WHERE s.id = vSaleFk;
END IF;
COMMIT; COMMIT;
IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
CALL itemShelvingSale_moveReserv(vItemShelvingFk, vQuantity);
END IF; END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -1,7 +1,8 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingTransfer`( CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_transfer`(
vItemShelvingFk INT, vItemShelvingFk INT,
vShelvingFk VARCHAR(3)) vShelvingFk VARCHAR(10)
)
BEGIN BEGIN
/** /**
* Transfiere producto de una ubicación a otra, fusionando si coincide el * Transfiere producto de una ubicación a otra, fusionando si coincide el

View File

@ -1,5 +1,5 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollection_getPartial`() CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollection_getMyPartial`()
BEGIN BEGIN
/** /**
* Devuelve las colecciones del sector que corresponden al usuario conectado, y que estan incompletas * Devuelve las colecciones del sector que corresponden al usuario conectado, y que estan incompletas

View File

@ -2,28 +2,24 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION vn.sectorCollection_hasSalesReserved(vSelf INT) RETURNS tinyint(1) CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION vn.sectorCollection_hasSalesReserved(vSelf INT) RETURNS tinyint(1)
DETERMINISTIC DETERMINISTIC
BEGIN BEGIN
/** /**
* Devuelve si sectorCollection tiene reservas * Devuelve si sectorCollection tiene reservas
* @param vSelf Id de sectorCollection * @param vSelf Id de sectorCollection
* *
* returns BOOLEAN * returns BOOLEAN
*/ */
DECLARE vHasSalesReserved BOOLEAN; DECLARE vHasSalesReserved BOOLEAN;
SELECT DISTINCT COUNT(*) INTO vHasSalesReserved
SELECT DISTINCT COUNT(*)>0 INTO vHasSalesReserved FROM sectorCollection sc
FROM vn.sectorCollection sc JOIN sectorCollectionSaleGroup scsg ON sc.id = scsg.sectorCollectionFk
JOIN vn.sectorCollectionSaleGroup scsg ON sc.id = scsg.sectorCollectionFk JOIN saleGroup sg ON sg.id = scsg.saleGroupFk
JOIN vn.saleGroup sg ON sg.id = scsg.saleGroupFk JOIN saleGroupDetail sgd ON sgd.saleGroupFk = sg.id
JOIN vn.saleGroupDetail sgd ON sgd.saleGroupFk = sg.id JOIN sale s ON s.id = sgd.saleFk
JOIN vn.sale s ON s.id = sgd.saleFk JOIN itemShelvingSale iss ON iss.saleFk = s.id
JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id JOIN saleTracking st ON st.saleFk = s.id
JOIN vn.saleTracking st ON st.saleFk = s.id
WHERE sc.id = vSelf; WHERE sc.id = vSelf;
RETURN vHasSalesReserved; RETURN vHasSalesReserved;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -1,29 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_afterInsert`
AFTER INSERT ON `itemShelving`
FOR EACH ROW
BEGIN
INSERT INTO vn.itemShelvingLog(
itemShelvingFk,
workerFk,
accion,
itemFk,
shelvingFk,
visible,
`grouping`,
packing,
available
)
VALUES (
NEW.id,
NEW.userFk,
'CREA REGISTRO',
NEW.itemFk,
NEW.shelvingFk,
NEW.visible,
NEW.`grouping`,
NEW.packing,
NEW.available
);
END$$
DELIMITER ;