feat: refs #7709 revision
gitea/salix/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Carlos Andrés 2024-12-18 19:49:05 +01:00
parent d3daf83706
commit 48a7596d30
1 changed files with 84 additions and 83 deletions

View File

@ -1,5 +1,5 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplierPackaging_ReportSource`( CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplierPackaging_reportSource`(
vFromDated DATE, vFromDated DATE,
vNif VARCHAR(50) vNif VARCHAR(50)
) )
@ -12,11 +12,7 @@ BEGIN
*/ */
DECLARE vEntityId INT; DECLARE vEntityId INT;
SELECT id INTO vEntityId CREATE OR REPLACE TEMPORARY TABLE tPackaging
FROM supplier
WHERE nif = vNif;
CREATE OR REPLACE TEMPORARY TABLE tSupplierPackaging
SELECT itemFk, SELECT itemFk,
longName, longName,
`name`, `name`,
@ -24,17 +20,17 @@ BEGIN
landed, landed,
`in`, `in`,
`out`, `out`,
CAST(sref AS CHAR) sref, CAST(cmrFk AS CHAR) sref,
buyingValue buyingValue
FROM ( FROM (
SELECT s.itemFk, SELECT s.itemFk,
i.longName, i.longName,
c.name, c.name,
CONCAT('T',s.ticketFk) entryFk, CONCAT('T', s.ticketFk) entryFk,
DATE(t.shipped) landed, DATE(t.shipped) landed,
-LEAST(s.quantity,0) `in`, -LEAST(s.quantity, 0) `in`,
GREATEST(s.quantity,0) `out`, GREATEST(s.quantity, 0) `out`,
t.cmrFk sref, t.cmrFk,
s.price * (100 - s.discount) / 100 buyingValue s.price * (100 - s.discount) / 100 buyingValue
FROM sale s FROM sale s
JOIN item i ON i.id = s.itemFk JOIN item i ON i.id = s.itemFk
@ -44,75 +40,78 @@ BEGIN
WHERE c.fi = vNif WHERE c.fi = vNif
AND t.shipped >= vFromDated AND t.shipped >= vFromDated
AND p.isPackageReturnable AND p.isPackageReturnable
UNION ALL UNION ALL
SELECT s.itemFk, SELECT s.itemFk,
i.longName, i.longName,
c.name, c.name,
'T previous', 'T previous',
vFromDated, vFromDated,
SUM(-LEAST(s.quantity,0)) `in`, SUM(-LEAST(s.quantity, 0)),
SUM(GREATEST(s.quantity,0)) `out`, SUM(GREATEST(s.quantity, 0)),
NULL, NULL,
AVG(s.price * (100 - s.discount) / 100) AVG(s.price * (100 - s.discount) / 100)
FROM sale s FROM sale s
JOIN item i ON i.id = s.itemFk JOIN item i ON i.id = s.itemFk
JOIN packaging p ON p.itemFk = i.id JOIN packaging p ON p.itemFk = i.id
JOIN ticket t ON t.id = s.ticketFk JOIN ticket t ON t.id = s.ticketFk
JOIN client c ON c.id = t.clientFk JOIN client c ON c.id = t.clientFk
WHERE c.fi = vNif WHERE c.fi = vNif
AND t.shipped < vFromDated AND t.shipped < vFromDated
AND p.isPackageReturnable AND p.isPackageReturnable
AND NOT t.isDeleted AND NOT t.isDeleted
GROUP BY s.itemFk GROUP BY s.itemFk
UNION ALL UNION ALL
SELECT p.itemFk, SELECT p.itemFk,
i.longName, i.longName,
c.name, c.name,
CONCAT('TP',tp.ticketFk) entryFk, CONCAT('TP', tp.ticketFk),
DATE(t.shipped), DATE(t.shipped),
-LEAST(tp.quantity,0) `in`, -LEAST(tp.quantity, 0),
GREATEST(tp.quantity,0) `out`, GREATEST(tp.quantity, 0),
t.cmrFk, t.cmrFk,
0 0
FROM ticketPackaging tp FROM ticketPackaging tp
JOIN packaging p ON p.id = tp.packagingFk JOIN packaging p ON p.id = tp.packagingFk
JOIN item i ON i.id = p.itemFk JOIN item i ON i.id = p.itemFk
JOIN ticket t ON t.id = tp.ticketFk JOIN ticket t ON t.id = tp.ticketFk
JOIN client c ON c.id = t.clientFk JOIN client c ON c.id = t.clientFk
WHERE c.fi = vNif WHERE c.fi = vNif
AND t.shipped >= vFromDated AND t.shipped >= vFromDated
AND p.isPackageReturnable AND p.isPackageReturnable
UNION ALL UNION ALL
SELECT p.itemFk, SELECT p.itemFk,
i.longName, i.longName,
c.name, c.name,
'TP previous', 'TP previous',
vFromDated, vFromDated,
SUM(-LEAST(tp.quantity,0)) `in`, SUM(-LEAST(tp.quantity, 0)) `in`,
SUM(GREATEST(tp.quantity,0)) `out`, SUM(GREATEST(tp.quantity, 0)) `out`,
NULL, NULL,
0 0
FROM ticketPackaging tp FROM ticketPackaging tp
JOIN packaging p ON p.id = tp.packagingFk JOIN packaging p ON p.id = tp.packagingFk
JOIN item i ON i.id = p.itemFk JOIN item i ON i.id = p.itemFk
JOIN ticket t ON t.id = tp.ticketFk JOIN ticket t ON t.id = tp.ticketFk
JOIN client c ON c.id = t.clientFk JOIN client c ON c.id = t.clientFk
WHERE c.fi = vNif WHERE c.fi = vNif
AND t.shipped < vFromDated AND t.shipped < vFromDated
AND p.isPackageReturnable AND p.isPackageReturnable
AND NOT t.isDeleted AND NOT t.isDeleted
GROUP BY p.itemFk GROUP BY p.itemFk
ORDER BY itemFk , landed, entryFk ORDER BY itemFk , landed, entryFk
)sub )sub
WHERE `out` OR `in`; WHERE `out` OR `in`;
IF vEntityId IS NULL THEN SELECT id INTO vEntityId
FROM supplier
WHERE nif = vNif;
IF vEntityId IS NULL THEN
SELECT id INTO vEntityId SELECT id INTO vEntityId
FROM client FROM client
WHERE fi = vNif; WHERE fi = vNif;
INSERT INTO tSupplierPackaging INSERT INTO tPackaging
SELECT itemFk, SELECT itemFk,
longName, longName,
`name`, `name`,
@ -125,12 +124,12 @@ BEGIN
FROM ( FROM (
SELECT sp.itemFk, SELECT sp.itemFk,
sp.longName, sp.longName,
sp.supplier name, sp.supplier,
CONCAT('E',sp.entryFk) entryFk, CONCAT('E', sp.entryFk),
sp.landed, sp.landed,
sp.`in`, sp.`in`,
sp.`out`, sp.`out`,
e.invoiceNumber sref, e.invoiceNumber,
sp.buyingValue sp.buyingValue
FROM supplierPackaging sp FROM supplierPackaging sp
JOIN entry e ON e.id = sp.entryFk JOIN entry e ON e.id = sp.entryFk
@ -155,7 +154,6 @@ BEGIN
ORDER BY itemFk , landed, entryFk ORDER BY itemFk , landed, entryFk
) sub ) sub
WHERE `out` OR `in`; WHERE `out` OR `in`;
END IF; END IF;
SELECT vEntityId, SELECT vEntityId,
@ -164,15 +162,18 @@ BEGIN
name, name,
entryFk, entryFk,
landed, landed,
CAST(`in` AS DECIMAL(10,0)) `in`, CAST(`in` AS DECIMAL(10, 0)) `in`,
CAST(`out` AS DECIMAL(10,0)) `out`, CAST(`out` AS DECIMAL(10, 0)) `out`,
sref, sref,
buyingValue, buyingValue,
CAST(SUM(IF(`in`=0, -`out`, `in`)) OVER (PARTITION BY itemFk ORDER BY itemFk , landed, entryFk) AS DECIMAL(10,2)) balance CAST(SUM(IF(`in` = 0, -`out`, `in`)) OVER (
FROM tSupplierPackaging PARTITION BY itemFk
WHERE NOT (landed < util.VN_CURDATE() - INTERVAL 1 YEAR) ORDER BY itemFk , landed, entryFk
) AS DECIMAL(10,2)) balance
FROM tPackaging
WHERE landed >= util.VN_CURDATE() - INTERVAL 1 YEAR
ORDER BY itemFk, landed, entryFk; ORDER BY itemFk, landed, entryFk;
DROP TEMPORARY TABLE tSupplierPackaging; DROP TEMPORARY TABLE tPackaging;
END$$ END$$
DELIMITER ; DELIMITER ;