UFN_QUERY_RECOGNITIONPROGRAMMEMBERS
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECOGNITIONPROGRAMID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_QUERY_RECOGNITIONPROGRAMMEMBERS
(
@RECOGNITIONPROGRAMID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null
)
returns @RETURN table
(
CONSTITUENTID uniqueidentifier,
CONSTITUENTRECOGNITIONID uniqueidentifier,
CONSTITUENTNAME nvarchar(154),
NICKNAME nvarchar(50),
LOOKUPID nvarchar(100),
TYPECODE tinyint,
RECOGNITIONLEVEL nvarchar(100),
DATEACHIEVED date,
TOTALAMOUNT money,
AMOUNTTONEXTLEVEL money,
STATUSCODE tinyint,
STATUS nvarchar(100),
GIVESANONYMOUSLY bit,
ISDECEASED bit,
BASECURRENCYID uniqueidentifier
) as
begin
declare @CURRENTDATE datetime = getdate();
with PROGRAMRECOGNITIONS as
(
select
CONSTITUENTID,
case
when max(EXPIRATIONDATE) is null or max(EXPIRATIONDATE) >= @CURRENTDATE then 0
else 1
end [EXPIRED]
from dbo.CONSTITUENTRECOGNITION
where CONSTITUENTRECOGNITION.RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID
group by CONSTITUENTID
),
RECOGNITIONLEVELS as
(
select
CONSTITUENTRECOGNITION.ID,
CONSTITUENTRECOGNITION.JOINDATE,
case
when CONSTITUENTRECOGNITION.EXPIRATIONDATE is null or CONSTITUENTRECOGNITION.EXPIRATIONDATE >= @CURRENTDATE then 0
else 1
end [EXPIRED],
CONSTITUENTRECOGNITION.CONSTITUENTID,
CONSTITUENTRECOGNITION.STATUSCODE,
RECOGNITIONLEVEL.AMOUNT as RECOGNITIONLEVELAMOUNT
from dbo.CONSTITUENTRECOGNITION
inner join dbo.RECOGNITIONLEVEL on RECOGNITIONLEVEL.ID = CONSTITUENTRECOGNITION.RECOGNITIONLEVELID
where CONSTITUENTRECOGNITION.RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID
),
CURRENTRECOGNITIONPROGRAM as
(
select
TOPLEVEL.ID,
PROGRAMRECOGNITIONS.EXPIRED,
PROGRAMRECOGNITIONS.CONSTITUENTID
from PROGRAMRECOGNITIONS
cross apply
(
select top 1 RECOGNITIONLEVELS.ID
from RECOGNITIONLEVELS
where
PROGRAMRECOGNITIONS.CONSTITUENTID = RECOGNITIONLEVELS.CONSTITUENTID and
(
(
PROGRAMRECOGNITIONS.EXPIRED = 0 and
RECOGNITIONLEVELS.EXPIRED = 0
) or
PROGRAMRECOGNITIONS.EXPIRED = 1
)
order by
case STATUSCODE
when 3 then 1 -- List 'Inactive (Merge)' last
else 0
end asc,
RECOGNITIONLEVELS.JOINDATE desc, RECOGNITIONLEVELS.RECOGNITIONLEVELAMOUNT desc
) TOPLEVEL
)
insert into @RETURN
select
CONSTITUENTRECOGNITION.CONSTITUENTID,
CONSTITUENTRECOGNITION.ID as CONSTITUENTRECOGNITIONID,
NF.NAME as CONSTITUENTNAME,
CONSTITUENT.NICKNAME,
CONSTITUENT.LOOKUPID,
RECOGNITIONPROGRAM.TYPECODE,
RECOGNITIONLEVEL.NAME as RECOGNITIONLEVEL,
CONSTITUENTRECOGNITION.JOINDATE as DATEACHIEVED,
CONSTITUENTRECOGNITION.TOTALAMOUNT,
case
when RECOGNITIONLEVEL.AMOUNT <> (select MAX(AMOUNT) from dbo.RECOGNITIONLEVEL where RECOGNITIONPROGRAMID = RECOGNITIONPROGRAM.ID) then
case
-- Planned gift only
when RECOGNITIONPROGRAM.REVENUECODE = 1 then
(
select min(PLANNEDGIFTAMOUNT)
from dbo.RECOGNITIONLEVEL RLN
where
RLN.RECOGNITIONPROGRAMID = CONSTITUENTRECOGNITION.RECOGNITIONPROGRAMID
and RLN.PLANNEDGIFTAMOUNT > CONSTITUENTRECOGNITION.TOTALPLANNEDGIFTAMOUNT
and RLN.ISACTIVE = 1
) - CONSTITUENTRECOGNITION.TOTALPLANNEDGIFTAMOUNT
else
(
select min(AMOUNT)
from dbo.RECOGNITIONLEVEL RLN
where
RLN.RECOGNITIONPROGRAMID = CONSTITUENTRECOGNITION.RECOGNITIONPROGRAMID
and AMOUNT > CONSTITUENTRECOGNITION.TOTALAMOUNT
and RLN.ISACTIVE = 1
) - CONSTITUENTRECOGNITION.TOTALAMOUNT
end
else null
end as AMOUNTTONEXTLEVEL,
CONSTITUENTRECOGNITION.STATUSCODE,
case
when (CONSTITUENTRECOGNITION.STATUSCODE = 0 and CURRENTRECOGNITIONPROGRAM.EXPIRED = 1) then 'Lapsed'
else CONSTITUENTRECOGNITION.STATUS
end as STATUS,
CONSTITUENT.GIVESANONYMOUSLY,
case
when exists (select top 1 ID from dbo.DECEASEDCONSTITUENT where ID = CONSTITUENT.ID) then cast(1 as bit)
else cast(0 as bit)
end as ISDECEASED,
CONSTITUENTRECOGNITION.BASECURRENCYID
from CURRENTRECOGNITIONPROGRAM
inner join dbo.CONSTITUENTRECOGNITION on CONSTITUENTRECOGNITION.ID = CURRENTRECOGNITIONPROGRAM.ID
inner join dbo.CONSTITUENT on CONSTITUENTRECOGNITION.CONSTITUENTID = CONSTITUENT.ID
inner join dbo.RECOGNITIONPROGRAM on CONSTITUENTRECOGNITION.RECOGNITIONPROGRAMID = RECOGNITIONPROGRAM.ID
inner join dbo.RECOGNITIONLEVEL on RECOGNITIONLEVEL.ID = CONSTITUENTRECOGNITION.RECOGNITIONLEVELID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF;
return;
end