UFN_CONSTITUENT_GETALLCONSTITUENCIES

Gets a list of constituencies for a constituent as of the given date.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_CONSTITUENT_GETALLCONSTITUENCIES(@ID uniqueidentifier)
            returns @OUTPUT table(ID uniqueidentifier, CONSTITUENCYTYPECODE integer, DESCRIPTION nvarchar(100), DATEFROM dbo.UDT_FUZZYDATE, DATETO dbo.UDT_FUZZYDATE, CONSTITUENCYCODEID uniqueidentifier)
            as
            begin
                    --retrieve donor constituency information

                    declare @DONORCONSTITUENCYDEFTYPECODE int;
                    declare @DONORCONSTITUENCYDEFLASTYEARS int;
                    declare @DONORCONSTITUENCYDEFSTARTDATE datetime;
                    declare @CONSIDERRECOGNITION bit;
                    declare @DONORCONSTITUENCYSYSTEMNAME nvarchar(100);

                    select
                        @DONORCONSTITUENCYDEFTYPECODE = DONORCONSTITUENCYDEFTYPECODE,
                        @DONORCONSTITUENCYDEFLASTYEARS = DONORCONSTITUENCYDEFLASTYEARS,
                        @DONORCONSTITUENCYDEFSTARTDATE = DONORCONSTITUENCYDEFSTARTDATE
                    from
                        dbo.INSTALLATIONINFO;

                    select top 1 
                        @CONSIDERRECOGNITION = MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION
                    from 
                        dbo.CONSTITUENCYCRITERIASPOUSE;

                    select @DONORCONSTITUENCYSYSTEMNAME = DESCRIPTION from dbo.CONSTITUENCYSYSTEMNAME where ID = '70165682-4324-46EC-9439-83FC0CC67E7F';

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

                    declare @DONORCONSTITUENCYLOWERDATEBOUND datetime;

                    if @DONORCONSTITUENCYDEFTYPECODE = 0
                    begin
                        declare @SQLMINDATE datetime = '17530101';

                        if datediff(year, @SQLMINDATE, dbo.UFN_DATE_GETLATESTTIME(getdate())) >= @DONORCONSTITUENCYDEFLASTYEARS
                            set @DONORCONSTITUENCYLOWERDATEBOUND = dateadd(year, 0 - @DONORCONSTITUENCYDEFLASTYEARS, dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE));
                        else
                            set @DONORCONSTITUENCYLOWERDATEBOUND = @SQLMINDATE;
                    end
                    else
                        set @DONORCONSTITUENCYLOWERDATEBOUND = dbo.UFN_DATE_GETEARLIESTTIME(@DONORCONSTITUENCYDEFSTARTDATE);

                    with CONSTITUENCIES_CTE as (
                        select
                            BOARDMEMBERDATERANGE.ID,
                            1 CONSTITUENCYTYPECODE,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),BOARDMEMBERDATERANGE.DATEFROM, 112) DATEFROM,
                            convert(char(8),BOARDMEMBERDATERANGE.DATETO, 112) DATETO,
                            CONSTITUENCYSYSTEMNAME.ID as CONSTITUENCYCODEID
                        from
                            dbo.BOARDMEMBERDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'F828E957-5F5E-479A-8F23-2FFD6C7C68FF'
                        where
                            BOARDMEMBERDATERANGE.CONSTITUENTID = @ID

                        union all
                        select
                            STAFFDATERANGE.ID,
                            2,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),STAFFDATERANGE.DATEFROM, 112),
                            convert(char(8),STAFFDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.STAFFDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '6093915E-ADE9-42BE-88AE-304731754467'
                        where
                            STAFFDATERANGE.CONSTITUENTID = @ID

                        union all
                        select
                            ADVOCATERDATERANGE.ID,
                            24 CONSTITUENCYTYPECODE,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),ADVOCATERDATERANGE.DATEFROM, 112),
                            convert(char(8),ADVOCATERDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.ADVOCATERDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'F828E957-5F5E-479A-8F23-2FFD6C7C6899'
                        where
                            ADVOCATERDATERANGE.CONSTITUENTID = @ID

                        union all
                        select
                            FUNDRAISERDATERANGE.ID,
                            3,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),FUNDRAISERDATERANGE.DATEFROM, 112),
                            convert(char(8),FUNDRAISERDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.FUNDRAISERDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'D2DCA06A-BE6E-40B3-B95D-59A926181923'
                        where
                            FUNDRAISERDATERANGE.CONSTITUENTID = @ID

                        union all
                        select
                            PROSPECTDATERANGE.ID,
                            4,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),PROSPECTDATERANGE.DATEFROM, 112),
                            convert(char(8),PROSPECTDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.PROSPECTDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '00E748FB-940D-4A7D-A133-C148B29410A8'
                        where
                            PROSPECTDATERANGE.CONSTITUENTID = @ID

                        union all
                        select
                            VOLUNTEERDATERANGE.ID,
                            5,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),VOLUNTEERDATERANGE.DATEFROM, 112),
                            convert(char(8),VOLUNTEERDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.VOLUNTEERDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'E7489703-3D63-4017-A2BC-88C092563C5D'
                        where
                            VOLUNTEERDATERANGE.CONSTITUENTID = @ID

                        -- Student

                        union all
                        select
                            null,
                            6,
                            STUDENTNAME.DESCRIPTION,
                            min(EH.STARTDATE),
                            max(EH.ENDDATE),
                            STUDENTNAME.ID
                        from
                            dbo.EDUCATIONALHISTORY EH with (nolock)
                        inner join
                            dbo.EDUCATIONALINSTITUTION EI  with (nolock) on EH.EDUCATIONALINSTITUTIONID = EI.ID and EI.ISAFFILIATED = 1
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME STUDENTNAME with (nolock) on STUDENTNAME.ID = '4DB8F4FC-BC43-421D-B592-69BEF109B5FC'
                        inner join
                            dbo.EDUCATIONALHISTORYSTATUS EHS on EH.EDUCATIONALHISTORYSTATUSID = EHS.ID
                        where
                            EH.CONSTITUENTID = @ID and 
                            EHS.CONSTITUENCYIMPLIEDCODE = 0 and
                            ((select top 1 ISCONSTITUENTWHENCODE from dbo.STUDENTCONSTITUENCYSETTINGS) = 0)
                        group by
                            STUDENTNAME.DESCRIPTION, STUDENTNAME.ID

                        -- Alumni

                        union all
                        select top 1
                            null,
                            6,
                            ALUMNUSNAME.DESCRIPTION,
                            min(EH.DATEGRADUATED),
                            null,
                            ALUMNUSNAME.ID
                        from
                            dbo.EDUCATIONALHISTORY EH with (nolock)
                        inner join
                            dbo.EDUCATIONALINSTITUTION EI with (nolock) on EH.EDUCATIONALINSTITUTIONID = EI.ID and EI.ISAFFILIATED = 1
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME ALUMNUSNAME with (nolock) on ALUMNUSNAME.ID = '46EC3424-BA54-4431-A7DC-C6CEBB3B4592'
                        inner join
                            dbo.EDUCATIONALHISTORYSTATUS EHS on EH.EDUCATIONALHISTORYSTATUSID = EHS.ID
                        where
                            EH.CONSTITUENTID = @ID and 
                            EHS.CONSTITUENCYIMPLIEDCODE = 1
                        group by ALUMNUSNAME.DESCRIPTION, ALUMNUSNAME.ID

                        union all
                        -- no longer return 'Community member' as a constituency; now just surfaced through 'Online information' page

                        --select

                        --    null,

                        --    7,

                        --    CONSTITUENCYSYSTEMNAME.DESCRIPTION,

                        --    convert(char(8), dbo.UFN_DATE_GETEARLIESTTIME(coalesce(NETCOMMUNITYCLIENTUSER.USERADDEDDATE, NETCOMMUNITYCLIENTUSER.SIGNUPTRANSACTIONDATE)), 112),

                        --    null,

                        --    CONSTITUENCYSYSTEMNAME.ID

                        --from

                        --    dbo.CONSTITUENT with (nolock)

                        --left join

                        --    dbo.NETCOMMUNITYCLIENTUSER with (nolock) on CONSTITUENT.ID = NETCOMMUNITYCLIENTUSER.CONSTITUENTID

                        --left join

                        --    dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '55FE8E7C-2B68-44C8-B35C-818AD1944C03'

                        --where

                        --    CONSTITUENT.ID = @ID

                        --    and NETCOMMUNITYCLIENTUSER.ACTIVE = 1

                        --    and NETCOMMUNITYCLIENTUSER.DELETED = 0


                        --union all

                        select top 1
                            null,
                            8,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),min(REGISTRANT.DATEADDED),112),
                            null,
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.REGISTRANT with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'C49D4B46-72A7-4206-91AA-BEABA2323E3C'
                        where
                            REGISTRANT.CONSTITUENTID = @ID
                        group by
                            REGISTRANT.CONSTITUENTID, CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

                        union all    

                        --Donor

                        select
                            null,
                            10 as CONSTITUENCYTYPECODE,
                            @DONORCONSTITUENCYSYSTEMNAME,
                            convert(char(8),min(DATA.REVENUEDATE),112),
                            case
                                when max(DATA.REVENUEDATE) < @DONORCONSTITUENCYLOWERDATEBOUND then
                                    case
                                        when @DONORCONSTITUENCYDEFTYPECODE = 0 then 
                                            convert(char(8), dateadd(year, @DONORCONSTITUENCYDEFLASTYEARS, max(DATA.REVENUEDATE)), 112)
                                        else 
                                            convert(char(8), max(DATA.REVENUEDATE), 112)
                                    end
                                else null
                            end as DATETO,
                            '70165682-4324-46EC-9439-83FC0CC67E7F'
                        from(
                            select
                                [FT].[DATE] as REVENUEDATE
                            from
                                /* JamesWill WI122678 Make the donor constituency match up with UFN_CONSTITUENT_ISDONOR by using UFN_REVENUELIFECYCLE_GETVALIDREVENUE*/
                                dbo.FINANCIALTRANSACTION as FT  with (nolock)
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI  with (nolock) on FT.ID = FTLI.FINANCIALTRANSACTIONID
                            where
                                FT.CONSTITUENTID = @ID
                                and FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT() as REVENUEFILTER)
                                and FT.DELETEDON is null

                            union all

                            select
                                [FT].[DATE] as REVENUEDATE
                            from
                                /* JamesWill WI122678 Make the donor constituency match up with UFN_CONSTITUENT_ISDONOR by using UFN_REVENUELIFECYCLE_GETVALIDREVENUE*/
                                dbo.REVENUERECOGNITION
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock) on FTLI.ID = REVENUERECOGNITION.REVENUESPLITID
                                inner join dbo.FINANCIALTRANSACTION as FT with (nolock) on FT.ID = FTLI.FINANCIALTRANSACTIONID  
                            where
                                REVENUERECOGNITION.CONSTITUENTID = @ID
                                and FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT() as REVENUEFILTER)
                                and @CONSIDERRECOGNITION = 1
                                and FT.DELETEDON is null
                            ) DATA
                        having
                            min(DATA.REVENUEDATE) is not null

                        union all

                        select
                            null,
                            11,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),min(RELATIONSHIP.DATEADDED),112),
                            null,
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.RELATIONSHIP
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME on CONSTITUENCYSYSTEMNAME.ID = '8B6ECCFD-6829-4FBC-B092-58CA083F9322'
                        where
                            RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @ID
                        group by
                            RELATIONSHIP.RELATIONSHIPCONSTITUENTID, CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

                        union all
                        select 
                            null,
                            12,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),SPONSORDATERANGE.DATEFROM, 112),
                            convert(char(8),SPONSORDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.SPONSORDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID =
                                case SPONSORDATERANGE.SPONSORTYPECODE
                                when 0 then '4D746A03-A0AB-45F3-A30B-1AD4F304E622'
                                when 1 then 'F89E03BC-E724-4e5d-943B-72D4D1E1E916'
                                when 2 then '908E521C-B0A5-4832-B664-7D7B079D77C2'
                                end
                        where
                            SPONSORDATERANGE.CONSTITUENTID = @ID                  
                        union all
                        select
                            CONSTITUENCY.ID,
                            99,
                            CODE.DESCRIPTION,
                            convert(char(8),CONSTITUENCY.DATEFROM, 112),
                            convert(char(8),CONSTITUENCY.DATETO, 112),
                            CODE.ID
                        from
                            dbo.CONSTITUENCY with (nolock)
                        left join
                            dbo.CONSTITUENCYCODE CODE with (nolock) 
                        on
                            CODE.ID = CONSTITUENCY.CONSTITUENCYCODEID
                        where
                            CONSTITUENCY.CONSTITUENTID = @ID
                        union all
                        select
                            null,
                            13,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8), min(MATCHFINDERCONSTITUENT.DATEADDED), 112),
                            null,
                            CONSTITUENCYSYSTEMNAME.ID
                        from 
                            dbo.MATCHFINDERCONSTITUENT with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '2D04A9C5-27D0-4646-BF0F-6826E4C12632'
                        where 
                            MATCHFINDERCONSTITUENT.ID = @ID
                        group by
                            MATCHFINDERCONSTITUENT.ID, CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

                        union all
                        select
                            null,
                            14,
                            'Planned giver',
                            convert(char(8),min(PLANNEDGIFT.GIFTDATE),112),
                            null,
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.PLANNEDGIFT with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'CEE46FE7-3FBB-4DFE-97EB-BA67DD33C634'
                        where
                            PLANNEDGIFT.CONSTITUENTID = @ID 
                            and dbo.UFN_CONSTITUENT_ISPLANNEDGIVER(PLANNEDGIFT.CONSTITUENTID) = 1                            
                        group by
                            PLANNEDGIFT.CONSTITUENTID, CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

                        union all
                        select
                            null,
                            15,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8), (dbo.UFN_CONSTITUENT_GETPATRONSTARTDATE(@ID)),112),
                            null,
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                        CONSTITUENT with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'A843B859-4C6B-445B-97F3-179582E270A5'
                        where
                            CONSTITUENT.ID = @ID
                        and 
                dbo.UFN_CONSTITUENT_ISPATRON(@ID) = 1

                        union all
                        select
                            COMMITTEEDATERANGE.ID,
                            16,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8),COMMITTEEDATERANGE.DATEFROM, 112),
                            convert(char(8),COMMITTEEDATERANGE.DATETO, 112),
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.COMMITTEEDATERANGE with (nolock)
                        left join
                            dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'AC9DB5A4-14E0-416A-9FB2-04038AC66799'
                        where
                            COMMITTEEDATERANGE.CONSTITUENTID = @ID

            union all
            select top(1)
                null,
                17,
                CSN.DESCRIPTION,
                convert(char(8),dbo.UFN_CONSTITUENT_GETEARLIESTMEMBERSHIPJOINDATE(@ID), 112),
                convert(char(8),dbo.UFN_CONSTITUENT_GETLATESTMEMBERSHIPEXPIRATIONDATE(@ID), 112),
                CSN.ID
            from 
                dbo.MEMBER M with (nolock)
            inner join dbo.MEMBERSHIP with (nolock) on MEMBERSHIP.[ID] = M.[MEMBERSHIPID]
            left outer join 
                dbo.CONSTITUENCYSYSTEMNAME CSN with (nolock) on CSN.ID = '2D11326E-8F3B-4322-9797-57C1AACFA5DF'
            where 
                M.CONSTITUENTID = @ID and M.[ISDROPPED] = 0 and MEMBERSHIP.[STATUSCODE] = 0
                        union all
                        select top 1
                            GRANTOR.ID,
                            20,
                            CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                            convert(char(8), GRANTOR.DATEADDED, 112),
                            null,
                            CONSTITUENCYSYSTEMNAME.ID
                        from
                            dbo.GRANTOR    with (nolock)                    
                            left join dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = 'D9982C99-15C1-4C90-873E-56FD4B164056'
                        where
                            GRANTOR.ID = @ID
            union all        
            select
                        null,
                16,
                        CONSTITUENCYSYSTEMNAME.DESCRIPTION, --Constituency

                        convert(char(8),MIN(CONSTITUENTRECOGNITION.JOINDATE),112), --Date from

                        convert(char(8),MAX(CONSTITUENTRECOGNITION.EXPIRATIONDATE),112), --Date to

                        CONSTITUENCYSYSTEMNAME.ID
            from
                        dbo.CONSTITUENTRECOGNITION with (nolock)
                        left join dbo.RECOGNITIONPROGRAM with (nolock) on CONSTITUENTRECOGNITION.RECOGNITIONPROGRAMID = RECOGNITIONPROGRAM.ID
                        left join dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '3dfac92e-78bd-4051-abdc-02c675deb8f6'
                    where
                CONSTITUENTRECOGNITION.CONSTITUENTID = @ID and
                        (CONSTITUENTRECOGNITION.EXPIRATIONDATE >= getdate() or RECOGNITIONPROGRAM.TYPECODE=1)
                    group by CONSTITUENTRECOGNITION.CONSTITUENTID, CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

            union all
                select
                        null, --System Record ID

                        18,
                        CONSTITUENCYSYSTEMNAME.DESCRIPTION, --Constituency

                        min(coalesce(convert(char(8),GROUPMEMBERDATERANGE.DATEFROM,112), '00000000')),
                        --If there is a blank date return that

                        case when min(coalesce(convert(char(8),GROUPMEMBERDATERANGE.DATETO,112), '00000000')) = '00000000' then '00000000' else
                            max(coalesce(convert(char(8),GROUPMEMBERDATERANGE.DATETO,112), '00000000'))
                        end,
                        CONSTITUENCYSYSTEMNAME.ID
                from
                        dbo.GROUPMEMBER with (nolock)
                        inner join dbo.COMMITTEEDATERANGE on COMMITTEEDATERANGE.CONSTITUENTID = GROUPMEMBER.GROUPID
                        left join dbo.GROUPMEMBERDATERANGE with (nolock) on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
                        left join dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '093A3D4F-2974-447F-AD92-870EB4A04593'
                where
                        GROUPMEMBER.MEMBERID = @ID and
                        (COMMITTEEDATERANGE.DATEFROM <= @CURRENTDATE or COMMITTEEDATERANGE.DATEFROM is null) and
                        (COMMITTEEDATERANGE.DATETO >= @CURRENTDATE or COMMITTEEDATERANGE.DATETO is null)
                group by
                        CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

                union all
                select
                    BANK.ID,
                    19,
                    CONSTITUENCYSYSTEMNAME.DESCRIPTION,
                    convert(char(8), min(BANK.DATEADDED), 112),
                    null,
                    CONSTITUENCYSYSTEMNAME.ID
                from 
                    dbo.BANK with (nolock)
                left join
                    dbo.CONSTITUENCYSYSTEMNAME with (nolock) on CONSTITUENCYSYSTEMNAME.ID = '171AB3CD-C4E1-4825-B693-10F524A7A594'
                where 
                    BANK.ID = @ID                       
                group by
                    BANK.ID, CONSTITUENCYSYSTEMNAME.DESCRIPTION, CONSTITUENCYSYSTEMNAME.ID

                union all
                    --Major donor

                    select
                        null, --System Record ID

                        21,
                        CONSTITUENCYSYSTEMNAME.DESCRIPTION, --Constituency

                        null, --Date from

                        null, --Date to

                        CONSTITUENCYSYSTEMNAME.ID
                    from
                        dbo.CONSTITUENT
                        left join dbo.CONSTITUENCYSYSTEMNAME on CONSTITUENCYSYSTEMNAME.ID = '1A9BFE80-604D-4B5B-8065-E751DDF6EF39'
                    where 
                        CONSTITUENT.ID = @ID
                        and dbo.UFN_CONSTITUENT_ISMAJORDONOR(@ID) = 1

                union all
                    --Loyal donor

                    select
                        null, --System Record ID

                        22,
                        CONSTITUENCYSYSTEMNAME.DESCRIPTION, --Constituency

                        null, --Date from

                        null, --Date to

                        CONSTITUENCYSYSTEMNAME.ID
                    from
                        dbo.CONSTITUENT
                        left join dbo.CONSTITUENCYSYSTEMNAME on CONSTITUENCYSYSTEMNAME.ID = 'E5A0EA42-65BA-4B25-AFE2-9B709F99E72B'
                    where 
                        CONSTITUENT.ID = @ID
                        and dbo.UFN_CONSTITUENT_ISLOYALDONOR(@ID) = 1
                union all
                    --Student relation constituencies based on relationship constituency criteria

                    select distinct 
                        null, --System Record ID

                        23,
                        RELATIONCONSTITUENCIES.CONSTITUENCYCODEDESCRIPTION, --Constituency

                        min(EDUCATIONALHISTORY.STARTDATE), --Date from

                        null, --Date to

                        RELATIONCONSTITUENCIES.CONSTITUENCYCODEID
                    from
                        dbo.UFN_CONSTITUENT_STUDENTRELATIONCONSTITUENCIES() as RELATIONCONSTITUENCIES
                        inner join dbo.EDUCATIONALHISTORY on RELATIONCONSTITUENCIES.RECIPROCALCONSTITUENTID = EDUCATIONALHISTORY.CONSTITUENTID
                    where 
                        RELATIONCONSTITUENCIES.CONSTITUENTID = @ID
                        and RELATIONCONSTITUENCIES.ISCONSTITUENT = 1    
                    group by RELATIONCONSTITUENCIES.CONSTITUENCYCODEDESCRIPTION, RELATIONCONSTITUENCIES.CONSTITUENCYCODEID
                union all
                    --Fundraising group

                    select
                        null, --System Record ID

                        24,
                        CONSTITUENCYSYSTEMNAME.DESCRIPTION, --Constituency

                        convert(char(8), TE.DATEADDED, 112), --Date from

                        null, --Date to

                        CONSTITUENCYSYSTEMNAME.ID
                    from
                        dbo.CONSTITUENT
                        left join dbo.CONSTITUENCYSYSTEMNAME on CONSTITUENCYSYSTEMNAME.ID = '264818E9-3F59-44C1-9BBF-1BB1F9C78CA5'
                        cross apply
                        (
                            select top 1 TEAMEXTENSION.DATEADDED
                            from dbo.TEAMEXTENSION
                            where TEAMEXTENSION.TEAMCONSTITUENTID=CONSTITUENT.ID
                            order by TEAMEXTENSION.DATEADDED
                        ) TE
                    where 
                        CONSTITUENT.ID = @ID
                        and dbo.UFN_CONSTITUENT_ISFUNDRAISINGGROUP(@ID) = 1

                    )                    
                    insert into @OUTPUT
                    select
                        C.ID,
                        C.CONSTITUENCYTYPECODE,
                        C.DESCRIPTION,
                        coalesce(C.DATEFROM, '00000000'),
                        coalesce(C.DATETO, '00000000'),
                        C.CONSTITUENCYCODEID
                    from
                        CONSTITUENCIES_CTE C with (nolock)
                    where
                        C.CONSTITUENCYTYPECODE <> 11 or
                        (select count(C.CONSTITUENCYTYPECODE) from CONSTITUENCIES_CTE C) = 1


                return;
            end