USP_SEARCHLIST_CONSTITUENTBATCHDUPLICATECONSTITUENT

Search for Duplicate Constituents in Constituent Batch.

Parameters

Parameter Parameter Type Mode Description
@KEYNAME nvarchar(100) IN Last name
@FIRSTNAME nvarchar(50) IN First name
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN Address
@ADDRESS_POSTCODE nvarchar(12) IN ZIP
@ISORGANIZATION tinyint IN Is organization
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@MIDDLENAME nvarchar(50) IN
@TITLECODEID uniqueidentifier IN
@SUFFIXCODEID uniqueidentifier IN
@ADDRESS_COUNTRYID uniqueidentifier IN
@CUSTOMIDENTIFIER nvarchar(100) IN
@PHONES xml IN
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN
@ALTERNATELOOKUPIDS xml IN
@CURRENTAPPUSERID uniqueidentifier IN
@CONSTITUENTDUPLICATEMATCHINGENABLED bit IN

Definition

Copy


CREATE procedure dbo.USP_SEARCHLIST_CONSTITUENTBATCHDUPLICATECONSTITUENT
(
    @KEYNAME nvarchar(100) = null,
    @FIRSTNAME nvarchar(50) = null,
    @ADDRESS_ADDRESSBLOCK nvarchar(150) = null,
    @ADDRESS_POSTCODE nvarchar(12) = null,
    @ISORGANIZATION tinyint = null,
    @MAXROWS smallint = 500,
    @MIDDLENAME nvarchar(50) = null,
    @TITLECODEID uniqueidentifier = null,
    @SUFFIXCODEID uniqueidentifier = null,
    @ADDRESS_COUNTRYID uniqueidentifier = null,
    @CUSTOMIDENTIFIER nvarchar(100) = null,
    @PHONES xml = null,
    @EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS = null,
    @ALTERNATELOOKUPIDS xml = null,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @CONSTITUENTDUPLICATEMATCHINGENABLED bit = null
)
as
    set nocount on

    declare @PHONENUMBER nvarchar(100);
    declare @KEYNAMEBODY nvarchar(100);
    declare @OVERALLMATCHTHRESHOLD decimal(20,4);

    select top 1 @PHONENUMBER = NUMBER
    from dbo.UFN_CONSTITUENT_GETPHONES_FORUPDATEBATCH_FROMITEMLISTXML(@PHONES)
    order by case when ISPRIMARY = 1 then 1 else 2 end, SEQUENCE

    if @ISORGANIZATION = 1 -- orgs

    begin

        begin try
            exec dbo.USP_PARSE_ORGANIZATION_NAME @KEYNAME, @KEYNAMEBODY output;
        end try
        begin catch
            set @KEYNAMEBODY = @KEYNAME;
        end catch
    end
    else
        set @KEYNAMEBODY = @KEYNAME;

    select top 1
        @OVERALLMATCHTHRESHOLD = OVERALLMATCHTHRESHOLDBATCH
    from dbo.CONSTITUENTDUPLICATESEARCHSETTINGS
    where TRANSACTIONTYPE = 'Default Criteria'
    order by DATECHANGED;

    select top(@MAXROWS)
        CONSTITUENT.ID,
        DUPLICATECANDIDATE.MATCHPERCENTAGE,
        CONSTITUENT.NAME,
        ADDRESS.ADDRESSBLOCK,
        ADDRESS.CITY,
        STATE.ABBREVIATION,
        ADDRESS.POSTCODE,
        CONSTITUENT.LOOKUPID
    from dbo.UFN_FINDCONSTITUENTMATCHES_COMPOSITETHRESHOLD_3 (
        @TITLECODEID,
        @FIRSTNAME,
        @MIDDLENAME,
        @KEYNAMEBODY,
        @SUFFIXCODEID,
        @ADDRESS_ADDRESSBLOCK,
        @ADDRESS_POSTCODE,
        @ADDRESS_COUNTRYID,
        case @ISORGANIZATION when 1 then 1 else 0 end,
        case when @ISORGANIZATION in(2,3) then 1 else 0 end,
        @CUSTOMIDENTIFIER,
        @ALTERNATELOOKUPIDS,
        @EMAILADDRESS_EMAILADDRESS,
        @PHONENUMBER,
        @OVERALLMATCHTHRESHOLD,
        0,
        @CURRENTAPPUSERID,
        @CONSTITUENTDUPLICATEMATCHINGENABLED
        ) DUPLICATECANDIDATE
    inner join dbo.CONSTITUENT on DUPLICATECANDIDATE.CONSTITUENTID = CONSTITUENT.ID
    left join dbo.ADDRESS on DUPLICATECANDIDATE.ADDRESSID = ADDRESS.ID
    left join dbo.STATE on ADDRESS.STATEID = STATE.ID
    order by DUPLICATECANDIDATE.MATCHPERCENTAGE desc, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME