UFN_MKTSEGMENTATION_COMPARECOMMPREFS

Compares communication preferences settings, and returns true if they're different and false if not.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@EXCLUSIONDATETYPECODE1 tinyint IN
@EXCLUSIONASOFDATE1 datetime IN
@EXCLUDEDECEASED1 bit IN
@EXCLUDEINACTIVE1 bit IN
@EXCLUSIONS1 xml IN
@EXCLUSIONDATETYPECODE2 tinyint IN
@EXCLUSIONASOFDATE2 datetime IN
@EXCLUDEDECEASED2 bit IN
@EXCLUDEINACTIVE2 bit IN
@EXCLUSIONS2 xml IN

Definition

Copy


CREATE function dbo.[UFN_MKTSEGMENTATION_COMPARECOMMPREFS]
(
  @EXCLUSIONDATETYPECODE1 tinyint,
  @EXCLUSIONASOFDATE1 datetime,
  @EXCLUDEDECEASED1 bit
  @EXCLUDEINACTIVE1 bit
  @EXCLUSIONS1 xml,
  @EXCLUSIONDATETYPECODE2 tinyint,
  @EXCLUSIONASOFDATE2 datetime,
  @EXCLUDEDECEASED2 bit,
  @EXCLUDEINACTIVE2 bit,
  @EXCLUSIONS2 xml
)
returns bit
as
  begin
    declare @DIFFERENT bit;
    set @DIFFERENT = 0;

    if @EXCLUSIONDATETYPECODE1 is not null and (@EXCLUSIONDATETYPECODE1 = 0 or (@EXCLUSIONDATETYPECODE1 = 1 and @EXCLUSIONASOFDATE1 is not null)) and @EXCLUDEDECEASED1 is not null and @EXCLUDEINACTIVE1 is not null
      if @EXCLUSIONDATETYPECODE1 <> @EXCLUSIONDATETYPECODE2 or (@EXCLUSIONDATETYPECODE1 = 1 and @EXCLUSIONASOFDATE1 <> @EXCLUSIONASOFDATE2) or @EXCLUDEDECEASED1 <> @EXCLUDEDECEASED2 or @EXCLUDEINACTIVE1 <> @EXCLUDEINACTIVE2
        set @DIFFERENT = 1;
      else
        begin
          -- compare the old and new @EXCLUSIONS xml to see if the user changed anything...

          declare @E1 table([ID] uniqueidentifier, [SOLICITCODEID] uniqueidentifier not null);
          declare @E2 table([ID] uniqueidentifier, [SOLICITCODEID] uniqueidentifier not null);
          declare @COUNT1 int;
          declare @COUNT2 int;

          insert into @E1 ([ID], [SOLICITCODEID])
            select [ID], [SOLICITCODEID]
            from dbo.[UFN_BUSINESSPROCESSCOMMPREF_GETEXCLUSIONS_FROMITEMLISTXML](@EXCLUSIONS1);

          insert into @E2 ([ID], [SOLICITCODEID])
            select [ID], [SOLICITCODEID]
            from dbo.[UFN_BUSINESSPROCESSCOMMPREF_GETEXCLUSIONS_FROMITEMLISTXML](@EXCLUSIONS2);

          select @COUNT1 = count(1) from @E1;
          select @COUNT2 = count(1) from @E2;

          if @COUNT1 <> @COUNT2
            set @DIFFERENT = 1;
          else
            begin
              select @COUNT2 = count(1)
              from @E1 as [E1]
              inner join @E2 as [E2] on [E2].[SOLICITCODEID] = [E1].[SOLICITCODEID];

              if @COUNT1 <> @COUNT2
                set @DIFFERENT = 1;
              else
                set @DIFFERENT = 0;
            end
        end  

    return @DIFFERENT;
  end;