UFN_STUDENTENROLLMENT_INUSE

Determines if a given student enrollment is in use.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@ENROLLMENTID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_STUDENTENROLLMENT_INUSE(
            @ENROLLMENTID uniqueidentifier
        )
        returns bit
        with execute as caller
        as begin
            declare @RETVAL bit = 0;
            declare @STUDENTID as uniqueidentifier

            set @STUDENTID = (SELECT dbo.EDUCATIONALHISTORY.[CONSTITUENTID] FROM dbo.EDUCATIONALHISTORY WHERE dbo.EDUCATIONALHISTORY.[ID] = @ENROLLMENTID

            --see if the enrollment contains last progression

            if (select count (dbo.EDUCATIONALHISTORY.[ID])
                from dbo.EDUCATIONALHISTORY
                inner join dbo.STUDENTPROGRESSION on dbo.EDUCATIONALHISTORY.[ID] = dbo.STUDENTPROGRESSION.[ENROLLMENTID]
                where (dbo.EDUCATIONALHISTORY.[CONSTITUENTID] = @STUDENTID) and (dbo.STUDENTPROGRESSION.[ENROLLMENTID] <> @ENROLLMENTID)) = 0
                set @RETVAL = 1;

            --see if the enrollment is used on a charge

            if (exists (select dbo.STUDENTCHARGE.ID
                from dbo.STUDENTCHARGE
                where
                    dbo.STUDENTCHARGE.EDUCATIONALHISTORYID = @ENROLLMENTID))
                set @RETVAL = 1;

            --check to see if the enrollment's progressions are being used

            if @RETVAL = 0
             begin
                if (select max(case when dbo.UFN_STUDENTPROGRESSION_INUSE(dbo.STUDENTPROGRESSION.[ID]) = 1 then 1 else 0 end)
                    from dbo.STUDENTPROGRESSION
                    where dbo.STUDENTPROGRESSION.[ENROLLMENTID] = @ENROLLMENTID) > 0
                    set @RETVAL = 1;
             end

            --see if this is the last student enrollment or contains last progression

            if @RETVAL = 0
             begin
                if (dbo.UFN_STUDENTENROLLMENT_RECORDCOUNT(@STUDENTID) <= 1)    
                    set @RETVAL = 1;
             end

            return @RETVAL;
        end