UFN_MEMBER_NUMBEROFMEMBERSALLOWED
Return
Return Type |
---|
int |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_MEMBER_NUMBEROFMEMBERSALLOWED
(
@MEMBERSHIPID uniqueidentifier
)
returns int
with execute as caller
as begin
declare @MEMBERSALLOWED smallint
declare @ADDITIONALMEMBERSALLOWED smallint
declare @CURRENTDATE date = getdate()
declare @LATESTMEMBERSHIPTRANSACTIONID uniqueidentifier
select top 1
@LATESTMEMBERSHIPTRANSACTIONID = ID
from
dbo.MEMBERSHIPTRANSACTION
where
MEMBERSHIPID = @MEMBERSHIPID
and ACTIONCODE != 4 --Don't get transactions associated with cancelling
order by TRANSACTIONDATE desc, DATEADDED desc
select @MEMBERSALLOWED = ML.MEMBERSALLOWED
from dbo.MEMBERSHIP M
inner join dbo.MEMBERSHIPLEVEL ML on ML.ID = M.MEMBERSHIPLEVELID
where M.ID = @MEMBERSHIPID
--check for additional member add-ons
;with ADDONINFO as
(
select
sum(MEMBERSHIPADDON.QUANTITY - MEMBERSHIPADDON.NUMCANCELLED) as QUANTITY
from dbo.MEMBERSHIPADDON
inner join dbo.MEMBERSHIP
on MEMBERSHIPADDON.MEMBERSHIPID = MEMBERSHIP.ID
inner join dbo.ADDON
on MEMBERSHIPADDON.ADDONID = ADDON.ID
where MEMBERSHIPADDON.MEMBERSHIPID = @MEMBERSHIPID
and ADDON.ADDONTYPECODE = 1
and (MEMBERSHIPADDON.EXPIRATIONDATE >= convert(date, coalesce(MEMBERSHIP.LASTRENEWEDON,MEMBERSHIP.JOINDATE)) or MEMBERSHIPADDON.EXPIRATIONDATE is null)
and (MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID = @LATESTMEMBERSHIPTRANSACTIONID or @LATESTMEMBERSHIPTRANSACTIONID is null or MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID is null)
group by MEMBERSHIPADDON.ID
)
select
@ADDITIONALMEMBERSALLOWED = sum(ADDONINFO.QUANTITY)
from ADDONINFO
if @ADDITIONALMEMBERSALLOWED is not null
set @MEMBERSALLOWED = @MEMBERSALLOWED + @ADDITIONALMEMBERSALLOWED;
return @MEMBERSALLOWED
end