-- Az óra éves sorszáma tantárgy, osztálycsoport és tanár alapján -- TELEK ÁKOS -- 2017.03.03. IF OBJECT_ID('dbo.fnGetEvesOraszam') IS NOT NULL BEGIN DROP FUNCTION dbo.fnGetEvesOraszam END GO CREATE FUNCTION dbo.fnGetEvesOraszam ( @tantargyId int ,@osztalycsoportId int ,@tanarId int ,@datum datetime ,@intezmenyId int ,@tanevId int ) RETURNS int AS BEGIN DECLARE @tanarSzamit bit ,@osztalybontasEgybe bit ,@osztalybontasCsoport bit ,@cnt int SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId) SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId) SET @osztalybontasCsoport = 0 IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN SET @osztalybontasCsoport = 1 END IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN IF @tanarSzamit = 1 BEGIN SELECT @cnt = COUNT(1) FROM T_TANITASIORA_OSSZES t WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_TANTARGYID = @tantargyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_TANARID = @tanarId AND t.C_ORAKEZDETE <= @datum AND t.TOROLT ='F' END ELSE BEGIN SELECT @cnt = COUNT(1) FROM T_TANITASIORA_OSSZES t WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_TANTARGYID = @tantargyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_ORAKEZDETE <= @datum AND t.TOROLT ='F' END END ELSE BEGIN IF @tanarSzamit = 1 BEGIN SELECT @cnt = COUNT(1) FROM T_TANITASIORA_OSSZES t WHERE t.C_TANTARGYID = @tantargyId AND t.C_OSZTALYCSOPORTID IN ( SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) AND cs.TOROLT = 'F' UNION SELECT cs.C_OSZTALYBONTASID FROM T_CSOPORT cs WHERE cs.ID = @osztalyCsoportId AND cs.TOROLT = 'F' UNION SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId AND cs.TOROLT = 'F' UNION SELECT @osztalyCsoportId ) AND t.C_TANARID = @tanarId AND t.C_ORAKEZDETE <= @datum AND t.C_SORSZAMOZANDO = 'T' AND t.C_MEGTARTOTT = 'T' AND t.TOROLT ='F' END ELSE BEGIN SELECT @cnt = COUNT(1) FROM T_TANITASIORA_OSSZES t WHERE t.C_TANTARGYID = @tantargyId AND t.C_OSZTALYCSOPORTID IN ( SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) AND cs.TOROLT = 'F' UNION SELECT cs.C_OSZTALYBONTASID FROM T_CSOPORT cs WHERE cs.ID = @osztalyCsoportId AND cs.TOROLT = 'F' UNION SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId AND cs.TOROLT = 'F' UNION SELECT @osztalyCsoportId ) AND t.C_ORAKEZDETE <= @datum AND t.C_SORSZAMOZANDO = 'T' AND t.C_MEGTARTOTT = 'T' AND t.TOROLT = 'F' END END RETURN @cnt END GO