/*
(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,
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",
" " AS servplanning."Horas",
servplanning.NOTAS AS servicios."Observaciones"
FROM
servplanning,
servicios,
viviendas,
empleados,
listas_aloj,
listas_aloj_lin
WHERE
servplanning.Fecha >= ':1'
AND servplanning.Fecha <= ':2'
AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
AND UPPER(empleados.Nombre) LIKE UPPER('%:3%')
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 >= reservas.Desde
AND servplanning.Fecha <= 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
UNION ALL
/*
Servicios que están situados sobre reservas pero NO en dos de ellas
*/
SELECT DISTINCT
empleados.Nombre,
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",
" " AS servplanning."Horas",
servplanning.NOTAS AS servicios."Observaciones"
FROM
servplanning,
reservas,
servicios,
viviendas,
empleados,
listas_aloj,
listas_aloj_lin
WHERE
servplanning.Fecha >= ':1'
AND servplanning.Fecha <= ':2'
AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
AND UPPER(empleados.Nombre) LIKE UPPER('%:3%')
AND reservas."Agrupación"=servplanning."Agrupación"
AND reservas.Vivienda=servplanning.Vivienda
AND servplanning.Fecha >= reservas.Desde
AND servplanning.Fecha <= reservas.Hasta
AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
AND UPPER(empleados.Nombre) LIKE UPPER('%:3%')
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 >= reservas.Desde
AND servplanning.Fecha <= 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
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,
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",
" " AS servplanning."Horas",
servplanning.NOTAS AS servicios."Observaciones"
FROM
servplanning,
reservas,
servicios,
viviendas,
empleados,
listas_aloj,
listas_aloj_lin
WHERE
servplanning.Fecha >= ':1'
AND servplanning.Fecha <= ':2'
AND servplanning.EMPLEADO_PREASIGNADO=empleados."Código"
AND UPPER(empleados.Nombre) LIKE UPPER('%:3%')
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 >= reservas.Desde
AND servplanning.Fecha <= 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
ORDER BY
empleados.Nombre,
servplanning.Vivienda,
servplanning.Fecha,
servicios."Descripción"