fix: refs #7829 Error al calcular problemas de componentes #2828

Merged
carlosap merged 2 commits from 7829-Error-calcular-problemas-componentes into master 2024-08-02 09:45:08 +00:00
2 changed files with 48 additions and 16 deletions
Showing only changes of commit ddd5e4ffa4 - Show all commits

View File

@ -13,7 +13,7 @@ BEGIN
DECLARE vAvailableCache INT;
DECLARE vVisibleCache INT;
DECLARE vDone BOOL;
DECLARE vComponentCount INT;
DECLARE vRequiredComponent INT;
DECLARE vCursor CURSOR FOR
SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(tt.shipped))
@ -54,7 +54,7 @@ BEGIN
SELECT ticketFk, clientFk
FROM tmp.sale_getProblems;
SELECT COUNT(*) INTO vComponentCount
SELECT COUNT(*) INTO vRequiredComponent
FROM component
WHERE isRequired;
@ -96,20 +96,17 @@ BEGIN
-- Faltan componentes
INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk)
SELECT ticketFk, (vComponentCount > nComp) hasComponentLack, saleFk
FROM (
SELECT COUNT(s.id) nComp, tl.ticketFk, s.id saleFk
SELECT t.id, COUNT(c.id) < vRequiredComponent hasComponentLack, s.id
carlosap marked this conversation as resolved
Review

Ací no va COUNT(DISTINCT c.id) ??

Ací no va COUNT(DISTINCT c.id) ??
FROM tmp.ticket_list tl
JOIN sale s ON s.ticketFk = tl.ticketFk
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
LEFT JOIN component c ON c.id = sc.componentFk AND c.isRequired
JOIN ticket t ON t.id = tl.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN agencyMode am ON am.id = t.agencyModeFk
JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
LEFT JOIN component c ON c.id = sc.componentFk AND c.isRequired

AND c.isRequired en otra linea nueva

AND c.isRequired en otra linea nueva
WHERE dm.code IN ('AGENCY','DELIVERY','PICKUP')
AND s.quantity > 0
GROUP BY s.id
) sub
HAVING hasComponentLack;
-- Cliente congelado

View File

@ -0,0 +1,35 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRiskByClient`(
vClientFk INT
)
BEGIN
/**
* Updates future ticket risk for a client

Punto al final

Punto al final
*
* @param vClientFk Id client
*/
DECLARE vDone INT DEFAULT FALSE;
DECLARE vTicketFk INT;
DECLARE vTickets CURSOR FOR
SELECT id
FROM ticket
WHERE clientFk = vClientFk
AND shipped >= util.VN_CURDATE();

Poner refFk IS NULL

Poner refFk IS NULL
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
OPEN vTickets;
l: LOOP
SET vDone = FALSE;
FETCH vTickets INTO vTicketFk;
IF vDone THEN
LEAVE l;
END IF;
CALL vn.ticket_setProblemRisk(vTicketFk);
END LOOP;
Review

Quitar espacio

Quitar espacio
CLOSE vTickets;
END$$
DELIMITER ;