49 lines
1.4 KiB
SQL
49 lines
1.4 KiB
SQL
DROP PROCEDURE IF EXISTS `vn`.`ticket_getWarnings`;
|
|
|
|
DELIMITER $$
|
|
$$
|
|
CREATE 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
|
|
*/
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.sale_warnings;
|
|
CREATE TEMPORARY TABLE tmp.sale_warnings (
|
|
ticketFk INT(11),
|
|
saleFk INT(11),
|
|
isFragile INTEGER(1) DEFAULT 0,
|
|
PRIMARY KEY (ticketFk, saleFk)
|
|
) ENGINE = MEMORY;
|
|
|
|
-- Frágil
|
|
INSERT INTO tmp.sale_warnings(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 itemCategory ic ON ic.id = it.categoryFk
|
|
LEFT JOIN agencyMode am ON am.id = tt.agencyModeFk
|
|
LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
|
|
WHERE dm.code IN ('AGENCY')
|
|
AND (ic.code = 'plant' OR it.isFragile);
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_warnings;
|
|
CREATE TEMPORARY TABLE tmp.ticket_warnings
|
|
(PRIMARY KEY (ticketFk))
|
|
ENGINE = MEMORY
|
|
SELECT
|
|
sw.ticketFk,
|
|
MAX(sw.isFragile) AS isFragile
|
|
FROM tmp.sale_warnings sw
|
|
GROUP BY sw.ticketFk;
|
|
|
|
DROP TEMPORARY TABLE
|
|
tmp.sale_warnings;
|
|
END$$
|
|
DELIMITER ;
|