USP_SIMPLEDATALIST_PLANNEDGIFTBENEFICIARYCANDIDATE
Returns a list of candidates for beneficiary of a planned gift.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Constituent |
Definition
Copy
CREATE procedure USP_SIMPLEDATALIST_PLANNEDGIFTBENEFICIARYCANDIDATE
(
@CONSTITUENTID uniqueidentifier
)
as
set nocount on;
-- Create a table variable to hold the beneficiaries. This is used rather than
-- a union to prevent the same constituent from being returned multiple times.
declare @BENEFICIARIES table
(
CONSTITUENTID uniqueidentifier,
DESCRIPTION nvarchar(100),
ISDONOR bit,
PRIMARYCONSTITUENT bit,
KEYNAME nvarchar(100),
FIRSTNAME nvarchar(100)
);
declare @CURRENTDATE datetime;
set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
-- the record if it's a household, or the household an individual belongs to
declare @HOUSEHOLDID uniqueidentifier;
if dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1
set @HOUSEHOLDID = @CONSTITUENTID;
else
select
@HOUSEHOLDID = GM.GROUPID
from
dbo.GROUPMEMBER GM
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
left outer join
dbo.GROUPDATA GD on GD.ID = GM.GROUPID
where
GM.MEMBERID = @CONSTITUENTID
and
GD.GROUPTYPECODE = 0
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE))
or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE));
-- group members
insert into @BENEFICIARIES (CONSTITUENTID, DESCRIPTION, PRIMARYCONSTITUENT, KEYNAME, FIRSTNAME, ISDONOR)
select
C.ID,
case
when GM.ISPRIMARY = 1 then NF.NAME + ' - Member (Primary contact)'
else NF.NAME + ' - Member'
end,
GM.ISPRIMARY,
C.KEYNAME,
C.FIRSTNAME,
0
from
dbo.GROUPMEMBER GM
inner join
dbo.CONSTITUENT C on GM.MEMBERID = C.ID
left join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
where
GM.GROUPID = @HOUSEHOLDID
and
GM.MEMBERID <> @CONSTITUENTID
and
((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE))
or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE));
-- relationships for all
insert into @BENEFICIARIES (CONSTITUENTID, DESCRIPTION, PRIMARYCONSTITUENT, KEYNAME, FIRSTNAME, ISDONOR)
select
C.ID,
(NF.NAME + ' - ' + (select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID=R.RECIPROCALTYPECODEID)),
ISPRIMARYCONTACT,
C.KEYNAME,
C.FIRSTNAME,
0
from
dbo.RELATIONSHIP R
inner join
dbo.CONSTITUENT C on R.RECIPROCALCONSTITUENTID = C.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
where
R.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
not exists (select top(1) 1 from @BENEFICIARIES where CONSTITUENTID = C.ID)
-- donor, if not a household
declare @ISHOUSEHOLD bit;
set @ISHOUSEHOLD = 0;
select @ISHOUSEHOLD = case when GROUPTYPECODE = 0 then '1' else '0' end from dbo.GROUPDATA where GROUPDATA.ID = @CONSTITUENTID;
insert into @BENEFICIARIES (CONSTITUENTID, DESCRIPTION, PRIMARYCONSTITUENT, KEYNAME, FIRSTNAME, ISDONOR)
select
C.ID,
NF.NAME + ' - Donor',
0,
C.KEYNAME,
C.FIRSTNAME,
1
from
dbo.CONSTITUENT C
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
where
@ISHOUSEHOLD = 0
and
C.ID = @CONSTITUENTID
select
CONSTITUENTID as 'VALUE',
DESCRIPTION as 'LABEL'
from
@BENEFICIARIES
order by
ISDONOR desc,
PRIMARYCONSTITUENT desc,
KEYNAME,
FIRSTNAME