<?xml version="1.0" encoding="iso-8859-1"?>
<turisoftreportfile title="Entradas con control de cobros 4.0 [desde-hasta fecha de REALIZACIÓN de la reserva]" breakpoint="" group="">
	<parameters>
		<param name=":1" description="Desde fecha de realización reserva" type="DATE" order="2" show="yes" default="" />
		<param name=":2" description="Hasta fecha de realización reserva" type="DATE" order="3" show="yes" default="" />
		<param name=":3" description="Nombre de la agrupación (o parte de él)" type="STRING" order="1" show="no" default="" />
	</parameters>
	<sql>
/*
	NOTA SOBRE LOS TIPOS DE RECIBO
	1 -&gt; Alojamiento
	2 -&gt; Alojamiento
	3 -&gt; Alojamiento
	4 -&gt; Alojamiento
	5 -&gt; Complementos
	6 -&gt; Abono
	7 -&gt; Fianza (a devolver)

*/

SELECT 	
	RES.CREACION AS RES."Reservada",
	RES.Desde Entrada,
	RES.Hasta Salida,
	/* COUNT(*)-COUNT(*)+1  RES."GrupoQuery", */
	AGRUP."Descripción" AGRUP."Agrupación",
	"RES"."Vivienda",
	INQUI.Nombre Inquilino,
	SUM(PRECIOSRESERVA.Precio)/COUNT(DISTINCT RECIBOS.Contador)   F."Importe$E$SUM",
	SUM(RECIBOS.Importe)/COUNT(DISTINCT PRECIOSRESERVA.Contador)  F."Cobrado$E$SUM",
	SUM(PRECIOSRESERVA.Precio)/COUNT(DISTINCT RECIBOS.Contador)  -
	SUM(RECIBOS.Importe)/COUNT(DISTINCT PRECIOSRESERVA.Contador) F."Pendiente$E$SUM",
	RES.Reserva
FROM
	RESERVAS AS RES,AGRUPACIONES AS AGRUP,INQUI,PRECIOSRESERVA,RECIBOS
WHERE
	RES."Agrupación"=AGRUP."Código"
	AND RES.Agencia &gt; -2
	AND RES.CREACION   &gt;= &#39;:1&#39;
	AND RES.CREACION-1 &lt;= &#39;:2&#39;
	AND RES.INQUILINO = INQUI."Código"
	AND UPPER(AGRUP."Descripción") LIKE UPPER(&#39;%:3%&#39;)
	AND PRECIOSRESERVA.Reserva=RES.Reserva
	AND RECIBOS.Reserva=RES.Reserva
	AND ( (RECIBOS.TIPO&lt;&gt;5 AND RECIBOS.TIPO&lt;&gt;7) OR RECIBOS.TIPO IS NULL)
GROUP BY
	AGRUP."Descripción",
	"RES"."Vivienda",
	RES.CREACION,
	RES.Desde,
	RES.Hasta,
	INQUI.Nombre,
	RES.Reserva

UNION ALL

/*
	En este grupo van las reservas que no tienen agrupado ningún cobro.
	Nada de nad, de ningún tipo.
*/

SELECT 
	RES.CREACION AS RES."Reservada",
	RES.Desde Entrada,
	RES.Hasta Salida,
	/* COUNT(*)-COUNT(*)+2  RES."GrupoQuery", */
	AGRUP."Descripción" AGRUP."Agrupación",
	"RES"."Vivienda",
	INQUI.Nombre Inquilino,
	SUM(PRECIOSRESERVA.Precio)  F."Importe$E$SUM",
	0  F."Cobrado$E$SUM",
	SUM(PRECIOSRESERVA.Precio) F."Pendiente$E$SUM",
	RES.Reserva
FROM
	RESERVAS AS RES,AGRUPACIONES AS AGRUP,INQUI
JOIN PRECIOSRESERVA ON
	PRECIOSRESERVA.Reserva=RES.Reserva
FULL OUTER JOIN RECIBOS ON
	RECIBOS.Reserva=RES.Reserva
WHERE
	RES."Agrupación"=AGRUP."Código"
	AND RES.Agencia &gt; -2
	AND RES.CREACION   &gt;= &#39;:1&#39;
	AND RES.CREACION-1 &lt;= &#39;:2&#39;
	AND RES.INQUILINO = INQUI."Código"
	AND UPPER(AGRUP."Descripción") LIKE UPPER(&#39;%:3%&#39;)
GROUP BY
	AGRUP."Descripción",
	"RES"."Vivienda",
	RES.CREACION,
	RES.Desde,
	RES.Hasta,
	INQUI.Nombre,
	RES.Reserva
HAVING
	COUNT(DISTINCT RECIBOS.Contador)  = 0

UNION ALL

/*
	En este último grupo se toman las reservas que tienen anotados complementos o fianzas
	pero ningún otro tipo de cobro de alojamiento.
*/

SELECT 
	RES.CREACION AS RES."Reservada",
	RES.Desde Entrada,
	RES.Hasta Salida,
	/* COUNT(*)-COUNT(*)+3  RES."GrupoQuery", */
	AGRUP."Descripción" AGRUP."Agrupación",
	"RES"."Vivienda",
	INQUI.Nombre Inquilino,
	SUM(PRECIOSRESERVA.Precio)/COUNT(DISTINCT RECIBOS.CONTADOR)  F."Importe$E$SUM",
	0  F."Cobrado$E$SUM",
	SUM(PRECIOSRESERVA.Precio)/COUNT(DISTINCT RECIBOS.CONTADOR) F."Pendiente$E$SUM",
	RES.Reserva
FROM
	RESERVAS AS RES,AGRUPACIONES AS AGRUP,INQUI,RECIBOS,PRECIOSRESERVA
	
WHERE
	PRECIOSRESERVA.Reserva=RES.Reserva
	AND RES.Agencia &gt; -2
	AND RECIBOS.Reserva=RES.Reserva
	AND RES."Agrupación"=AGRUP."Código"
	AND RES.CREACION   &gt;= &#39;:1&#39;
	AND RES.CREACION-1 &lt;= &#39;:2&#39;
	AND RES.INQUILINO = INQUI."Código"
	AND UPPER(AGRUP."Descripción") LIKE UPPER(&#39;%:3%&#39;)
GROUP BY
	AGRUP."Descripción",
	"RES"."Vivienda",
	RES.CREACION,
	RES.Desde,
	RES.Hasta,
	INQUI.Nombre,
	RES.Reserva
HAVING
	/* Solo tiene cobros de complemtos */
	( COUNT(DISTINCT RECIBOS.TIPO) = 1 AND MIN(RECIBOS.TIPO)=5 AND MAX(RECIBOS.TIPO)=5 )

	/* Solo tiene cobros de fianza (a devolver) */
	OR ( COUNT(DISTINCT RECIBOS.TIPO) = 1 AND MIN(RECIBOS.TIPO)=7 AND MAX(RECIBOS.TIPO)=7 )

	/* Tiene cobros de complementos y de fianza */
	OR ( COUNT(DISTINCT RECIBOS.TIPO) = 2 AND MIN(RECIBOS.TIPO)=5 AND MAX(RECIBOS.TIPO)=7 )	

ORDER BY
	RES.CREACION,
	RES.Desde,
	AGRUP."Descripción", 	
	RES.Vivienda</sql>
	<totals>
	</totals>
	<footer></footer>
</turisoftreportfile>
