UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL_INCURRENCY_2
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function [dbo].[UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL_INCURRENCY_2]
(@STARTDATE datetime, @ENDDATE datetime, @CURRENCYID uniqueidentifier)
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);
declare @ORGANIZATIONCURRENCY uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @CURRENCYCODE tinyint;
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
if @CURRENCYID is null
set @CURRENCYCODE = 0; -- Use the appeal's base currency
else if @CURRENCYID = @ORGANIZATIONCURRENCY
set @CURRENCYCODE = 1; -- Use the organization currency
else
set @CURRENCYCODE = 3; -- Use the currency specified
if @CURRENCYCODE = 3
select
@DECIMALDIGITS = DECIMALDIGITS,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE
from
dbo.UFN_CURRENCY_GETPROPERTIES(@CURRENCYID)
insert into @REVENUEINFO (DESIGNATIONID, APPEALID, NUMDONORS, NUMGIFTS, MAXGIFT)
select
SUBSEL.DESIGNATIONID,
SUBSEL.REVENUEAPPEALID,
count(distinct R.CONSTITUENTID),
count(distinct SUBSEL.REVENUEID),
max(SUBSEL.SPLITSTODESIGNATIONSUM)
from
(
select
D.ID DESIGNATIONID,
APPEALREVENUESPLIT.APPEALID REVENUEAPPEALID,
APPEALREVENUESPLIT.REVENUEID,
(isnull(sum(APPEALREVENUESPLIT.REVENUESPLITAMOUNTINCURRENCY - APPEALREVENUESPLIT.WRITEOFFSPLITAMOUNTINCURRENCY), 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.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCYNODESNAMENOGIFTAID_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) APPEALREVENUESPLIT on APPEALREVENUESPLIT.DESIGNATIONID = D2.ID
where (APPEALREVENUESPLIT.DATE >= @STARTDATE or @STARTDATE is null) and
(APPEALREVENUESPLIT.DATE <= @ENDDATE or @ENDDATE is null) and
(
--Donation, recurring gift payment, planned gift payment, matching gift payment, donor challenge payment
(APPEALREVENUESPLIT.TRANSACTIONTYPECODE = 0 and (APPEALREVENUESPLIT.APPLICATIONCODE in (0,3,6,7,13) or (APPEALREVENUESPLIT.APPLICATIONCODE = 1 and APPEALREVENUESPLIT.TYPECODE = 0)))
or
--pledges or grants or auction donations
(APPEALREVENUESPLIT.TRANSACTIONTYPECODE in (1,6,7))
)
group by APPEALREVENUESPLIT.REVENUEID, D.ID, APPEALREVENUESPLIT.APPEALID
) SUBSEL
inner join dbo.FINANCIALTRANSACTION R on R.ID = SUBSEL.REVENUEID
where R.TYPECODE < 10
and R.DELETEDON is null
group by SUBSEL.DESIGNATIONID, SUBSEL.REVENUEAPPEALID;
return;
end