DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`travelDetail`()
BEGIN
/**
 * Returns the details of the travels that have a departure warehouse in Ecuador or Colombia.
 */
	DECLARE vDateFrom DATE DEFAULT util.VN_CURDATE() - INTERVAL 12 WEEK;
	SELECT IFNULL(CONCAT("      ",Entrada),travel) travelAndEntry,
			travel,
			Entrada,
			IsTravel,
			Agencia,
			ref,
			shipment, 
			OrigenCajas,
			landing, 
			Destino,
			Etiquetas,
			Notas_Eva,
			kg,
			loadedKg,
			volumeKg,
			loadPriority,
			invoiceAmount,
			Carguera,
			reference
		FROM
			(SELECT TRUE IsTravel, 
					tr.id travel, 
					NULL Entrada, 
					ag.Agencia, 
					tr.ref, 
					tr.shipment, 
					wo.name OrigenCajas, 
					tr.landing, 
					w.name Destino, 
					SUM(c.Etiquetas) Etiquetas,
					NULL Notas_Eva,
					tr.kg,
					CAST(SUM(c.weight * c.Etiquetas) AS INT) loadedkg,
					CAST(
						SUM(vc.aerealVolumetricDensity *
							c.Etiquetas *
							IF(cb.Volumen,
								cb.Volumen,
								cb.X * cb.Y * cb.Z
							) / 1000000
						) AS INT
					) volumeKg,
					NULL loadPriority,
					NULL invoiceAmount,
					pc.Alias Carguera,
					NULL reference
				FROM travel tr
					LEFT JOIN Proveedores pc ON pc.Id_Proveedor = tr.cargoSupplierFk
					LEFT JOIN Entradas e ON e.travel_id = tr.id
					LEFT JOIN Compres c ON c.Id_Entrada = e.Id_Entrada
					LEFT JOIN Cubos cb ON cb.Id_Cubo = c.Id_Cubo
					LEFT JOIN Articles a ON a.Id_Article = c.Id_Article
					LEFT JOIN Tipos tp ON tp.tipo_id = a.tipo_id
					JOIN warehouse w ON w.id = tr.warehouse_id
					JOIN warehouse wo ON wo.id = tr.warehouse_id_out
					JOIN Agencias ag ON ag.Id_Agencia = tr.agency_id
					JOIN vn.volumeConfig vc
				WHERE tr.landing >= vDateFrom
					AND (wo.name="Colombia" OR  wo.name="Ecuador")
				GROUP BY tr.id
			UNION ALL
			SELECT 0 IsTravel,
					e.travel_id travel,
					e.Id_Entrada,
					p.Proveedor,
					e.Referencia,
					tr.shipment,
					wo.name OrigenCajas,
					tr.landing,
					w.name Destino,
					SUM(Etiquetas) Etiquetas,
					e.Notas_Eva,
					NULL kg,
					CAST(SUM(c.weight * c.Etiquetas) AS INT) loadedkg,
					CAST(
						SUM(vc.aerealVolumetricDensity *
							c.Etiquetas *
							IF(cb.Volumen,
								cb.Volumen,
								cb.X * cb.Y * cb.Z
							) / 1000000
						) AS INT
					) volumeKg,
					loadPriority,
					e.invoiceAmount,
					pc.Alias  carguera,
					e.reference
				FROM Entradas e
					JOIN Compres c ON c.Id_Entrada = e.Id_Entrada
					JOIN Cubos cb ON cb.Id_Cubo = c.Id_Cubo
					JOIN Articles a ON a.Id_Article = c.Id_Article
					JOIN Tipos tp ON tp.tipo_id = a.tipo_id
					JOIN Proveedores p ON p.Id_Proveedor = e.Id_Proveedor
					JOIN travel tr ON tr.id = e.travel_id
					LEFT JOIN Proveedores pc ON pc.Id_Proveedor = tr.cargoSupplierFk
					JOIN warehouse w ON w.id = tr.warehouse_id
					JOIN warehouse wo ON wo.id = tr.warehouse_id_out
					JOIN vn.volumeConfig vc 
				WHERE tr.landing >= vDateFrom
					AND (wo.name="Colombia" OR  wo.name="Ecuador")
				GROUP BY e.Id_Entrada
			) sub
	ORDER BY landing ASC, 
		shipment ASC,
		travel,
		IsTravel DESC,
		(loadPriority > 0) DESC,
		loadPriority,
		Agencia,
		Notas_Eva;
END$$
DELIMITER ;
