feat: refs #7564 Added volume column #2664
|
@ -0,0 +1,32 @@
|
|||
DELIMITER $$
|
||||
guillermo marked this conversation as resolved
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setVolumeItemCost`(
|
||||
vItemFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Update the volume tickets of item
|
||||
*
|
||||
* @param vSelf Ticket id
|
||||
*/
|
||||
CREATE OR REPLACE TEMPORARY TABLE tTicket
|
||||
(PRIMARY KEY (id))
|
||||
ENGINE = MEMORY
|
||||
SELECT t.id, SUM(s.quantity * ic.cm3delivery / 1000000) volume
|
||||
FROM sale s
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
JOIN itemCost ic ON ic.itemFk = s.itemFk
|
||||
AND ic.warehouseFk = t.warehouseFk
|
||||
WHERE t.id IN (
|
||||
SELECT DISTINCT ticketFk
|
||||
FROM sale
|
||||
WHERE itemFk = vItemFk
|
||||
)
|
||||
GROUP BY t.id;
|
||||
|
||||
UPDATE ticket t
|
||||
JOIN tTicket tt ON tt.id = t.id
|
||||
SET t.volume = tt.volume;
|
||||
|
||||
DROP TEMPORARY TABLE tTicket;
|
||||
END$$
|
||||
DELIMITER ;
|
Loading…
Reference in New Issue
Este procedimiento es muy peligroso de ejecutar, se debería de estudiar la manera de hacerlo, por ejemplo marcando un parámetro que indique el tiempo máximo para recalcular en el pasado.
He hablado con Pako, y me ha dicho que una vez creado el campo vn.ticket.volume, hagamos un cálculo del volumen de todos los tickets en ese momento, y que el procedimiento solo modifique el presente y el futuro.