58 lines
1.5 KiB
MySQL
58 lines
1.5 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_DelayTruckSplit`(vTicketFk INT)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Splita las lineas de ticket que no estan ubicadas
|
||
|
*
|
||
|
* @param vTicketFk Id ticket
|
||
|
*/
|
||
|
DECLARE vNewTicketFk INT;
|
||
|
DECLARE vTotalLines INT;
|
||
|
DECLARE vLinesToSplit INT;
|
||
|
|
||
|
DROP TEMPORARY TABLE IF EXISTS tmp.SalesToSplit;
|
||
|
|
||
|
SELECT COUNT(*) INTO vTotalLines
|
||
|
FROM sale
|
||
|
WHERE ticketFk = vTicketFk;
|
||
|
|
||
|
CREATE TEMPORARY TABLE tmp.SalesToSplit
|
||
|
SELECT s.id saleFk
|
||
|
FROM ticket t
|
||
|
JOIN sale s ON t.id = s.ticketFk
|
||
|
LEFT JOIN (
|
||
|
SELECT ish.itemFk itemFk,
|
||
|
SUM(ish.visible) visible,
|
||
|
s.warehouseFk warehouseFk
|
||
|
FROM itemShelving ish
|
||
|
JOIN shelving sh ON sh.code = ish.shelvingFk
|
||
|
JOIN parking p ON p.id = sh.parkingFk
|
||
|
JOIN sector s ON s.id = p.sectorFk
|
||
|
GROUP BY ish.itemFk,
|
||
|
s.warehouseFk
|
||
|
) issw ON issw.itemFk = s.itemFk
|
||
|
AND issw.warehouseFk = t.warehouseFk
|
||
|
WHERE s.quantity > IFNULL(issw.visible, 0)
|
||
|
AND s.quantity > 0
|
||
|
AND NOT s.isPicked
|
||
|
AND NOT s.reserved
|
||
|
AND t.id = vTicketFk;
|
||
|
|
||
|
SELECT COUNT(*) INTO vLinesToSplit
|
||
|
FROM tmp.SalesToSplit;
|
||
|
|
||
|
IF vLinesToSplit = vTotalLines AND vLinesToSplit > 0 THEN
|
||
|
SET vNewTicketFk = vTicketFk;
|
||
|
ELSE
|
||
|
CALL ticket_Clone(vTicketFk, vNewTicketFk);
|
||
|
UPDATE sale s
|
||
|
JOIN tmp.SalesToSplit sts ON sts.saleFk = s.id
|
||
|
SET s.ticketFk = vNewTicketFk;
|
||
|
END IF;
|
||
|
|
||
|
CALL ticketStateUpdate(vNewTicketFk, 'FIXING');
|
||
|
|
||
|
DROP TEMPORARY TABLE tmp.SalesToSplit;
|
||
|
END$$
|
||
|
DELIMITER ;
|