USP_CONSTITUENTUPDATEBATCH_DOMANUALREVIEWFORAUTOMATCH

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
@DOMANUALREVIEWFORAUTOMATCH bit INOUT

Definition

Copy


create procedure dbo.USP_CONSTITUENTUPDATEBATCH_DOMANUALREVIEWFORAUTOMATCH(
  @BATCHCONSTITUENTUPDATEID uniqueidentifier,
  @MATCHEDRECORDID uniqueidentifier,
  @NAMEEXCEPTIONCODE tinyint,
  @ADDRESSSIMILAREXCEPTIONCODE tinyint,
  @ADDRESSNOTSIMILAREXCEPTIONCODE tinyint,
  @DIFFERENTPHONECODE tinyint,
  @DIFFERENTEMAILCODE tinyint,
  @DOMANUALREVIEWFORAUTOMATCH bit = null output
  )  as
  set nocount on;

  declare @CHANGEAGENTID uniqueidentifier;
  exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

  declare @CURRENTDATE datetime;
  set @CURRENTDATE = getdate()

  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;

  -- check names   

  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;

  -- check addresses and mark the incoming addresses that triggerd the manual review

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

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

      update dbo.BATCHCONSTITUENTUPDATEADDRESSES
            set ISMANUALEXCEPTION = 1, MANUALEXCEPTIONSIMILARADDRESSID = FA.ADDRESSID, @DOMANUALREVIEWFORAUTOMATCH = 1, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
      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))
    end

  -- check phones and mark the incoming phones that triggerd the manual review

  if @DIFFERENTPHONECODE = 2
    update dbo.BATCHCONSTITUENTUPDATEPHONES
          set ISMANUALEXCEPTION = 1, @DOMANUALREVIEWFORAUTOMATCH = 1, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE  
    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

  -- check emails and mark the incoming emails that triggerd the manual review

  if @DIFFERENTEMAILCODE = 2 
    update dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES
          set ISMANUALEXCEPTION = 1, @DOMANUALREVIEWFORAUTOMATCH = 1, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE   
    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

  return 0;