108 lines
3.5 KiB
SQL
108 lines
3.5 KiB
SQL
DROP procedure IF EXISTS `vn`.`collectionPlacement_get`;
|
|
|
|
DELIMITER $$
|
|
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`collectionPlacement_get`(vCollectionFk INT)
|
|
BEGIN
|
|
|
|
DECLARE vCalcFk INT;
|
|
DECLARE vWarehouseFk INT;
|
|
DECLARE vWarehouseAliasFk INT;
|
|
|
|
SELECT t.warehouseFk, w.aliasFk
|
|
INTO vWarehouseFk, vWarehouseAliasFk
|
|
FROM vn.ticket t
|
|
JOIN vn.ticketCollection tc ON tc.ticketFk = t.id
|
|
JOIN vn.warehouse w ON w.id = t.warehouseFk
|
|
WHERE tc.collectionFk = vCollectionFk
|
|
LIMIT 1;
|
|
|
|
CALL cache.visible_refresh(vCalcFk,FALSE,vWarehouseFk);
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.parked;
|
|
CREATE TEMPORARY TABLE tmp.parked
|
|
ENGINE MEMORY
|
|
SELECT s.itemFk, 0 as quantity
|
|
FROM vn.ticketCollection tc
|
|
JOIN vn.sale s ON s.ticketFk = tc.ticketFk
|
|
WHERE tc.collectionFk = vCollectionFk;
|
|
|
|
UPDATE tmp.parked pk
|
|
JOIN ( SELECT itemFk, sum(visible) as visible
|
|
FROM vn.itemShelvingStock iss
|
|
JOIN vn.warehouse w ON w.id = iss.warehouseFk
|
|
WHERE w.aliasFk = vWarehouseAliasFk
|
|
GROUP BY iss.itemFk ) iss ON iss.itemFk = pk.itemFk
|
|
SET pk.quantity = iss.visible;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.`grouping`;
|
|
CREATE TEMPORARY TABLE tmp.`grouping`
|
|
ENGINE MEMORY
|
|
SELECT itemFk, `grouping`
|
|
FROM (
|
|
SELECT itemFk,
|
|
CASE groupingMode
|
|
WHEN 0 THEN 1
|
|
WHEN 2 THEN packing
|
|
ELSE `grouping`
|
|
END AS `grouping`
|
|
FROM buy b
|
|
JOIN entry e ON e.id = b.entryFk
|
|
JOIN travel tr ON tr.id = e.travelFk
|
|
WHERE tr.warehouseInFk = vWarehouseFk
|
|
AND landed BETWEEN (SELECT inventoried FROM vn.config LIMIT 1) AND CURDATE()
|
|
AND b.isIgnored = FALSE
|
|
ORDER BY tr.landed DESC
|
|
) sub
|
|
GROUP BY sub.itemFk ;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.grouping2;
|
|
CREATE TEMPORARY TABLE tmp.grouping2
|
|
ENGINE MEMORY
|
|
SELECT * FROM tmp.`grouping`;
|
|
|
|
|
|
SELECT s.id as saleFk, s.itemFk,
|
|
p.code COLLATE utf8_general_ci as placement ,
|
|
sh.code COLLATE utf8_general_ci as shelving,
|
|
ish.created,
|
|
ish.visible,
|
|
0 as `order`,
|
|
IF(sc.isPreviousPreparedByPacking, ish.packing, g.`grouping`) as `grouping`
|
|
FROM vn.ticketCollection tc
|
|
JOIN vn.sale s ON s.ticketFk = tc.ticketFk
|
|
JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk
|
|
JOIN vn.shelving sh ON sh.code = ish.shelvingFk
|
|
JOIN vn.parking p ON p.id = sh.parkingFk
|
|
JOIN vn.sector sc ON sc.id = p.sectorFk
|
|
JOIN vn.warehouse w ON w.id = sc.warehouseFk
|
|
JOIN tmp.`grouping` g ON g.itemFk = s.itemFk
|
|
WHERE tc.collectionFk = vCollectionFk
|
|
AND w.aliasFk = vWarehouseAliasFk
|
|
AND ish.visible > 0
|
|
UNION ALL
|
|
SELECT s.id as saleFk, s.itemFk,
|
|
ip.code COLLATE utf8_general_ci as placement,
|
|
'' COLLATE latin1_general_ci as shelving,
|
|
modificationDate as created,
|
|
v.visible - p.quantity as visible,
|
|
0 as `order`,
|
|
g.`grouping`
|
|
FROM vn.ticketCollection tc
|
|
JOIN vn.sale s ON s.ticketFk = tc.ticketFk
|
|
JOIN vn.itemPlacement ip ON ip.itemFk = s.itemFk AND ip.warehouseFk = vWarehouseFk
|
|
JOIN tmp.parked p ON p.itemFk = s.itemFk
|
|
JOIN cache.visible v ON v.item_id = s.itemFk AND v.calc_id = vCalcFk
|
|
LEFT JOIN tmp.grouping2 g ON g.itemFk = s.itemFk
|
|
WHERE tc.collectionFk = vCollectionFk
|
|
AND v.visible - p.quantity > 0;
|
|
|
|
DROP TEMPORARY TABLE
|
|
tmp.parked,
|
|
tmp.`grouping`,
|
|
tmp.grouping2;
|
|
END
|
|
|
|
|
|
$$
|
|
|
|
DELIMITER ; |