Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7654-entry_splitByShelvingCreateColumn

This commit is contained in:
Robert Ferrús 2024-07-04 08:21:11 +02:00
commit 68871e6345
5 changed files with 44 additions and 29 deletions

View File

@ -47,9 +47,9 @@ BEGIN
INTO vHasTooMuchCollections, INTO vHasTooMuchCollections,
vLockName vLockName
FROM productionConfig pc FROM productionConfig pc
LEFT JOIN tCollection ON TRUE; LEFT JOIN tmp.collection ON TRUE;
DROP TEMPORARY TABLE tCollection; DROP TEMPORARY TABLE tmp.collection;
IF vHasTooMuchCollections THEN IF vHasTooMuchCollections THEN
CALL util.throw('Hay colecciones pendientes'); CALL util.throw('Hay colecciones pendientes');

View File

@ -7,11 +7,15 @@ BEGIN
* @param vWorkerFk id del worker. * @param vWorkerFk id del worker.
* @table Devuelve tabla temporal con las colecciones pendientes * @table Devuelve tabla temporal con las colecciones pendientes
*/ */
DROP TEMPORARY TABLE IF EXISTS tCollection; DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
RESIGNAL;
END;
CREATE TEMPORARY TABLE tCollection CREATE OR REPLACE TEMPORARY TABLE tmp.collection
ENGINE = MEMORY
SELECT c.id collectionFk, SELECT c.id collectionFk,
date(c.created) created, DATE(c.created) created,
COUNT(DISTINCT tc.ticketFk) ticketTotalCount COUNT(DISTINCT tc.ticketFk) ticketTotalCount
FROM collection c FROM collection c
JOIN ticketCollection tc ON tc.collectionFk = c.id JOIN ticketCollection tc ON tc.collectionFk = c.id
@ -19,15 +23,16 @@ BEGIN
JOIN ticketState ts ON ts.ticketFk = tc.ticketFk JOIN ticketState ts ON ts.ticketFk = tc.ticketFk
JOIN state s2 ON s2.id = ts.stateFk JOIN state s2 ON s2.id = ts.stateFk
JOIN productionConfig pc JOIN productionConfig pc
JOIN vn.state ss on ss.code = 'PREPARED' JOIN vn.state ss ON ss.code = 'PREPARED'
LEFT JOIN vn.saleTracking st on st.saleFk = s.id AND st.stateFk = ss.id LEFT JOIN vn.saleTracking st ON st.saleFk = s.id
AND st.stateFk = ss.id
WHERE c.workerFk = vWorkerFk WHERE c.workerFk = vWorkerFk
AND TIMESTAMPDIFF(HOUR, c.created , util.VN_NOW()) < pc.pendingCollectionsAge AND TIMESTAMPDIFF(HOUR, c.created , util.VN_NOW()) < pc.pendingCollectionsAge
AND s.quantity != 0 AND s.quantity
AND s2.order < pc.pendingCollectionsOrder AND s2.order < pc.pendingCollectionsOrder
GROUP BY c.id GROUP BY c.id
HAVING COUNT(*) > COUNT(DISTINCT st.id); HAVING COUNT(*) > COUNT(DISTINCT st.id);
SELECT * FROM tCollection; SELECT * FROM tmp.collection;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -15,6 +15,11 @@ proc: BEGIN
DECLARE vEndingDate DATETIME; DECLARE vEndingDate DATETIME;
DECLARE vIsTodayRelative BOOLEAN; DECLARE vIsTodayRelative BOOLEAN;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
RESIGNAL;
END;
SELECT util.dayEnd(util.VN_CURDATE()) + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY SELECT util.dayEnd(util.VN_CURDATE()) + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY
INTO vEndingDate INTO vEndingDate
FROM productionConfig; FROM productionConfig;
@ -31,7 +36,8 @@ proc: BEGIN
CALL prepareClientList(); CALL prepareClientList();
CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk)) ENGINE = MEMORY (INDEX (ticketFk))
ENGINE = MEMORY
SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped
FROM tmp.productionTicket tt FROM tmp.productionTicket tt
JOIN ticket t ON t.id = tt.ticketFk; JOIN ticket t ON t.id = tt.ticketFk;

View File

@ -282,8 +282,7 @@ BEGIN
FROM ( FROM (
SELECT tl.ticketFk, SELECT tl.ticketFk,
s.id saleFk, s.id saleFk,
LEFT(GROUP_CONCAT('RE: ',i.id, ' ', IFNULL(i.longName,''), ' '), 250) problem, LEFT(GROUP_CONCAT('RE: ',i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
MOD(s.quantity, b.`grouping`) hasRounding
FROM tmp.ticket_list tl FROM tmp.ticket_list tl
JOIN ticket t ON t.id = tl.ticketFk JOIN ticket t ON t.id = tl.ticketFk
AND t.warehouseFk = vWarehouseFk AND t.warehouseFk = vWarehouseFk
@ -291,8 +290,8 @@ BEGIN
JOIN item i ON i.id = s.itemFk JOIN item i ON i.id = s.itemFk
JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
JOIN buy b ON b.id = bu.buyFk JOIN buy b ON b.id = bu.buyFk
WHERE MOD(s.quantity, b.`grouping`)
GROUP BY tl.ticketFk GROUP BY tl.ticketFk
HAVING hasRounding
)sub )sub
ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk; ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
END LOOP; END LOOP;

View File

@ -9,6 +9,11 @@ BEGIN
*/ */
DECLARE vStateFk INT; DECLARE vStateFk INT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
RESIGNAL;
END;
INSERT INTO ticket ( INSERT INTO ticket (
clientFk, clientFk,
shipped, shipped,