UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL
This function returns aggregate revenue information for designations by appeal.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
CREATE function dbo.UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL
(@STARTDATE datetime, @ENDDATE datetime)
returns @REVENUEINFO table
(
DESIGNATIONID uniqueidentifier NOT NULL,
APPEALID uniqueidentifier,
NUMDONORS int NOT NULL,
NUMGIFTS int NOT NULL,
MAXGIFT money NOT NULL
)
as
begin
select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
@ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
insert @REVENUEINFO
select SUBSEL.DESIGNATIONID,
SUBSEL.REVENUEAPPEALID,
count(distinct R.CONSTITUENTID),
count(distinct SUBSEL.REVENUEID),
max(SUBSEL.SPLITSTODESIGNATIONSUM)
from
(
select D.ID DESIGNATIONID,
R.APPEALID REVENUEAPPEALID,
R.ID REVENUEID,
sum(RS.AMOUNT - coalesce(WOS.AMOUNT, 0)) SPLITSTODESIGNATIONSUM
from dbo.DESIGNATION D
inner join dbo.DESIGNATION D2 on (D.DESIGNATIONLEVEL1ID = D2.DESIGNATIONLEVEL1ID
and (D.DESIGNATIONLEVEL2ID = D2.DESIGNATIONLEVEL2ID or D.DESIGNATIONLEVEL2ID is null)
and (D.DESIGNATIONLEVEL3ID = D2.DESIGNATIONLEVEL3ID or D.DESIGNATIONLEVEL3ID is null)
and (D.DESIGNATIONLEVEL4ID = D2.DESIGNATIONLEVEL4ID or D.DESIGNATIONLEVEL4ID is null)
and (D.DESIGNATIONLEVEL5ID = D2.DESIGNATIONLEVEL5ID or D.DESIGNATIONLEVEL5ID is null))
inner join dbo.REVENUESPLIT RS on RS.DESIGNATIONID = D2.ID
inner join dbo.REVENUE R on RS.REVENUEID = R.ID
left join dbo.WRITEOFF WO on R.ID = WO.REVENUEID
left join dbo.WRITEOFFSPLIT WOS on WO.ID = WOS.WRITEOFFID and RS.DESIGNATIONID = WOS.DESIGNATIONID
where (R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ENDDATE or @ENDDATE is null) and
(
--Donation, recurring gift payment, planned gift payment, matching gift payment, donor challenge payment
(R.TRANSACTIONTYPECODE = 0 and (RS.APPLICATIONCODE in (0,3,6,7,13) or (RS.APPLICATIONCODE = 1 and RS.TYPECODE = 0)))
or
--pledges or grants or auction donations
(R.TRANSACTIONTYPECODE in (1,6,7))
)
group by R.ID, D.ID, R.APPEALID
) SUBSEL inner join dbo.REVENUE R on R.ID = SUBSEL.REVENUEID
group by SUBSEL.DESIGNATIONID, SUBSEL.REVENUEAPPEALID
return
end