62 lines
1.5 KiB
SQL
62 lines
1.5 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `srt`.`expedition_in`(vBufferFk INT, OUT vExpeditionFk INT)
|
|
proc:BEGIN
|
|
|
|
/**
|
|
* Ha entrado una caja en un buffer, por la zona de descarga.
|
|
*
|
|
* @param vBufferFk Identificador de srt.buffer
|
|
*
|
|
* @return vExpeditionFk Identificador de srt.expedition *
|
|
*/
|
|
|
|
DECLARE vMaxPosition INT;
|
|
DECLARE vIsBufferFull BOOL;
|
|
DECLARE vBufferTypeFk INT;
|
|
DECLARE vBufferStateFk INT;
|
|
|
|
SELECT el.expeditionFk INTO vExpeditionFk
|
|
FROM srt.expeditionLoading el
|
|
WHERE el.bufferFk = vBufferFk
|
|
ORDER BY id
|
|
LIMIT 1;
|
|
|
|
IF vExpeditionFk THEN
|
|
|
|
DELETE FROM srt.expeditionLoading
|
|
WHERE expeditionFk = vExpeditionFk;
|
|
|
|
-- SET vExpeditionFk = srt.expedition_check(vExpeditionFk);
|
|
|
|
INSERT INTO srt.expeditionLog (expeditionFk, bufferFk, `action`)
|
|
VALUES(vExpeditionFk, vBufferFk, 'IN');
|
|
|
|
SELECT MAX(e.position) INTO vMaxPosition
|
|
FROM srt.expedition e
|
|
WHERE e.bufferFk = vBufferFk;
|
|
|
|
UPDATE srt.expedition e
|
|
JOIN srt.expeditionState es ON es.description = 'STORED'
|
|
SET e.bufferFk = vBufferFk,
|
|
e.`position` = IFNULL(vMaxPosition,0) + 1,
|
|
e.stateFk = es.id
|
|
WHERE e.id = vExpeditionFk;
|
|
|
|
SELECT bfl.freeLength < c.freeLength * 2 INTO vIsBufferFull
|
|
FROM srt.bufferFreeLength bfl
|
|
JOIN srt.config c
|
|
WHERE bfl.bufferFk = vBufferFk;
|
|
|
|
IF vIsBufferFull THEN
|
|
|
|
CALL srt.buffer_setStateType(vBufferFk, 'FREE','ACCUMULATION');
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
END$$
|
|
DELIMITER ;
|