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)), 'm³') 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 ;