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