USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTRECOGNITION
The load procedure used by the view dataform template "Constituent Recognition View Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@MEMBERSHIPNAME | nvarchar(203) | INOUT | Membership |
@JOINDATE | datetime | INOUT | Join date |
@EXPIRATIONDATE | datetime | INOUT | Expiration date |
@CONSECUTIVEYEARS | tinyint | INOUT | Years consecutive |
@TOTALAMOUNT | money | INOUT | Total recognized |
@TOTALPLANNEDGIFTAMOUNT | money | INOUT | Total planned gifts |
@AMOUNTTONEXTLEVEL | money | INOUT | Amount to next level |
@STATUS | nvarchar(20) | INOUT | Status |
@DATEACHIEVED | datetime | INOUT | Date achieved |
@CONSECUTIVESINCE | smallint | INOUT | Member consecutively since |
@ISANNUAL | bit | INOUT | Is annual |
@ISSEPARATEPLANNEDGIFTAMOUNT | bit | INOUT | Is separate planned gift amount |
@PLANNEDAMOUNTTONEXTLEVEL | money | INOUT | Amount to next level |
@SITENAME | nvarchar(250) | INOUT | Site |
@BASECURRENCYID | uniqueidentifier | INOUT | Base currency |
@DECLINEDRECOGNITIONLEVELS | nvarchar(150) | INOUT | Declined levels |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTRECOGNITION
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@MEMBERSHIPNAME nvarchar(203) = null output,
@JOINDATE datetime = null output,
@EXPIRATIONDATE datetime = null output,
@CONSECUTIVEYEARS tinyint = null output,
@TOTALAMOUNT money = null output,
@TOTALPLANNEDGIFTAMOUNT money = null output,
@AMOUNTTONEXTLEVEL money = null output,
@STATUS nvarchar(20) = null output,
@DATEACHIEVED datetime = null output,
@CONSECUTIVESINCE smallint = null output,
@ISANNUAL bit = null output,
@ISSEPARATEPLANNEDGIFTAMOUNT bit = null output,
@PLANNEDAMOUNTTONEXTLEVEL money = null output,
@SITENAME nvarchar(250) = null output,
@BASECURRENCYID uniqueidentifier = null output,
@DECLINEDRECOGNITIONLEVELS nvarchar(150) = null output
)
as
set nocount on;
set @DATALOADED = 0;
declare @TODAY datetime;
set @TODAY = getdate();
with PROGRAM_NOW as
(
select
ID,
JOINDATE,
EXPIRATIONDATE,
RECOGNITIONPROGRAMID,
CONSTITUENTID,
cast(1 as bigint) as ROWNUMBER
from dbo.CONSTITUENTRECOGNITION
where ID = @ID
union all
select
C.ID,
C.JOINDATE,
C.EXPIRATIONDATE,
C.RECOGNITIONPROGRAMID,
C.CONSTITUENTID,
ROW_NUMBER() over (partition by C.RECOGNITIONPROGRAMID order by C.EXPIRATIONDATE desc) as ROWNUMBER
from dbo.CONSTITUENTRECOGNITION C
inner join PROGRAM_NOW P on C.RECOGNITIONPROGRAMID = P.RECOGNITIONPROGRAMID
and C.CONSTITUENTID = P.CONSTITUENTID
and P.ID <> C.ID
and C.EXPIRATIONDATE BETWEEN dateadd(yyyy, -1, P.EXPIRATIONDATE) and DATEADD(dd,-1,P.EXPIRATIONDATE)
)
select
@CONSECUTIVEYEARS = count(distinct EXPIRATIONDATE),
@CONSECUTIVESINCE = datepart(yyyy, min(JOINDATE))
from PROGRAM_NOW
where ROWNUMBER = 1;
declare @CONSTITUENTID uniqueidentifier = null;
declare @RECOGNITIONPROGRAMID uniqueidentifier = null;
select
@CONSTITUENTID = CONSTITUENTID,
@RECOGNITIONPROGRAMID = RECOGNITIONPROGRAMID
from dbo.CONSTITUENTRECOGNITION
where ID = @ID;
select
@JOINDATE = min(JOINDATE)
from dbo.CONSTITUENTRECOGNITION
where
RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID and
CONSTITUENTID = @CONSTITUENTID;
with DECLINED_LEVELS as
(
select
RL.ID,
RL.NAME
from dbo.CONSTITUENTRECOGNITIONDECLINEDLEVEL CRDL
inner join dbo.RECOGNITIONLEVEL RL on RL.ID = CRDL.RECOGNITIONLEVELID
where
CRDL.RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID and
CRDL.CONSTITUENTID = @CONSTITUENTID
)
select
@DATALOADED = 1,
@MEMBERSHIPNAME = RP.NAME + ' - ' + RL.NAME,
@EXPIRATIONDATE = CR.EXPIRATIONDATE,
@TOTALAMOUNT = CR.TOTALAMOUNT,
@TOTALPLANNEDGIFTAMOUNT = CR.TOTALPLANNEDGIFTAMOUNT,
@AMOUNTTONEXTLEVEL =
case when RL.AMOUNT <> (select MAX(AMOUNT) from dbo.RECOGNITIONLEVEL where RECOGNITIONPROGRAMID = RP.ID)
then
(
select min(AMOUNT)
from dbo.RECOGNITIONLEVEL RLN
where
RLN.RECOGNITIONPROGRAMID = CR.RECOGNITIONPROGRAMID and
AMOUNT > CR.TOTALAMOUNT and
RLN.ID not in (select ID from DECLINED_LEVELS)
) - CR.TOTALAMOUNT
else null end,
@PLANNEDAMOUNTTONEXTLEVEL =
(
select min(PLANNEDGIFTAMOUNT)
from dbo.RECOGNITIONLEVEL RLN
where
RLN.RECOGNITIONPROGRAMID = CR.RECOGNITIONPROGRAMID and
PLANNEDGIFTAMOUNT > CR.TOTALPLANNEDGIFTAMOUNT and
RLN.ID not in (select ID from DECLINED_LEVELS)
) - CR.TOTALPLANNEDGIFTAMOUNT,
@STATUS =
case
when (CR.STATUSCODE = 0 and CR.EXPIRATIONDATE < @TODAY) then 'Lapsed'
else CR.STATUS
end,
@DATEACHIEVED = CR.JOINDATE,
@ISANNUAL = case when RP.TYPECODE = 0 then 1 else 0 end,
@ISSEPARATEPLANNEDGIFTAMOUNT = case when RP.PLANNEDGIFTCODE = 2 then 1 else 0 end,
@SITENAME = SITE.NAME,
@BASECURRENCYID = CR.BASECURRENCYID,
@DECLINEDRECOGNITIONLEVELS = (select dbo.UDA_BUILDLISTWITHDELIMITER(NAME,',') from DECLINED_LEVELS)
from dbo.CONSTITUENTRECOGNITION CR
inner join dbo.RECOGNITIONPROGRAM RP on CR.RECOGNITIONPROGRAMID = RP.ID
inner join dbo.RECOGNITIONLEVEL RL on CR.RECOGNITIONLEVELID = RL.ID
left join dbo.SITE on RP.SITEID = SITE.ID
where CR.ID = @ID;
return 0;