salix/db/routines/vn/procedures/reportLabelCollection_get.sql

56 lines
1.9 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`reportLabelCollection_get`(
vParam INT,
vLabelCount INT
)
BEGIN
/**
* Obtains tag data from a ticket or collection.
*
* @param vParam Ticket/Collection from which data is to be taken.
* @param vLabelCount number of times the collection has been printed.
*/
DECLARE vIsCollection BOOL;
SELECT IF(id, TRUE, FALSE) INTO vIsCollection
FROM vn.collection c
WHERE id = vParam;
SELECT c.itemPackingTypeFk,
CONCAT(tc.collectionFk, ' ', LEFT(cc.code, 4)) color,
CONCAT(tc.collectionFk, ' ', SUBSTRING('ABCDEFGH',tc.wagon, 1), '-', tc.level) levelV,
tc.ticketFk,
LEFT(COALESCE(et.description, zo.name, am.name),12) agencyDescription,
am.name,
t.clientFk,
CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5, 2)), '') m3 ,
CAST(IF(ic.code = 'plant', CONCAT(MAX(i.size), ' cm'), COUNT(*)) AS CHAR) size,
w.code workerCode,
IF(vLabelCount IS NULL, tt.labelCount, vLabelCount) labelCount,
IF(HOUR(t.shipped), TIME(t.shipped), TIME(zo.hour)) agencyHour,
t.shipped,
COUNT(*) lineCount,
t.nickName
FROM ticket t
JOIN ticketCollection tc ON tc.ticketFk = t.id
JOIN collection c ON c.id = tc.collectionFk
LEFT JOIN collectionColors cc ON cc.shelve = tc.level
AND cc.wagon = tc.wagon
AND cc.trainFk = c.trainFk
JOIN sale s ON s.ticketFk = t.id
LEFT JOIN saleVolume sv ON sv.saleFk = s.id
JOIN item i ON i.id = s.itemFk
JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
JOIN worker w ON w.id = c.workerFk
JOIN agencyMode am ON am.id = t.agencyModeFk
LEFT JOIN ticketTrolley tt ON tt.ticket = t.id
LEFT JOIN zone zo ON t.zoneFk = zo.id
LEFT JOIN routesMonitor rm ON rm.routeFk = t.routeFk
LEFT JOIN expeditionTruck et ON et.id = rm.expeditionTruckFk
WHERE IF(vIsCollection, tc.collectionFk = vParam, tc.ticketFk = vParam)
GROUP BY t.id
ORDER BY cc.code;
END$$
DELIMITER ;