This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,153 @@
IF OBJECT_ID('[dbo].[sp_GetNaplozasMulasztasList]') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
END
GO
CREATE PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
@date datetime
,@oraId int
,@targyId int
,@osztalyCsoportId int
,@egeszEvesOraszam bit
,@tanevElsoNapja datetime
,@tanevUtolsoNapja datetime
AS
BEGIN
SET NOCOUNT ON;
DECLARE @orahossza int = 45;
IF ((SELECT C_GYAKORLATI FROM T_TANTARGY WHERE ID = @targyId) = 'T') BEGIN SET @orahossza = 60; END
DECLARE @tmpOssz TABLE (tanuloId INT, cnt INT)
DECLARE @tmpHiany TABLE (tanuloId INT, cnt INT)
IF (@egeszEvesOraszam = 0) /*Megtartott órákat kell figyelembe venni*/
BEGIN
INSERT INTO @tmpOssz
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
LEFT JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T'
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
END
ELSE /*Az összes évi órát kell figyelni*/
BEGIN
IF ((select C_VEGZOSEVFOLYAM from T_OSZTALYCSOPORT where ID = @osztalyCsoportId) = 'T')
BEGIN
SET @tanevUtolsoNapja = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE TOROLT = 'F' AND C_TANEVID = (SELECT ID FROM T_TANEV_OSSZES WHERE TOROLT = 'F' AND C_AKTIV = 'T') AND C_NAPTIPUSA = 1402)
END
INSERT INTO @tmpOssz
SELECT tanuloId, SUM(cnt) FROM (
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
LEFT JOIN (SELECT nn.C_NAPDATUMA FROM T_NAPTARINAP nn
JOIN T_ORARENDIORA oo ON oo.C_HETIREND = nn.C_HETIREND AND nn.C_HETNAPJA = oo.C_HETNAPJA AND nn.C_INTEZMENYID = oo.C_INTEZMENYID AND nn.C_TANEVID = oo.C_TANEVID AND nn.C_NAPDATUMA BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
WHERE
nn.C_NAPDATUMA BETWEEN @tanevElsoNapja AND @tanevUtolsoNapja AND oo.C_OSZTALYCSOPORTID = @osztalyCsoportId AND oo.TOROLT = 'F') AS x
ON x.C_NAPDATUMA BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM,@tanevUtolsoNapja)
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @tanevElsoNapja AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
UNION ALL
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
LEFT JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T' AND t.C_ORARENDIORAID IS NULL
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
) AS x GROUP BY tanuloId
END
INSERT INTO @tmpHiany
SELECT tanuloId, SUM(cnt) FROM (
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T'
JOIN T_TANULOMULASZTAS m ON m.C_ORATANULOIID = tcs.C_TANULOID AND m.C_TIPUS = 1500 AND m.C_TANITASIORAKID = t.ID AND m.TOROLT = 'F'
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
UNION ALL
SELECT tcs.C_TANULOID AS tanuloId, SUM(m.C_KESESPERCBEN) / @orahossza AS cnt FROM T_TANULOCSOPORT tcs
JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T'
JOIN T_TANULOMULASZTAS m ON m.C_ORATANULOIID = tcs.C_TANULOID AND m.C_TIPUS = 1499 AND m.C_TANITASIORAKID = t.ID AND m.TOROLT = 'F'
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
) AS x GROUP BY tanuloId
SELECT
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
KesesIdo,
Oka,
MAX(ErtkelesMentesseg) ErtkelesMentesseg,
MAX(OraMentesseg) OraMentesseg,
MAX(SzovegesenErtekelheto) SzovegesenErtekelheto,
IsMagantanulo,
GondviseloNev,
GondviseloTelSzam,
MAX(Igazolt) Igazolt,
ISNULL(CAST((CAST(tmpHianyCnt AS FLOAT) / CAST(tmpOsszCnt AS FLOAT)) * 100 as int), 0) as MulasztasSzazalek
FROM (
SELECT
T_FELHASZNALO.ID ID,
T_TANULOMULASZTAS.ID MulasztasId,
T_FELHASZNALO.C_NYOMTATASINEV + ' (' + CONVERT(nvarchar(50),T_FELHASZNALO.C_SZULETESIDATUM,102) + ')' TanuloNev,
isnull(T_TANULOMULASZTAS.C_TIPUS, 1498) MulasztasTipus,
T_TANULOMULASZTAS.C_KESESPERCBEN KesesIdo,
STUFF((
SELECT DISTINCT ' | ' + tm2.C_MENTESSEGOKA
FROM T_TANULOMENTESSEG tm2
WHERE tm2.C_TANULOID = T_FELHASZNALO.ID
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,3,'') AS Oka,
tm.C_ERTEKELESMENTESITES ErtkelesMentesseg,
tm.C_ORAMENTESITES OraMentesseg,
tm.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto,
T_TANULO.C_MAGANTANULO IsMagantanulo,
ISNULL(gondviselo.C_NEV,'') as GondviseloNev,
ISNULL(telefon.C_TELEFONSZAM,'') as GondviseloTelSzam,
T_TANULOMULASZTAS.C_IGAZOLT as Igazolt,
tmpOssz.cnt as tmpOsszCnt,
tmpHiany.cnt as tmpHianyCnt
FROM T_TANULOCSOPORT
INNER JOIN T_FELHASZNALO on T_FELHASZNALO.id=T_TANULOCSOPORT.c_tanuloid
INNER JOIN T_TANULO on T_TANULO.id = T_TANULOCSOPORT.c_tanuloid
LEFT JOIN T_GONDVISELO gondviselo ON gondviselo.ID = (SELECT MIN(ID) FROM T_GONDVISELO WHERE C_TANULOID = T_TANULO.ID)
OUTER APPLY (SELECT TOP 1 t.C_TELEFONSZAM FROM T_TELEFON t WHERE t.C_GONDVISELOID = gondviselo.ID ORDER BY C_ALAPERTELMEZETT DESC) telefon
LEFT JOIN T_TANULOMULASZTAS on T_TANULOMULASZTAS.C_ORATANULOIID = T_FELHASZNALO.ID and T_TANULOMULASZTAS.C_TANITASIORAKID = @oraId AND T_TANULOMULASZTAS.TOROLT = 'F'
LEFT JOIN T_TANULOMENTESSEG tm on T_FELHASZNALO.ID = tm.C_TANULOID and tm.TOROLT = 'F' and tm.C_TANTARGYID = @targyId and (@date between isnull(tm.C_KEZDETE, @date) and isnull(tm.C_VEGE, @date))
LEFT JOIN @tmpOssz tmpOssz ON tmpOssz.tanuloId = T_FELHASZNALO.ID
LEFT JOIN @tmpHiany tmpHiany ON tmpHiany.tanuloId = T_FELHASZNALO.ID
WHERE T_TANULOCSOPORT.torolt = 'F'
and T_TANULOCSOPORT.C_BELEPESDATUM <= @date
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= @date)
and T_TANULOCSOPORT.c_osztalycsoportid = @osztalyCsoportId
) AS x
GROUP BY
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
IsMagantanulo,
Oka,
KesesIdo,
GondviseloNev,
GondviseloTelSzam,
tmpOsszCnt,
tmpHianyCnt
ORDER BY x.TanuloNev
END
GO