UFN_PROSPECTPLAN_GETFUNDRAISERSANDCREDITS

Returns all fundraisers and their credit percentages for a prospect plan.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@PROSPECTPLANID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_PROSPECTPLAN_GETFUNDRAISERSANDCREDITS
            (
                @PROSPECTPLANID uniqueidentifier
            )
            returns @OutTable table
                (
                    SEQUENCE int,
                    ID uniqueidentifier,
                    NAME nvarchar(200),
                    CREDITPERCENTAGE decimal(5,2),
                    DATEFROM datetime
                )
            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, 
                    DATEFROM datetime
                )

                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,
                    DATEFROM
                )
                (    
                    select 0 SEQUENCE, 0 PRIORITY, PRIMARYMANAGERFUNDRAISERID ID, null DATEFROM  from dbo.PROSPECTPLAN where ID=@PROSPECTPLANID
                    union all
                    select 1 SEQUENCE, 1 PRIORITY, SECONDARYMANAGERFUNDRAISERID ID, null DATEFROM from dbo.PROSPECTPLAN where ID=@PROSPECTPLANID
                    union all
                    select 
                        SF.SEQUENCE+ 2 SEQUENCE,
                        2 PRIORITY,
                        SF.FUNDRAISERID ID,
                        SF.DATEFROM DATEFROM
                    from 
                        dbo.SECONDARYFUNDRAISER SF
                    where
                        SF.PROSPECTPLANID = @PROSPECTPLANID
                )

                -- 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, DATEFROM)
                    (
                        select
                            FUNDRAISER.SEQUENCE,
                            FUNDRAISER.ID,
                            NF.NAME,
                            (
                                case FUNDRAISER.PRIORITY
                                    when 0 then @PRIMARYMANAGERPERCENT
                                    when 1 then @SECONDARYMANAGERPERCENT
                                    when 2 then @SECONDARYSOLICITORPERCENT
                                    else 0
                                end
                            ) as CREDITPERCENTAGE,
                            DATEFROM
                        from
                            @SolicitorsTable as FUNDRAISER
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FUNDRAISER.ID) NF
                        where
                            FUNDRAISER.ID is not null
                    );

                return;
            end