UFN_DESIGNATION_GETPROGRESSINCURRENCY
This function returns progress information for the fundraising reports.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DESIGNATIONLEVELID | uniqueidentifier | IN | |
@GOALID | uniqueidentifier | IN | |
@REPORTCODE1ID | uniqueidentifier | IN | |
@REPORTCODE2ID | uniqueidentifier | IN | |
@ROLLUPTOTALS | bit | IN | |
@GROUPBY | tinyint | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function [dbo].[UFN_DESIGNATION_GETPROGRESSINCURRENCY]
(
@DESIGNATIONLEVELID uniqueidentifier,
@GOALID uniqueidentifier,
@REPORTCODE1ID uniqueidentifier = null,
@REPORTCODE2ID uniqueidentifier = null,
@ROLLUPTOTALS bit = 0,
@GROUPBY tinyint = null,
@CURRENCYID uniqueidentifier = null
)
returns @DESIGNATIONPROGRESS table
(
DESIGNATIONID uniqueidentifier NOT NULL,
LEVEL1NAME nvarchar(100),
LEVEL2NAME nvarchar(100),
LEVEL3NAME nvarchar(100),
LEVEL4NAME nvarchar(100),
LEVEL5NAME nvarchar(100),
DESIGNATIONLEVEL1ID uniqueidentifier,
DESIGNATIONLEVEL2ID uniqueidentifier,
DESIGNATIONLEVEL3ID uniqueidentifier,
DESIGNATIONLEVEL4ID uniqueidentifier,
DESIGNATIONLEVEL5ID uniqueidentifier,
DESIGNATIONLEVELTYPE nvarchar(100),
LASTCATEGORYCODEID uniqueidentifier,
LASTTYPEID uniqueidentifier,
LASTTYPE nvarchar(100),
REPORTCODE1 nvarchar(100),
REPORTCODE2 nvarchar(100),
DESIGNATIONGOAL money,
OVERALLGOAL money,
GOALNAME nvarchar(100),
STARTDATE datetime,
ENDDATE datetime,
DATERANGE nvarchar(24),
TOTALEXPECTED money,
TOTALRECEIVED money,
TOTALGIFTS int,
TOTALDONORS int,
APPEALNAME nvarchar(100),
APPEALRECEIVED money,
APPEALEXPECTED money,
APPEALNUMGIFTS int,
APPEALNUMDONORS int,
APPEALMAXGIFT money,
APPEALPLANNEDGIFT money,
TOTALPLANNEDGIFT money,
APPEALCURRENCYID uniqueidentifier,
APPEALCURRENCYISO nvarchar(3),
APPEALCURRENCYDECIMALDIGITS tinyint,
APPEALCURRENCYSYMBOL nvarchar(5),
APPEALCURRENCYSYMBOLDISPLAYSETTINGCODE tinyint,
DESIGNATIONCURRENCYID uniqueidentifier,
DESIGNATIONCURRENCYISO nvarchar(3),
DESIGNATIONCURRENCYDECIMALDIGITS tinyint,
DESIGNATIONCURRENCYSYMBOL nvarchar(5),
DESIGNATIONCURRENCYSYMBOLDISPLAYSETTINGCODE tinyint,
ISACTIVE bit
)
as
begin
declare @STARTDATE datetime;
declare @ENDDATE datetime;
select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(STARTDATE),
@ENDDATE = dbo.UFN_DATE_GETLATESTTIME(ENDDATE)
from dbo.DESIGNATIONLEVELGOAL where ID = @GOALID;
if @CURRENCYID is null
-- use each Appeal's base currency, and Designation's base currency
with APPEALRECEIVED_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALRAISED.DESID,
SUM(APPEALRAISED.DESTOTALRECEIVED) as RECEIVED
from dbo.[UFN_DESIGNATION_RAISEDBYAPPEALNODESNAME_INCURRENCY](@STARTDATE,@ENDDATE,@CURRENCYID) APPEALRAISED
inner join dbo.APPEAL on APPEALRAISED.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT on APPEALBUSINESSUNIT.APPEALID = APPEAL.ID
group by APPEALRAISED.DESID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALNEWCOMMITMENT_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALNEWCOMMITMENT.DESID,
sum(APPEALNEWCOMMITMENT.DESTOTALNEWCOMMITMENT) - sum(APPEALNEWCOMMITMENT.DESNEWCOMMITMENTWRITTENOFF) as NEWCOMMITMENT
from dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEBYAPPEALNODESNAME_INCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID) APPEALNEWCOMMITMENT
inner join dbo.APPEAL on APPEALNEWCOMMITMENT.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT on APPEALBUSINESSUNIT.APPEALID = APPEAL.ID
group by APPEALNEWCOMMITMENT.DESID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALPLANNEDGIFTREVENUE_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALPLANNEDGIFT.DESID,
sum(APPEALPLANNEDGIFT.DESTOTALPLANNEDGIFT) as PLANNEDGIFT
from dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEBYAPPEALNODESNAME_INCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID) APPEALPLANNEDGIFT
inner join dbo.APPEAL on APPEALPLANNEDGIFT.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT on APPEALBUSINESSUNIT.APPEALID = APPEAL.ID
group by APPEALPLANNEDGIFT.DESID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALCOUNTS_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALCOUNTS.DESIGNATIONID,
sum(APPEALCOUNTS.NUMDONORS) AS NUMDONORS,
SUM(APPEALCOUNTS.NUMGIFTS) AS NUMGIFTS,
MAX(APPEALCOUNTS.MAXGIFT) AS MAXGIFT
from dbo.UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL_INCURRENCY_2(@STARTDATE,@ENDDATE,@CURRENCYID) APPEALCOUNTS
inner join dbo.APPEAL on APPEALCOUNTS.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT on APPEALBUSINESSUNIT.APPEALID = APPEAL.ID
group by APPEALCOUNTS.DESIGNATIONID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALS_CTE as (
select distinct
case @GROUPBY
when 1 then APPEAL.ID
when 2 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
when 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
case @GROUPBY
when 1 then APPEAL.NAME
when 2 then BUSINESSUNITCODE.DESCRIPTION
when 3 then APPEALREPORTCODE.DESCRIPTION
end as APPEALNAME,
coalesce(@CURRENCYID,APPEAL.BASECURRENCYID) as BASECURRENCYID
from dbo.APPEAL
left join dbo.APPEALBUSINESSUNIT on APPEALBUSINESSUNIT.APPEALID = APPEAL.ID
left join dbo.BUSINESSUNITCODE on APPEALBUSINESSUNIT.BUSINESSUNITCODEID = BUSINESSUNITCODE.ID
left join dbo.APPEALREPORT1CODE APPEALREPORTCODE on APPEAL.APPEALREPORT1CODEID = APPEALREPORTCODE.ID)
insert into @DESIGNATIONPROGRESS
select distinct
DESIGNATION.ID DESIGNATIONID,
DESIGNATIONLEVEL.NAME LEVEL1NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL2ID) LEVEL2NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL3ID) LEVEL3NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL4ID) LEVEL4NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL5ID) LEVEL5NAME,
DESIGNATIONLEVEL.ID DESIGNATIONLEVEL1ID,
DESIGNATION.DESIGNATIONLEVEL2ID DESIGNATIONLEVEL2ID,
DESIGNATION.DESIGNATIONLEVEL3ID DESIGNATIONLEVEL3ID,
DESIGNATION.DESIGNATIONLEVEL4ID DESIGNATIONLEVEL4ID,
DESIGNATION.DESIGNATIONLEVEL5ID DESIGNATIONLEVEL5ID,
DESIGNATIONLEVELTYPE.DESCRIPTION DESIGNATIONLEVELTYPE,
COALESCE(DL5.DESIGNATIONLEVELCATEGORYCODEID,DL4.DESIGNATIONLEVELCATEGORYCODEID,DL3.DESIGNATIONLEVELCATEGORYCODEID,DL2.DESIGNATIONLEVELCATEGORYCODEID,DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID) LASTCATEGORYCODEID,
COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID,DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID) LASTTYPEID,
dbo.UFN_DESIGNATIONLEVELTYPE_GETDESCRIPTION(COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID,DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID)) LASTTYPE,
RC1.DESCRIPTION REPORTCODE1,
RC2.DESCRIPTION REPORTCODE2,
case when DESIGNATION.DESIGNATIONLEVEL2ID is null then coalesce(DESIGNATIONLEVELGOAL.GOAL, 0)
else coalesce(DESIGNATIONGOAL.GOAL, 0) end DESIGNATIONGOAL,
ISNULL(DESIGNATIONLEVELGOAL.GOAL, 0) OVERALLGOAL,
DESIGNATIONLEVELGOAL.NAME GOALNAME,
DESIGNATIONLEVELGOAL.STARTDATE STARTDATE,
DESIGNATIONLEVELGOAL.ENDDATE ENDDATE,
ISNULL(CONVERT(nvarchar(10), DESIGNATIONLEVELGOAL.STARTDATE, 101) + ' to ' + CONVERT(nvarchar(10), DESIGNATIONLEVELGOAL.ENDDATE, 101), '') DATERANGE,
(NEWCOMMITMENT.TOTALNEWCOMMITMENT - NEWCOMMITMENT.TOTALWRITEOFFS) TOTALEXPECTED,
RECEIVED.TOTALRECEIVED TOTALRECEIVED,
REVCOUNTS.NUMGIFTS TOTALGIFTS,
REVCOUNTS.NUMDONORS TOTALDONORS,
APPEALSGROUPED.APPEALNAME,
coalesce(APPEALRECEIVED_CTE.RECEIVED, 0) as APPEALRECEIVED,
coalesce(APPEALNEWCOMMITMENT_CTE.NEWCOMMITMENT, 0) as APPEALEXPECTED,
coalesce(APPEALCOUNTS_CTE.NUMGIFTS, 0) as APPEALNUMGIFTS,
coalesce(APPEALCOUNTS_CTE.NUMDONORS, 0) as APPEALNUMDONORS,
coalesce(APPEALCOUNTS_CTE.MAXGIFT, 0) as APPEALMAXGIFT,
coalesce(APPEALPLANNEDGIFTREVENUE_CTE.PLANNEDGIFT, 0) as APPEALPLANNEDGIFT,
coalesce(PLANNEDGIFT.TOTALPLANNEDGIFT, 0) TOTALPLANNEDGIFT,
APPEALCURRENCYPROPERTIES.ID as APPEALCURRENCYID,
APPEALCURRENCYPROPERTIES.ISO4217 as APPEALCURRENCYISO,
APPEALCURRENCYPROPERTIES.DECIMALDIGITS as APPEALCURRENCYDECIMALDIGITS,
APPEALCURRENCYPROPERTIES.CURRENCYSYMBOL as APPEALCURRENCYSYMBOL,
APPEALCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as APPEALCURRENCYSYMBOLDISPLAYSETTINGCODE,
DESIGNATIONCURRENCYPROPERTIES.ID as DESIGNATIONCURRENCYID,
DESIGNATIONCURRENCYPROPERTIES.ISO4217 as DESIGNATIONCURRENCYISO,
DESIGNATIONCURRENCYPROPERTIES.DECIMALDIGITS as DESIGNATIONCURRENCYDECIMALDIGITS,
DESIGNATIONCURRENCYPROPERTIES.CURRENCYSYMBOL as DESIGNATIONCURRENCYSYMBOL,
DESIGNATIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as DESIGNATIONCURRENCYSYMBOLDISPLAYSETTINGCODE,
DESIGNATION.ISACTIVE
from APPEALS_CTE cross join
dbo.DESIGNATIONLEVEL
inner join dbo.DESIGNATIONLEVELTYPE on DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = DESIGNATIONLEVELTYPE.ID
inner join dbo.DESIGNATION on DESIGNATIONLEVEL.ID = DESIGNATION.DESIGNATIONLEVEL1ID
left join dbo.DESIGNATIONLEVELGOAL on DESIGNATIONLEVEL.ID = DESIGNATIONLEVELGOAL.DESIGNATIONLEVELID
left join dbo.DESIGNATIONGOAL on DESIGNATIONLEVELGOAL.ID = DESIGNATIONGOAL.DESIGNATIONLEVELGOALID and DESIGNATION.ID = DESIGNATIONGOAL.DESIGNATIONID
left join dbo.DESIGNATIONREPORT1CODE as RC1 on DESIGNATION.DESIGNATIONREPORT1CODEID = RC1.ID
left join dbo.DESIGNATIONREPORT2CODE as RC2 on DESIGNATION.DESIGNATIONREPORT2CODEID = RC2.ID
left join dbo.DESIGNATIONLEVEL DL2 on DESIGNATION.DESIGNATIONLEVEL2ID = DL2.ID
left join dbo.DESIGNATIONLEVEL DL3 on DESIGNATION.DESIGNATIONLEVEL3ID = DL3.ID
left join dbo.DESIGNATIONLEVEL DL4 on DESIGNATION.DESIGNATIONLEVEL4ID = DL4.ID
left join dbo.DESIGNATIONLEVEL DL5 on DESIGNATION.DESIGNATIONLEVEL5ID = DL5.ID
left join dbo.UFN_DESIGNATION_REVENUECOUNTS(@STARTDATE,@ENDDATE) REVCOUNTS on DESIGNATION.ID = REVCOUNTS.DESIGNATIONID
outer apply dbo.UFN_DESIGNATION_REVENUERECEIVEDINCURRENCY(@STARTDATE,@ENDDATE,DESIGNATION.BASECURRENCYID,DESIGNATION.ID) RECEIVED
outer apply dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEINCURRENCY(@STARTDATE,@ENDDATE,DESIGNATION.BASECURRENCYID,DESIGNATION.ID) NEWCOMMITMENT
outer apply dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEINCURRENCY(@STARTDATE,@ENDDATE,DESIGNATION.BASECURRENCYID,DESIGNATION.ID) PLANNEDGIFT
left join APPEALRECEIVED_CTE on DESIGNATION.ID = APPEALRECEIVED_CTE.DESID and APPEALS_CTE.APPEALID = APPEALRECEIVED_CTE.APPEALID
left join APPEALNEWCOMMITMENT_CTE on DESIGNATION.ID = APPEALNEWCOMMITMENT_CTE.DESID and APPEALS_CTE.APPEALID = APPEALNEWCOMMITMENT_CTE.APPEALID
left join APPEALPLANNEDGIFTREVENUE_CTE on DESIGNATION.ID = APPEALPLANNEDGIFTREVENUE_CTE.DESID and APPEALS_CTE.APPEALID = APPEALPLANNEDGIFTREVENUE_CTE.APPEALID
left join APPEALCOUNTS_CTE on DESIGNATION.ID = APPEALCOUNTS_CTE.DESIGNATIONID and APPEALS_CTE.APPEALID = APPEALCOUNTS_CTE.APPEALID
left join APPEALS_CTE APPEALSGROUPED on APPEALSGROUPED.APPEALID = coalesce(APPEALRECEIVED_CTE.APPEALID, APPEALNEWCOMMITMENT_CTE.APPEALID, APPEALPLANNEDGIFTREVENUE_CTE.APPEALID)
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(APPEALS_CTE.BASECURRENCYID) APPEALCURRENCYPROPERTIES
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(DESIGNATION.BASECURRENCYID) DESIGNATIONCURRENCYPROPERTIES
where (DESIGNATIONLEVEL.ID = @DESIGNATIONLEVELID)
and (DESIGNATIONLEVELGOAL.ID = @GOALID or @GOALID is null)
and (RC1.ID = @REPORTCODE1ID or @REPORTCODE1ID is null) and
(RC2.ID = @REPORTCODE2ID or @REPORTCODE2ID is null);
else
begin
declare @CURRENCYISO nvarchar(3);
declare @CURRENCYDECIMALDIGITS tinyint;
declare @CURRENCYSYMBOL nvarchar(5);
declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ROUNDINGTYPECODE tinyint;
select
@CURRENCYISO = ISO4217,
@CURRENCYDECIMALDIGITS = DECIMALDIGITS,
@CURRENCYSYMBOL = CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE = SYMBOLDISPLAYSETTINGCODE,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE,
@ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
from dbo.CURRENCY where ID = @CURRENCYID;
with APPEALRECEIVED_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
AR.DESID,
SUM(AR.DESTOTALRECEIVED) as RECEIVED
from dbo.UFN_DESIGNATION_RAISEDBYAPPEALNODESNAME_INCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID) AR
inner join dbo.APPEAL on AR.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by AR.DESID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALNEWCOMMITMENT_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALNEWCOMMITMENT.DESID,
sum(APPEALNEWCOMMITMENT.DESTOTALNEWCOMMITMENT) - sum(APPEALNEWCOMMITMENT.DESNEWCOMMITMENTWRITTENOFF) as NEWCOMMITMENT
from dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEBYAPPEALNODESNAME_INCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID) APPEALNEWCOMMITMENT
inner join dbo.APPEAL on APPEALNEWCOMMITMENT.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by APPEALNEWCOMMITMENT.DESID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALPLANNEDGIFTREVENUE_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALPLANNEDGIFTREVENUE.DESID,
sum(APPEALPLANNEDGIFTREVENUE.DESTOTALPLANNEDGIFT) as PLANNEDGIFT
from dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEBYAPPEALNODESNAME_INCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID) APPEALPLANNEDGIFTREVENUE
inner join dbo.APPEAL on APPEALPLANNEDGIFTREVENUE.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by APPEALPLANNEDGIFTREVENUE.DESID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALCOUNTS_CTE as (
select
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
APPEALCOUNTS.DESIGNATIONID,
sum(APPEALCOUNTS.NUMDONORS) AS NUMDONORS,
SUM(APPEALCOUNTS.NUMGIFTS) AS NUMGIFTS,
MAX(APPEALCOUNTS.MAXGIFT) AS MAXGIFT
from dbo.UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL_INCURRENCY_2(@STARTDATE,@ENDDATE,@CURRENCYID) APPEALCOUNTS
inner join dbo.APPEAL on APPEALCOUNTS.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by APPEALCOUNTS.DESIGNATIONID,
case
when @GROUPBY = 1 then APPEAL.ID
when @GROUPBY = 2 then ABU.BUSINESSUNITCODEID
when @GROUPBY = 3 then APPEAL.APPEALREPORT1CODEID
end),
APPEALS_CTE as (
select distinct
case @GROUPBY
when 1 then APPEAL.ID
when 2 then ABU.BUSINESSUNITCODEID
when 3 then APPEAL.APPEALREPORT1CODEID
end as APPEALID,
case @GROUPBY
when 1 then APPEAL.NAME
when 2 then BUSINESSUNITCODE.DESCRIPTION
when 3 then APPEALREPORTCODE.DESCRIPTION
end as APPEALNAME,
@CURRENCYID as BASECURRENCYID
from dbo.APPEAL
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
left join dbo.BUSINESSUNITCODE on ABU.BUSINESSUNITCODEID = BUSINESSUNITCODE.ID
left join dbo.APPEALREPORT1CODE APPEALREPORTCODE on APPEAL.APPEALREPORT1CODEID = APPEALREPORTCODE.ID)
insert into @DESIGNATIONPROGRESS
select distinct
DESIGNATION.ID DESIGNATIONID,
DESIGNATIONLEVEL.NAME LEVEL1NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL2ID) LEVEL2NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL3ID) LEVEL3NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL4ID) LEVEL4NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(DESIGNATION.DESIGNATIONLEVEL5ID) LEVEL5NAME,
DESIGNATIONLEVEL.ID DESIGNATIONLEVEL1ID,
DESIGNATION.DESIGNATIONLEVEL2ID DESIGNATIONLEVEL2ID,
DESIGNATION.DESIGNATIONLEVEL3ID DESIGNATIONLEVEL3ID,
DESIGNATION.DESIGNATIONLEVEL4ID DESIGNATIONLEVEL4ID,
DESIGNATION.DESIGNATIONLEVEL5ID DESIGNATIONLEVEL5ID,
DESIGNATIONLEVELTYPE.DESCRIPTION DESIGNATIONLEVELTYPE,
COALESCE(DL5.DESIGNATIONLEVELCATEGORYCODEID,DL4.DESIGNATIONLEVELCATEGORYCODEID,DL3.DESIGNATIONLEVELCATEGORYCODEID,DL2.DESIGNATIONLEVELCATEGORYCODEID,DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID) LASTCATEGORYCODEID,
COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID,DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID) LASTTYPEID,
dbo.UFN_DESIGNATIONLEVELTYPE_GETDESCRIPTION(COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID,DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID)) LASTTYPE,
RC1.DESCRIPTION REPORTCODE1,
RC2.DESCRIPTION REPORTCODE2,
case when DESIGNATION.DESIGNATIONLEVEL2ID is null then coalesce(DESIGNATIONLEVELGOALBULK.GOALINCURRENCY, 0)
else coalesce(DESIGNATIONGOALBULK.GOALINCURRENCY, 0) end DESIGNATIONGOAL,
ISNULL(DESIGNATIONLEVELGOALBULK.GOALINCURRENCY, 0) OVERALLGOAL,
DESIGNATIONLEVELGOAL.NAME GOALNAME,
DESIGNATIONLEVELGOAL.STARTDATE STARTDATE,
DESIGNATIONLEVELGOAL.ENDDATE ENDDATE,
ISNULL(CONVERT(nvarchar(10), DESIGNATIONLEVELGOAL.STARTDATE, 101) + ' to ' + CONVERT(nvarchar(10), DESIGNATIONLEVELGOAL.ENDDATE, 101), '') DATERANGE,
(NEWCOMMITMENT.TOTALNEWCOMMITMENT - NEWCOMMITMENT.TOTALWRITEOFFS) TOTALEXPECTED,
RECEIVED.TOTALRECEIVED TOTALRECEIVED,
REVCOUNTS.NUMGIFTS TOTALGIFTS,
REVCOUNTS.NUMDONORS TOTALDONORS,
APPEALSGROUP.APPEALNAME,
coalesce(APPEALRECEIVED_CTE.RECEIVED, 0) as APPEALRECEIVED,
coalesce(APPEALNEWCOMMITMENT_CTE.NEWCOMMITMENT, 0) as APPEALEXPECTED,
coalesce(APPEALCOUNTS_CTE.NUMGIFTS, 0) as APPEALNUMGIFTS,
coalesce(APPEALCOUNTS_CTE.NUMDONORS, 0) as APPEALNUMDONORS,
coalesce(APPEALCOUNTS_CTE.MAXGIFT, 0) as APPEALMAXGIFT,
coalesce(APPEALPLANNEDGIFTREVENUE_CTE.PLANNEDGIFT, 0) as APPEALPLANNEDGIFT,
coalesce(PLANNEDGIFT.TOTALPLANNEDGIFT, 0) TOTALPLANNEDGIFT,
@CURRENCYID as APPEALCURRENCYID,
@CURRENCYISO as APPEALCURRENCYISO,
@CURRENCYDECIMALDIGITS as APPEALCURRENCYDECIMALDIGITS,
@CURRENCYSYMBOL as APPEALCURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE as APPEALCURRENCYSYMBOLDISPLAYSETTINGCODE,
@CURRENCYID as DESIGNATIONCURRENCYID,
@CURRENCYISO as DESIGNATIONCURRENCYISO,
@CURRENCYDECIMALDIGITS as DESIGNATIONCURRENCYDECIMALDIGITS,
@CURRENCYSYMBOL as DESIGNATIONCURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE as DESIGNATIONCURRENCYSYMBOLDISPLAYSETTINGCODE,
DESIGNATION.ISACTIVE
from APPEALS_CTE cross join
dbo.DESIGNATIONLEVEL
inner join dbo.DESIGNATIONLEVELTYPE on DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = DESIGNATIONLEVELTYPE.ID
inner join dbo.DESIGNATION on DESIGNATIONLEVEL.ID = DESIGNATION.DESIGNATIONLEVEL1ID
left join dbo.DESIGNATIONLEVELGOAL on DESIGNATIONLEVEL.ID = DESIGNATIONLEVELGOAL.DESIGNATIONLEVELID
left join dbo.UFN_DESIGNATIONLEVELGOAL_GETGOALINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @ROUNDINGTYPECODE) DESIGNATIONLEVELGOALBULK on DESIGNATIONLEVELGOAL.ID = DESIGNATIONLEVELGOALBULK.ID
left join dbo.DESIGNATIONGOAL on DESIGNATIONLEVELGOAL.ID = DESIGNATIONGOAL.DESIGNATIONLEVELGOALID and DESIGNATION.ID = DESIGNATIONGOAL.DESIGNATIONID
left join dbo.UFN_DESIGNATIONGOAL_GETGOALINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @ROUNDINGTYPECODE) DESIGNATIONGOALBULK on DESIGNATIONGOAL.ID = DESIGNATIONGOALBULK.ID
left join dbo.DESIGNATIONREPORT1CODE as RC1 on DESIGNATION.DESIGNATIONREPORT1CODEID = RC1.ID
left join dbo.DESIGNATIONREPORT2CODE as RC2 on DESIGNATION.DESIGNATIONREPORT2CODEID = RC2.ID
left join dbo.DESIGNATIONLEVEL DL2 on DESIGNATION.DESIGNATIONLEVEL2ID = DL2.ID
left join dbo.DESIGNATIONLEVEL DL3 on DESIGNATION.DESIGNATIONLEVEL3ID = DL3.ID
left join dbo.DESIGNATIONLEVEL DL4 on DESIGNATION.DESIGNATIONLEVEL4ID = DL4.ID
left join dbo.DESIGNATIONLEVEL DL5 on DESIGNATION.DESIGNATIONLEVEL5ID = DL5.ID
left join dbo.UFN_DESIGNATION_REVENUECOUNTS(@STARTDATE,@ENDDATE) REVCOUNTS on DESIGNATION.ID = REVCOUNTS.DESIGNATIONID
outer apply dbo.UFN_DESIGNATION_REVENUERECEIVEDINCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID,DESIGNATION.ID) RECEIVED
outer apply dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEINCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID,DESIGNATION.ID) NEWCOMMITMENT
outer apply dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEINCURRENCY(@STARTDATE,@ENDDATE,@CURRENCYID,DESIGNATION.ID) PLANNEDGIFT
left join APPEALRECEIVED_CTE on DESIGNATION.ID = APPEALRECEIVED_CTE.DESID and APPEALS_CTE.APPEALID = APPEALRECEIVED_CTE.APPEALID
left join APPEALNEWCOMMITMENT_CTE on DESIGNATION.ID = APPEALNEWCOMMITMENT_CTE.DESID and APPEALS_CTE.APPEALID = APPEALNEWCOMMITMENT_CTE.APPEALID
left join APPEALPLANNEDGIFTREVENUE_CTE on DESIGNATION.ID = APPEALPLANNEDGIFTREVENUE_CTE.DESID and APPEALS_CTE.APPEALID = APPEALPLANNEDGIFTREVENUE_CTE.APPEALID
left join APPEALCOUNTS_CTE on DESIGNATION.ID = APPEALCOUNTS_CTE.DESIGNATIONID and APPEALS_CTE.APPEALID = APPEALCOUNTS_CTE.APPEALID
left join APPEALS_CTE APPEALSGROUP on APPEALSGROUP.APPEALID = coalesce(APPEALRECEIVED_CTE.APPEALID, APPEALNEWCOMMITMENT_CTE.APPEALID, APPEALPLANNEDGIFTREVENUE_CTE.APPEALID)
where (DESIGNATIONLEVEL.ID = @DESIGNATIONLEVELID)
and (DESIGNATIONLEVELGOAL.ID = @GOALID or @GOALID is null)
and (RC1.ID = @REPORTCODE1ID or @REPORTCODE1ID is null) and
(RC2.ID = @REPORTCODE2ID or @REPORTCODE2ID is null);
end
return;
end