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