UFN_APPEAL_REVENUECOUNTS
Creates a table of appeals and their associated revenue counts.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
CREATE function dbo.UFN_APPEAL_REVENUECOUNTS
(
@STARTDATE datetime, -- Expects EARLIESTTIME
@ENDDATE datetime -- Expects LATESTTIME
)
returns table
as
return
(
--The CTE is necessary because selecting and aggregating at the same time may distort DONORCOUNT
--(a person may give multiple types of gifts)
with APPEALREVENUE as
(
select distinct
BASEREVENUE.APPEALID,
BASEREVENUE.ID REVENUEID,
FT.CONSTITUENTID,
case when (FT.TYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 3) then 1 else 0 end ISREGULARGIFT
from dbo.REVENUE_EXT BASEREVENUE
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = BASEREVENUE.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join dbo.REVENUESPLIT_EXT REVENUESPLIT on LI.ID = REVENUESPLIT.ID
left join dbo.DESIGNATION d on REVENUESPLIT.DESIGNATIONID = d.ID
where BASEREVENUE.APPEALID is not null
and (cast(FT.DATE as datetime) >= @STARTDATE or @STARTDATE is null)
and (cast(FT.DATE as datetime) <= @ENDDATE or @ENDDATE is null)
and
(
(FT.TYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 3)
or
(FT.TYPECODE in (1,3,4,6,7,8) or REVENUESPLIT.APPLICATIONCODE in (0,1,4))
)
and LI.DELETEDON is null and LI.TYPECODE != 1
)
select
APPEALREVENUE.APPEALID,
count(distinct(CONSTITUENTID)) DONORCOUNT,
count(distinct(REVENUEID)) GIFTCOUNT,
sum(ISREGULARGIFT) REGULARGIFTCOUNT,
count(distinct(REVENUEID)) - sum(ISREGULARGIFT) CASHGIFTCOUNT
from APPEALREVENUE
group by APPEALREVENUE.APPEALID
);