UFN_MKTSOURCECODE_AUTOINCREMENTCODE

Builds the next available source code value for a given source code value ID.

Return

Return Type
nvarchar(10)

Parameters

Parameter Parameter Type Mode Description
@PARTDEFINITIONVALUESID uniqueidentifier IN
@MAILINGTYPECODE tinyint IN

Definition

Copy


CREATE function dbo.[UFN_MKTSOURCECODE_AUTOINCREMENTCODE]
(
  @PARTDEFINITIONVALUESID uniqueidentifier,
  @MAILINGTYPECODE tinyint = 0
)
/*
  Finds the next available source code for a given source code part definition values ID.
*/
returns nvarchar(10)
as
  begin
    declare @ITEMTYPECODE tinyint;
    declare @FORMAT nvarchar(10);
    declare @NEXTSOURCECODEPART nvarchar(10);
    declare @CODEEXISTS bit;
    declare @COUNT integer;
    declare @LASTCODE nvarchar(50);
    declare @ROWCOUNT int;

    set @NEXTSOURCECODEPART = '';

    select
      @ITEMTYPECODE = [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE],
      @FORMAT = [MKTSOURCECODEPARTDEFINITIONVALUES].[FORMAT]
    from dbo.[MKTSOURCECODEPARTDEFINITIONVALUES]
    inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEPARTDEFINITIONVALUES].[MKTSOURCECODEPARTDEFINITIONID]
    where [MKTSOURCECODEPARTDEFINITIONVALUES].[ID] = @PARTDEFINITIONVALUESID;

    if (@ITEMTYPECODE = 0)  -- Mailing

      begin
        set @LASTCODE = '';

        /* White mail segment */
        if @MAILINGTYPECODE = 254
          begin
            select top 1 @LASTCODE = [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;
            select @ROWCOUNT = count([CODE]) from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Direct/Appeal/Public media */
        else if @MAILINGTYPECODE in (0, 4)
          begin
            select top 1 @LASTCODE = [CODE] from dbo.[MKTSEGMENTATION] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;
            set @ROWCOUNT = (select count([CODE]) from dbo.[MKTSEGMENTATION] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID)
                          + (select count([CODE]) from dbo.[MKTMARKETINGPLANITEM] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID);
          end

        /* Acknowledgement */
        else if @MAILINGTYPECODE = 1
          begin
            select top 1 @LASTCODE = [CODE] from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;
            select @ROWCOUNT = count([CODE]) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Membership */
        else if @MAILINGTYPECODE = 2
          begin
            select top 1 @LASTCODE = [CODE] from dbo.[MKTMEMBERSHIPMAILINGTEMPLATE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;
            select @ROWCOUNT = count([CODE]) from dbo.[MKTMEMBERSHIPMAILINGTEMPLATE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Sponsorship */
        else if @MAILINGTYPECODE = 3
          begin
            select top 1 @LASTCODE = [CODE] from dbo.[MKTSPONSORSHIPMAILINGTEMPLATE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;
            select @ROWCOUNT = count([CODE]) from dbo.[MKTSPONSORSHIPMAILINGTEMPLATE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)

        set @CODEEXISTS = case
          when @MAILINGTYPECODE = 254 then
            case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE in (0, 4) then
            case when exists (select top 1 1 from dbo.[MKTSEGMENTATION] where [CODE] = @NEXTSOURCECODEPART) or exists (select top 1 1 from dbo.[MKTMARKETINGPLANITEM] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 1 then
            case when exists (select top 1 1 from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 2 then
            case when exists (select top 1 1 from dbo.[MKTMEMBERSHIPMAILINGTEMPLATE] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 3 then
            case when exists (select top 1 1 from dbo.[MKTSPONSORSHIPMAILINGTEMPLATE] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          end;

        set @COUNT = 0;

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)

            set @CODEEXISTS = case 
              when @MAILINGTYPECODE = 254 then
                case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE in (0, 4) then
                case when exists (select top 1 1 from dbo.[MKTSEGMENTATION] where [CODE] = @NEXTSOURCECODEPART) or exists (select top 1 1 from dbo.[MKTMARKETINGPLANITEM] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE = 1 then
                case when exists (select top 1 1 from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE = 2 then
                case when exists (select top 1 1 from dbo.[MKTMEMBERSHIPMAILINGTEMPLATE] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE = 3 then
                case when exists (select top 1 1 from dbo.[MKTSPONSORSHIPMAILINGTEMPLATE] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              end;

            set @COUNT += 1;
          end
      end

    else if (@ITEMTYPECODE = 1) -- Segment

      begin
        set @LASTCODE = '';

        select top 1 @LASTCODE = [CODE] from dbo.[MKTSEGMENT] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)
        set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTSEGMENT] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end;
        set @COUNT = 0;

        /* Need to set rowcount to number of segments with the code value */
        select @ROWCOUNT = count([CODE]) from dbo.[MKTSEGMENT] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)
            set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTSEGMENT] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end;
            set @COUNT += 1;
          end
      end

    else if (@ITEMTYPECODE = 2) -- Package

      begin
        set @LASTCODE = '';

        select top 1 @LASTCODE = [CODE]
        from (
          select [CODE] from dbo.[MKTPACKAGE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
          union
          select [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
        ) as [CODES]
        order by upper([CODE]) desc;

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)    
        set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTPACKAGE] where [CODE] = @NEXTSOURCECODEPART
                                 or exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART)
                               then 1 else 0 end;
        set @COUNT = 0;

        /* Need to set rowcount to number of packages with the code value */
        select @ROWCOUNT = count([CODE])
        from (
          select [CODE] from dbo.[MKTPACKAGE] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
          union
          select [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
        ) as [CODES];

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)
            set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTPACKAGE] where [CODE] = @NEXTSOURCECODEPART
                                     or exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART)
                                   then 1 else 0 end;
            set @COUNT += 1;
          end
      end

    else if (@ITEMTYPECODE = 3) -- Channel

      begin
        set @LASTCODE = '';

        select top 1 @LASTCODE = [CODE]
        from (
          select [CHANNELSOURCECODE] as [CODE] from dbo.[MKTPACKAGE] where [CHANNELPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
          union
          select [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
        ) as [CODES]
        order by upper([CODE]) desc;

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)  
        set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTPACKAGE] where [CHANNELSOURCECODE] = @NEXTSOURCECODEPART)
                                 or exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART)
                               then 1 else 0 end;
        set @COUNT = 0;

        /* Need to set rowcount to number of packages with the code value */
        select @ROWCOUNT = count([CODE])
        from (
          select [CHANNELSOURCECODE] as [CODE] from dbo.[MKTPACKAGE] where [CHANNELPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
          union
          select [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
        ) as [CODES];

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)
            set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTPACKAGE] where [CHANNELSOURCECODE] = @NEXTSOURCECODEPART)
                                     or exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART)
                                   then 1 else 0 end;
            set @COUNT += 1;
          end
      end

    else if (@ITEMTYPECODE = 5) -- User defined

      begin
        set @LASTCODE = '';

        select top 1 @LASTCODE = [CODE] from dbo.[MKTSOURCECODEPART] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)  
        set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end;
        set @COUNT = 0;

        /* Need to set rowcount to number of user defined codes with the code value */
        select @ROWCOUNT = count([CODE]) from dbo.[MKTSOURCECODEPART] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)
            set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end;
            set @COUNT += 1;
          end
      end

    else if (@ITEMTYPECODE = 6) -- List

      begin
        set @LASTCODE = '';

        select top 1 @LASTCODE = [CODE] 
        from (
          select [CODE] from dbo.[MKTLIST] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
          union
          select [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
        ) as [CODES]
        order by upper([CODE]) desc;

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)      
        set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTLIST] where [CODE] = @NEXTSOURCECODEPART
                                 or exists (select top 1 1 from dbo.[MKTRECORDSOURCE] where [CODE] = @NEXTSOURCECODEPART)
                                 or exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART)
                               then 1 else 0 end;
        set @COUNT = 0;

        /* Need to set rowcount to number of lists with the code value */
        select @ROWCOUNT = count([CODE]) 
        from (
          select [CODE] from dbo.[MKTLIST] where [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
          union
          select [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID
        ) as [CODES];          

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)
            set @CODEEXISTS = case when exists (select top 1 1 from dbo.[MKTLIST] where [CODE] = @NEXTSOURCECODEPART
                                     or exists (select top 1 1 from dbo.[MKTRECORDSOURCE] where [CODE] = @NEXTSOURCECODEPART)
                                     or exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART)
                                   then 1 else 0 end;
            set @COUNT += 1;
          end
      end 

    else if (@ITEMTYPECODE = 7) -- Test segment

      begin
        set @LASTCODE = '';

        /* White mail segment */
        if @MAILINGTYPECODE = 254
          begin
            select top 1 @LASTCODE = [CODE] from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([CODE]) desc;
            select @ROWCOUNT = count([CODE]) from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Appeal */
        else if @MAILINGTYPECODE = 0
          begin
            select top 1 @LASTCODE = [TESTSEGMENTCODE] from dbo.[MKTSEGMENTATIONSEGMENT] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([TESTSEGMENTCODE]) desc;
            select @ROWCOUNT = count([TESTSEGMENTCODE]) from dbo.[MKTSEGMENTATIONSEGMENT] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Acknowledgement */
        else if @MAILINGTYPECODE = 1
          begin
            select top 1 @LASTCODE = [TESTSEGMENTCODE] from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([TESTSEGMENTCODE]) desc;
            select @ROWCOUNT = count([TESTSEGMENTCODE]) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Membership */
        else if @MAILINGTYPECODE = 2
          begin
            select top 1 @LASTCODE = [TESTSEGMENTCODE] from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([TESTSEGMENTCODE]) desc;
            select @ROWCOUNT = count([TESTSEGMENTCODE]) from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        /* Sponsorship */
        else if @MAILINGTYPECODE = 3
          begin
            select top 1 @LASTCODE = [TESTSEGMENTCODE] from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID order by upper([TESTSEGMENTCODE]) desc;
            select @ROWCOUNT = count([TESTSEGMENTCODE]) from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] where [TESTPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID;
          end

        set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @LASTCODE)

        set @CODEEXISTS = case 
          when @MAILINGTYPECODE = 254 then
            case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 0 then
            case when exists (select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 1 then
            case when exists (select top 1 1 from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 2 then
            case when exists (select top 1 1 from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          when @MAILINGTYPECODE = 3 then
            case when exists (select top 1 1 from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
          end;

        set @COUNT = 0;

        /* Loop until we find a unique code or all the code possibilities have been exhausted */
        while (@CODEEXISTS = 1 and @COUNT < @ROWCOUNT)
          begin
            set @NEXTSOURCECODEPART = dbo.[UFN_MKTSOURCECODE_BUILDNEXTVALUE](@FORMAT, @NEXTSOURCECODEPART)

            set @CODEEXISTS = case 
              when @MAILINGTYPECODE = 254 then
                case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [WHITEMAILSEGMENTID] is not null and [PARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID and [CODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE = 0 then
                case when exists (select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE = 1 then
                case when exists (select top 1 1 from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
    when @MAILINGTYPECODE = 2 then
                case when exists (select top 1 1 from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              when @MAILINGTYPECODE = 3 then
                case when exists (select top 1 1 from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] where [TESTSEGMENTCODE] = @NEXTSOURCECODEPART) then 1 else 0 end
              end;

            set @COUNT += 1;
          end
      end

  return @NEXTSOURCECODEPART;
end