USP_DATALIST_PROSPECTRESEARCHDASHBOARDEXTENDEDRELATIONSHIPS

This datalist returns a constituent's extended relationships that are used by the prospect research dashboard.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN Constituent ID
@ISVISIBLE bit IN Is visible
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


                    CREATE procedure dbo.USP_DATALIST_PROSPECTRESEARCHDASHBOARDEXTENDEDRELATIONSHIPS
                    (
                        @CONSTITUENTID uniqueidentifier,
                        @ISVISIBLE bit = 1,
                        @CURRENTAPPUSERID uniqueidentifier = null
                    )
                    as
                        set nocount on;

                        --If you update the MAXSIZE value, you will need to update the related message in the report client component(WealthInformation_TooManyRelationships).

                        declare @MAXSIZE int = 100

                        declare @ISADMIN bit;
                        declare @APPUSER_IN_NONRACROLE bit;
                        declare @APPUSER_IN_NOSECGROUPROLE bit;

                        set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
                        set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
                        set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);

                        if @ISVISIBLE = 1
                        begin                                
                            with CTE_UNIQUE_BOS as(
                                select
                                    BO.WPRELATIONSHIP_BO_ID, COUNT(BORI.ID) as COUNT
                                from WPBUSINESSOWNERSHIP BO
                                left join dbo.WPRELATIONSHIP_BO BOR
                                    on BO.WPRELATIONSHIP_BO_ID = BOR.ID
                                left join dbo.WPRELATIONSHIP_BO_IND BORI
                                    on BOR.ID = BORI.WPRELATIONSHIP_BO_ID
                                where 
                                    BO.WEALTHID = @CONSTITUENTID and CONFIRMED = 1
                                group by BO.WPRELATIONSHIP_BO_ID
                            ),
                            CTE_UNIQUE_NPAS as(
                                select 
                                    NPA.WPRELATIONSHIP_NPA_ID, MAX(NPA.FORMYEAR) as MAXYEAR, COUNT(NPARI.ID) as COUNT
                                from 
                                    dbo.WPNONPROFITAFFILIATION NPA
                                left join dbo.WPRELATIONSHIP_NPA NPAR
                                    on NPA.WPRELATIONSHIP_NPA_ID = NPAR.ID
                                left join dbo.WPRELATIONSHIP_NPA_IND NPARI
                                    on NPAR.ID = NPARI.WPRELATIONSHIP_NPA_ID 
                                where 
                                    NPA.WEALTHID = @CONSTITUENTID and CONFIRMED = 1
                                group by NPA.WPRELATIONSHIP_NPA_ID
                            ),
                            CTE_UNIQUE_PFS as(
                                select 
                                    PF.WPRELATIONSHIP_PF_ID, MAX(FORMYEAR) as MAXYEAR, COUNT(PFRI.ID) as COUNT
                                from 
                                    dbo.WPPRIVATEFOUNDATION PF
                                left join dbo.WPRELATIONSHIP_PF PFR
                                    on PF.WPRELATIONSHIP_PF_ID = PFR.ID
                                left join dbo.WPRELATIONSHIP_PF_IND PFRI
                                    on PFR.ID = PFRI.WPRELATIONSHIP_PF_ID
                                where 
                                    WEALTHID = @CONSTITUENTID and CONFIRMED = 1
                                group by PF.WPRELATIONSHIP_PF_ID
                            )

                            --Business ownership

                            select
                                BO.ID,
                                coalesce(BUSINESS.NAME, BO.COMPANY) COMPANY,
                                BO.SOURCE,
                                case 
                                    when BO.SPOUSEIND = 0 then NF_C.NAME 
                                    when BO.SPOUSEIND = 1 then coalesce(NF_SPOUSE.NAME, NF_C.NAME)
                                end MATCHNAME,
                                BORI.LASTNAME,
                                coalesce(NF_IND.NAME, BORI.FULLNAME) RELATIONSHIPNAME,
                                BORI.TITLE,
                                BUSINESS.LOOKUPID ORGLOOKUPID,
                                IND.LOOKUPID,
                                BO.TITLE MATCHTITLE,
                                case
                                    when CTE_UNIQUE_BOS.COUNT <= @MAXSIZE then convert(bit, 0)
                                    else convert(bit,1)
                                end TOOMANYORGS
                            from
                                dbo.WPBUSINESSOWNERSHIP BO
                            left join CTE_UNIQUE_BOS
                                on CTE_UNIQUE_BOS.WPRELATIONSHIP_BO_ID = BO.WPRELATIONSHIP_BO_ID and CTE_UNIQUE_BOS.COUNT <= @MAXSIZE
                            left join dbo.CONSTITUENT C
                                on BO.WEALTHID = C.ID
                            left join dbo.RELATIONSHIP REL
                                on C.ID = REL.RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1
                            left join dbo.CONSTITUENT SPOUSE
                                on REL.RECIPROCALCONSTITUENTID = SPOUSE.ID
                            left join dbo.WPRELATIONSHIP_BO BOR
                                on BO.WPRELATIONSHIP_BO_ID = BOR.ID
                            left join dbo.WPRELATIONSHIP_BO_IND BORI
                                on BOR.ID = BORI.WPRELATIONSHIP_BO_ID
                            left join dbo.CONSTITUENT IND
                                on BORI.CONSTITUENTID = IND.ID
                            left join dbo.WPRELATIONSHIP_BO RELBO
                                on RELBO.ID = BO.WPRELATIONSHIP_BO_ID
                            left join dbo.CONSTITUENT BUSINESS
                                on BUSINESS.ID = RELBO.CONSTITUENTID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SPOUSE.ID) NF_SPOUSE
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(IND.ID) NF_IND
                            where 
                                BORI.ID is not null and
                                BO.WEALTHID = @CONSTITUENTID and
                                BO.CONFIRMED = 1
                                and (@ISADMIN = 1 or 
                                    @APPUSER_IN_NONRACROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, BO.WEALTHID, @APPUSER_IN_NOSECGROUPROLE) = 1)

                            union all

                            --Nonprofit Affiliations

                            select
                                NPA.ID,
                                coalesce(ORG.NAME, NPA.DN_ORGANIZATION) COMPANY,
                                NPA.SOURCE,
                                case 
                                    when NPA.SPOUSEFLAG = 0 then NF_C.NAME 
                                      when NPA.SPOUSEFLAG = 1 then coalesce(NF_SPOUSE.NAME, NF_C.NAME)
                                end MATCHNAME,
                                NPARI.LASTNAME,
                                coalesce(NF_IND.NAME, NPARI.FULLNAME) RELATIONSHIPNAME,
                                NPARI.TITLE,
                                ORG.LOOKUPID ORGLOOKUPID,
                                IND.LOOKUPID,
                                NPA.TITLE MATCHTITLE,
                                case
                                    when CTE_UNIQUE_NPAS.COUNT <= @MAXSIZE then convert(bit, 0)
                                    else convert(bit, 1)
                                end TOOMANYORGS
                            from
                                dbo.WPNONPROFITAFFILIATION NPA
                            inner join CTE_UNIQUE_NPAS NPAFILTER
                                on NPAFILTER.WPRELATIONSHIP_NPA_ID = NPA.WPRELATIONSHIP_NPA_ID and NPAFILTER.MAXYEAR = NPA.FORMYEAR
                            left join CTE_UNIQUE_NPAS
                                on CTE_UNIQUE_NPAS.WPRELATIONSHIP_NPA_ID = NPA.WPRELATIONSHIP_NPA_ID and CTE_UNIQUE_NPAS.MAXYEAR = NPA.FORMYEAR and CTE_UNIQUE_NPAS.COUNT <= @MAXSIZE
                            left join dbo.CONSTITUENT C
                                on NPA.WEALTHID = C.ID
                            left join dbo.RELATIONSHIP REL
                                on C.ID = REL.RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1
                            left join dbo.CONSTITUENT SPOUSE
                                on REL.RECIPROCALCONSTITUENTID = SPOUSE.ID
                            left join dbo.WPRELATIONSHIP_NPA NPAR
                                on NPA.WPRELATIONSHIP_NPA_ID = NPAR.ID and CTE_UNIQUE_NPAS.WPRELATIONSHIP_NPA_ID is not null
                            left join dbo.WPRELATIONSHIP_NPA_IND NPARI
                                on NPAR.ID = NPARI.WPRELATIONSHIP_NPA_ID
                            left join dbo.CONSTITUENT IND
                                on NPARI.CONSTITUENTID = IND.ID
                            left join dbo.WPRELATIONSHIP_NPA RELNPA
                                on RELNPA.ID = NPA.WPRELATIONSHIP_NPA_ID and CTE_UNIQUE_NPAS.WPRELATIONSHIP_NPA_ID is not null
                            left join dbo.CONSTITUENT ORG
                                on ORG.ID = RELNPA.CONSTITUENTID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SPOUSE.ID) NF_SPOUSE
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(IND.ID) NF_IND
                            where 
                                (NPARI.ID is not null or NPAFILTER.COUNT > @MAXSIZE) and
                                NPA.WEALTHID = @CONSTITUENTID and
                                NPA.CONFIRMED = 1
                                and (@ISADMIN = 1 or 
                                    @APPUSER_IN_NONRACROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, NPA.WEALTHID, @APPUSER_IN_NOSECGROUPROLE) = 1)

                            union all

                            --Private Foundations

                            select
                                PF.ID,
                                coalesce(ORG.NAME, COMPANY),
                                PF.SOURCE,
                                case 
                                    when PF.SPOUSEFLAG = 0 then NF_C.NAME 
                                    when PF.SPOUSEFLAG = 1 then coalesce(NF_SPOUSE.NAME, NF_C.NAME)
                                end MATCHNAME,
                                PFRI.LASTNAME,
                                coalesce(NF_IND.NAME, PFRI.FULLNAME) RELATIONSHIPNAME,
                                PFRI.TITLE,
                                ORG.LOOKUPID ORGLOOKUPID,
                                IND.LOOKUPID,
                                PF.TITLE MATCHTITLE,
                                case
                                    when CTE_UNIQUE_PFS.COUNT <= @MAXSIZE then convert(bit, 0)
                                    else convert(bit, 1)
                                end TOOMANYORGS
                            from
                                dbo.WPPRIVATEFOUNDATION PF
                            inner join CTE_UNIQUE_PFS PFFILTER
                                on PFFILTER.WPRELATIONSHIP_PF_ID = PF.WPRELATIONSHIP_PF_ID and PFFILTER.MAXYEAR = PF.FORMYEAR
                            left join CTE_UNIQUE_PFS
                                on CTE_UNIQUE_PFS.WPRELATIONSHIP_PF_ID = PF.WPRELATIONSHIP_PF_ID and CTE_UNIQUE_PFS.MAXYEAR = PF.FORMYEAR and CTE_UNIQUE_PFS.COUNT <= @MAXSIZE
                            left join dbo.CONSTITUENT C
                                on PF.WEALTHID = C.ID
                            left join dbo.RELATIONSHIP REL
                                on C.ID = REL.RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1
                            left join dbo.CONSTITUENT SPOUSE
                                on REL.RECIPROCALCONSTITUENTID = SPOUSE.ID
                            left join dbo.WPRELATIONSHIP_PF PFR
                                on PF.WPRELATIONSHIP_PF_ID = PFR.ID and CTE_UNIQUE_PFS.WPRELATIONSHIP_PF_ID is not null
                            left join dbo.WPRELATIONSHIP_PF_IND PFRI
                                on PFR.ID = PFRI.WPRELATIONSHIP_PF_ID
                            left join dbo.CONSTITUENT IND
                                on PFRI.CONSTITUENTID = IND.ID
                            left join dbo.WPRELATIONSHIP_PF RELPF 
                                on RELPF.ID = PF.WPRELATIONSHIP_PF_ID and CTE_UNIQUE_PFS.WPRELATIONSHIP_PF_ID is not null
                            left join dbo.CONSTITUENT ORG
                                on ORG.ID = RELPF.CONSTITUENTID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SPOUSE.ID) NF_SPOUSE
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(IND.ID) NF_IND
                            where 
                                (PFRI.ID is not null or PFFILTER.COUNT > @MAXSIZE) and
                                PF.WEALTHID = @CONSTITUENTID and
                                PF.CONFIRMED = 1
                                and (@ISADMIN = 1 or 
                                    @APPUSER_IN_NONRACROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, PF.WEALTHID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                            order by
                                COMPANY asc, ID, LASTNAME, RELATIONSHIPNAME asc                            
                        end
                        else
                        begin                                
                            with CTE_UNIQUE_NPAS as(
                                select 
                                    WPRELATIONSHIP_NPA_ID, MAX(FORMYEAR) as MAXYEAR 
                                from 
                                    dbo.WPNONPROFITAFFILIATION 
                                where 
                                    WEALTHID = @CONSTITUENTID and CONFIRMED = 1
                                group by WPRELATIONSHIP_NPA_ID
                            ),
                            CTE_UNIQUE_PFS as(
                                select 
                                    WPRELATIONSHIP_PF_ID, MAX(FORMYEAR) as MAXYEAR 
                                from 
                                    dbo.WPPRIVATEFOUNDATION 
                                where 
                                    WEALTHID = @CONSTITUENTID and CONFIRMED = 1
                                group by WPRELATIONSHIP_PF_ID
                            )

                            --Business ownership

                            select top 1
                                BO.ID,
                                coalesce(BUSINESS.NAME, BO.COMPANY) COMPANY,
                                coalesce(BUSINESS.NAME, BO.COMPANY) SORTCOMPANY,
                                BO.SOURCE,
                                case 
                                    when BO.SPOUSEIND = 0 then NF_C.NAME 
                                    when BO.SPOUSEIND = 1 then coalesce(NF_SPOUSE.NAME, NF_C.NAME)
                                end MATCHNAME,
                                null LASTNAME,
                                null RELATIONSHIPNAME,
                                null TITLE,
                                null ORGLOOKUPID,
                                null LOOKUPID,
                                null TOOMANYORGS
                            from
                                dbo.WPBUSINESSOWNERSHIP BO
                            left join dbo.CONSTITUENT C
                                on BO.WEALTHID = C.ID
                            left join dbo.RELATIONSHIP REL
                                on C.ID = REL.RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1
                            left join dbo.CONSTITUENT SPOUSE
                                on REL.RECIPROCALCONSTITUENTID = SPOUSE.ID
                            left join dbo.WPRELATIONSHIP_BO RELBO
                                on RELBO.ID = BO.WPRELATIONSHIP_BO_ID
                            left join dbo.CONSTITUENT BUSINESS
                                on BUSINESS.ID = RELBO.CONSTITUENTID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SPOUSE.ID) NF_SPOUSE
                            where 
                                BO.WEALTHID = @CONSTITUENTID and
                                BO.CONFIRMED = 1 and
                                exists(select top 1 BO_EXISTS.ID 
                                        from dbo.WPBUSINESSOWNERSHIP BO_EXISTS
                                        inner join dbo.WPRELATIONSHIP_BO BOR_EXISTS
                                            on BO.WPRELATIONSHIP_BO_ID = BOR_EXISTS.ID
                                        inner join dbo.WPRELATIONSHIP_BO_IND BORI
                                            on BOR_EXISTS.ID = BORI.WPRELATIONSHIP_BO_ID
                                        left join dbo.CONSTITUENT IND
                                            on BORI.CONSTITUENTID = IND.ID
                                        where 
                                            BO.WEALTHID = @CONSTITUENTID and 
                                            BO_EXISTS.ID = BO.ID)

                            union all

                            --Nonprofit Affiliations

                            select top 1
                                NPA.ID,
                                NPA.DN_ORGANIZATION COMPANY,
                                NPA.DN_ORGANIZATION SORTCOMPANY,
                                NPA.SOURCE,
                                case 
                                    when NPA.SPOUSEFLAG = 0 then NF_C.NAME 
                                      when NPA.SPOUSEFLAG = 1 then coalesce(NF_SPOUSE.NAME, NF_C.NAME)
                                end MATCHNAME,
                                null LASTNAME,
                                null RELATIONSHIPNAME,
                                null TITLE,
                                null ORGLOOKUPID,
                                null LOOKUPID,
                                null TOOMANYORGS
                            from
                                dbo.WPNONPROFITAFFILIATION NPA
                            inner join CTE_UNIQUE_NPAS 
                                on CTE_UNIQUE_NPAS.WPRELATIONSHIP_NPA_ID = NPA.WPRELATIONSHIP_NPA_ID and CTE_UNIQUE_NPAS.MAXYEAR = NPA.FORMYEAR
                            left join dbo.CONSTITUENT C
                                on NPA.WEALTHID = C.ID
                            left join dbo.RELATIONSHIP REL
                                on C.ID = REL.RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1
                            left join dbo.CONSTITUENT SPOUSE
                                on REL.RECIPROCALCONSTITUENTID = SPOUSE.ID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SPOUSE.ID) NF_SPOUSE
                            where 
                                NPA.WEALTHID = @CONSTITUENTID and
                                NPA.CONFIRMED = 1 and
                                exists(select top 1 NPA_EXISTS.ID 
                                        from dbo.WPNONPROFITAFFILIATION NPA_EXISTS
                                        inner join dbo.WPRELATIONSHIP_NPA NPAR_EXISTS
                                            on NPA.WPRELATIONSHIP_NPA_ID = NPAR_EXISTS.ID
                                        inner join dbo.WPRELATIONSHIP_NPA_IND NPARI
                                            on NPAR_EXISTS.ID = NPARI.WPRELATIONSHIP_NPA_ID
                                        left join dbo.CONSTITUENT IND
                                            on NPARI.CONSTITUENTID = IND.ID
                                        where 
                                            NPA.WEALTHID = @CONSTITUENTID and 
                                            NPA_EXISTS.ID = NPA.ID)

                            union all

                            --Private Foundations

                            select top 1
                                PF.ID,
                                COMPANY,
                                COMPANY SORTCOMPANY,
                                PF.SOURCE,
                                case 
                                    when PF.SPOUSEFLAG = 0 then NF_C.NAME 
                                    when PF.SPOUSEFLAG = 1 then coalesce(NF_SPOUSE.NAME, NF_C.NAME)
                                end MATCHNAME,
                                null LASTNAME,
                                null RELATIONSHIPNAME,
                                null TITLE,
                                null ORGLOOKUPID,
                                null LOOKUPID,
                                null TOOMANYORGS
                            from
                                dbo.WPPRIVATEFOUNDATION PF
                            inner join CTE_UNIQUE_PFS 
                                on CTE_UNIQUE_PFS.WPRELATIONSHIP_PF_ID = PF.WPRELATIONSHIP_PF_ID and CTE_UNIQUE_PFS.MAXYEAR = PF.FORMYEAR
                            left join dbo.CONSTITUENT C
                                on PF.WEALTHID = C.ID
                            left join dbo.RELATIONSHIP REL
                                on C.ID = REL.RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1
                            left join dbo.CONSTITUENT SPOUSE
                                on REL.RECIPROCALCONSTITUENTID = SPOUSE.ID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SPOUSE.ID) NF_SPOUSE
                            where 
                                PF.WEALTHID = @CONSTITUENTID and
                                PF.CONFIRMED = 1 and
                                exists(select top 1 PF_EXISTS.ID 
                                        from dbo.WPPRIVATEFOUNDATION PF_EXISTS
                                        inner join dbo.WPRELATIONSHIP_PF PFR_EXISTS
                                            on PF.WPRELATIONSHIP_PF_ID = PFR_EXISTS.ID
                                        inner join dbo.WPRELATIONSHIP_PF_IND PFRI
                                            on PFR_EXISTS.ID = PFRI.WPRELATIONSHIP_PF_ID
                                        left join dbo.CONSTITUENT IND
                                            on PFRI.CONSTITUENTID = IND.ID
                                        where 
                                            PF.WEALTHID = @CONSTITUENTID and 
                                            PF_EXISTS.ID = PF.ID)
                            order by COMPANY asc, ID, LASTNAME, RELATIONSHIPNAME asc                            
                        end