USP_DATAFORMTEMPLATE_ADD_MEMBERSHIPREJOIN
The save procedure used by the add dataform template "Membership Rejoin Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CURRENTCONSTITUENTID | uniqueidentifier | IN | |
@MEMBERID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@MEMBERSHIPID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@MEMBERSHIPLEVELID | uniqueidentifier | IN | Level |
@MEMBERSHIPLEVELTERMID | uniqueidentifier | IN | Term |
@MEMBERSHIPTYPECODEID | uniqueidentifier | IN | Type |
@STATUSCODE | smallint | IN | Status |
@TRANSACTIONDATE | datetime | IN | Transaction date |
@NUMBEROFCHILDREN | smallint | IN | No. of children |
@COMMENTS | nvarchar(1000) | IN | Comments |
@ISGIFT | bit | IN | This membership is a gift |
@SENDRENEWALCODE | smallint | IN | Send renewal notice to |
@EXPIRATIONDATE | datetime | IN | Expiration date |
@MEMBERS | xml | IN | Members |
@GIVENBYID | uniqueidentifier | IN | Given By |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MEMBERSHIPREJOIN
(
@ID uniqueidentifier = null output,
@CURRENTCONSTITUENTID uniqueidentifier = null,
@MEMBERID uniqueidentifier,
@MEMBERSHIPID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@MEMBERSHIPLEVELID uniqueidentifier = null,
@MEMBERSHIPLEVELTERMID uniqueidentifier = null,
@MEMBERSHIPTYPECODEID uniqueidentifier = null,
@STATUSCODE smallint = 0,
@TRANSACTIONDATE datetime = null,
@NUMBEROFCHILDREN smallint = 0,
@COMMENTS nvarchar(1000) = null,
@ISGIFT bit = 0,
@SENDRENEWALCODE smallint = 1,
@EXPIRATIONDATE datetime = null,
@MEMBERS xml = null,
@GIVENBYID uniqueidentifier = null
)
as
set nocount on;
begin try
declare @MEMBERSHIPPROGRAMID uniqueidentifier;
declare @ALLOWMULTIPLEMEMBERSHIPS bit;
declare @PREVIOUSSTATUSCODE tinyint;
select @CURRENTCONSTITUENTID = MEMBER.CONSTITUENTID,
@MEMBERSHIPID = MEMBER.MEMBERSHIPID,
@ALLOWMULTIPLEMEMBERSHIPS = MEMBERSHIPPROGRAM.ALLOWMULTIPLEMEMBERSHIPS,
@PREVIOUSSTATUSCODE = MEMBERSHIP.STATUSCODE,
@MEMBERSHIPPROGRAMID = MEMBERSHIP.MEMBERSHIPPROGRAMID
from dbo.MEMBER
inner join dbo.MEMBERSHIP
on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
inner join dbo.MEMBERSHIPPROGRAM
on MEMBERSHIPPROGRAM.ID = MEMBERSHIP.MEMBERSHIPPROGRAMID
where @MEMBERID = MEMBER.ID;
-- Do not allow backdated transaction on rejoin
if exists (select * from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPID = @MEMBERSHIPID and
TRANSACTIONDATE > @TRANSACTIONDATE)
raiserror('ERR_TRANSACTIONDATE_ISBACKDATEDTRANSACTION', 13,1);
-- Bug #164762
-- Multiple memberships validation
if @ALLOWMULTIPLEMEMBERSHIPS = 0 and @PREVIOUSSTATUSCODE = 1
begin
if exists
(
select 1
from dbo.MEMBER
inner join dbo.MEMBERSHIP
on MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
where
MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID
and STATUSCODE <> 1
and MEMBER.ISDROPPED <> 1
and MEMBER.CONSTITUENTID in
(
select
T.members.value('(CONSTITUENTID)[1]','uniqueidentifier') as 'CONSTITUENTID'
from
@MEMBERS.nodes('/MEMBERS/ITEM') T(members)
)
)
begin
raiserror('ERR_MEMBER_MULTIPLEMEMBERSHIPS', 13, 1);
end
end
exec dbo.USP_MEMBERSHIP_ADD
@MEMBERSHIPID,
@CHANGEAGENTID,
@CURRENTCONSTITUENTID,
null,
@MEMBERSHIPLEVELID,
@MEMBERSHIPLEVELTERMID,
@MEMBERSHIPTYPECODEID,
@STATUSCODE,
@TRANSACTIONDATE,
@NUMBEROFCHILDREN,
@COMMENTS,
@ISGIFT,
@SENDRENEWALCODE,
@EXPIRATIONDATE,
@MEMBERS,
@GIVENBYID,
null;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0