<?xml version="1.0" encoding="iso-8859-1"?>
<turisoftreportfile title="Servicios y ocupantes en un periodo determinado I" breakpoint="0" group="">
	<parameters>
		<param name=":1" description="Desde fecha" type="DATE" order="2" show="yes" default="" />
		<param name=":2" description="Hasta fecha" type="DATE" order="3" show="yes" default="" />
	</parameters>
	<sql>/*
	(C) 2021 Turisoft International Business, S.L.
	Desarrollado por Juan Carlos García
	Fecha de inicio 26/03/2021
	Última modificación 29/03/2021
	Turigest 10.08c
*/

/*
	Servicios que no están situados sobre reservas
*/
SELECT
	agrupaciones."Descripción",
	servplanning.Vivienda,
	servplanning.Fecha,
	servicios."Descripción" AS servicios.Servicio,
	viviendas.Dormitorios AS viviendas."Dorm.",
	viviendas.CUARTOS_BANIO AS viviendas."Baños",
	viviendas.Aseos,
	"       " AS reservas.Reserva,	
	0 AS reservas."Adultos$SUM",
	0 AS reservas."Niños$SUM",	
	0 AS reservas."Bebés$SUM",	
	0 AS reservas."Mascotas$SUM"
FROM
	agrupaciones,
	servplanning,
	servicios,
	viviendas
WHERE		
	servplanning.Fecha &gt;= &#39;:1&#39;
	AND servplanning.Fecha &lt;= &#39;:2&#39;	
	AND agrupaciones."Código"=servplanning."Agrupación"	
	AND servplanning.Servicio-servplanning.Servicio IN (
		SELECT COUNT(*) FROM reservas WHERE 
			reservas."Agrupación"=servplanning."Agrupación"
			AND reservas.Vivienda=servplanning.Vivienda
			AND servplanning.Fecha &gt;= reservas.Desde
			AND servplanning.Fecha &lt;= reservas.Hasta
	)
	AND servicios."Código"=servplanning.Servicio
	AND viviendas."Agrupación"=servplanning."Agrupación"
	AND viviendas.Vivienda=servplanning.Vivienda



UNION ALL

	/*
	Servicios que están situados sobre reservas pero NO en dos de ellas
	*/

SELECT
	agrupaciones."Descripción",
	servplanning.Vivienda,
	servplanning.Fecha,
	servicios."Descripción" AS servicios.Servicio,
	viviendas.Dormitorios AS viviendas."Dorm.",
	viviendas.CUARTOS_BANIO AS viviendas."Baños",
	viviendas.Aseos,
	CAST(reservas.Reserva AS char(7)),
	(1.0*reservas.Adultos) AS reservas."Adultos$SUM",
	(1.0*reservas."Niños") AS reservas."Niños$SUM",
	(1.0*reservas."Bebés") AS reservas."Bebés$SUM",
	(1.0*reservas."NUM_MASCOTAS") AS reservas."Mascotas$SUM"	
FROM
	agrupaciones,
	servplanning,
	reservas,
	servicios,
	viviendas 
WHERE		
	
	servplanning.Fecha &gt;= &#39;:1&#39;
	AND servplanning.Fecha &lt;= &#39;:2&#39;	
	AND agrupaciones."Código"=servplanning."Agrupación"	
	AND reservas."Agrupación"=servplanning."Agrupación"
	AND reservas.Vivienda=servplanning.Vivienda
	AND servplanning.Fecha &gt;= reservas.Desde
	AND servplanning.Fecha &lt;= reservas.Hasta

	AND servplanning.Servicio-servplanning.Servicio+2 NOT IN (
		SELECT COUNT(*) FROM reservas WHERE 
			reservas."Agrupación"=servplanning."Agrupación"
			AND reservas.Vivienda=servplanning.Vivienda
			AND servplanning.Fecha &gt;= reservas.Desde
			AND servplanning.Fecha &lt;= reservas.Hasta
	)
	AND servicios."Código"=servplanning.Servicio
	AND viviendas."Agrupación"=servplanning."Agrupación"
	AND viviendas.Vivienda=servplanning.Vivienda

UNION ALL

	/*
	Servicios situados sobre dos reservas a la vez.
	En ese caso, tomo la reserva que tiene el servicio el día de entrada.
	*/

SELECT
	agrupaciones."Descripción",
	servplanning.Vivienda,
	servplanning.Fecha,
	servicios."Descripción" AS servicios.Servicio,
	viviendas.Dormitorios AS viviendas."Dorm.",
	viviendas.CUARTOS_BANIO AS viviendas."Baños",
	viviendas.Aseos,
	CAST(reservas.Reserva AS char(7)),
	(1.0*reservas.Adultos) AS reservas."Adultos$SUM",
	(1.0*reservas."Niños") AS reservas."Niños$SUM",
	(1.0*reservas."Bebés") AS reservas."Bebés$SUM",
	(1.0*reservas."NUM_MASCOTAS") AS reservas."Mascotas$SUM"	
FROM
	agrupaciones,
	servplanning,
	reservas,
	servicios,
	viviendas 
WHERE		
	
	servplanning.Fecha &gt;= &#39;:1&#39;
	AND servplanning.Fecha &lt;= &#39;:2&#39;	
	AND agrupaciones."Código"=servplanning."Agrupación"	
	AND reservas."Agrupación"=servplanning."Agrupación"
	AND reservas.Vivienda=servplanning.Vivienda
	AND servplanning.Fecha = reservas.Desde
	AND servplanning.Servicio-servplanning.Servicio+2  IN (
		SELECT COUNT(*) FROM reservas WHERE 
			reservas."Agrupación"=servplanning."Agrupación"
			AND reservas.Vivienda=servplanning.Vivienda
			AND servplanning.Fecha &gt;= reservas.Desde
			AND servplanning.Fecha &lt;= reservas.Hasta
	)
	AND servicios."Código"=servplanning.Servicio
	AND viviendas."Agrupación"=servplanning."Agrupación"
	AND viviendas.Vivienda=servplanning.Vivienda

ORDER BY
	agrupaciones."Descripción",
	servplanning.Vivienda,
	servplanning.Fecha,
	servicios."Descripción" </sql>
	<totals>
	</totals>
	<footer></footer>
</turisoftreportfile>
