UFN_ADDRESS_MATCHINGHOUSEHOLDRECORDS

Returns a list of constituents with matching address records related through a household.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@COUNTRYID uniqueidentifier IN
@STATEID uniqueidentifier IN
@ADDRESSBLOCK nvarchar(150) IN
@CITY nvarchar(50) IN
@POSTCODE nvarchar(12) IN
@ADDRESSTYPECODEID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_ADDRESS_MATCHINGHOUSEHOLDRECORDS
            (
                @CONSTITUENTID uniqueidentifier,
                @COUNTRYID uniqueidentifier,
                @STATEID uniqueidentifier,
                @ADDRESSBLOCK nvarchar(150),
                @CITY nvarchar(50),
                @POSTCODE nvarchar(12),    
                @ADDRESSTYPECODEID uniqueidentifier
            ) returns @CONSTITUENTSWITHMATCHINGPHONE table(CONSTITUENTID uniqueidentifier, NAME nvarchar(154), RELATIONSHIPTOPRIMARY nvarchar(300)) as
            begin
                declare @CURRENTDATE date;
                set @CURRENTDATE = getdate();

                -- the record if it's a household, or the household an individual belongs to    

                declare @HOUSEHOLDID uniqueidentifier; 
                if dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1
                    set @HOUSEHOLDID = @CONSTITUENTID;
                else
                    select
                        @HOUSEHOLDID = GM.GROUPID
                    from
                        dbo.GROUPMEMBER GM
                    left outer join
                        dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
                    left outer join
                        dbo.GROUPDATA GD on GD.ID = GM.GROUPID
                    where
                        GM.MEMBERID = @CONSTITUENTID
                    and
                        GD.GROUPTYPECODE = 0
                    and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                        or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                        or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE));

                declare @PRIMARYMEMBERID uniqueidentifier;
                select
                    @PRIMARYMEMBERID = GM.MEMBERID
                from
                    dbo.GROUPMEMBER GM
                where
                    GM.GROUPID = @HOUSEHOLDID
                and
                    GM.ISPRIMARY = 1;

                with HOUSEHOLDCONSTITUENTID(ID) as
                (
                    select
                        GM.MEMBERID as ID
                    from
                        dbo.GROUPMEMBER GM
                    left outer join
                        dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
                    where
                        GM.GROUPID = @HOUSEHOLDID
                    and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                        or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                        or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))
                    and
                        GM.MEMBERID <> @CONSTITUENTID
                    union all
                    select
                        @HOUSEHOLDID
                    where
                        @HOUSEHOLDID <> @CONSTITUENTID
                )
                insert into
                    @CONSTITUENTSWITHMATCHINGPHONE
                select
                    A.CONSTITUENTID,
                    C.NAME,
                    (select dbo.UDA_BUILDLIST(distinct RTC.DESCRIPTION)
                    from dbo.RELATIONSHIP R
                    left outer join dbo.RELATIONSHIPTYPECODE RTC
                    on R.RELATIONSHIPTYPECODEID = RTC.ID
                    where C.ID = R.RELATIONSHIPCONSTITUENTID
                    and R.RECIPROCALCONSTITUENTID = @PRIMARYMEMBERID
                    ) RELATIONSHIPTOPRIMARY
                from
                    dbo.ADDRESS A
                inner join
                    HOUSEHOLDCONSTITUENTID on A.CONSTITUENTID = HOUSEHOLDCONSTITUENTID.ID
                left outer join
                    dbo.CONSTITUENT C on C.ID = A.CONSTITUENTID
                where
                    A.COUNTRYID = @COUNTRYID
                and
                    ( (A.STATEID = @STATEID) or (A.STATEID is null and @STATEID is null) )
                and
                    A.ADDRESSBLOCK = @ADDRESSBLOCK
                and
                    A.CITY = @CITY
                and
                    A.POSTCODE = @POSTCODE
                and 
                    ( (A.ADDRESSTYPECODEID = @ADDRESSTYPECODEID) or (A.ADDRESSTYPECODEID is null and @ADDRESSTYPECODEID is null) );

                return;
            end