UFN_SMARTQUERY_MEMBERSHIPS
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPPROGRAMID | uniqueidentifier | IN | |
@MEMBERSHIPLEVELID | uniqueidentifier | IN | |
@STATUS | nvarchar(9) | IN | |
@MEMBERSHIPLEVELTYPECODEID | uniqueidentifier | IN | |
@TIERCODEID | uniqueidentifier | IN | |
@CHECKEXPIRATIONDATE | bit | IN | |
@MONTHSTOEXPIRATION | int | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@MAXROWS | int | IN |
Definition
Copy
create function dbo.[UFN_SMARTQUERY_MEMBERSHIPS]
(
@MEMBERSHIPPROGRAMID uniqueidentifier,
@MEMBERSHIPLEVELID uniqueidentifier,
@STATUS nvarchar(9),
@MEMBERSHIPLEVELTYPECODEID uniqueidentifier,
@TIERCODEID uniqueidentifier,
@CHECKEXPIRATIONDATE bit,
@MONTHSTOEXPIRATION int,
@CURRENTAPPUSERID uniqueidentifier = null,
@MAXROWS int
)
returns @MEMBERSHIPS table
(
ID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
MEMBERNAME nvarchar(154),
MEMBERSHIPPROGRAMNAME nvarchar(100),
MEMBERSHIPLEVELNAME nvarchar(100),
EXPIRATIONDATE datetime,
STATUS nvarchar(9),
TYPE nvarchar(50),
TIER nvarchar(100),
TERM nvarchar(50)
)
as
begin
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NO_SITE_ROLE bit;
declare @TODAY datetime;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NO_SITE_ROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);
set @TODAY = getdate();
insert into @MEMBERSHIPS
select top (@MAXROWS)
[MEMBERSHIP].[ID],
[MEMBER].[CONSTITUENTID],
[CONSTITUENT].[NAME] [MEMBERNAME],
[MEMBERSHIPPROGRAM].[NAME] [MEMBERSHIPPROGRAMNAME],
[MEMBERSHIPLEVEL].[NAME] [MEMBERSHIPLEVELNAME],
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
cast([MEMBERSHIP].[EXPIRATIONDATE] as date) as EXPIRATIONDATE,
MEMBERSHIP.STATUS [STATUS],
[MEMBERSHIPLEVELTYPECODE].[DESCRIPTION] [TYPE],
[TIERCODE].[DESCRIPTION] [TIER],
cast (dbo.UFN_MEMBERSHIPLEVELTERMS_PAYMENTOPTIONDESCRIPTION([MEMBERSHIPLEVELTERM].[ID]) as nvarchar(50)) [TERM]
from
dbo.[MEMBERSHIP]
inner join dbo.[MEMBER] on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID] and [MEMBER].[ISDROPPED] = 0
left join dbo.[CONSTITUENT] on [CONSTITUENT].[ID] = [MEMBER].[CONSTITUENTID]
left join dbo.[MEMBERSHIPPROGRAM] on [MEMBERSHIPPROGRAM].[ID] = [MEMBERSHIP].[MEMBERSHIPPROGRAMID]
left join dbo.[MEMBERSHIPLEVEL] on [MEMBERSHIPLEVEL].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELID]
left join dbo.[MEMBERSHIPLEVELTYPECODE] on [MEMBERSHIPLEVELTYPECODE].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID]
left join dbo.[TIERCODE] on [TIERCODE].[ID] = [MEMBERSHIPLEVEL].[TIERCODEID]
left join dbo.[MEMBERSHIPLEVELTERM] on [MEMBERSHIPLEVELTERM].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELTERMID]
where
(@MEMBERSHIPPROGRAMID is null or [MEMBERSHIP].[MEMBERSHIPPROGRAMID] = @MEMBERSHIPPROGRAMID) and
(
@ISADMIN = 1 or @APPUSER_IN_NONSITEROLE = 1 or (
(MEMBERSHIPPROGRAM.SITEID is null and @APPUSER_IN_NO_SITE_ROLE = 1) or
MEMBERSHIPPROGRAM.SITEID in (select SITEID from dbo.UFN_SITESFORUSER(@CURRENTAPPUSERID))
)
) and
(@MEMBERSHIPLEVELID is null or [MEMBERSHIP].[MEMBERSHIPLEVELID] = @MEMBERSHIPLEVELID) and
MEMBER.ISDROPPED = 0 and
(@STATUS is null or @STATUS in (dbo.[UFN_MEMBERSHIPSTATUS_GETVALUE]([MEMBERSHIP].[ID]))) and
(@MEMBERSHIPLEVELTYPECODEID is null or [MEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID] = @MEMBERSHIPLEVELTYPECODEID) and
(@TIERCODEID is null or ([MEMBERSHIP].[MEMBERSHIPLEVELID] in
(
select
[MEMBERSHIPLEVEL].[ID]
from
dbo.[MEMBERSHIP]
inner join dbo.[MEMBERSHIPLEVEL] on [MEMBERSHIP].[MEMBERSHIPLEVELID] = [MEMBERSHIPLEVEL].[ID]
where
[MEMBERSHIPLEVEL].[TIERCODEID] = @TIERCODEID
))) and
(@ISADMIN = 1 or @APPUSER_IN_NONRACROLE = 1 or dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, MEMBER.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1)
-- LeeCh, 12/31/2009
and (
@CHECKEXPIRATIONDATE = 0 or (
@CHECKEXPIRATIONDATE = 1 and (
datediff(m, getdate(), [MEMBERSHIP].[EXPIRATIONDATE]) = @MONTHSTOEXPIRATION
)
)
)
order by MEMBERNAME, MEMBERSHIPPROGRAMNAME;
return;
end;