Esta es la query, evidentemente me falla la lógica.
Código SQL:
Ver originalIF EXISTS(
SELECT dbo.liquidacion.id_liq
FROM dbo.liquidacion INNER JOIN [dbo].[documento] ON [dbo].[liquidacion].[id_liq] = [dbo].[documento].[id_documento]
WHERE ([dbo].[documento].[zafra_id] = @zafraId)
AND
(
(
([dbo].[liquidacion].[fecha_inicio] >= @periodoIni) AND ([dbo].[liquidacion].[fecha_fin] <= @periodoFin) AND ([dbo].[liquidacion].[productor] = @productorId)
)
OR
(
([dbo].[liquidacion].[fecha_inicio] = @periodoIni) AND ([dbo].[liquidacion].[fecha_fin] = @periodoFin) AND ([dbo].[liquidacion].[productor] = @productorId)
)
OR
(
([dbo].[liquidacion].[fecha_inicio] <= @periodoIni) AND ([dbo].[liquidacion].[fecha_fin] BETWEEN @periodoFin AND @periodoFin) AND ([dbo].[liquidacion].[productor] = @productorId)
)
)
)
BEGIN
RAISERROR('Ya existe una liquidación para el productor %s dentro del periodo seleccionado.', 16, 1, @nombreProductor )
GOTO quitarConRollBack
END