UFN_CAMPAIGNPRIORITY_GETTOTALBALANCE
Returns the total balance for a given campaign priority.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CAMPAIGNPRIORITYID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
CREATE function dbo.UFN_CAMPAIGNPRIORITY_GETTOTALBALANCE
(
@CAMPAIGNPRIORITYID uniqueidentifier,
@STARTDATE datetime = null,
@ENDDATE datetime = null
)
returns money
as
begin
declare @RESULT money;
with CAMPAIGNPRIORITY_CTE as (
select distinct
REVENUESPLIT.REVENUEID
from
dbo.REVENUESPLIT
inner join dbo.REVENUE with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID
inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.CAMPAIGNSUBPRIORITY on CAMPAIGNSUBPRIORITY.ID = REVENUESPLITCAMPAIGN.CAMPAIGNSUBPRIORITYID
inner join dbo.CAMPAIGNPRIORITY on CAMPAIGNPRIORITY.ID = CAMPAIGNSUBPRIORITY.CAMPAIGNPRIORITYID
where
CAMPAIGNPRIORITY.ID = @CAMPAIGNPRIORITYID
and REVENUE.TRANSACTIONTYPECODE in (1, 6)
and (REVENUE.DATE >= @STARTDATE or @STARTDATE is null)
and (REVENUE.DATE <= @ENDDATE or @ENDDATE is null))
select
@RESULT = coalesce(sum(REVENUESPLIT.ORGANIZATIONAMOUNT), 0)
-
(
coalesce(( --Subtract Writeoffs of the above pledges
select
SUM(WRITEOFFSPLIT.ORGANIZATIONAMOUNT)
from
dbo.WRITEOFFSPLIT
inner join dbo.WRITEOFF on WRITEOFF.ID = WRITEOFFSPLIT.WRITEOFFID
inner join dbo.REVENUE on REVENUE.ID = WRITEOFF.REVENUEID
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
inner join CAMPAIGNPRIORITY_CTE on CAMPAIGNPRIORITY_CTE.REVENUEID = REVENUESPLIT.REVENUEID
), 0)
)
from
dbo.REVENUESPLIT
inner join CAMPAIGNPRIORITY_CTE on CAMPAIGNPRIORITY_CTE.REVENUEID = REVENUESPLIT.REVENUEID;
return @RESULT;
end