feat: refs #6822 change request
gitea/salix/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Robert Ferrús 2024-11-28 08:13:53 +01:00
parent 7b8d4c6a2c
commit 4b474834cf
2 changed files with 59 additions and 43 deletions

View File

@ -1,10 +1,14 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_clone`(vSelf INT, OUT newEntryFk INT)
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_clone`(
vSelf INT,
OUT newEntryFk INT
)
BEGIN
/**
* clones an entry.
*
* @param vSelf The entry id
* @param newEntryFk Output parameter of the new created input
*/
DECLARE vNewEntryFk INT;

View File

@ -1,10 +1,14 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_transfer`(vOriginalEntry INT, OUT vNewEntry INT)
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_transfer`(
vOriginalEntry INT,
OUT vNewEntry INT
)
BEGIN
/**
* Adelanta a mañana la mercancia de una entrada a partir de lo que hay ubicado en el almacén
*
* @param vOriginalEntry entrada que se quiera adelantar
* @param vNewEntry nueva entrada creada
*/
DECLARE vNewEntryFk INT;
DECLARE vTravelFk INT;
@ -33,7 +37,7 @@ BEGIN
SELECT util.VN_CURDATE(),
util.VN_CURDATE() + INTERVAL 1 DAY,
t.warehouseInFk,
t.warehouseInFk,
t.warehouseOutFk,
t.`ref`,
t.isReceived,
t.agencyModeFk
@ -53,7 +57,7 @@ BEGIN
WHERE b.entryFk = vNewEntryFk;
-- Eliminar duplicados
DELETE b.*
DELETE b
FROM buy b
LEFT JOIN (SELECT b.id, b.itemFk
FROM buy b
@ -69,14 +73,13 @@ BEGIN
-- Actualizar la nueva entrada con lo que no está ubicado HOY, descontando lo vendido HOY de esas ubicaciones
CREATE OR REPLACE TEMPORARY TABLE tBuy
ENGINE = MEMORY
SELECT tBuy.itemFk, IFNULL(iss.visible,0) visible, tBuy.totalQuantity, IFNULL(sales.sold,0) sold
FROM (SELECT b.itemFk, SUM(b.quantity) totalQuantity
WITH tBuy AS (
SELECT b.itemFk, SUM(b.quantity) totalQuantity
FROM buy b
WHERE b.entryFk = vOriginalEntry
GROUP BY b.itemFk
) tBuy
LEFT JOIN (
),
itemShelvings AS (
SELECT ish.itemFk, SUM(visible) visible
FROM itemShelving ish
JOIN shelving sh ON sh.code = ish.shelvingFk
@ -84,8 +87,9 @@ BEGIN
JOIN sector s ON s.id = p.sectorFk
WHERE s.warehouseFk = vWarehouseFk
AND sh.parked = util.VN_CURDATE()
GROUP BY ish.itemFk) iss ON tBuy.itemFk = iss.itemFk
LEFT JOIN (
GROUP BY ish.itemFk
),
sales AS (
SELECT s.itemFk, SUM(s.quantity) sold
FROM ticket t
JOIN sale s ON s.ticketFk = t.id
@ -94,17 +98,25 @@ BEGIN
JOIN shelving s2 ON s2.code = is2.shelvingFk
WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
AND s2.parked = util.VN_CURDATE()
GROUP BY s.itemFk) sales ON sales.itemFk = tBuy.itemFk
WHERE visible = tBuy.totalQuantity
GROUP BY s.itemFk
)
SELECT tmp.itemFk,
IFNULL(iss.visible, 0) visible,
tmp.totalQuantity,
IFNULL(s.sold, 0) sold
FROM tBuy tmp
LEFT JOIN itemShelvings iss ON tmp.itemFk = iss.itemFk
LEFT JOIN sales s ON s.itemFk = tmp.itemFk
WHERE visible = tmp.totalQuantity
OR iss.itemFk IS NULL;
UPDATE buy b
JOIN (SELECT * FROM tBuy) sub ON sub.itemFk = b.itemFk
SET b.quantity = sub.totalQuantity - sub.visible - sub.sold
JOIN tBuy tmp ON tmp.itemFk = b.itemFk
SET b.quantity = tmp.totalQuantity - tmp.visible - tmp.sold
WHERE b.entryFk = vNewEntryFk;
-- Limpia la nueva entrada
DELETE b.*
DELETE b
FROM buy b
WHERE b.entryFk = vNewEntryFk
AND b.quantity = 0;
@ -113,7 +125,7 @@ BEGIN
SET vNewEntry = vNewEntryFk;
CALL cache.visible_refresh(@c,TRUE,7);
CALL cache.available_refresh(@c, TRUE, 7, util.VN_CURDATE());
CALL cache.visible_refresh(@c,TRUE,vWarehouseFk);
CALL cache.available_refresh(@c, TRUE, vWarehouseFk, util.VN_CURDATE());
END$$
DELIMITER ;