62 lines
1.5 KiB
MySQL
62 lines
1.5 KiB
MySQL
|
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 ;
|