USP_DATALIST_EVENTPROFILEREPORT_FINANCIALSUMMARY
Returns financial summary information for an event.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | Event ID |
@CURRENCYCODE | smallint | IN | Currency Code |
@ISVISIBLE | bit | IN | Visible |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_EVENTPROFILEREPORT_FINANCIALSUMMARY
(
@EVENTID uniqueidentifier,
@CURRENCYCODE smallint = null,
@ISVISIBLE bit = 1
)
as
set nocount on;
if @ISVISIBLE = 1
begin
declare @EVENTTEAMFUNDRAISINGINFO table(ID uniqueidentifier, AMOUNTSOLICITED money);
declare @EVENTAPPEALINFO table(ID uniqueidentifier, AMOUNTSOLICITED money);
declare @SELECTEDCURRENCYID uniqueidentifier;
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
if @CURRENCYCODE = 0
begin
select @SELECTEDCURRENCYID = EVENT.BASECURRENCYID
from dbo.EVENT
where EVENT.ID = @EVENTID;
end
else
begin
set @SELECTEDCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
end
select
@DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
@ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
from dbo.CURRENCY
where CURRENCY.ID = @SELECTEDCURRENCYID;
insert into @EVENTAPPEALINFO(ID,AMOUNTSOLICITED)
select
EVENT.ID,
case when REVENUE.ID is null then 0 else sum(coalesce(RS.AMOUNTINCURRENCY,0)) end TOTAL
from dbo.EVENT
inner join dbo.EVENTAPPEAL on EVENTAPPEAL.EVENTID = EVENT.ID
inner join dbo.REVENUE with (nolock) on REVENUE.APPEALID = EVENTAPPEAL.APPEALID
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
and (
(
(REVENUE.TRANSACTIONTYPECODE = 1
or (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0,3))
) --Revenue is a pledge, gift, and recurring gift payment
) --Fundraiser has raised money for the event/appeal in question
--Event registration donation doesn't need to be added because it's already counted in payment
)
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
where event.ID = @EVENTID
group by EVENT.ID,REVENUE.ID;
insert into @EVENTTEAMFUNDRAISINGINFO(ID,AMOUNTSOLICITED)
select
EVENT.ID,
case when REVENUE.ID is null then 0 else sum(coalesce(RSOL.AMOUNTINCURRENCY,0)) end TOTAL
from dbo.EVENT
inner join dbo.TEAMFUNDRAISINGTEAM on TEAMFUNDRAISINGTEAM.APPEALID = EVENT.APPEALID
left join dbo.TEAMFUNDRAISINGTEAMMEMBER on TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID = TEAMFUNDRAISINGTEAM.ID
left join dbo.TEAMFUNDRAISER on TEAMFUNDRAISER.APPEALID = EVENT.APPEALID and TEAMFUNDRAISER.ID = TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISERID
left join dbo.REVENUESOLICITOR on REVENUESOLICITOR.CONSTITUENTID = TEAMFUNDRAISER.CONSTITUENTID
left join dbo.REVENUESPLIT on REVENUESPLIT.ID = REVENUESOLICITOR.REVENUESPLITID
left join dbo.REVENUE with (nolock) on REVENUE.APPEALID = EVENT.APPEALID and REVENUESPLIT.REVENUEID = REVENUE.ID
and (
(
(REVENUE.TRANSACTIONTYPECODE = 1
or (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0,3))
) --Revenue is a pledge, gift, and recurring gift payment
) --Fundraiser has raised money for the event/appeal in question
--Event registration donation doesn't need to be added because it's already counted in payment
or REVENUESOLICITOR.ID is null --Fundraiser has not raised anything yet
or ((not REVENUESOLICITOR.ID is null) and REVENUE.ID is null) --Fundraiser has raised money, but it is not for the appeal/event in question
)
left join dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RSOL on RSOL.ID = REVENUESOLICITOR.ID
where event.ID = @EVENTID
group by EVENT.ID, REVENUE.ID;
select
(
select coalesce(sum(EE.ACTUALAMOUNTINCURRENCY), 0)
from dbo.EVENTEXPENSE
left join dbo.UFN_EVENTEXPENSE_GETINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as EE on EE.ID = EVENTEXPENSE.ID
where EVENTEXPENSE.EVENTID = EVENT.ID
) as ACTUALAMOUNT,
( --Payments
select coalesce(sum(RS.AMOUNTINCURRENCY), 0)
from dbo.EVENTREGISTRANTPAYMENT P
inner join dbo.REGISTRANT on P.REGISTRANTID = REGISTRANT.ID
inner join dbo.REVENUESPLIT on P.PAYMENTID = REVENUESPLIT.ID
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
where REGISTRANT.EVENTID = EVENT.ID
) -
( --Credits
select coalesce(sum([CREDITITEM].[TOTAL]), 0)
from dbo.[CREDITITEM]
inner join dbo.[SALESORDERITEM] on [SALESORDERITEM].[ID] = [CREDITITEM].[SALESORDERITEMID]
inner join dbo.[SALESORDERITEMEVENTREGISTRATION] on [SALESORDERITEMEVENTREGISTRATION].[ID] = [SALESORDERITEM].[ID]
inner join dbo.[REGISTRANT] on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
where [REGISTRANT].[EVENTID] = [EVENT].[ID]
) +
( -- Teamfundraising totals
coalesce((select sum(AMOUNTSOLICITED) from @EVENTTEAMFUNDRAISINGINFO EVENTTEAMFUNDRAISINGINFO where EVENTTEAMFUNDRAISINGINFO.ID = EVENT.ID),0)
) +
( -- Appeal income
coalesce((select sum(AMOUNTSOLICITED) from @EVENTAPPEALINFO EVENTAPPEALINFO where EVENTAPPEALINFO.ID = EVENT.ID),0)
)
as [TOTALINCOME],
(select count(distinct CONSTITUENTID) from dbo.INVITEE where INVITEE.EVENTID = EVENT.ID) as INVITED,
(select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and dbo.[UFN_REGISTRANT_ISCANCELLED](REGISTRANT.ID) = 0 and REGISTRANT.WILLNOTATTEND = 0) as REGISTERED,
(select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and ATTENDED = 1 and dbo.[UFN_REGISTRANT_ISCANCELLED](REGISTRANT.ID) = 0) as ATTENDED,
EVENT.CAPACITY,
(select count(GUESTS.ID) from dbo.REGISTRANT as GUESTS where GUESTS.GUESTOFREGISTRANTID is not null and GUESTS.EVENTID = EVENT.ID and dbo.[UFN_REGISTRANT_ISCANCELLED](GUESTS.ID) = 0 and GUESTS.WILLNOTATTEND = 0) as GUESTS,
CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCYPROPERTIES.DECIMALDIGITS
from
dbo.EVENT
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
where
EVENT.ID = @EVENTID;
end