USP_REPORT_DESIGNATIONLEVELREVENUE_BYAPPEAL_2
Returns the appeal data necessary for the new design of the Fundraising Purpose Revenue report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@START | datetime | IN | |
@END | datetime | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@DESIGNATIONLEVELTYPEID | uniqueidentifier | IN | |
@GROUPBY | tinyint | IN | |
@SELECTIONID | uniqueidentifier | IN | |
@CAMPAIGNHIERARCHYPATH | hierarchyid | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CURRENCYCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_DESIGNATIONLEVELREVENUE_BYAPPEAL_2
(
@START datetime = null,
@END datetime = null,
@CATEGORYCODEID uniqueidentifier = null,
@DESIGNATIONLEVELTYPEID uniqueidentifier = null,
@GROUPBY tinyint = 0,
@SELECTIONID uniqueidentifier = null,
@CAMPAIGNHIERARCHYPATH hierarchyid = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@CURRENCYCODE tinyint = 0
)
as
set nocount on;
declare @APPEALOPTION tinyint;
set @APPEALOPTION = @GROUPBY;
set @START = dbo.UFN_DATE_GETEARLIESTTIME(@START);
set @END = dbo.UFN_DATE_GETLATESTTIME(@END);
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @END < @START
raiserror('The start date must be on or before the end date.',13,1);
declare @APPEALSPLITS table
(
DESIGNATIONLEVELID uniqueidentifier,
REVENUEID uniqueidentifier,
REVENUESPLITID uniqueidentifier,
REVENUESPLITAMOUNT money,
DESIGNATIONID uniqueidentifier,
APPEALID uniqueidentifier,
TRANSACTIONTYPECODE tinyint,
SPLITTYPECODE tinyint,
APPLICATIONCODE tinyint,
BASECURRENCYID uniqueidentifier
);
declare @OVERALLSPLITS table
(
DESIGNATIONLEVELID uniqueidentifier,
REVENUEID uniqueidentifier,
REVENUESPLITID uniqueidentifier,
REVENUESPLITAMOUNT money,
DESIGNATIONID uniqueidentifier,
APPEALID uniqueidentifier,
TRANSACTIONTYPECODE tinyint,
SPLITTYPECODE tinyint,
APPLICATIONCODE tinyint,
BASECURRENCYID uniqueidentifier
);
if @CURRENCYCODE = 0
begin
insert into @APPEALSPLITS
select
DESIGNATIONLEVEL.ID as [DESIGNATIONLEVELID],
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
[SPLITS].REVENUESPLITAMOUNT,
[SPLITS].DESIGNATIONID,
[SPLITS].APPEALID,
[SPLITS].TRANSACTIONTYPECODE,
[SPLITS].SPLITTYPECODE,
[SPLITS].APPLICATIONCODE,
DESIGNATIONLEVEL.BASECURRENCYID
from dbo.DESIGNATIONLEVEL with (nolock)
cross apply dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDSINCURRENCY_2(DESIGNATIONLEVEL.ID, @START, @END, @CAMPAIGNHIERARCHYPATH, @APPEALOPTION, DESIGNATIONLEVEL.BASECURRENCYID, @ORGANIZATIONCURRENCYID) as [SPLITS]
where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1);
insert into @OVERALLSPLITS
select
DESIGNATIONLEVEL.ID as [DESIGNATIONLEVELID],
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
[SPLITS].REVENUESPLITAMOUNT,
[SPLITS].DESIGNATIONID,
[SPLITS].APPEALID,
[SPLITS].TRANSACTIONTYPECODE,
[SPLITS].SPLITTYPECODE,
[SPLITS].APPLICATIONCODE,
DESIGNATIONLEVEL.BASECURRENCYID
from dbo.DESIGNATIONLEVEL with (nolock)
cross apply dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDSINCURRENCY_2(DESIGNATIONLEVEL.ID, @START, @END, @CAMPAIGNHIERARCHYPATH, null, DESIGNATIONLEVEL.BASECURRENCYID, @ORGANIZATIONCURRENCYID) as [SPLITS]
where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1);
with [APPEALS_CTE] as
(
select distinct
case @APPEALOPTION
when 0 then APPEAL.ID
when 2 then APPEAL.APPEALREPORT1CODEID
end as [APPEALID],
case @APPEALOPTION
when 0 then APPEAL.NAME
when 2 then [APPEALREPORTCODE].DESCRIPTION
end as [APPEALNAME]
from dbo.APPEAL
left join dbo.APPEALREPORT1CODE as [APPEALREPORTCODE] on [APPEALREPORTCODE].ID = APPEAL.APPEALREPORT1CODEID
where @APPEALOPTION in (0,2)
union all
select
BUSINESSUNITCODE.ID as [APPEALID],
BUSINESSUNITCODE.DESCRIPTION as [APPEALNAME]
from dbo.BUSINESSUNITCODE where @APPEALOPTION= 1
),
[OVERALLNEWCOMMITMENTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @OVERALLSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE in (1, 6)
union all
select
[SPLITS].DESIGNATIONLEVELID,
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
case
when ([SPLITS].BASECURRENCYID = @ORGANIZATIONCURRENCYID)
then WRITEOFFSPLIT.ORGAMOUNT
when [SPLITS].BASECURRENCYID = V.BASECURRENCYID
then WRITEOFFSPLIT.BASEAMOUNT
else dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, [SPLITS].BASECURRENCYID) * -1
end as [REVENUESPLITAMOUNT],
0 as [GIFTCOUNT],
null as [APPEALID]
from dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT
inner join dbo.FINANCIALTRANSACTION WRITEOFF on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = WRITEOFF.ID
inner join @OVERALLSPLITS [SPLITS] on [SPLITS].REVENUEID = WRITEOFF.PARENTID
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
where [SPLITS].TRANSACTIONTYPECODE in (1,6)
),
[APPEALNEWCOMMITMENTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @APPEALSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE in (1, 6)
union all
select
[SPLITS].DESIGNATIONLEVELID,
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
case
when ([SPLITS].BASECURRENCYID = @ORGANIZATIONCURRENCYID)
then WRITEOFFSPLIT.ORGAMOUNT
when [SPLITS].BASECURRENCYID = V.BASECURRENCYID
then WRITEOFFSPLIT.BASEAMOUNT
else dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, [SPLITS].BASECURRENCYID) * -1
end as [REVENUESPLITAMOUNT],
0 as [GIFTCOUNT],
null as [APPEALID]
from dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT
inner join dbo.FINANCIALTRANSACTION WRITEOFF on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = WRITEOFF.ID
inner join @APPEALSPLITS [SPLITS] on [SPLITS].REVENUEID = WRITEOFF.PARENTID
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
where [SPLITS].TRANSACTIONTYPECODE in (1,6)
),
[OVERALLRECEIVED_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @OVERALLSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 0
and [SPLITS].APPLICATIONCODE in (0, 1, 6, 7, 3, 10, 13)
and ([SPLITS].APPLICATIONCODE <> 10 or [SPLITS].SPLITTYPECODE = 0)
),
[APPEALRECEIVED_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
[SPLITS].APPEALID as [APPEALID]
from @APPEALSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 0
and [SPLITS].APPLICATIONCODE in (0, 1, 6, 7, 3, 10, 13)
and ([SPLITS].APPLICATIONCODE <> 10 or [SPLITS].SPLITTYPECODE = 0)
),
[OVERALLPLANNEDGIFTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @OVERALLSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 4
),
[APPEALPLANNEDGIFTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
[SPLITS].APPEALID as [APPEALID]
from @APPEALSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 4
),
[REPORT_CTE] as
(
select
[OVERALLRECEIVED_CTE].DESIGNATIONLEVELID,
sum([OVERALLRECEIVED_CTE].REVENUESPLITAMOUNT) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum([OVERALLRECEIVED_CTE].GIFTCOUNT) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
null as [APPEALID]
from [OVERALLRECEIVED_CTE]
group by DESIGNATIONLEVELID
union all
select
[APPEALRECEIVED_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum([APPEALRECEIVED_CTE].REVENUESPLITAMOUNT) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum([APPEALRECEIVED_CTE].GIFTCOUNT) as [APPEALGIFTCOUNT],
[APPEALRECEIVED_CTE].APPEALID
from [APPEALRECEIVED_CTE]
group by DESIGNATIONLEVELID, APPEALID
union all
select
[OVERALLNEWCOMMITMENTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum([OVERALLNEWCOMMITMENTS_CTE].REVENUESPLITAMOUNT) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum([OVERALLNEWCOMMITMENTS_CTE].GIFTCOUNT) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
null as [APPEALID]
from [OVERALLNEWCOMMITMENTS_CTE]
group by DESIGNATIONLEVELID
union all
select
[APPEALNEWCOMMITMENTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum([APPEALNEWCOMMITMENTS_CTE].REVENUESPLITAMOUNT) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum([APPEALNEWCOMMITMENTS_CTE].GIFTCOUNT) as [APPEALGIFTCOUNT],
[APPEALNEWCOMMITMENTS_CTE].APPEALID
from [APPEALNEWCOMMITMENTS_CTE]
group by DESIGNATIONLEVELID, APPEALID
union all
select
[OVERALLPLANNEDGIFTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum([OVERALLPLANNEDGIFTS_CTE].REVENUESPLITAMOUNT) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
null as [APPEALID]
from [OVERALLPLANNEDGIFTS_CTE]
group by DESIGNATIONLEVELID
union all
select
[APPEALPLANNEDGIFTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum([APPEALPLANNEDGIFTS_CTE].REVENUESPLITAMOUNT) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
[APPEALPLANNEDGIFTS_CTE].APPEALID
from [APPEALPLANNEDGIFTS_CTE]
group by DESIGNATIONLEVELID, APPEALID
)
select
'http://www.blackbaud.com/DESIGNATIONLEVELID?DESIGNATIONLEVELID=' + cast(DESIGNATIONLEVEL.ID as nvarchar(36)) as [DESIGNATIONLEVELID],
DESIGNATIONLEVEL.NAME,
0 as [SEQUENCE],
YEAR(@END) as [PERIODYEAR],
coalesce(sum([DATA].OVERALLGIFTCOUNT), 0) as [TOTALNUMGIFTS],
-1 as [TOTALDONORS],
-1 as [TOTALRAISED],
coalesce(sum([DATA].APPEALGIFTCOUNT), 0) as [PERIODNUMGIFTS],
-1 as [MAXGIFT],
-1 as [PERIODAVGGIFT],
coalesce(sum([DATA].OVERALLRECEIVED_AMOUNT), 0) + coalesce(sum([DATA].OVERALLNEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALRAISED],
coalesce(sum([DATA].OVERALLRECEIVED_AMOUNT), 0) as [OVERALLTOTALRECEIVED],
coalesce(sum([DATA].OVERALLNEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALEXPECTED],
-1 as [TOTALAVGGIFT],
coalesce(sum([DATA].APPEALRECEIVED_AMOUNT), 0) as [TOTALRECEIVED],
coalesce(sum([DATA].APPEALNEWCOMMITMENTS_AMOUNT), 0) as [TOTALEXPECTED],
0 as [PERIODNUMDONORS],
[APPEALS_CTE].APPEALNAME as [APPEALNAME],
coalesce(sum([DATA].OVERALLPLANNEDGIFT_AMOUNT), 0) as [OVERALLTOTALPLANNEDGIFTS],
coalesce(sum([DATA].APPEALPLANNEDGIFT_AMOUNT), 0) as [TOTALPLANNEDGIFTS],
CURRENCYPROPERTIES.ID as CURRENCYID,
CURRENCYPROPERTIES.ISO4217 as CURRENCYISO,
CURRENCYPROPERTIES.DECIMALDIGITS as CURRENCYDECIMALDIGITS,
CURRENCYPROPERTIES.CURRENCYSYMBOL as CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE
from DESIGNATIONLEVEL with (nolock)
left join [REPORT_CTE] as [DATA] on [DATA].DESIGNATIONLEVELID = DESIGNATIONLEVEL.ID
left join [APPEALS_CTE] on [APPEALS_CTE].APPEALID = [DATA].APPEALID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(DESIGNATIONLEVEL.BASECURRENCYID) CURRENCYPROPERTIES
where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1)
group by DESIGNATIONLEVEL.ID, DESIGNATIONLEVEL.NAME, [APPEALS_CTE].APPEALNAME,CURRENCYPROPERTIES.ID,CURRENCYPROPERTIES.ISO4217,
CURRENCYPROPERTIES.DECIMALDIGITS, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, DESIGNATIONLEVEL.BASECURRENCYID, [DATA].DESIGNATIONLEVELID
order by DESIGNATIONLEVEL.NAME, [APPEALS_CTE].APPEALNAME
end
else
begin
declare @CURRENCYID uniqueidentifier;
declare @CURRENCYISO nvarchar(3);
declare @CURRENCYDECIMALDIGITS tinyint;
declare @CURRENCYSYMBOL nvarchar(5);
declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;
select
@CURRENCYID = ID,
@CURRENCYISO = ISO4217,
@CURRENCYDECIMALDIGITS = DECIMALDIGITS,
@CURRENCYSYMBOL = CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE = SYMBOLDISPLAYSETTINGCODE
from dbo.CURRENCY where ID = @ORGANIZATIONCURRENCYID
insert into @APPEALSPLITS
select
DESIGNATIONLEVEL.ID as [DESIGNATIONLEVELID],
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
[SPLITS].REVENUESPLITAMOUNT,
[SPLITS].DESIGNATIONID,
[SPLITS].APPEALID,
[SPLITS].TRANSACTIONTYPECODE,
[SPLITS].SPLITTYPECODE,
[SPLITS].APPLICATIONCODE,
DESIGNATIONLEVEL.BASECURRENCYID
from dbo.DESIGNATIONLEVEL with (nolock)
cross apply dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDSINCURRENCY_2(DESIGNATIONLEVEL.ID, @START, @END, @CAMPAIGNHIERARCHYPATH, @APPEALOPTION, @CURRENCYID, @ORGANIZATIONCURRENCYID) as [SPLITS]
where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1);
insert into @OVERALLSPLITS
select
DESIGNATIONLEVEL.ID as [DESIGNATIONLEVELID],
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
[SPLITS].REVENUESPLITAMOUNT,
[SPLITS].DESIGNATIONID,
[SPLITS].APPEALID,
[SPLITS].TRANSACTIONTYPECODE,
[SPLITS].SPLITTYPECODE,
[SPLITS].APPLICATIONCODE,
DESIGNATIONLEVEL.BASECURRENCYID
from dbo.DESIGNATIONLEVEL with (nolock)
cross apply dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDSINCURRENCY_2(DESIGNATIONLEVEL.ID, @START, @END, @CAMPAIGNHIERARCHYPATH, null, @CURRENCYID, @ORGANIZATIONCURRENCYID) as [SPLITS]
where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1);
with [APPEALS_CTE] as
(
select distinct
case @APPEALOPTION
when 0 then APPEAL.ID
when 2 then APPEAL.APPEALREPORT1CODEID
end as [APPEALID],
case @APPEALOPTION
when 0 then APPEAL.NAME
when 2 then [APPEALREPORTCODE].DESCRIPTION
end as [APPEALNAME]
from dbo.APPEAL
left join dbo.APPEALREPORT1CODE as [APPEALREPORTCODE] on [APPEALREPORTCODE].ID = APPEAL.APPEALREPORT1CODEID
where @APPEALOPTION in (0,2)
union all
select
BUSINESSUNITCODE.ID as [APPEALID],
BUSINESSUNITCODE.DESCRIPTION as [APPEALNAME]
from dbo.BUSINESSUNITCODE where @APPEALOPTION= 1
),
[OVERALLNEWCOMMITMENTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @OVERALLSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE in (1, 6)
union all
select
[SPLITS].DESIGNATIONLEVELID,
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
case
when (@CURRENCYID is null or @CURRENCYID = @ORGANIZATIONCURRENCYID)
then WRITEOFFSPLIT.ORGAMOUNT
when @CURRENCYID = V.BASECURRENCYID
then WRITEOFFSPLIT.BASEAMOUNT
else dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, @CURRENCYID) * -1
end as [REVENUESPLITAMOUNT],
0 as [GIFTCOUNT],
null as [APPEALID]
from dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT
inner join dbo.FINANCIALTRANSACTION WRITEOFF on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = WRITEOFF.ID
inner join @OVERALLSPLITS [SPLITS] on [SPLITS].REVENUEID = WRITEOFF.PARENTID
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
where [SPLITS].TRANSACTIONTYPECODE in (1,6)
),
[APPEALNEWCOMMITMENTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @APPEALSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE in (1, 6)
union all
select
[SPLITS].DESIGNATIONLEVELID,
[SPLITS].REVENUEID,
[SPLITS].REVENUESPLITID,
case
when (@CURRENCYID is null or @CURRENCYID = @ORGANIZATIONCURRENCYID)
then WRITEOFFSPLIT.ORGAMOUNT
when @CURRENCYID = V.BASECURRENCYID
then WRITEOFFSPLIT.BASEAMOUNT
else dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, @CURRENCYID) * -1
end as [REVENUESPLITAMOUNT],
0 as [GIFTCOUNT],
null as [APPEALID]
from dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT
inner join dbo.FINANCIALTRANSACTION WRITEOFF on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = WRITEOFF.ID
inner join @APPEALSPLITS [SPLITS] on [SPLITS].REVENUEID = WRITEOFF.PARENTID
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on WRITEOFFSPLIT.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
where [SPLITS].TRANSACTIONTYPECODE in (1,6)
),
[OVERALLRECEIVED_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @OVERALLSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 0
and [SPLITS].APPLICATIONCODE in (0, 1, 6, 7, 3, 10, 13)
and ([SPLITS].APPLICATIONCODE <> 10 or [SPLITS].SPLITTYPECODE = 0)
),
[APPEALRECEIVED_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
[SPLITS].APPEALID as [APPEALID]
from @APPEALSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 0
and [SPLITS].APPLICATIONCODE in (0, 1, 6, 7, 3, 10, 13)
and ([SPLITS].APPLICATIONCODE <> 10 or [SPLITS].SPLITTYPECODE = 0)
),
[OVERALLPLANNEDGIFTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
null as [APPEALID]
from @OVERALLSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 4
),
[APPEALPLANNEDGIFTS_CTE] as
(
select
[SPLITS].DESIGNATIONLEVELID,
REVENUEID,
REVENUESPLITID,
REVENUESPLITAMOUNT,
1 as [GIFTCOUNT],
[SPLITS].APPEALID as [APPEALID]
from @APPEALSPLITS [SPLITS]
where [SPLITS].TRANSACTIONTYPECODE = 4
),
[REPORT_CTE] as
(
select
[OVERALLRECEIVED_CTE].DESIGNATIONLEVELID,
sum([OVERALLRECEIVED_CTE].REVENUESPLITAMOUNT) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum([OVERALLRECEIVED_CTE].GIFTCOUNT) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
null as [APPEALID]
from [OVERALLRECEIVED_CTE]
group by DESIGNATIONLEVELID
union all
select
[APPEALRECEIVED_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum([APPEALRECEIVED_CTE].REVENUESPLITAMOUNT) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum([APPEALRECEIVED_CTE].GIFTCOUNT) as [APPEALGIFTCOUNT],
[APPEALRECEIVED_CTE].APPEALID
from [APPEALRECEIVED_CTE]
group by DESIGNATIONLEVELID, APPEALID
union all
select
[OVERALLNEWCOMMITMENTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum([OVERALLNEWCOMMITMENTS_CTE].REVENUESPLITAMOUNT) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum([OVERALLNEWCOMMITMENTS_CTE].GIFTCOUNT) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
null as [APPEALID]
from [OVERALLNEWCOMMITMENTS_CTE]
group by DESIGNATIONLEVELID
union all
select
[APPEALNEWCOMMITMENTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum([APPEALNEWCOMMITMENTS_CTE].REVENUESPLITAMOUNT) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum([APPEALNEWCOMMITMENTS_CTE].GIFTCOUNT) as [APPEALGIFTCOUNT],
[APPEALNEWCOMMITMENTS_CTE].APPEALID
from [APPEALNEWCOMMITMENTS_CTE]
group by DESIGNATIONLEVELID, APPEALID
union all
select
[OVERALLPLANNEDGIFTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum([OVERALLPLANNEDGIFTS_CTE].REVENUESPLITAMOUNT) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum(0) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
null as [APPEALID]
from [OVERALLPLANNEDGIFTS_CTE]
group by DESIGNATIONLEVELID
union all
select
[APPEALPLANNEDGIFTS_CTE].DESIGNATIONLEVELID,
sum(0) as [OVERALLRECEIVED_AMOUNT],
sum(0) as [OVERALLNEWCOMMITMENTS_AMOUNT],
sum(0) as [OVERALLPLANNEDGIFT_AMOUNT],
sum(0) as [APPEALRECEIVED_AMOUNT],
sum(0) as [APPEALNEWCOMMITMENTS_AMOUNT],
sum([APPEALPLANNEDGIFTS_CTE].REVENUESPLITAMOUNT) as [APPEALPLANNEDGIFT_AMOUNT],
sum(0) as [OVERALLGIFTCOUNT],
sum(0) as [APPEALGIFTCOUNT],
[APPEALPLANNEDGIFTS_CTE].APPEALID
from [APPEALPLANNEDGIFTS_CTE]
group by DESIGNATIONLEVELID, APPEALID
)
select
'http://www.blackbaud.com/DESIGNATIONLEVELID?DESIGNATIONLEVELID=' + cast(DESIGNATIONLEVEL.ID as nvarchar(36)) as [DESIGNATIONLEVELID],
DESIGNATIONLEVEL.NAME,
0 as [SEQUENCE],
YEAR(@END) as [PERIODYEAR],
coalesce(sum([DATA].OVERALLGIFTCOUNT), 0) as [TOTALNUMGIFTS],
-1 as [TOTALDONORS],
-1 as [TOTALRAISED],
coalesce(sum([DATA].APPEALGIFTCOUNT), 0) as [PERIODNUMGIFTS],
-1 as [MAXGIFT],
-1 as [PERIODAVGGIFT],
coalesce(sum([DATA].OVERALLRECEIVED_AMOUNT), 0) + coalesce(sum([DATA].OVERALLNEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALRAISED],
coalesce(sum([DATA].OVERALLRECEIVED_AMOUNT), 0) as [OVERALLTOTALRECEIVED],
coalesce(sum([DATA].OVERALLNEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALEXPECTED],
-1 as [TOTALAVGGIFT],
coalesce(sum([DATA].APPEALRECEIVED_AMOUNT), 0) as [TOTALRECEIVED],
coalesce(sum([DATA].APPEALNEWCOMMITMENTS_AMOUNT), 0) as [TOTALEXPECTED],
0 as [PERIODNUMDONORS],
[APPEALS_CTE].APPEALNAME as [APPEALNAME],
coalesce(sum([DATA].OVERALLPLANNEDGIFT_AMOUNT), 0) as [OVERALLTOTALPLANNEDGIFTS],
coalesce(sum([DATA].APPEALPLANNEDGIFT_AMOUNT), 0) as [TOTALPLANNEDGIFTS],
@CURRENCYID as CURRENCYID,
@CURRENCYISO as CURRENCYISO,
@CURRENCYDECIMALDIGITS as CURRENCYDECIMALDIGITS,
@CURRENCYSYMBOL as CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE
from DESIGNATIONLEVEL with (nolock)
left join [REPORT_CTE] as [DATA] on [DATA].DESIGNATIONLEVELID = DESIGNATIONLEVEL.ID
left join [APPEALS_CTE] on [APPEALS_CTE].APPEALID = [DATA].APPEALID
where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1)
group by DESIGNATIONLEVEL.ID, DESIGNATIONLEVEL.NAME, [APPEALS_CTE].APPEALNAME, [DATA].DESIGNATIONLEVELID
order by DESIGNATIONLEVEL.NAME, [APPEALS_CTE].APPEALNAME
end