329 lines
12 KiB
Transact-SQL
329 lines
12 KiB
Transact-SQL
GO
|
|
/****** Object: StoredProcedure [dbo].[sp_SetRendszerErtesitesek] Script Date: 2016.06.09. 14:34:01 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
IF OBJECT_ID('dbo.sp_SetRendszerErtesitesek') IS NOT NULL
|
|
BEGIN
|
|
DROP PROCEDURE [dbo].[sp_SetRendszerErtesitesek]
|
|
END
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Author: DT
|
|
-- Create date: 2016-03-21
|
|
-- Description: Rendszer értesítések tábla frissítése
|
|
-- =============================================
|
|
CREATE PROCEDURE [dbo].[sp_SetRendszerErtesitesek]
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
|
|
/*Globál UPDATE*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_FRISSITESIDEJE = GETDATE()
|
|
,LASTCHANGED = GETDATE()
|
|
,C_KELLFRISSITES = 'F'
|
|
WHERE TOROLT = 'F'
|
|
|
|
/*Az elektronikus naplóban nincs beállítva a visszamenőleges beírás korlátozása!*/
|
|
|
|
|
|
/*
|
|
A rendszerben ...
|
|
tanuló nincs osztályba sorolva!
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANULOKOSZTALYBASOROLASA =
|
|
( SELECT COUNT(1)
|
|
FROM T_TANULO t
|
|
LEFT JOIN T_TANULOCSOPORT TCS ON ( TCS.C_TANULOID = t.ID
|
|
AND TCS.TOROLT = 'F'
|
|
AND TCS.C_BELEPESDATUM < GETDATE()
|
|
AND (TCS.C_KILEPESDATUM is null OR TCS.C_KILEPESDATUM >= GETDATE())
|
|
AND T_RENDSZERERTESITESEK.C_INTEZMENYID = TCS.C_INTEZMENYID
|
|
AND T_RENDSZERERTESITESEK.C_TANEVID = TCS.C_TANEVID
|
|
)
|
|
WHERE T.TOROLT = 'F' AND TCS.ID IS NULL
|
|
AND T_RENDSZERERTESITESEK.C_INTEZMENYID = T.C_ALINTEZMENYID
|
|
AND T_RENDSZERERTESITESEK.C_TANEVID = T.C_ALTANEVID
|
|
)
|
|
WHERE TOROLT = 'F'
|
|
/*
|
|
Az órarendben ... órában tanulóütközés van,
|
|
azonos órában a tanulónak több tanóra IS rögzítve van!
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_ORARENDTANULOUTKOZESEK =
|
|
( SELECT count(1)
|
|
FROM (
|
|
SELECT sub.C_HETIREND, sub.C_HETNAPJA, sub.C_CSENGETESIRENDORAID, sub.C_TANULOID, COUNT(1) AS cnt
|
|
FROM (
|
|
SELECT o.C_HETIREND, o.C_HETNAPJA, o.C_CSENGETESIRENDORAID, tcs.C_TANULOID--, COUNT(1)
|
|
FROM T_ORARENDIORA o
|
|
INNER JOIN T_FOGLALKOZAS F ON F.ID = o.C_FOGLALKOZASID AND F.TOROLT = 'F'
|
|
INNER JOIN T_OSZTALYCSOPORT OCS ON OCS.ID = F.C_OSZTALYCSOPORTID AND OCS.TOROLT = 'F'
|
|
INNER JOIN T_TANULOCSOPORT TCS ON TCS.C_OSZTALYCSOPORTID = OCS.ID AND TCS.TOROLT = 'F'
|
|
WHERE o.TOROLT = 'F'
|
|
AND F.C_FOGLALKOZASTIPUSA IN (1339, 1368)
|
|
AND o.C_ORAERVENYESSEGKEZDETE < GETDATE()
|
|
AND (o.C_ORAERVENYESSEGVEGE > GETDATE() OR o.C_ORAERVENYESSEGVEGE IS NULL)
|
|
AND tcs.C_BELEPESDATUM < GETDATE()
|
|
AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)
|
|
AND O.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND O.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
UNION ALL
|
|
|
|
SELECT n.C_HETIREND, o.C_HETNAPJA, o.C_CSENGETESIRENDORAID, tcs.C_TANULOID
|
|
FROM T_TANITASIORA o
|
|
INNER JOIN T_FOGLALKOZAS F ON F.ID = o.C_FOGLALKOZASID AND F.TOROLT = 'F'
|
|
INNER JOIN T_OSZTALYCSOPORT OCS ON OCS.ID = F.C_OSZTALYCSOPORTID AND OCS.TOROLT = 'F'
|
|
INNER JOIN T_TANULOCSOPORT TCS ON TCS.C_OSZTALYCSOPORTID = OCS.ID AND TCS.TOROLT = 'F'
|
|
INNER JOIN T_NAPTARINAP n ON n.ID = o.C_NAPTARINAPID AND n.TOROLT = 'F'
|
|
WHERE o.TOROLT = 'F'
|
|
AND F.C_FOGLALKOZASTIPUSA IN (1339, 1368)
|
|
AND tcs.C_BELEPESDATUM < GETDATE()
|
|
AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)
|
|
AND o.C_ORARENDIORAID IS NULL
|
|
AND o.C_DATUM > getdate() - 1
|
|
AND O.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND O.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
) sub
|
|
GROUP BY sub.C_HETIREND, sub.C_HETNAPJA, sub.C_CSENGETESIRENDORAID, sub.C_TANULOID
|
|
HAVING COUNT(1) > 1
|
|
) A )
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
Az intézménynek hiányosan vannak kitöltve az adatai!
|
|
Ennek következményeként a dokumentumokban az intézmény adatai nem jelennek meg!
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_INTEZMENYHIANYOSADATOK = IIF(
|
|
(SELECT count(1)
|
|
FROM T_INTEZMENYADATOK i
|
|
WHERE i.TOROLT = 'F'
|
|
AND (C_NEV IS NULL
|
|
OR C_OMKOD IS NULL
|
|
OR C_IRANYITOSZAM IS NULL
|
|
OR C_CIME IS NULL
|
|
OR C_IGAZGATONEVE IS NULL)
|
|
AND I.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND I.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
) > 0, 'T', 'F' )
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
A rendszerben ...
|
|
tanulónak nem megfelelő formátumú az oktatási azonosítója.
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANULOHIANYOSOKTATASIAZONOSI = (
|
|
SELECT count(1)
|
|
FROM T_TANULO t
|
|
INNER JOIN T_FELHASZNALO f ON f.ID = t.ID AND f.TOROLT = 'F'
|
|
WHERE t.TOROLT = 'F'
|
|
AND (f.C_OKTATASIAZONOSITO NOT LIKE '7%'
|
|
OR f.C_OKTATASIAZONOSITO LIKE '%[^0-9]%'
|
|
OR LEN(f.C_OKTATASIAZONOSITO) <> 11)
|
|
AND T.C_ALINTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND T.C_ALTANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
A rendszerben ...
|
|
tanárnak nem megfelelő formátumú az oktatási azonosítója.
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANAROKHIANYOSOKTATASIAZONOS = (
|
|
SELECT count(1)
|
|
FROM T_ALKALMAZOTT a
|
|
INNER JOIN T_FELHASZNALO f ON f.ID = a.ID AND f.TOROLT = 'F'
|
|
WHERE a.TOROLT = 'F'
|
|
AND (f.C_OKTATASIAZONOSITO not like '7%'
|
|
or f.C_OKTATASIAZONOSITO LIKE '%[^0-9]%'
|
|
or LEN(f.C_OKTATASIAZONOSITO) <> 11)
|
|
AND A.C_ALINTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND A.C_ALTANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE TOROLT = 'F'
|
|
|
|
/*
|
|
A tantárgyfelosztásban ...
|
|
tanár nem szerepel!
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANTARGYFELOSZTASTANARNINCSE = (
|
|
SELECT COUNT(1)
|
|
FROM T_ALKALMAZOTT a
|
|
LEFT JOIN T_FOGLALKOZASOK_TANAROK TANARTARGYAK ON (TANARTARGYAK.C_TANAROKID = A.ID)
|
|
LEFT JOIN T_FOGLALKOZAS F ON ( TANARTARGYAK.C_FOGLALKOZASOKID = F.ID AND F.TOROLT = 'F'
|
|
AND F.C_INTEZMENYID = A.C_ALINTEZMENYID
|
|
AND F.C_TANEVID = A.C_ALTANEVID
|
|
)
|
|
WHERE a.TOROLT = 'F' AND f.ID IS NULL
|
|
AND A.C_ALINTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND A.C_ALTANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
A tantárgyak közül ...
|
|
tantárgy nem szerepel a tantárgyfelosztásban!
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANTARGYFELOSZTASTANTARGYNIN = (
|
|
SELECT count(1)
|
|
FROM T_TANTARGY tt
|
|
LEFT JOIN T_FOGLALKOZAS f ON ( f.C_TANTARGYID = tt.ID AND f.TOROLT = 'F'
|
|
AND F.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND F.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE f.ID IS NULL AND TT.TOROLT = 'F'
|
|
AND TT.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND TT.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
Az osztályok ill. tanórai célú csoportok közül ...
|
|
nem szerepel a tantárgyfelosztásban!
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANTARGYFELOSZTASOSZTALYOKNI = (
|
|
SELECT count(1)
|
|
FROM T_OSZTALYCSOPORT ocs
|
|
LEFT JOIN T_FOGLALKOZAS f ON ( f.C_OSZTALYCSOPORTID = ocs.ID AND f.TOROLT = 'F'
|
|
AND F.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND F.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE ocs.TOROLT = 'F' AND f.ID IS NULL
|
|
AND ( EXISTS ( SELECT 1 FROM T_OSZTALY WHERE T_OSZTALY.ID = OCS.ID ) -- OSZTÁLY
|
|
OR
|
|
EXISTS ( SELECT 1 FROM T_CSOPORT WHERE T_CSOPORT.C_TIPUSA = 1034 AND T_CSOPORT.ID = OCS.ID) -- CSOPORT
|
|
)
|
|
AND ocs.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND ocs.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
)
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
Az órarendben ... órában teremütközés van,
|
|
azonos teremben több óra IS szerepel!
|
|
*/
|
|
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_ORARENDTEREMUTKOZES = ( SELECT COUNT(1)
|
|
FROM (
|
|
SELECT sub.C_HETIREND, sub.C_HETNAPJA, sub.C_TEREMID, sub.C_CSENGETESIRENDORAID, COUNT(1) cnt
|
|
FROM (
|
|
SELECT DISTINCT o.C_HETIREND, o.C_HETNAPJA, o.C_TEREMID, o.C_CSENGETESIRENDORAID, o.C_FOGLALKOZASID
|
|
FROM T_ORARENDIORA o
|
|
INNER JOIN T_TEREM t ON t.ID = o.C_TEREMID AND t.TOROLT = 'F'
|
|
INNER JOIN T_FOGLALKOZAS f ON f.ID = o.C_FOGLALKOZASID AND f.TOROLT = 'F'
|
|
WHERE o.C_ORAERVENYESSEGKEZDETE < GETDATE() AND (o.C_ORAERVENYESSEGVEGE > GETDATE() OR o.C_ORAERVENYESSEGVEGE IS NULL)
|
|
AND t.C_TOBBORATLEHETTARTANI = 'F'
|
|
AND o.TOROLT = 'F'
|
|
AND O.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND O.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
UNION
|
|
|
|
SELECT DISTINCT n.C_HETIREND , n.C_HETNAPJA, o.C_TEREMID, o.C_CSENGETESIRENDORAID, o.C_FOGLALKOZASID
|
|
FROM T_TANITASIORA o
|
|
INNER JOIN T_NAPTARINAP n ON n.ID = o.C_NAPTARINAPID AND n.TOROLT = 'F'
|
|
INNER JOIN T_FOGLALKOZAS f ON f.ID = o.C_FOGLALKOZASID AND f.TOROLT = 'F'
|
|
INNER JOIN T_TEREM t ON t.ID = o.C_TEREMID AND t.TOROLT = 'F'
|
|
WHERE o.C_ORARENDIORAID IS NULL
|
|
AND n.C_NAPDATUMA > GETDATE() - 1
|
|
AND t.C_TOBBORATLEHETTARTANI = 'F'
|
|
AND o.TOROLT = 'F'
|
|
AND O.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND O.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
) sub
|
|
GROUP BY sub.C_HETIREND, sub.C_HETNAPJA, sub.C_TEREMID, sub.C_CSENGETESIRENDORAID
|
|
HAVING COUNT(1) > 1
|
|
) tbl )
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
/*
|
|
Az órarendben ... órában tanárütközés szerepel,
|
|
azonos órában a pedagógushoz több tanóra IS tartozik.
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_ORARENDTANARUTKOZES = ( SELECT count(1)
|
|
FROM (
|
|
SELECT sub.C_TANAROKID, sub.C_HETIREND, sub.C_HETNAPJA, sub.C_CSENGETESIRENDORAID, COUNT(1) cnt
|
|
FROM (
|
|
SELECT ft.C_TANAROKID, o.C_HETIREND, o.C_HETNAPJA, o.C_CSENGETESIRENDORAID, o.C_TEREMID
|
|
FROM T_ORARENDIORA o
|
|
INNER JOIN T_FOGLALKOZAS f ON f.ID = o.C_FOGLALKOZASID AND f.TOROLT = 'F'
|
|
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID
|
|
WHERE o.TOROLT = 'F'
|
|
AND o.C_ORAERVENYESSEGKEZDETE < GETDATE()
|
|
AND (o.C_ORAERVENYESSEGVEGE > GETDATE() OR o.C_ORAERVENYESSEGVEGE IS NULL)
|
|
AND O.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND O.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
|
|
UNION
|
|
|
|
SELECT ISNULL(o.C_HELYETTESITOTANARID, ft.C_TANAROKID) AS C_TANAROKID, n.C_HETIREND, o.C_HETNAPJA, o.C_CSENGETESIRENDORAID, o.C_TEREMID
|
|
FROM T_TANITASIORA o
|
|
INNER JOIN T_FOGLALKOZAS f ON f.ID = o.C_FOGLALKOZASID AND f.TOROLT = 'F'
|
|
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID
|
|
INNER JOIN T_NAPTARINAP n ON n.ID = o.C_NAPTARINAPID AND n.TOROLT = 'F'
|
|
WHERE o.TOROLT = 'F'
|
|
AND o.C_ORARENDIORAID IS NULL
|
|
AND o.C_DATUM > getdate() - 1
|
|
AND O.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND O.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
) sub
|
|
GROUP BY sub.C_TANAROKID, sub.C_HETIREND, sub.C_HETNAPJA, sub.C_CSENGETESIRENDORAID
|
|
HAVING COUNT(1) > 1
|
|
) tbl )
|
|
WHERE TOROLT = 'F'
|
|
|
|
/*
|
|
Azon tanulók száma, akik osztályba vannak sorolva, de nincs tantervük
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_TANTERVNELKULITANULOK = (
|
|
SELECT count(1)
|
|
FROM (
|
|
select distinct T_TANULO.ID
|
|
from T_TANULOCSOPORT
|
|
inner join T_TANULO on (T_TANULO.ID = T_TANULOCSOPORT.C_TANULOID and T_TANULO.TOROLT = 'F')
|
|
where T_TANULO.C_TANTERVID is null
|
|
and T_TANULOCSOPORT.TOROLT = 'F'
|
|
and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
|
|
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM > GETDATE())
|
|
AND T_TANULOCSOPORT.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND T_TANULOCSOPORT.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID
|
|
) tbl )
|
|
WHERE TOROLT = 'F'
|
|
|
|
|
|
|
|
/*
|
|
Nincs beállítva aktív csengetési rend
|
|
*/
|
|
UPDATE T_RENDSZERERTESITESEK
|
|
SET C_AKTIVCSENGETESIREND = ( SELECT IIF(EXISTS(SELECT 1
|
|
FROM T_CSENGETESIREND
|
|
WHERE C_AKTIV = 'T'
|
|
AND T_CSENGETESIREND.C_INTEZMENYID = T_RENDSZERERTESITESEK.C_INTEZMENYID
|
|
AND T_CSENGETESIREND.C_TANEVID = T_RENDSZERERTESITESEK.C_TANEVID),
|
|
'F', 'T') )
|
|
WHERE TOROLT = 'F'
|
|
|
|
END
|