71 lines
1.8 KiB
SQL
71 lines
1.8 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_checkNoComponents`(vCreatedFrom DATETIME, vCreatedTo DATETIME)
|
|
BEGIN
|
|
/**
|
|
* Comprueba que las ventas creadas entre un rango de fechas tienen componentes
|
|
*
|
|
* @param vCreatedFrom inicio del rango
|
|
* @param vCreatedTo fin del rango
|
|
*/
|
|
DECLARE v_done BOOL DEFAULT FALSE;
|
|
DECLARE vSaleFk INTEGER;
|
|
DECLARE vTicketFk INTEGER;
|
|
DECLARE vConcept VARCHAR(50);
|
|
DECLARE vCur CURSOR FOR
|
|
SELECT s.id
|
|
FROM sale s
|
|
JOIN ticket t ON t.id = s.ticketFk
|
|
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 s.created >= vCreatedFrom AND s.created <= vCreatedTo
|
|
AND c.id IS NULL
|
|
AND t.agencyModeFk IS NOT NULL
|
|
AND t.isDeleted IS FALSE
|
|
AND t.warehouseFk = 60
|
|
AND ic.merchandise != FALSE
|
|
GROUP BY s.id;
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
|
SET v_done = TRUE;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.coste;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.coste;
|
|
CREATE TEMPORARY TABLE tmp.coste
|
|
(PRIMARY KEY (id)) ENGINE = MEMORY
|
|
SELECT s.id
|
|
FROM sale s
|
|
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.id = 6
|
|
WHERE s.created >= vCreatedFrom
|
|
AND ic.merchandise != FALSE;
|
|
|
|
OPEN vCur;
|
|
|
|
l: LOOP
|
|
SET v_done = FALSE;
|
|
FETCH vCur INTO vSaleFk;
|
|
|
|
IF v_done THEN
|
|
LEAVE l;
|
|
END IF;
|
|
|
|
SELECT ticketFk, concept
|
|
INTO vTicketFk, vConcept
|
|
FROM sale
|
|
WHERE id = vSaleFk;
|
|
|
|
CALL sale_calculateComponent(vSaleFk, 1);
|
|
END LOOP;
|
|
|
|
CLOSE vCur;
|
|
DROP TEMPORARY TABLE tmp.coste;
|
|
END$$
|
|
DELIMITER ;
|