USP_KPI_CAMPAIGNTEAM_GOALAMOUNTTOTAL
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | money | INOUT | |
@ASOFDATE | datetime | IN | |
@CAMPAIGNID | uniqueidentifier | IN | |
@ORGTEAMIDSET | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_KPI_CAMPAIGNTEAM_GOALAMOUNTTOTAL(
@VALUE money output,
@ASOFDATE datetime,
@CAMPAIGNID uniqueidentifier,
@ORGTEAMIDSET uniqueidentifier,
@CURRENCYID uniqueidentifier = null
) as begin
set nocount on;
declare @IDS as table(ID uniqueidentifier);
insert into @IDS exec USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGTEAMIDSET, null;
with FUNDRAISERS_CTE as (
select
ORGANIZATIONPOSITIONHOLDER.CONSTITUENTID,
ORGANIZATIONPOSITIONHOLDER.DATEFROM,
case
when datediff(day, @ASOFDATE, ORGANIZATIONPOSITIONHOLDER.DATETO) > 0 then @ASOFDATE
else coalesce(ORGANIZATIONPOSITIONHOLDER.DATETO,@ASOFDATE)
end DATETO
from dbo.ORGANIZATIONPOSITIONHOLDER
)
select
@VALUE = coalesce(sum(dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY(REVENUESOLICITOR.ID, @CURRENCYID)), 0)
from dbo.REVENUESOLICITOR
inner join dbo.REVENUESPLIT on REVENUESOLICITOR.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLIT.ID = REVENUESPLITCAMPAIGN.REVENUESPLITID
inner join FUNDRAISERS_CTE on REVENUESOLICITOR.CONSTITUENTID = FUNDRAISERS_CTE.CONSTITUENTID
left outer join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
where (
REVENUE.TRANSACTIONTYPECODE in (1,6) --Pledges or grant awards
or (
REVENUE.TRANSACTIONTYPECODE = 0 --Payments...
and not REVENUESPLIT.APPLICATIONCODE in (2,7,8) --sans pledge, MGC, and grant award payments
)
or(
REVENUE.TRANSACTIONTYPECODE = 4 --Planned gifts with a payment
and exists (
select 1
from INSTALLMENTPAYMENT PGINSTALLMENT
inner join REVENUESPLIT PGREVENUESPLIT on PGREVENUESPLIT.ID = PGINSTALLMENT.PAYMENTID
inner join REVENUE PGREVENUE on PGREVENUE.ID = PGREVENUESPLIT.REVENUEID
where PGINSTALLMENT.PLEDGEID=REVENUE.ID
and (PGREVENUE.DATE >= FUNDRAISERS_CTE.DATEFROM or FUNDRAISERS_CTE.DATEFROM is null)
and (PGREVENUE.DATE <= FUNDRAISERS_CTE.DATETO or FUNDRAISERS_CTE.DATETO is null)
)
)
)
and REVENUESPLITCAMPAIGN.CAMPAIGNID = @CAMPAIGNID
and (FUNDRAISERS_CTE.DATEFROM <= REVENUE.DATE or FUNDRAISERS_CTE.DATEFROM is null)
and (REVENUE.DATE <= FUNDRAISERS_CTE.DATETO or FUNDRAISERS_CTE.DATETO is null);
end