USP_DATAFORMTEMPLATE_EDITSAVE_MEMBERSHIPREMOVEMEMBER

The save procedure used by the edit dataform template "Membership Remove Member Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@SEPARATEMEMBERSHIP bit IN Create a separate membership for this member
@TRANSFERCARDS bit IN Transfer active cards to new membership

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_MEMBERSHIPREMOVEMEMBER
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @SEPARATEMEMBERSHIP bit,
                        @TRANSFERCARDS bit
                    )
                    as
                        set nocount on;

                        if @CHANGEAGENTID is null  
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        declare @ISPRIMARY bit
                        declare @MEMBERSHIPID uniqueidentifier
                        declare @CONSTITUENTID uniqueidentifier

                        select 
                            @ISPRIMARY = ISPRIMARY,
                            @MEMBERSHIPID = MEMBERSHIPID,
                            @CONSTITUENTID = CONSTITUENTID
                        from dbo.MEMBER
                        where ID = @ID

                        begin try
                            -- Updating member and membership tables to reflect removed member.

                            update dbo.MEMBER set
                                ISDROPPED = 1,
                                ISPRIMARY = 0,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID;

                            -- If removed member is primary member, find next in line and make them primary.

                            if @ISPRIMARY = 1
                                begin
                                    declare @NEWPRIMARYMEMBERID uniqueidentifier
                                    select top(1) @NEWPRIMARYMEMBERID = ID
                                    from dbo.MEMBER
                                    where MEMBERSHIPID = @MEMBERSHIPID and ID <> @ID

                                    if @NEWPRIMARYMEMBERID is null
                                        raiserror('Cannot remove member.  This is the only member listed for the membership.', 13,1);
                                    else
                                    begin
                                        update dbo.MEMBER set
                                            ISPRIMARY = 0,
                                            CHANGEDBYID = @CHANGEAGENTID,
                                            DATECHANGED = @CURRENTDATE
                                        where ID = @ID

                                        update dbo.MEMBER set
                                            ISPRIMARY = 1,
                                            CHANGEDBYID = @CHANGEAGENTID,
                                            DATECHANGED = @CURRENTDATE
                                        where ID = @NEWPRIMARYMEMBERID
                                    end
                                end


                            if @SEPARATEMEMBERSHIP = 1
                            begin
                                -- Declaring variables to use in creating a new membership

                                declare @NEWMEMBERSHIPID uniqueidentifier
                                declare @MEMBERSHIPPROGRAMID uniqueidentifier
                                declare @MEMBERSHIPLEVELID uniqueidentifier
                                declare @MEMBERSHIPLEVELTYPECODEID uniqueidentifier
                                declare @MEMBERSHIPLEVELTERMID uniqueidentifier
                                declare @JOINDATE datetime
                                declare @EXPIRATIONDATE datetime

                                select
                                    @MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAMID,
                                    @MEMBERSHIPLEVELID = MEMBERSHIPLEVELID,
                                    @MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERMID,
                                    @MEMBERSHIPLEVELTYPECODEID = MEMBERSHIPLEVELTYPECODEID,
                                    @JOINDATE = JOINDATE
                                from dbo.MEMBERSHIP
                                where ID = @MEMBERSHIPID

                                set @EXPIRATIONDATE = dbo.UFN_MEMBERSHIP_CALCULATEEXPIRATIONDATEBYLEVEL(@MEMBERSHIPLEVELID, @MEMBERSHIPLEVELTERMID, @CURRENTDATE)

                                set @NEWMEMBERSHIPID = newid()

                                -- Insert into Membership

                                insert into dbo.MEMBERSHIP
                                (ID, MEMBERSHIPPROGRAMID, MEMBERSHIPLEVELID, MEMBERSHIPLEVELTERMID, MEMBERSHIPLEVELTYPECODEID, NUMBEROFCHILDREN, JOINDATE, EXPIRATIONDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values
                                (@NEWMEMBERSHIPID, @MEMBERSHIPPROGRAMID, @MEMBERSHIPLEVELID, @MEMBERSHIPLEVELTERMID, @MEMBERSHIPLEVELTYPECODEID, 0, @JOINDATE, @EXPIRATIONDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

                                -- Add to transaction table

                                insert into dbo.MEMBERSHIPTRANSACTION
                                (ID, MEMBERSHIPID, MEMBERSHIPLEVELID, MEMBERSHIPLEVELTERMID, TRANSACTIONDATE, EXPIRATIONDATE, ISGIFT, NUMBEROFCHILDREN, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values
                                (newid(), @NEWMEMBERSHIPID, @MEMBERSHIPLEVELID, @MEMBERSHIPLEVELTERMID, cast(@CURRENTDATE as date), @EXPIRATIONDATE, 0, 0, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

                                declare @NEWMEMBERID uniqueidentifier
                                set @NEWMEMBERID = newid()

                                -- Insert into Member

                                insert into dbo.MEMBER
                                (ID, CONSTITUENTID, MEMBERSHIPID, ISPRIMARY, ISDROPPED, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values
                                (@NEWMEMBERID, @CONSTITUENTID, @NEWMEMBERSHIPID, 1, 0, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)

                                -- Transfer Cards if prompted.

                                if @TRANSFERCARDS = 1
                                begin
                                    update dbo.MEMBERSHIPCARD
                                        set 
                                            MEMBERID = @NEWMEMBERID,
                                            NAMEONCARD = MC.NAMEONCARD,
                                            CARDNUMBER = MC.CARDNUMBER,
                                            EXPIRATIONDATE = @EXPIRATIONDATE,
                                            CHANGEDBYID = @CHANGEAGENTID,
                                            DATECHANGED = @CURRENTDATE
                                        from dbo.MEMBERSHIPCARD MC
                                        where MEMBERID = @ID and STATUSCODE <> 2
                                end
                            end

                            --update cards to cancelled

                            update dbo.MEMBERSHIPCARD set
                                STATUSCODE = 2,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where MEMBERID = @ID;

                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                    return 0;