UFN_DESIGNATION_GETPROGRESS
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 |
Definition
Copy
CREATE function dbo.UFN_DESIGNATION_GETPROGRESS
(
@DESIGNATIONLEVELID uniqueidentifier,
@GOALID uniqueidentifier,
@REPORTCODE1ID uniqueidentifier = null,
@REPORTCODE2ID uniqueidentifier = null,
@ROLLUPTOTALS bit = 0,
@GROUPBY tinyint = 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
)
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;
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_RAISEDBYAPPEAL(@STARTDATE,@ENDDATE) 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,
ANC.DESID,
sum(ANC.DESTOTALNEWCOMMITMENT) - sum(ANC.DESNEWCOMMITMENTWRITTENOFF) as NEWCOMMITMENT
from dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEBYAPPEAL(@STARTDATE,@ENDDATE) ANC
inner join dbo.APPEAL on ANC.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by ANC.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,
APG.DESID,
sum(APG.DESTOTALPLANNEDGIFT) as PLANNEDGIFT
from dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEBYAPPEAL(@STARTDATE,@ENDDATE) APG
inner join dbo.APPEAL on APG.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by APG.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,
AC.DESIGNATIONID,
sum(AC.NUMDONORS) AS NUMDONORS,
SUM(AC.NUMGIFTS) AS NUMGIFTS,
MAX(AC.MAXGIFT) AS MAXGIFT
from dbo.UFN_DESIGNATION_REVENUECOUNTSBYAPPEAL(@STARTDATE,@ENDDATE) AC
inner join dbo.APPEAL on AC.APPEALID = APPEAL.ID
left join dbo.APPEALBUSINESSUNIT ABU on ABU.APPEALID = APPEAL.ID
group by AC.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 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
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
D.ID DESIGNATIONID,
DL.NAME LEVEL1NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(D.DESIGNATIONLEVEL2ID) LEVEL2NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(D.DESIGNATIONLEVEL3ID) LEVEL3NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(D.DESIGNATIONLEVEL4ID) LEVEL4NAME,
dbo.UFN_DESIGNATIONLEVEL_GETNAME(D.DESIGNATIONLEVEL5ID) LEVEL5NAME,
DL.ID DESIGNATIONLEVEL1ID,
D.DESIGNATIONLEVEL2ID DESIGNATIONLEVEL2ID,
D.DESIGNATIONLEVEL3ID DESIGNATIONLEVEL3ID,
D.DESIGNATIONLEVEL4ID DESIGNATIONLEVEL4ID,
D.DESIGNATIONLEVEL5ID DESIGNATIONLEVEL5ID,
FPT.DESCRIPTION DESIGNATIONLEVELTYPE,
COALESCE(DL5.DESIGNATIONLEVELCATEGORYCODEID,DL4.DESIGNATIONLEVELCATEGORYCODEID,DL3.DESIGNATIONLEVELCATEGORYCODEID,DL2.DESIGNATIONLEVELCATEGORYCODEID,DL.DESIGNATIONLEVELCATEGORYCODEID) LASTCATEGORYCODEID,
COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID,DL.DESIGNATIONLEVELTYPEID) LASTTYPEID,
dbo.UFN_DESIGNATIONLEVELTYPE_GETDESCRIPTION(COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID,DL.DESIGNATIONLEVELTYPEID)) LASTTYPE,
RC1.DESCRIPTION REPORTCODE1,
RC2.DESCRIPTION REPORTCODE2,
case when D.DESIGNATIONLEVEL2ID is null then coalesce(DLG.GOAL, 0)
else coalesce(DG.GOAL, 0) end DESIGNATIONGOAL,
ISNULL(DLG.GOAL, 0) OVERALLGOAL,
DLG.NAME GOALNAME,
DLG.STARTDATE STARTDATE,
DLG.ENDDATE ENDDATE,
ISNULL(CONVERT(nvarchar(10), DLG.STARTDATE, 101) + ' to ' + CONVERT(nvarchar(10), DLG.ENDDATE, 101), '') DATERANGE,
(NEWCOMMITMENT.TOTALNEWCOMMITMENT - NEWCOMMITMENT.TOTALWRITEOFFS) TOTALEXPECTED,
RECEIVED.TOTALRECEIVED TOTALRECEIVED,
REVCOUNTS.NUMGIFTS TOTALGIFTS,
REVCOUNTS.NUMDONORS TOTALDONORS,
A.APPEALNAME,
coalesce(AREC.RECEIVED, 0) as APPEALRECEIVED,
coalesce(ANC.NEWCOMMITMENT, 0) as APPEALEXPECTED,
coalesce(AC.NUMGIFTS, 0) as APPEALNUMGIFTS,
coalesce(AC.NUMDONORS, 0) as APPEALNUMDONORS,
coalesce(AC.MAXGIFT, 0) as APPEALMAXGIFT,
coalesce(APG.PLANNEDGIFT, 0) as APPEALPLANNEDGIFT,
coalesce(PLANNEDGIFT.TOTALPLANNEDGIFT, 0) TOTALPLANNEDGIFT
from APPEALS_CTE APPEALS cross join
dbo.DESIGNATIONLEVEL DL
inner join dbo.DESIGNATIONLEVELTYPE FPT on DL.DESIGNATIONLEVELTYPEID = FPT.ID
inner join dbo.DESIGNATION D on DL.ID = D.DESIGNATIONLEVEL1ID
left join dbo.DESIGNATIONLEVELGOAL as DLG on DL.ID = DLG.DESIGNATIONLEVELID
left join dbo.DESIGNATIONGOAL as DG on DLG.ID = DG.DESIGNATIONLEVELGOALID and D.ID = DG.DESIGNATIONID
left join dbo.DESIGNATIONREPORT1CODE as RC1 on D.DESIGNATIONREPORT1CODEID = RC1.ID
left join dbo.DESIGNATIONREPORT2CODE as RC2 on D.DESIGNATIONREPORT2CODEID = RC2.ID
left join dbo.DESIGNATIONLEVEL DL2 on D.DESIGNATIONLEVEL2ID = DL2.ID
left join dbo.DESIGNATIONLEVEL DL3 on D.DESIGNATIONLEVEL3ID = DL3.ID
left join dbo.DESIGNATIONLEVEL DL4 on D.DESIGNATIONLEVEL4ID = DL4.ID
left join dbo.DESIGNATIONLEVEL DL5 on D.DESIGNATIONLEVEL5ID = DL5.ID
left join dbo.UFN_DESIGNATION_REVENUECOUNTS(@STARTDATE,@ENDDATE) REVCOUNTS on D.ID = REVCOUNTS.DESIGNATIONID
left join dbo.UFN_DESIGNATION_REVENUERECEIVED(@STARTDATE,@ENDDATE) RECEIVED on D.ID = RECEIVED.DESIGNATIONID
left join dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUE(@STARTDATE,@ENDDATE) NEWCOMMITMENT on D.ID = NEWCOMMITMENT.DESIGNATIONID
left join dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUE(@STARTDATE,@ENDDATE) PLANNEDGIFT on D.ID = PLANNEDGIFT.DESIGNATIONID
left join APPEALRECEIVED_CTE AREC on D.ID = AREC.DESID and APPEALS.APPEALID = AREC.APPEALID
left join APPEALNEWCOMMITMENT_CTE ANC on D.ID = ANC.DESID and APPEALS.APPEALID = ANC.APPEALID
left join APPEALPLANNEDGIFTREVENUE_CTE APG on D.ID = APG.DESID and APPEALS.APPEALID = APG.APPEALID
left join APPEALCOUNTS_CTE AC on D.ID = AC.DESIGNATIONID and APPEALS.APPEALID = AC.APPEALID
left join APPEALS_CTE A on A.APPEALID = coalesce(AREC.APPEALID, ANC.APPEALID, APG.APPEALID)
where (DL.ID = @DESIGNATIONLEVELID)
and (DLG.ID = @GOALID or @GOALID is null)
and (RC1.ID = @REPORTCODE1ID or @REPORTCODE1ID is null) and
(RC2.ID = @REPORTCODE2ID or @REPORTCODE2ID is null);
return
end