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;