USP_DATAFORMTEMPLATE_EDIT_ACADEMICYEAR

The save procedure used by the edit dataform template "Edit an academic year".

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.
@STARTDATE date IN Start date
@ENDDATE date IN End date
@ACADEMICYEARNAMECODEID uniqueidentifier IN Name

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ACADEMICYEAR (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @STARTDATE date,
                        @ENDDATE date,
                        @ACADEMICYEARNAMECODEID uniqueidentifier
                    )
                    as

                        set nocount on;

                        declare @CURRENTDATE datetime, @TERMSTARTDATE date, @TERMENDDATE date

                        select 
                            @TERMSTARTDATE = min(STARTDATE), 
                            @TERMENDDATE = max(ENDDATE)
                        from 
                            dbo.TERM
                        inner join
                            dbo.SESSION on TERM.SESSIONID = SESSION.ID
                        where
                            SESSION.ACADEMICYEARID = @ID

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

                        set @CURRENTDATE = getdate()

                        begin try

                            if ((@STARTDATE > @TERMSTARTDATE) or (@ENDDATE < @TERMENDDATE))
                                raiserror('BBERR_ACADEMICYEAR_DOESNOTCOVERSESSIONDATES', 13, 1);

                            -- disallow edit of start/end dates when year is in use!

                            if exists(select ID
                                      from dbo.ACADEMICYEAR
                                      where ID = @ID
                                        and (STARTDATE <> @STARTDATE or ENDDATE <> @ENDDATE)
                                        and dbo.UFN_ACADEMICYEAR_INUSE(@ID) = 1)
                                raiserror('BBERR_ACADEMICYEAR_CANNOT_EDIT_DATES_INUSE', 13, 1);

                            -- handle updating the data

                            update dbo.ACADEMICYEAR set                        
                                STARTDATE = @STARTDATE,
                                ENDDATE = @ENDDATE,
                                ACADEMICYEARNAMECODEID = @ACADEMICYEARNAMECODEID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                    return 0;