43 lines
1.2 KiB
SQL
43 lines
1.2 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getWarnings`()
|
|
BEGIN
|
|
/**
|
|
* Calcula las adventencias para un conjunto de tickets.
|
|
* Agrupados por ticket
|
|
*
|
|
* @table tmp.sale_getWarnings(ticketFk) Identificadores de los tickets a calcular
|
|
* @return tmp.ticket_warnings
|
|
*/
|
|
CREATE OR REPLACE TEMPORARY TABLE tSaleWarnings (
|
|
ticketFk INT(11),
|
|
saleFk INT(11),
|
|
isFragile INTEGER(1) DEFAULT 0,
|
|
PRIMARY KEY (ticketFk, saleFk)
|
|
) ENGINE = MEMORY;
|
|
|
|
-- Fragile
|
|
INSERT INTO tSaleWarnings(ticketFk, saleFk, isFragile)
|
|
SELECT tt.ticketFk, s.id, TRUE
|
|
FROM tmp.sale_getWarnings tt
|
|
LEFT JOIN sale s ON s.ticketFk = tt.ticketFk
|
|
LEFT JOIN item i ON i.id = s.itemFk
|
|
LEFT JOIN itemType it ON it.id = i.typeFk
|
|
LEFT JOIN agencyMode am ON am.id = tt.agencyModeFk
|
|
LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
|
|
WHERE dm.code IN ('AGENCY')
|
|
AND it.isFragile;
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_warnings
|
|
(PRIMARY KEY (ticketFk))
|
|
ENGINE = MEMORY
|
|
SELECT
|
|
sw.ticketFk,
|
|
MAX(sw.isFragile) AS isFragile
|
|
FROM tSaleWarnings sw
|
|
GROUP BY sw.ticketFk;
|
|
|
|
DROP TEMPORARY TABLE
|
|
tSaleWarnings;
|
|
END$$
|
|
DELIMITER ;
|