UFN_MEMBERSHIPTRANSACTION_DETERMINENEWACTIONCODE
Determines the action code of a membership transaction.
Return
Return Type |
---|
tinyint |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PREVIOUSMEMBERSHIPLEVELID | uniqueidentifier | IN | |
@PREVIOUSEXPIRATIONDATE | datetime | IN | |
@PREVIOUSACTIONCODE | tinyint | IN | |
@MEMBERSHIPLEVELID | uniqueidentifier | IN | |
@TRANSACTIONDATE | datetime | IN |
Definition
Copy
CREATE function dbo.UFN_MEMBERSHIPTRANSACTION_DETERMINENEWACTIONCODE
(
@PREVIOUSMEMBERSHIPLEVELID uniqueidentifier,
@PREVIOUSEXPIRATIONDATE datetime,
@PREVIOUSACTIONCODE tinyint,
@MEMBERSHIPLEVELID uniqueidentifier,
@TRANSACTIONDATE datetime
)
returns tinyint with execute as caller
as
begin
--if there is no transaction before, this is a join
if @PREVIOUSMEMBERSHIPLEVELID is null
return 0;
--if the previous action is dropped, this is a rejoin
if @PREVIOUSACTIONCODE = 4
return 5;
declare @ACTIONCODE tinyint
declare @ENDEXPDATE datetime
set @ENDEXPDATE = dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALAFTEREXPIRATIONDATE_2(@PREVIOUSMEMBERSHIPLEVELID, @PREVIOUSEXPIRATIONDATE, @TRANSACTIONDATE)
--if the membership is past expiration window, this is a rejoin
if @TRANSACTIONDATE > @ENDEXPDATE
begin
return (select case when MEMBERSHIPLEVEL.RENEWALWINDOWREVENUETYPECODE = 1 then 0 else 5 end
from dbo.MEMBERSHIPLEVEL
where MEMBERSHIPLEVEL.ID = @PREVIOUSMEMBERSHIPLEVELID)
end
if @PREVIOUSMEMBERSHIPLEVELID = @MEMBERSHIPLEVELID
set @ACTIONCODE = 1
else
begin
declare @NEWSEQUENCE integer
select @NEWSEQUENCE = SEQUENCE
from dbo.MEMBERSHIPLEVEL
where MEMBERSHIPLEVEL.ID = @MEMBERSHIPLEVELID
declare @LEVELSEQUENCE integer
select @LEVELSEQUENCE = SEQUENCE
from dbo.MEMBERSHIPLEVEL
where @PREVIOUSMEMBERSHIPLEVELID = ID
if @NEWSEQUENCE > @LEVELSEQUENCE
set @ACTIONCODE = 2
else
set @ACTIONCODE = 3
end
return @ACTIONCODE
end