UFN_CONSTITUENTUPDATEBATCH_DOMANUALREVIEWFORAUTOMATCH_2

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@BATCHCONSTITUENTUPDATEID uniqueidentifier IN
@MATCHEDRECORDID uniqueidentifier IN
@NAMEEXCEPTIONCODE tinyint IN
@ADDRESSSIMILAREXCEPTIONCODE tinyint IN
@ADDRESSNOTSIMILAREXCEPTIONCODE tinyint IN
@DIFFERENTPHONECODE tinyint IN
@DIFFERENTEMAILCODE tinyint IN

Definition

Copy


CREATE function dbo.UFN_CONSTITUENTUPDATEBATCH_DOMANUALREVIEWFORAUTOMATCH_2(
  @BATCHCONSTITUENTUPDATEID uniqueidentifier,
  @MATCHEDRECORDID uniqueidentifier,
  @NAMEEXCEPTIONCODE tinyint,
  @ADDRESSSIMILAREXCEPTIONCODE tinyint,
  @ADDRESSNOTSIMILAREXCEPTIONCODE tinyint,
  @DIFFERENTPHONECODE tinyint,
  @DIFFERENTEMAILCODE tinyint
)
returns bit
with execute as caller
as begin

  declare @DOMANUALREVIEWFORAUTOMATCH bit;
  declare @KEYNAME nvarchar(255);
  declare @FIRSTNAME nvarchar(255);
  declare @MIDDLENAME nvarchar(255);
  declare @TITLECODEID uniqueidentifier;
  declare @SUFFIXCODEID uniqueidentifier;
  declare @EXISTINGFIRSTNAME nvarchar(100);
  declare @EXISTINGKEYNAME nvarchar(200);
  declare @EXISTINGMIDDLENAME nvarchar(100);
  declare @EXISTINGSUFFIXCODEID uniqueidentifier;
  declare @EXISTINGTITLECODEID uniqueidentifier;
  declare @ADDRESSMATCHTHRESHOLD decimal(20,4);

  set @DOMANUALREVIEWFORAUTOMATCH = 0;

  select
    @KEYNAME = KEYNAME,
    @FIRSTNAME = FIRSTNAME,
    @MIDDLENAME = MIDDLENAME,
    @TITLECODEID = TITLECODEID,
    @SUFFIXCODEID = SUFFIXCODEID
  from dbo.BATCHCONSTITUENTUPDATE where ID = @BATCHCONSTITUENTUPDATEID;  

  if @NAMEEXCEPTIONCODE = 2
      select
        @EXISTINGKEYNAME = KEYNAME,
        @EXISTINGFIRSTNAME = FIRSTNAME,
        @EXISTINGMIDDLENAME = MIDDLENAME,
        @EXISTINGTITLECODEID = TITLECODEID,
        @EXISTINGSUFFIXCODEID = SUFFIXCODEID
      from dbo.CONSTITUENT where ID = @MATCHEDRECORDID;


  if @NAMEEXCEPTIONCODE = 2 and ((@EXISTINGFIRSTNAME <> @FIRSTNAME and @FIRSTNAME <> '') or 
                                  (@EXISTINGKEYNAME <> @KEYNAME  and @KEYNAME <> '') or 
                                  (@EXISTINGMIDDLENAME <> @MIDDLENAME  and @MIDDLENAME <> '') or 
                                  (@EXISTINGSUFFIXCODEID <> @SUFFIXCODEID  and @SUFFIXCODEID is not null) or 
                                  (@EXISTINGTITLECODEID <> @TITLECODEID and @TITLECODEID is not null))
    set @DOMANUALREVIEWFORAUTOMATCH = 1;

  else if (@ADDRESSSIMILAREXCEPTIONCODE = 2 or @ADDRESSNOTSIMILAREXCEPTIONCODE = 2)
    begin
      -- Get the address match threshold 

      select top 1
        @ADDRESSMATCHTHRESHOLD = ADDRESSMATCHTHRESHOLD
      from dbo.CONSTITUENTDUPLICATESEARCHSETTINGS;

      if exists(select 'x'
            from dbo.BATCHCONSTITUENTUPDATEADDRESSES  BCUA
            outer apply dbo.UFN_FINDADDRESSMATCH(@MATCHEDRECORDID, ADDRESSBLOCK, POSTCODE, COUNTRYID, CITY, STATEID, ADDRESSTYPECODEID, @ADDRESSMATCHTHRESHOLD) FA
            where BCUA.BATCHCONSTITUENTUPDATEID = @BATCHCONSTITUENTUPDATEID
            and ((FA.ADDRESSID is null and @ADDRESSNOTSIMILAREXCEPTIONCODE = 2)
            or (FA.ADDRESSID is not null and FA.NOCONFLICTS = 0 and @ADDRESSSIMILAREXCEPTIONCODE = 2)))
      set @DOMANUALREVIEWFORAUTOMATCH = 1;
    end
  -- check phones

  else if @DIFFERENTPHONECODE = 2 and exists (select 'x' 
                                              from dbo.BATCHCONSTITUENTUPDATEPHONES BP 
                                              left join 
                                              dbo.PHONE P 
                                              on P.NUMBER = BP.NUMBER and (P.PHONETYPECODEID is null or BP.PHONETYPECODEID is null or P.PHONETYPECODEID = BP.PHONETYPECODEID)
                                              where P.ID is null
                                              and BP.BATCHCONSTITUENTUPDATEID = @BATCHCONSTITUENTUPDATEID
                                              )
      set @DOMANUALREVIEWFORAUTOMATCH = 1
  -- check emails

  else if @DIFFERENTEMAILCODE = 2 and exists (select 'x' 
                                              from dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES BE 
                                              left join 
                                              dbo.EMAILADDRESS E 
                                              on E.EMAILADDRESS = BE.EMAILADDRESS and (E.EMAILADDRESSTYPECODEID is null or BE.EMAILADDRESSTYPECODEID is null or E.EMAILADDRESSTYPECODEID = BE.EMAILADDRESSTYPECODEID)
                                              where E.ID is null
                                              and BE.BATCHCONSTITUENTUPDATEID = @BATCHCONSTITUENTUPDATEID
                                              )
      set @DOMANUALREVIEWFORAUTOMATCH = 1;       

    return @DOMANUALREVIEWFORAUTOMATCH;
end