USP_SIMPLEDATALIST_MEMBERSHIP_MIDTERMUPGRADELEVELS
Given a membership, lists all eligible mid-term upgrades for that membership and their prices.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPID | uniqueidentifier | IN | Membership ID |
Definition
Copy
CREATE procedure dbo.USP_SIMPLEDATALIST_MEMBERSHIP_MIDTERMUPGRADELEVELS
(
@MEMBERSHIPID uniqueidentifier
)
as
declare @CURRENTPROGRAMID uniqueidentifier;
declare @CURRENTTERMLENGTHCODE tinyint;
declare @CURRENTTERMTIMELENGTH tinyint;
declare @CURRENTLEVELSEQUENCE int;
declare @CURRENTMEMBERSALLOWED int;
select
@CURRENTPROGRAMID = MEMBERSHIP.MEMBERSHIPPROGRAMID,
@CURRENTTERMLENGTHCODE = MEMBERSHIPLEVELTERM.TERMLENGTHCODE,
@CURRENTTERMTIMELENGTH = MEMBERSHIPLEVELTERM.TERMTIMELENGTH,
@CURRENTLEVELSEQUENCE = MEMBERSHIPLEVEL.SEQUENCE,
@CURRENTMEMBERSALLOWED = MEMBERSHIPLEVEL.MEMBERSALLOWED
from dbo.MEMBERSHIP
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
where
MEMBERSHIP.ID = @MEMBERSHIPID
select
MEMBERSHIPLEVEL.ID as VALUE,
MEMBERSHIPLEVEL.NAME + ' - $' + convert(nvarchar(20),dbo.UFN_MEMBERSHIP_GETMIDTERMUPGRADEPRICE(@MEMBERSHIPID, MEMBERSHIPLEVEL.ID)) as LABEL
from dbo.MEMBERSHIPLEVEL
where
MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = @CURRENTPROGRAMID and
MEMBERSHIPLEVEL.SEQUENCE > @CURRENTLEVELSEQUENCE and
MEMBERSHIPLEVEL.ISACTIVE = 1 and
MEMBERSHIPLEVEL.MEMBERSALLOWED >= (select count(1)
from dbo.[MEMBER]
where
[MEMBER].[MEMBERSHIPID] = @MEMBERSHIPID
and [MEMBER].[ISDROPPED] = 0
) and
[MEMBERSHIPLEVEL].[CARDSALLOWED] >= (select count(1)
from dbo.[MEMBERSHIPCARD]
inner join dbo.[MEMBER]
on [MEMBERSHIPCARD].[MEMBERID] = [MEMBER].[ID]
where
[MEMBER].[MEMBERSHIPID] = @MEMBERSHIPID and
[MEMBERSHIPCARD].[STATUSCODE] <> 2
) and
exists (select ID from dbo.MEMBERSHIPLEVELTERM
where LEVELID = MEMBERSHIPLEVEL.ID and
TERMLENGTHCODE = @CURRENTTERMLENGTHCODE and
TERMTIMELENGTH = @CURRENTTERMTIMELENGTH and
ISACTIVE = 1)
order by
MEMBERSHIPLEVEL.SEQUENCE asc