UFN_CAMPAIGN_GETPLEDGEBALANCEINCURRENCY
Returns total revenue expected for a campaign converting amounts to the specified currency.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@HIERARCHYPATH | hierarchyid | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CURRENCYID | uniqueidentifier | IN | |
@ORGANIZATIONCURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_CAMPAIGN_GETPLEDGEBALANCEINCURRENCY (
@HIERARCHYPATH hierarchyid,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@CURRENCYID uniqueidentifier = null,
@ORGANIZATIONCURRENCYID uniqueidentifier = null
) returns table as
return
with CAMPAIGNREVENUESPLIT_CTE as (
select distinct
REVENUESPLIT.ID as REVENUESPLITID,
REVENUESPLIT.REVENUEID,
REVENUESPLIT.DESIGNATIONID
from
dbo.REVENUESPLITCAMPAIGN
inner join dbo.CAMPAIGN on REVENUESPLITCAMPAIGN.CAMPAIGNID = CAMPAIGN.ID
inner join dbo.REVENUESPLIT on REVENUESPLITCAMPAIGN.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
where
CAMPAIGN.HIERARCHYPATH.IsDescendantOf(@HIERARCHYPATH) = 1
and (REVENUE.DATE >= @STARTDATE or @STARTDATE is null)
and (REVENUE.DATE <= @ENDDATE or @ENDDATE is null)
and -- Bug 16153 - AdamBu - Remove matching gift claims from this calculation and only include planned gifts if they also have a payment. (JamesWill Earth -- Remove planned gifts entirely)
REVENUE.TRANSACTIONTYPECODE in (1,6) --Pledges and Grant Awards
),
TOTALREVENUE_CTE as (
select
case when @CURRENCYID = coalesce(@ORGANIZATIONCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) then
RDS.ORGANIZATIONAMOUNT
when @CURRENCYID = RDS.BASECURRENCYID then
RDS.AMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RDS.ID, @CURRENCYID)
end as [TOTALAMOUNT]
from
dbo.REVENUESPLIT RDS
inner join CAMPAIGNREVENUESPLIT_CTE on RDS.ID = CAMPAIGNREVENUESPLIT_CTE.REVENUESPLITID
),
TOTALWRITEOFFS_CTE as (
--Subtract Writeoffs of the above pledges
select
case when @CURRENCYID = coalesce(@ORGANIZATIONCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) then
WOS.ORGANIZATIONAMOUNT
when @CURRENCYID = WOS.BASECURRENCYID then
WOS.AMOUNT
else
dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WOS.ID, @CURRENCYID)
end as [WRITEOFFAMOUNT]
from
dbo.WRITEOFFSPLIT WOS
inner join dbo.WRITEOFF WO on WOS.WRITEOFFID = WO.ID
inner join CAMPAIGNREVENUESPLIT_CTE on WO.REVENUEID = CAMPAIGNREVENUESPLIT_CTE.REVENUEID
where
WOS.DESIGNATIONID = CAMPAIGNREVENUESPLIT_CTE.DESIGNATIONID
)
select
(select coalesce(sum(TOTALREVENUE_CTE.TOTALAMOUNT),0) from TOTALREVENUE_CTE)
-
(select coalesce(sum(TOTALWRITEOFFS_CTE.WRITEOFFAMOUNT),0) from TOTALWRITEOFFS_CTE) as PLEDGEBALANCE