UFN_DESIGNATIONLEVEL_GETREVENUETOTALSINCURRENCY_2
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 | |
@ORGANIZATIONCURRENCYID | uniqueidentifier | IN | |
@DECIMALDIGITS | tinyint | IN | |
@ROUNDINGTYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_DESIGNATIONLEVEL_GETREVENUETOTALSINCURRENCY_2
(
@DESIGNATIONLEVELID uniqueidentifier,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@CURRENCYID uniqueidentifier = null,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint
)
returns table
as
return(
with DESIGNATIONS_CTE as (
select
D.ID
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
from
(
select RS.AMOUNTINCURRENCY - (coalesce(WO.AMOUNTINCURRENCY, 0)) as TOTALREVENUE,
RS.CONSTITUENTID,
RS.REVENUEID
from (
select
sum(RS.AMOUNTINCURRENCY) as AMOUNTINCURRENCY,
RS.CONSTITUENTID,
RS.REVENUEID
from
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK (@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RS
inner join DESIGNATIONS_CTE D on RS.DESIGNATIONID = D.ID
where (RS.DATE >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE) or @STARTDATE is null) and
(RS.DATE <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE) or @ENDDATE is null) and
(RS.TRANSACTIONTYPECODE in (1,3,4,6,7,8) or (RS.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0,1,3,4)))
group by
RS.CONSTITUENTID, RS.REVENUEID
) RS
left outer join (SELECT SUM(AMOUNTINCURRENCY) AMOUNTINCURRENCY, REVENUEID
from UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY_BULK (@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) WO
inner join DESIGNATIONS_CTE D on WO.DESIGNATIONID = D.ID
group by revenueid ) WO on RS.REVENUEID = WO.REVENUEID
) as DATA
);