USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPLEVELRENEWALRULES

The save procedure used by the edit dataform template "Membership Level Renewal Rules 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.
@BEFOREEXPIRATION tinyint IN month(s) before expiration
@AFTEREXPIRATION tinyint IN month(s) after expiration
@FORCEMANUALDOWNGRADES bit IN Members must be downgraded manually

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPLEVELRENEWALRULES
                (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @BEFOREEXPIRATION tinyint,
                @AFTEREXPIRATION tinyint,
                @FORCEMANUALDOWNGRADES bit
                )
                as set nocount on;

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


                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

             begin try
                declare @OLDBEFOREEXPIRATION tinyint
                declare @OLDAFTEREXPIRATION tinyint

                select @OLDBEFOREEXPIRATION = BEFOREEXPIRATION, @OLDAFTEREXPIRATION = AFTEREXPIRATION
                from dbo.MEMBERSHIPLEVEL
                where ID = @ID

                update dbo.MEMBERSHIPLEVEL set
                    BEFOREEXPIRATION=@BEFOREEXPIRATION,
                    AFTEREXPIRATION=@AFTEREXPIRATION,
                    FORCEMANUALDOWNGRADES=@FORCEMANUALDOWNGRADES,
                    CHANGEDBYID= @CHANGEAGENTID,  
                    DATECHANGED=@CURRENTDATE
               where ID = @ID;

               -- Save renewal rule history

               if @OLDBEFOREEXPIRATION <> @BEFOREEXPIRATION or @OLDAFTEREXPIRATION <> @AFTEREXPIRATION
               begin
                   -- if there is already a renewal rule history record has the current date as start date

                   -- update it with the new before and after the expiration values

                   -- if not insert a new record

                   if exists (select 1 from dbo.MEMBERSHIPLEVELRENEWALRULES 
                                where MEMBERSHIPLEVELID = @ID and 
                                    STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE))
                        update dbo.MEMBERSHIPLEVELRENEWALRULES
                        set BEFOREEXPIRATION = @BEFOREEXPIRATION,
                            AFTEREXPIRATION = @AFTEREXPIRATION,
                            ENDDATE = null,
                            CHANGEDBYID= @CHANGEAGENTID,  
                            DATECHANGED=@CURRENTDATE
                        where MEMBERSHIPLEVELID = @ID and STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE)
                   else
                   begin
                       update dbo.MEMBERSHIPLEVELRENEWALRULES
                       set ENDDATE = @CURRENTDATE,
                            CHANGEDBYID= @CHANGEAGENTID,  
                            DATECHANGED=@CURRENTDATE
                       where MEMBERSHIPLEVELID = @ID and ENDDATE is null

                        insert into dbo.MEMBERSHIPLEVELRENEWALRULES
                        (
                            MEMBERSHIPLEVELID,
                            BEFOREEXPIRATION,
                            AFTEREXPIRATION,
                            STARTDATE,
                            ADDEDBYID, 
                            CHANGEDBYID, 
                            DATEADDED, 
                            DATECHANGED
                        )
                        values
                        (
                            @ID,
                            @BEFOREEXPIRATION,
                            @AFTEREXPIRATION,
                            @CURRENTDATE,
                            @CHANGEAGENTID
                            @CHANGEAGENTID
                            @CURRENTDATE
                            @CURRENTDATE
                        )
                    end
                end
            end try
            begin catch
                exec dbo.USP_RAISE_ERROR
                return 1
            end catch

            return 0;