USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIP

The save procedure used by the edit dataform template "Membership Edit Data 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.
@MEMBERSHIPLEVELTYPECODEID uniqueidentifier IN Type
@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
@GIVENBYID uniqueidentifier IN Given by

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIP
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @MEMBERSHIPLEVELTYPECODEID uniqueidentifier,
                        @NUMBEROFCHILDREN smallint,
                        @COMMENTS nvarchar(1000),
                        @ISGIFT bit,
                        @SENDRENEWALCODE smallint,
                        @GIVENBYID uniqueidentifier
                    )
                    as
                        set nocount on;

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        if @NUMBEROFCHILDREN is null
                            set @NUMBEROFCHILDREN = 0

                        begin try
                            declare @CHILDRENALLOWED smallint
                            declare @ERRORMSG nvarchar(52)

                            select @CHILDRENALLOWED = MEMBERSHIPLEVEL.CHILDRENALLOWED
                            from dbo.MEMBERSHIPLEVEL
                            inner join dbo.MEMBERSHIP
                            on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
                            where MEMBERSHIP.ID = @ID

                            -- Number of children validation

                            if @NUMBEROFCHILDREN > @CHILDRENALLOWED --and @CHILDRENALLOWED > 0

                            begin
                                set @ERRORMSG = 'The number of children may not be larger than '+convert(nvarchar(3), @CHILDRENALLOWED)+'.'
                                raiserror(@ERRORMSG, 13, 1);
                            end

                            update dbo.MEMBERSHIP set
                                MEMBERSHIPLEVELTYPECODEID = @MEMBERSHIPLEVELTYPECODEID,
                                NUMBEROFCHILDREN = @NUMBEROFCHILDREN,
                                COMMENTS = @COMMENTS,
                                ISGIFT = @ISGIFT,
                                SENDRENEWALCODE = @SENDRENEWALCODE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE,
                                GIVENBYID = @GIVENBYID
                            where ID = @ID;

                            declare @LATESTTRANSACTIONID uniqueidentifier

                            select top 1 @LATESTTRANSACTIONID = ID
                            from dbo.MEMBERSHIPTRANSACTION
                            where MEMBERSHIPID = @ID
                            order by DATEADDED desc 

                            update dbo.MEMBERSHIPTRANSACTION set
                                MEMBERSHIPLEVELTYPECODEID = @MEMBERSHIPLEVELTYPECODEID,
                                NUMBEROFCHILDREN = @NUMBEROFCHILDREN,
                                COMMENTS = @COMMENTS,
                                ISGIFT = @ISGIFT,
                                DONORID = @GIVENBYID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @LATESTTRANSACTIONID;
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                    return 0;