UFN_KPI_CAMPAIGNFUNDRAISER_GOALAMOUNTTOTAL
Measures a campaign fundraiser's goal amount.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ASOFDATE | datetime | IN | |
@FUNDRAISERID | uniqueidentifier | IN | |
@CAMPAIGNID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
create function dbo.UFN_KPI_CAMPAIGNFUNDRAISER_GOALAMOUNTTOTAL
(
@ASOFDATE datetime,
@FUNDRAISERID uniqueidentifier,
@CAMPAIGNID uniqueidentifier,
@STARTDATE datetime = null,
@ENDDATE datetime = null
)
returns money
with execute as caller
as begin
declare @VALUE money
if @ENDDATE is null or datediff(day, @ASOFDATE, @ENDDATE) > 0
begin
set @ENDDATE = @ASOFDATE;
end
select
@VALUE = coalesce(sum(REVENUESOLICITOR.AMOUNT), 0)
from dbo.REVENUESOLICITOR
inner join dbo.REVENUESPLIT on REVENUESOLICITOR.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLIT.ID = REVENUESPLITCAMPAIGN.REVENUESPLITID
left outer join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
where (
REVENUE.TRANSACTIONTYPECODE in (1,6) --Pledges or grant awards
or (
REVENUE.TRANSACTIONTYPECODE = 0 --Payments...
and not REVENUESPLIT.APPLICATIONCODE in (2,7,8) --sans pledge, MGC, and grant award payments
)
or(
REVENUE.TRANSACTIONTYPECODE = 4 --Planned gifts with a payment
and exists (
select 1
from INSTALLMENTPAYMENT PGINSTALLMENT
inner join REVENUESPLIT PGREVENUESPLIT on PGREVENUESPLIT.ID = PGINSTALLMENT.PAYMENTID
inner join REVENUE PGREVENUE on PGREVENUE.ID = PGREVENUESPLIT.REVENUEID
where PGINSTALLMENT.PLEDGEID=REVENUE.ID
and (PGREVENUE.DATE >= @STARTDATE or @STARTDATE is null)
and (PGREVENUE.DATE <= @ENDDATE or @ENDDATE is null)
)
)
)
and REVENUESOLICITOR.CONSTITUENTID = @FUNDRAISERID
and REVENUESPLITCAMPAIGN.CAMPAIGNID = @CAMPAIGNID
and (@STARTDATE <= REVENUE.DATE or @STARTDATE is null)
and (REVENUE.DATE <= @ENDDATE or @ENDDATE is null);
return @VALUE
end