drop procedure `vn`.`ticket_getProblems`; DELIMITER $$ $$ create definer = root@`%` procedure `vn`.`ticket_getProblems`(IN vIsTodayRelative tinyint(1)) BEGIN /** * Calcula los problemas para un conjunto de tickets. * Agrupados por ticket * * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular * @return tmp.ticket_problems */ CALL sale_getProblems(vIsTodayRelative); DROP TEMPORARY TABLE IF EXISTS tmp.ticket_problems; CREATE TEMPORARY TABLE tmp.ticket_problems (INDEX (ticketFk)) ENGINE = MEMORY SELECT ticketFk, MAX(p.isFreezed) AS isFreezed, MAX(p.risk) AS risk, MAX(p.hasTicketRequest) AS hasTicketRequest, MIN(p.isAvailable) AS isAvailable, MAX(p.itemShortage) AS itemShortage, MIN(p.isTaxDataChecked) AS isTaxDataChecked, MAX(p.hasComponentLack) AS hasComponentLack, 0 AS totalProblems FROM tmp.sale_problems p GROUP BY ticketFk; UPDATE tmp.ticket_problems tp SET tp.totalProblems = ( (tp.isFreezed) + IF(tp.risk, TRUE, FALSE) + (tp.hasTicketRequest) + (tp.isAvailable = 0) + (tp.isTaxDataChecked = 0) + (tp.hasComponentLack) ); DROP TEMPORARY TABLE tmp.sale_problems; END;;$$ DELIMITER ;