UFN_FUNDINGREQUEST_GETFUNDRAISERSANDCREDITS

Returns all fundraisers and their credit percentages for a funding request.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@FUNDINGREQUESTID uniqueidentifier IN

Definition

Copy


            create function dbo.UFN_FUNDINGREQUEST_GETFUNDRAISERSANDCREDITS
            (
                @FUNDINGREQUESTID uniqueidentifier
            )
            returns @OUTTABLE table
                (
                    SEQUENCE int,
                    ID uniqueidentifier,
                    NAME nvarchar(200),
                    CREDITPERCENTAGE decimal(5,2)
                )
            as begin

                declare @PRIMARYMANAGERPERCENT decimal(5,2)
                declare @SECONDARYMANAGERPERCENT decimal(5,2)
                declare @SECONDARYSOLICITORPERCENT decimal(5,2)
                declare @SOLICITORSTABLE table
                (
                    SEQUENCE int,
                    PRIORITY int,
                    ID uniqueidentifier
                )

                select
                    @PRIMARYMANAGERPERCENT = 0,
                    @SECONDARYMANAGERPERCENT = 0,
                    @SECONDARYSOLICITORPERCENT = 0

                select top 1
                    @PRIMARYMANAGERPERCENT = PRIMARYMANAGERPERCENT,
                    @SECONDARYMANAGERPERCENT = SECONDARYMANAGERPERCENT,
                    @SECONDARYSOLICITORPERCENT = SECONDARYSOLICITORPERCENT
                from
                    dbo.SOLICITORCREDITRULES


                insert into @SOLICITORSTABLE
                (
                    SEQUENCE,
                    PRIORITY,
                    ID
                )
                (    
                    select 0 SEQUENCE, 0 PRIORITY, PRIMARYMANAGERID ID from dbo.FUNDINGREQUEST where ID=@FUNDINGREQUESTID
                    union all
                    select 1 SEQUENCE, 1 PRIORITY, SECONDARYMANAGERID ID from dbo.FUNDINGREQUEST where ID=@FUNDINGREQUESTID
                    union all
                    select 
                        2 SEQUENCE,
                        2 PRIORITY,
                        FRS.SPONSORID ID 
                    from 
                        dbo.FUNDINGREQUESTSPONSOR FRS
                    where
                        FRS.FUNDINGREQUESTID = @FUNDINGREQUESTID
                )

                -- Don't allow duplicate fundraisers.  Use the highest priority position for the fundraiser.

                delete OUTERSOLICITOR from @SOLICITORSTABLE as OUTERSOLICITOR
                    where OUTERSOLICITOR.PRIORITY <> (
                        select min(PRIORITY) from @SOLICITORSTABLE INNERSOLICITOR where OUTERSOLICITOR.ID = INNERSOLICITOR.ID)

                insert into @OUTTABLE
                    (SEQUENCE, ID, NAME, CREDITPERCENTAGE)
                    (
                        select
                            FUNDRAISER.SEQUENCE,
                            FUNDRAISER.ID,
                            CONSTITUENT.NAME,
                            (
                                case FUNDRAISER.PRIORITY
                                    when 0 then @PRIMARYMANAGERPERCENT
                                    when 1 then @SECONDARYMANAGERPERCENT
                                    when 2 then @SECONDARYSOLICITORPERCENT
                                    else 0
                                end
                            ) as CREDITPERCENTAGE
                        from
                            @SOLICITORSTABLE as FUNDRAISER
                            left join dbo.CONSTITUENT on FUNDRAISER.ID = CONSTITUENT.ID
                        where
                            FUNDRAISER.ID is not null
                    );

                return;
            end