fixes: refs #7760 collection problems #2888
Labels
No Milestone
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: verdnatura/salix#2888
Loading…
Reference in New Issue
No description provided.
Delete Branch "7760-Refactor-collection_assign"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -0,0 +2,4 @@
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_mergeSales`(vCollectionFk INT)
BEGIN
DECLARE vDone BOOL;
-- Fetch variables
??
@ -0,0 +5,4 @@
-- Fetch variables
DECLARE vTicketFk INT;
DECLARE cCur CURSOR FOR
El nombre del cursor no es correcto: https://wiki.verdnatura.es/index.php/Convenciones_SQL#Cursores
@ -0,0 +7,4 @@
DECLARE cCur CURSOR FOR
SELECT ticketFk
FROM vn.ticketCollection
Aquí sobre el
vn.
@ -0,0 +23,4 @@
LEAVE l;
END IF;
CALL vn.ticket_mergeSales(vTicketFk);
Aquí sobre el
vn.
@ -196,4 +157,1 @@
OR LENGTH(pb.problem) > 0
OR (pb.lines > vLinesLimit AND vLinesLimit IS NOT NULL)
OR (pb.m3 > vVolumeLimit AND vVolumeLimit IS NOT NULL)
OR ((sub.maxSize > vSizeLimit OR sub.maxSize IS NOT NULL) AND vSizeLimit IS NOT NULL);
Has quitado mis cambios
@ -10,3 +13,3 @@
DECLARE vWagons INT;
DECLARE vTrainFk INT;
DECLARE vLinesLimit INT;
DECLARE vLinesLimit INT DEFAULT NULL;
Por defecto ya es NULL
@ -13,2 +15,3 @@
DECLARE vLinesLimit INT DEFAULT NULL;
DECLARE vTicketLines INT;
DECLARE vVolumeLimit DECIMAL;
DECLARE vVolumeLimit DECIMAL DEFAULT NULL;
Por defecto ya es NULL
@ -15,4 +18,3 @@
DECLARE vTicketVolume DECIMAL;
DECLARE vSizeLimit INT;
DECLARE vMaxTickets INT;
DECLARE vStateFk VARCHAR(45);
ja que estem renombra a vStateCode perque no es el id lo que es guarda sino el code, es confus
@ -99,1 +52,3 @@
FETCH vSaleGroup INTO vItemPackingTypeFk;
l: LOOP
SET vDone = FALSE;
FETCH vItemPackingTypes INTO vitemPackingTypeFk;
vItemPackingTypeFk
@ -164,0 +124,4 @@
-- Si hay tickets asignados, nos centramos exclusivamente en esos tickets
-- y los sacamos independientemente de problemas o tamaños
SELECT EXISTS (
Ací per que no fas aço?
Per optimitzar:
https://wiki.verdnatura.es/index.php/Convenciones_SQL#:~:text=SELECT%20EXISTS%20(SELECT%20TRUE%20FROM%20vn.ticket%20WHERE%20false%20LIMIT%201)%3B
Pues en el cas de gastar EXISTS el LIMIT te sobra, ja que nomes trova un registre per a la execució, hi ha que canviar-ho en la wiki tame.
https://stackoverflow.com/questions/34759173/any-point-in-using-limit-in-exists-query
El LIMIT és per a que quan trove la primera coincidencia no continue, crec que optimitza el resultat, quan més registres tinga la taula més li costarà
@ -194,71 +166,64 @@ BEGIN
OR (NOT pb.V AND vItemPackingTypeFk = 'V')
OR (pc.isPreviousPreparationRequired AND pb.previousWithoutParking)
OR LENGTH(pb.problem) > 0
LENGTH(pb.problem)
@ -289,0 +246,4 @@
SELECT wagon INTO vFreeWagonFk
FROM tTrain
GROUP BY wagon
HAVING SUM(IFNULL(ticketFk, 0)) = 0
Me podries explicar esta part? Per que sumes els ticketFk??
Ho he vist tame baix
El que es vol és agafar el primer vagó lliure (sense tickets asignats) del tren
@ -347,3 +307,3 @@
JOIN (
JOIN(
SELECT COUNT(*) saleTotalCount,
SUM(s.isPicked <> 0) salePickedCount
SUM(s.isPicked)
Crec que està fet per el 1 -1 com a valors de TRUE, és posible que algún formulari en access modifiquen el dato, el SUM el faría mal.
Es que ho he comprovat, i si es -1 es TRUE, per lo tant fa el que volem
No és el mateix, estic segur, quan pugues heu mirem
@ -27,3 +27,3 @@
END IF;
CALL vn.sales_merge(vTicketFk);
CALL vn.ticket_mergeSales(vTicketFk);
No poner
vn.
@ -0,0 +26,4 @@
WHERE s.ticketFk = vSelf
AND it.isMergeable
GROUP BY s.itemFk, s.price, s.discount
HAVING COUNT(*) > 1;
HAVING COUNT(*);
Se vol que siga més de 1 registre, si no te més d'un registre agrupat, el procès no farà merge de res.
Si el canviarem es crearía la taula per al registres en COUNT(*) = 1 i ixos hi ha que descartar-los
Val sí, tens tota la raó
@ -74,3 +36,1 @@
WHERE itemPackingTypeFk IS NOT NULL;
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketIPT(
CREATE OR REPLACE TEMPORARY TABLE tmp.salesToMove (
Como es una tabla que no sale del procedimiento, reenombrar a
tSalesToMove