USP_SEARCHLIST_CONSTITUENTBATCHDUPLICATELOOKUPID_2

Parameters

Parameter Parameter Type Mode Description
@PRIMARYRECORDID uniqueidentifier IN
@LOOKUP_ID nvarchar(100) IN
@KEYNAME nvarchar(100) IN
@FIRSTNAME nvarchar(50) IN
@ADDRESSES xml IN
@CONSTITUENTTYPECODE tinyint IN
@MAIDENNAME nvarchar(100) IN
@MIDDLENAME nvarchar(50) IN
@PHONES xml IN
@EMAILADDRESSES xml IN
@GENDERCODE tinyint IN
@MAXROWS smallint IN
@BBISTRANSACTIONTYPE nvarchar(512) IN

Definition

Copy


      create procedure [dbo].[USP_SEARCHLIST_CONSTITUENTBATCHDUPLICATELOOKUPID_2]
            (
                @PRIMARYRECORDID uniqueidentifier = null,
                @LOOKUP_ID nvarchar(100) = null,
                @KEYNAME nvarchar(100) = null,
                @FIRSTNAME nvarchar(50) = null,
                @ADDRESSES xml = null,
                @CONSTITUENTTYPECODE tinyint = null,
                @MAIDENNAME nvarchar(100) = null,
                @MIDDLENAME nvarchar(50) = null,
                @PHONES xml = null,
                @EMAILADDRESSES xml = null,
                @GENDERCODE tinyint   = null
                @MAXROWS smallint = 100,
                @BBISTRANSACTIONTYPE nvarchar(512) = null
            )
            as
                set nocount on;                

                    declare @POSTCODE nvarchar(12), @ADDRESSBLOCK nvarchar(150), @EMPLOYER nvarchar(100) = '';

                    declare @CANDIDATE table
                    (
                        CONSTITUENTID uniqueidentifier,
                        ADDRESSID uniqueidentifier,
                        MATCHPERCENTAGE numeric(5, 2),
                        LOOKUPIDTYPE nvarchar(100),
                        LOOKUPID nvarchar(100)
                    )

                    if @PRIMARYRECORDID is null
                    begin
                        if len(@LOOKUP_ID) > 0
                            begin
                                with LOOKUPIDS_CTE as 
                                (
                                    select top(@MAXROWS)
                                        C.ID ID,
                                        'Lookup ID' LOOKUPIDTYPE,
                                        C.LOOKUPID LOOKUPID
                                    from
                                        dbo.CONSTITUENT C
                                    where
                                        LOOKUPID = @LOOKUP_ID

                                    union all

                                    select top(@MAXROWS)
                                        C.ID,
                                        ALTC.DESCRIPTION,
                                        AL.ALTERNATELOOKUPID
                                    from
                                        dbo.ALTERNATELOOKUPID AL
                                    inner join
                                        dbo.CONSTITUENT C on C.ID = AL.CONSTITUENTID
                                    left join
                                        dbo.ALTERNATELOOKUPIDTYPECODE ALTC on ALTC.ID = AL.ALTERNATELOOKUPIDTYPECODEID
                                    where
                                        AL.ALTERNATELOOKUPID = @LOOKUP_ID
                                )

                                insert into @CANDIDATE (CONSTITUENTID, ADDRESSID, MATCHPERCENTAGE, LOOKUPIDTYPE, LOOKUPID)
                                select
                                    LID.ID,
                                    DUPLICATES.ADDRESSID,
                                    DUPLICATES.MATCHPERCENTAGE,
                                    LID.LOOKUPIDTYPE LOOKUPIDTYPE,
                                    LID.LOOKUPID LOOKUPID
                                from
                                    LOOKUPIDS_CTE LID
                                left join
                                    dbo.UFN_CONSTITUENT_GETDUPLICATECANDIDATES_2(@KEYNAME
                                                                                @FIRSTNAME
                                                                                @ADDRESSES,
                                                                                @MAIDENNAME
                                                                                @MIDDLENAME
                                                                                @PHONES,
                                                                                @EMAILADDRESSES
                                                                                @GENDERCODE
                                                                                @EMPLOYER,  
                                                                                @BBISTRANSACTIONTYPE) DUPLICATES on LID.ID = DUPLICATES.CONSTITUENTID
                            end
                        else
                            begin
                                if @CONSTITUENTTYPECODE = 0 -- Only perform duplicate search for individuals
                                    begin
                                        insert into @CANDIDATE (CONSTITUENTID, ADDRESSID, MATCHPERCENTAGE, LOOKUPIDTYPE, LOOKUPID)
                                        select
                                            DUPLICATES.CONSTITUENTID,
                                            DUPLICATES.ADDRESSID,
                                            DUPLICATES.MATCHPERCENTAGE,
                                            'Lookup ID' LOOKUPIDTYPE,
                                            null
                                        from 
                                            dbo.UFN_CONSTITUENT_GETDUPLICATECANDIDATES_2(@KEYNAME
                                                                                        @FIRSTNAME
                                                                                        @ADDRESSES,
                                                                                        @MAIDENNAME
                                                                                        @MIDDLENAME
                                                                                      @PHONES,
                                                                                    @EMAILADDRESSES
                                                                                        @GENDERCODE
                                                                                        @EMPLOYER,
                                                                                        @BBISTRANSACTIONTYPE) DUPLICATES
                                    end 
                            end    
                    end    

                    select top(@MAXROWS)
                        C.ID,
                        D.MATCHPERCENTAGE,
                        C.NAME,
                        A.ADDRESSBLOCK,
                        A.CITY,
                        S.ABBREVIATION,
                        A.POSTCODE,
                        D.LOOKUPIDTYPE,
                        coalesce(D.LOOKUPID, C.LOOKUPID) as LOOKUPID,
                        C.DATECHANGED
                    from 
                        @CANDIDATE D
                        inner join dbo.CONSTITUENT C on D.CONSTITUENTID = C.ID
                        left join dbo.ADDRESS A on D.ADDRESSID = A.ID
                        left join dbo.STATE S on A.STATEID = S.ID
                    order by 
                        D.MATCHPERCENTAGE desc,
                        C.KEYNAME,
                        C.FIRSTNAME