-- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[fds__fn_IntermediateIsAllocatedToOther] ( @Intermediate_InvID varchar(10) ,@Target_InvID varchar(10) ) RETURNS bit AS BEGIN -- An allocation only counts while the crediting invoice is alive: once that invoice is cancelled -- (storno) its credit line is void and the Abschlagsrechnung must be offered again (ADR 0034). DECLARE @IsA bit = CASE WHEN EXISTS (SELECT 1 FROM [dbo].[fds__invoices] as intermediates JOIN [dbo].[fds__invoice_details] as id on intermediates.[Id] = id.[InvId] and id.[AllocatedTo_InvId] is not null JOIN [dbo].[fds__invoices] as non_intermediates ON id.[AllocatedTo_InvId] = non_intermediates.[Id] and id.[AllocatedTo_InvId] is not null WHERE intermediates.[Id] = @Intermediate_InvID and ISNULL(non_intermediates.[IsCanceled], 0) = 0 and (@Target_InvID is null or non_intermediates.[Id] <> @Target_InvID)) THEN 1 ELSE 0 END; RETURN @isA; END