54 lines
1.3 KiB
SQL
54 lines
1.3 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getProblems`(
|
|
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);
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_problems
|
|
(PRIMARY KEY (ticketFk))
|
|
ENGINE = MEMORY
|
|
SELECT ticketFk,
|
|
MAX(isFreezed) isFreezed,
|
|
MAX(risk) risk,
|
|
MAX(hasRisk) hasRisk,
|
|
MAX(hasHighRisk) hasHighRisk,
|
|
MAX(hasTicketRequest) hasTicketRequest,
|
|
MAX(itemShortage) itemShortage,
|
|
MIN(isTaxDataChecked) isTaxDataChecked,
|
|
MAX(hasComponentLack) hasComponentLack,
|
|
MAX(isTooLittle) isTooLittle,
|
|
MAX(itemDelay) itemDelay,
|
|
MAX(hasRounding) hasRounding,
|
|
MAX(itemLost) itemLost,
|
|
MAX(isVip) isVip,
|
|
0 totalProblems
|
|
FROM tmp.sale_problems
|
|
GROUP BY ticketFk;
|
|
|
|
UPDATE tmp.ticket_problems
|
|
SET totalProblems = (
|
|
(isFreezed) +
|
|
(hasRisk) +
|
|
(hasTicketRequest) +
|
|
(!isTaxDataChecked) +
|
|
(hasComponentLack) +
|
|
(itemDelay IS NOT NULL) +
|
|
(isTooLittle) +
|
|
(itemLost IS NOT NULL) +
|
|
(hasRounding IS NOT NULL) +
|
|
(itemShortage IS NOT NULL) +
|
|
(isVip)
|
|
);
|
|
|
|
DROP TEMPORARY TABLE tmp.sale_problems;
|
|
END$$
|
|
DELIMITER ;
|