UFN_DESIGNATIONLEVEL_GETREVENUETOTALSINCURRENCY
Returns revenue totals for gifts, donors, and amounts (revenue as opposed to raised)
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DESIGNATIONLEVELID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
create function dbo.UFN_DESIGNATIONLEVEL_GETREVENUETOTALSINCURRENCY
(
@DESIGNATIONLEVELID uniqueidentifier,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@CURRENCYID uniqueidentifier = null
)
returns table
as
return(
with DESIGNATIONS_CTE as (
select
ID,
coalesce(@CURRENCYID,D.BASECURRENCYID) as SELECTEDCURRENCYID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID or
D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID or
D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID or
D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
)
select
coalesce(sum(DATA.TOTALREVENUE), 0) as TOTALREVENUE,
count(distinct DATA.CONSTITUENTID) as NUMDONORS,
count(distinct DATA.REVENUEID) as NUMGIFTS,
CURRENCYID
from
(
select
coalesce(
(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,D.SELECTEDCURRENCYID))
-
coalesce(
(select sum(dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WOS.ID,D.SELECTEDCURRENCYID))
from dbo.WRITEOFF WO
inner join dbo.WRITEOFFSPLIT WOS on WO.ID = WOS.WRITEOFFID
inner join DESIGNATIONS_CTE D on WOS.DESIGNATIONID = D.ID
where WO.REVENUEID = R.ID), 0
)
),0
) TOTALREVENUE,
R.CONSTITUENTID,
R.ID as REVENUEID,
D.SELECTEDCURRENCYID as CURRENCYID
from
dbo.REVENUESPLIT RS
inner join dbo.REVENUE R on R.ID = RS.REVENUEID
inner join DESIGNATIONS_CTE D on RS.DESIGNATIONID = D.ID
where
(R.DATE >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE) or @STARTDATE is null) and
(R.DATE <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE) or @ENDDATE is null) and
dbo.UFN_REVENUE_HASDESIGNATION(R.TRANSACTIONTYPECODE, RS.APPLICATIONCODE) = 1
group by
R.CONSTITUENTID, R.ID, D.SELECTEDCURRENCYID
) as DATA
group by
CURRENCYID
);