47 lines
1.4 KiB
SQL
47 lines
1.4 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_checkNoComponents`(vShippedFrom DATETIME, vShippedTo DATETIME)
|
|
BEGIN
|
|
|
|
/**
|
|
* Comprueba que los tickets entre un rango de fechas tienen componentes
|
|
* y recalcula sus componentes
|
|
*
|
|
* @param vShippedFrom rango inicial de fecha
|
|
* @param vShippedTo rango final de fecha
|
|
*/
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.coste
|
|
(primary key (id)) ENGINE = MEMORY
|
|
SELECT s.id
|
|
FROM ticket t
|
|
JOIN sale s ON s.ticketFk = t.id
|
|
JOIN item i ON i.id = s.itemFk
|
|
JOIN itemType tp ON tp.id = i.typeFk
|
|
JOIN itemCategory ic ON ic.id = tp.categoryFk
|
|
JOIN saleComponent sc ON sc.saleFk = s.id
|
|
JOIN component c ON c.id = sc.componentFk
|
|
JOIN componentType ct ON ct.id = c.typeFk
|
|
AND ct.code = 'cost'
|
|
WHERE t.shipped BETWEEN vShippedFrom AND vShippedTo
|
|
AND ic.merchandise;
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.recalculateSales
|
|
(primary key (id)) ENGINE = MEMORY
|
|
SELECT DISTINCT s.id
|
|
FROM ticket t
|
|
JOIN sale s ON s.ticketFk = t.id
|
|
JOIN item i ON i.id = s.itemFk
|
|
JOIN itemType tp ON tp.id = i.typeFk
|
|
JOIN itemCategory ic ON ic.id = tp.categoryFk
|
|
LEFT JOIN tmp.coste c ON c.id = s.id
|
|
WHERE t.shipped >= vShippedFrom AND t.shipped <= vShippedTo
|
|
AND c.id IS NULL
|
|
AND ic.merchandise;
|
|
|
|
CALL sale_recalcComponent('renewPrices');
|
|
|
|
DROP TEMPORARY TABLE tmp.recalculateSales;
|
|
DROP TEMPORARY TABLE tmp.coste;
|
|
END$$
|
|
DELIMITER ;
|