USP_DATALIST_BATCHREVENUEAPPLICATIONMEMBERSHIP
Displays a list of memberships for a constituent in a revenue batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_BATCHREVENUEAPPLICATIONMEMBERSHIP
(
@CONSTITUENTID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
declare @HOUSEHOLDSCANBEDONORS bit;
set @HOUSEHOLDSCANBEDONORS = dbo.UFN_INSTALLATIONINFO_GETHOUSEHOLDSCANBEDONORS();
declare @HOUSEHOLDID uniqueidentifier;
select top(1) @HOUSEHOLDID = GM.GROUPID
from dbo.GROUPMEMBER as GM
left outer join dbo.GROUPDATA as GD on GD.ID = GM.GROUPID
where GM.MEMBERID = @CONSTITUENTID
and GD.GROUPTYPECODE = 0
and dbo.UFN_GROUPMEMBER_ISCURRENTMEMBER(GM.ID) = 1
and @HOUSEHOLDSCANBEDONORS = 1;
-- include (1) the constituent, (2) the household a constituent is a member of, (3) members of that household, (4) members of the constituent if it is a household
with CONSTITUENTCTE as
(
select
@HOUSEHOLDID as ID
union
select
case when dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1 then
(case when @HOUSEHOLDSCANBEDONORS = 1 then @CONSTITUENTID else null end)
else @CONSTITUENTID
end
union
select
GM.MEMBERID
from
dbo.GROUPMEMBER GM
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
where
GM.GROUPID = @HOUSEHOLDID
or
GM.GROUPID = @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))
)
select --only pull primary members, due for renewal
MEMBERSHIP.ID,
CONSTITUENT.ID,
CONSTITUENT.NAME,
0,
MEMBERSHIPLEVELTERM.AMOUNT,
MEMBERSHIPLEVELTERM.AMOUNT,
MEMBERSHIP.EXPIRATIONDATE,
5, --Membership
dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID),
case when CONSTITUENT.ID = @CONSTITUENTID then 1 else 0 end
from dbo.MEMBERSHIP
inner join dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
inner join CONSTITUENTCTE C on C.ID = MEMBER.CONSTITUENTID
inner join dbo.CONSTITUENT on MEMBER.CONSTITUENTID = CONSTITUENT.ID
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
where MEMBER.ISPRIMARY = 1
--and ((MEMBERSHIP.STATUSCODE = 0
--and @CURRENTDATE >= dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALBEFOREEXPIRATIONDATE(MEMBERSHIP.MEMBERSHIPLEVELID, MEMBERSHIP.EXPIRATIONDATE)
--and @CURRENTDATE <= dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALAFTEREXPIRATIONDATE(MEMBERSHIP.MEMBERSHIPLEVELID, MEMBERSHIP.EXPIRATIONDATE))
--or (MEMBERSHIP.STATUSCODE = 0 and MEMBERSHIP.EXPIRATIONDATE < @CURRENTDATE)
-- or (MEMBERSHIP.STATUSCODE = 2 or MEMBERSHIP.STATUSCODE = 1))
--and MEMBER.ISDROPPED = 0
union all
select
MEMBERSHIP.ID,
CONSTITUENT.ID,
CONSTITUENT.NAME,
0,
MEMBERSHIPLEVELTERM.AMOUNT,
MEMBERSHIPLEVELTERM.AMOUNT,
MEMBERSHIP.EXPIRATIONDATE,
5, --Membership
dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID),
case when CONSTITUENT.ID = @CONSTITUENTID then 1 else 0 end
from dbo.MEMBERSHIP
inner join dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
inner join CONSTITUENTCTE C on C.ID = MEMBERSHIP.GIVENBYID
inner join dbo.CONSTITUENT on MEMBERSHIP.GIVENBYID = CONSTITUENT.ID
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
where MEMBERSHIP.SENDRENEWALCODE <> 1
--((MEMBERSHIP.STATUSCODE = 0
-- and @CURRENTDATE >= dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALBEFOREEXPIRATIONDATE(MEMBERSHIP.MEMBERSHIPLEVELID, MEMBERSHIP.EXPIRATIONDATE)
-- and @CURRENTDATE <= dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALAFTEREXPIRATIONDATE(MEMBERSHIP.MEMBERSHIPLEVELID, MEMBERSHIP.EXPIRATIONDATE))
-- or (MEMBERSHIP.STATUSCODE = 0 and MEMBERSHIP.EXPIRATIONDATE < @CURRENTDATE)
-- or (MEMBERSHIP.STATUSCODE = 2 or MEMBERSHIP.STATUSCODE = 1))
-- and MEMBERSHIP.SENDRENEWALCODE <> 1
union all
select
O.ID,
C.ID,
C.NAME,
0,
O.AMOUNT - dbo.UFN_OPPORTUNITY_GETAMOUNTPAID(O.ID),
null, -- amount due
null, -- date due
100, -- arbitrary application type code for opportunities, resolved in USP_REVENUE_APPLYTOREVENUESTREAMS
dbo.UFN_OPPORTUNITY_GETDESCRIPTION(O.ID),
case when C.ID = @CONSTITUENTID then 1 else 0 end
from
dbo.OPPORTUNITY O
inner join
dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
inner join
CONSTITUENTCTE on CONSTITUENTCTE.ID = PP.PROSPECTID
-- CR298118-041508 Only include opportunities which have designations associated with them so that
-- when we go to fill in a payment for them we have something to apply them to.
inner join
dbo.OPPORTUNITYDESIGNATION on OPPORTUNITYDESIGNATION.OPPORTUNITYID = O.ID
left outer join
dbo.CONSTITUENT C on C.ID = PP.PROSPECTID
; --Obligatory semi-colon