<?xml version="1.0" encoding="iso-8859-1"?>
<turisoftreportfile title="Servicios asignados a un determinado empleado-proveedor y lista de viviendas II" breakpoint="0" group="">
	<parameters>
		<param name=":1" description="Desde fecha" type="DATE" order="3" show="yes" default="" />
		<param name=":2" description="Hasta fecha" type="DATE" order="4" show="yes" default="" />
		<param name=":3" description="Nombre del empleado/proveedor (o parte de él)" type="STRING" order="1" show="yes" default="" />
		<param name=":4" description="ID lista predefinida de viviendas" type="INTEGER" order="2" 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 DISTINCT
	empleados.Nombre,
	agrupaciones."Descripción" AS agrupaciones."Agrupación",
	servplanning.Vivienda,
	viviendas.Localidad AS viviendas."Población",
	viviendas.Dormitorios AS viviendas."Dorm.",
	viviendas.CUARTOS_BANIO AS viviendas."Baños",
	viviendas.Aseos,
	servplanning.Fecha  AS servplanning."Fecha Servicio",
	servicios."Descripción" AS servicios."Servicio",
	0 AS reservas."Adultos$SUM",
	0 AS reservas."Niños$SUM",	
	0 AS reservas."Bebés$SUM",
	servplanning.NOTAS AS servicios."Observaciones"
FROM
	servplanning,
	servicios,
	viviendas,
	empleados,
	listas_aloj,
	listas_aloj_lin,
	agrupaciones
WHERE		
	servplanning.Fecha &gt;= &#39;:1&#39;
	AND servplanning.Fecha &lt;= &#39;:2&#39;	
	AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
	AND UPPER(empleados.Nombre) LIKE UPPER(&#39;%:3%&#39;)
	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
	AND LISTAS_ALOJ.ID_LISTA=LISTAS_ALOJ_LIN.ID_LISTA
	AND viviendas."Agrupación"=LISTAS_ALOJ_LIN.AGRUP
	AND viviendas.Vivienda=LISTAS_ALOJ_LIN.VIVIENDA
	AND LISTAS_ALOJ.ID_LISTA=:4
	AND agrupaciones."Código"=viviendas."Agrupación"

UNION ALL

	/*
	Servicios que están situados sobre reservas pero NO en dos de ellas
	*/

SELECT DISTINCT
	empleados.Nombre,
	agrupaciones."Descripción" AS agrupaciones."Agrupación",
	servplanning.Vivienda,
	viviendas.Localidad AS viviendas."Población",
	viviendas.Dormitorios AS viviendas."Dorm.",
	viviendas.CUARTOS_BANIO AS viviendas."Baños",
	viviendas.Aseos,
	servplanning.Fecha  AS servplanning."Fecha Servicio",
	servicios."Descripción" AS servicios."Servicio",
	(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",
	servplanning.NOTAS AS servicios."Observaciones"
FROM
	servplanning,
	reservas,
	servicios,
	viviendas,
	empleados,
	listas_aloj,
	listas_aloj_lin,
	agrupaciones 
WHERE			
	servplanning.Fecha &gt;= &#39;:1&#39;
	AND servplanning.Fecha &lt;= &#39;:2&#39;	
	AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
	AND UPPER(empleados.Nombre) LIKE UPPER(&#39;%:3%&#39;)
	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.EMPLEADO_PREASIGNADO=empleados."Código"
	AND UPPER(empleados.Nombre) LIKE UPPER(&#39;%:3%&#39;)
	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
	AND LISTAS_ALOJ.ID_LISTA=LISTAS_ALOJ_LIN.ID_LISTA
	AND viviendas."Agrupación"=LISTAS_ALOJ_LIN.AGRUP
	AND viviendas.Vivienda=LISTAS_ALOJ_LIN.VIVIENDA
	AND LISTAS_ALOJ.ID_LISTA=:4
	AND agrupaciones."Código"=viviendas."Agrupación"
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 DISTINCT
	empleados.Nombre,
	agrupaciones."Descripción" AS agrupaciones."Agrupación",
	servplanning.Vivienda,
	viviendas.Localidad AS viviendas."Población",
	viviendas.Dormitorios AS viviendas."Dorm.",
	viviendas.CUARTOS_BANIO AS viviendas."Baños",
	viviendas.Aseos,
	servplanning.Fecha  AS servplanning."Fecha Servicio",
	servicios."Descripción" AS servicios."Servicio",
	(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",
	servplanning.NOTAS AS servicios."Observaciones"
FROM
	servplanning,
	reservas,
	servicios,
	viviendas,
	empleados,
	listas_aloj,
	listas_aloj_lin,
	agrupaciones
WHERE		
	
	servplanning.Fecha &gt;= &#39;:1&#39;
	AND servplanning.Fecha &lt;= &#39;:2&#39;	
	AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
	AND UPPER(empleados.Nombre) LIKE UPPER(&#39;%:3%&#39;)
	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
	AND LISTAS_ALOJ.ID_LISTA=LISTAS_ALOJ_LIN.ID_LISTA
	AND viviendas."Agrupación"=LISTAS_ALOJ_LIN.AGRUP
	AND viviendas.Vivienda=LISTAS_ALOJ_LIN.VIVIENDA
	AND LISTAS_ALOJ.ID_LISTA=:4
	AND agrupaciones."Código"=viviendas."Agrupación"

ORDER BY
	empleados.Nombre,
	agrupaciones."Descripción",
	servplanning.Vivienda,
	servplanning.Fecha,
	servicios."Descripción" </sql>
	<totals>
	</totals>
	<footer></footer>
</turisoftreportfile>
