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

View file

@ -0,0 +1,141 @@
DROP PROCEDURE IF EXISTS dbo.sp_GetMulasztasokNaploNezetData
GO
CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT = 0
AS
BEGIN
CREATE TABLE #TempTable(
TanitasiOraId INT NOT NULL,
OsztalyCsoportId INT NOT NULL,
OsztalyCsoportNev NVARCHAR(255) NOT NULL,
OsztalyNev NVARCHAR(255) NOT NULL,
IsOsztalyOraja BIT NOT NULL,
IsTanoraiCelu BIT NOT NULL,
IsTanoraiCelunakJelolt BIT NOT NULL,
TantargyId INT NOT NULL,
TantargyNev NVARCHAR(255) NOT NULL,
TanarId INT NOT NULL,
TanarNev NVARCHAR(255) NOT NULL,
OraSorszam INT NULL,
OraKezdete DATETIME NULL
);
DECLARE @sql nvarchar(max) = ''
SET @sql += N'
INSERT INTO #TempTable
SELECT
tn.ID AS TanitasiOraId
,ocs.ID AS OsztalyCsoportId
,ocs.C_NEV AS OsztalyCsoportNev
,o.C_NEV AS OsztalyNev
,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja
,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu
,IIF(cst.C_ISTANORAICELU = ''T'', 1, 0) AS IsTanoraiCelunakJelolt
,tt.ID AS TantargyId
,tt.C_NEV AS TantargyNev
,fa.ID AS TanarId
,fa.C_NYOMTATASINEV AS TanarNev
,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam
,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete
FROM
T_TANITASIORA tn
' + IIF(@pIsCsoportVez = 0, N' INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID ', '')
SET @sql += N'
INNER JOIN T_TANTARGY tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = ''F''
INNER JOIN T_FELHASZNALO fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F''
LEFT JOIN T_CSOPORT cs ON cs.ID = tn.C_OSZTALYCSOPORTID AND cs.TOROLT = ''F''
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = ''F''
WHERE
tn.C_DATUM = @pDatum
AND tn.C_MEGTARTOTT = ''T''
AND tn.TOROLT = ''F''
' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
EXEC sp_executesql @sql, N'
@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT'
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pDatum = @pDatum
,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId
,@pIsCsoportVez = @pIsCsoportVez
SELECT
tcs.C_TANULOID AS TanuloId
,ft.C_NYOMTATASINEV AS TanuloNev
,ft.C_ANYJANEVE AS AnyjaNeve
,ft.C_SZULETESIDATUM AS SzuletesiIdo
,tbl.OsztalyCsoportId
,tbl.OsztalyCsoportNev
,tbl.OsztalyNev
,tbl.IsOsztalyOraja
,tbl.IsTanoraiCelu
,tbl.IsTanoraiCelunakJelolt
,tbl.TantargyId
,tbl.TantargyNev
,tbl.TanarId
,tbl.TanarNev
,tbl.OraSorszam
,tbl.OraKezdete
,tbl.TanitasiOraId
,tm.ID AS MulasztasId
,tm.C_TIPUS AS MulasztasTipus
,tm.C_IGAZOLT AS IsIgazolt
,tm.C_IGAZOLASTIPUSA AS IgazolasTipus
,tm.C_MEGJEGYZES AS Megjegyzes
,tm.C_KESESPERCBEN AS KesesPercben
FROM (
SELECT
C_TANULOID, C_OSZTALYCSOPORTID
FROM
T_TANULOCSOPORT
WHERE
C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL)
AND TOROLT = 'F'
AND C_TANULOID IN (
SELECT C_TANULOID
FROM T_TANULOCSOPORT
WHERE
T_TANULOCSOPORT.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #TempTable)
AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
)
) tcs
CROSS JOIN #TempTable tbl
INNER JOIN T_FELHASZNALO ft ON
tcs.C_TANULOID = ft.ID
AND ft.TOROLT = 'F'
LEFT JOIN T_TANULOMULASZTAS tm ON
tcs.C_TANULOID = tm.C_ORATANULOIID
AND tm.C_TANITASIORAKID = tbl.TanitasiOraId
AND tm.TOROLT = 'F'
AND tm.C_TIPUS != 1817
WHERE
tcs.C_TANULOID IN (
SELECT C_TANULOID
FROM T_TANULOCSOPORT
WHERE
tbl.OsztalyCsoportId = T_TANULOCSOPORT.C_OSZTALYCSOPORTID
AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
)
AND (tm.C_TIPUS IS NULL OR tm.C_TIPUS <> 1817)
ORDER BY
ft.C_NYOMTATASINEV
END
GO

View file

@ -0,0 +1,255 @@
DROP PROCEDURE IF EXISTS [dbo].[sp_GetTanulokMulasztasaiKesesei]
GO
-- ==========================================================================================
-- Description: <Az osztoly/csoport tanulóinak vagy egy adott tanulónak a mulasztásai>
-- ==========================================================================================
CREATE PROCEDURE [dbo].[sp_GetTanulokMulasztasaiKesesei]
@pIntezmenyId INT
,@pTanevId INT
,@pOsztalyCsoportId INT = NULL
,@pTanuloId INT = NULL
,@pIsCsoportVez INT = 0
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@elmeletiOraPercben INT = 45
,@gyakorlatiOraPercben INT = 45
,@osztalyCsoportNev NVARCHAR(200)
SELECT
@osztalyCsoportNev = C_NEV
FROM
T_OSZTALYCSOPORT
WHERE
ID = @pOsztalyCsoportId
AND T_OSZTALYCSOPORT.TOROLT = 'F'
CREATE TABLE #Tanulok(Id INT PRIMARY KEY)
IF @pTanuloId IS NOT NULL
BEGIN
INSERT INTO #Tanulok (Id) VALUES (@pTanuloId)
END
ELSE BEGIN
INSERT INTO
#Tanulok (Id)
SELECT
C_TANULOID
FROM
T_TANULOCSOPORT_OSSZES tcs
WHERE
tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND tcs.C_BELEPESDATUM <= GETDATE()
AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)
AND tcs.TOROLT = 'F'
END
DECLARE @sql nvarchar(max) = ''
SET @sql += N'
SELECT
fh.ID TanuloId
,fh.C_NYOMTATASINEV TanuloNev
,fh.C_SZULETESIDATUM SzuletesiIdo
,fh.C_ANYJANEVE AnyjaNeve
,@osztalyCsoportNev OsztCsopNev
,ISNULL(m.[hianyzasIgazolandoTanorai], 0) TanoraiHianyzasIgazolando
,ISNULL(m.[hianyzasIgazolandoTanoranKivuli], 0) TanoranKivuliHianyzasIgazolando
,ISNULL(m.[hianyzasIgazoltTanorai], 0) TanoraiHianyzasIgazolt
,ISNULL(m.[hianyzasIgazoltTanoranKivuli], 0) TanoranKivuliHianyzasIgazolt
,ISNULL(m.[hianyzasIgazolatlanTanorai], 0) TanoraiHianyzasIgazolatlan
,ISNULL(m.[hianyzasIgazolatlanTanoranKivuli], 0) TanoranKivuliHianyzasIgazolatlan
,ISNULL(m.[kesesIgazolandoTanorai], 0) TanoraiKesesDarabszamIgazolando
,ISNULL(m.[kesesIgazoltTanorai], 0) TanoraiKesesDarabszamIgazolt
,ISNULL(m.[kesesIgazolatlanTanorai], 0) TanoraiKesesDarabszamIgazolatlan
,ISNULL(k.[kesesIgazolandoTanoraiPerc], 0) TanoraiKesesIgazolandoPerc
,ISNULL(k.[kesesIgazoltTanoraiPerc], 0) TanoraiKesesIgazoltPerc
,ISNULL(k.[kesesIgazolatlanTanoraiPerc], 0) TanoraiKesesIgazolatlanPerc
,ISNULL(kp.[kesesIgazolandoTanoraiPluszOra], 0) SzamitottKesesIgazolando
,ISNULL(kp.[kesesIgazoltTanoraiPluszOra], 0) SzamitottKesesIgazolt
,ISNULL(kp.[kesesIgazolatlanTanoraiPluszOra], 0) SzamitottKesesIgazolatlan
FROM (
SELECT
ID
,C_NYOMTATASINEV
,C_SZULETESIDATUM
,C_ANYJANEVE
FROM
T_FELHASZNALO_OSSZES fh
WHERE
EXISTS (SELECT 1 FROM #Tanulok tk WHERE tk.Id = fh.ID)
) fh
LEFT JOIN (
SELECT
tanuloId
,[hianyzasIgazolandoTanorai]
,[hianyzasIgazolandoTanoranKivuli]
,[hianyzasIgazoltTanorai]
,[hianyzasIgazoltTanoranKivuli]
,[hianyzasIgazolatlanTanorai]
,[hianyzasIgazolatlanTanoranKivuli]
,[kesesIgazolandoTanorai]
,[kesesIgazoltTanorai]
,[kesesIgazolatlanTanorai]
FROM (
SELECT
x.tanuloId
,CASE mulasztasTipus WHEN 1500 THEN ''Hianyzas'' WHEN 1499 THEN ''Keses'' END +
CASE WHEN isIgazolt IS NULL THEN ''Igazolando'' WHEN isIgazolt = ''T'' THEN ''Igazolt'' WHEN isIgazolt = ''F'' THEN ''Igazolatlan'' END +
CASE isTanorai WHEN ''T'' THEN ''Tanorai'' WHEN ''F'' THEN ''TanoranKivuli'' END AS piv
,cnt
FROM (
SELECT
m.C_ORATANULOIID AS tanuloId
,m.C_TIPUS mulasztasTipus
,m.C_IGAZOLT isIgazolt
,IIF(cs.ID IS NULL, ''T'', ''F'') AS isTanorai
,COUNT(1) AS cnt
FROM T_TANULOMULASZTAS_OSSZES m
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID ' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
SET @sql += N'
LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID AND cs.C_TIPUSA NOT IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND m.C_ORATANULOIID = tcs.C_TANULOID AND tcs.TOROLT = ''F''
WHERE m.C_INTEZMENYID = @pIntezmenyId
AND m.C_TANEVID = @pTanevId
AND m.Torolt =''F''
AND EXISTS (SELECT 1 FROM #Tanulok tk WHERE tk.Id = m.C_ORATANULOIID)
AND tcs.C_BELEPESDATUM <= tn.C_DATUM
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tn.C_DATUM)
AND m.C_TIPUS != 1817
GROUP BY m.C_ORATANULOIID, m.C_TIPUS, m.C_IGAZOLT, IIF(cs.ID IS NULL, ''T'', ''F'')
) x
) p
PIVOT (
MAX(cnt)
FOR piv IN ([hianyzasIgazolandoTanorai], [hianyzasIgazolandoTanoranKivuli], [hianyzasIgazoltTanorai], [hianyzasIgazoltTanoranKivuli], [hianyzasIgazolatlanTanorai], [hianyzasIgazolatlanTanoranKivuli], [kesesIgazolandoTanorai], [kesesIgazoltTanorai], [kesesIgazolatlanTanorai])
) AS pvt
) m ON fh.ID = m.tanuloId
'
SET @sql += N'
LEFT JOIN (
SELECT
tanuloId
,[kesesIgazolandoTanoraiPerc]
,[kesesIgazoltTanoraiPerc]
,[kesesIgazolatlanTanoraiPerc]
FROM (
SELECT
x.tanuloId
,''Keses'' +
CASE WHEN isIgazolt IS NULL THEN ''Igazolando'' WHEN isIgazolt = ''T'' THEN ''Igazolt'' WHEN isIgazolt = ''F'' THEN ''Igazolatlan'' END +
''TanoraiPerc'' AS piv
,kesesPercben
FROM (
SELECT
m.C_ORATANULOIID AS tanuloId
,m.C_IGAZOLT isIgazolt
,SUM(m.C_KESESPERCBEN) AS kesesPercben
FROM T_TANULOMULASZTAS_OSSZES m
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID ' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
SET @sql += N'
LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND m.C_ORATANULOIID = tcs.C_TANULOID AND tcs.TOROLT = ''F''
WHERE m.C_INTEZMENYID = @pIntezmenyId
AND m.C_TANEVID = @pTanevId
AND m.Torolt =''F''
AND EXISTS (SELECT 1 FROM #Tanulok tk WHERE tk.Id = m.C_ORATANULOIID)
AND (cs.ID IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId)))
AND tcs.C_BELEPESDATUM <= tn.C_DATUM
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tn.C_DATUM)
AND m.C_TIPUS = 1499
GROUP BY m.C_ORATANULOIID, m.C_IGAZOLT
) x
) p
PIVOT (
MAX(kesesPercben)
FOR piv IN ([kesesIgazolandoTanoraiPerc], [kesesIgazoltTanoraiPerc], [kesesIgazolatlanTanoraiPerc])
) AS pvt
) k ON k.tanuloId = m.tanuloId
'
SET @sql += N'
LEFT JOIN (
SELECT
tanuloId
,[kesesIgazolandoTanoraiPluszOra]
,[kesesIgazoltTanoraiPluszOra]
,[kesesIgazolatlanTanoraiPluszOra]
FROM (
SELECT
x.tanuloId
,''Keses'' +
CASE WHEN isIgazolt IS NULL THEN ''Igazolando'' WHEN isIgazolt = ''T'' THEN ''Igazolt'' WHEN isIgazolt = ''F'' THEN ''Igazolatlan'' END +
''TanoraiPluszOra'' AS piv
,kesesOraban
FROM (
SELECT
xx.tanuloId
,xx.isIgazolt
,SUM(xx.keses / (CASE WHEN isGyakorlati = ''F'' THEN @elmeletiOraPercben ELSE @gyakorlatiOraPercben END)) AS kesesOraban
FROM (
SELECT
m.C_ORATANULOIID AS tanuloId
,m.C_IGAZOLT isIgazolt
,t.C_GYAKORLATI AS isGyakorlati
,SUM(m.C_KESESPERCBEN) AS keses
FROM T_TANULOMULASZTAS_OSSZES m
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
SET @sql += N'
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = tn.C_TANTARGYID
LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND m.C_ORATANULOIID = tcs.C_TANULOID AND tcs.TOROLT = ''F''
WHERE m.C_INTEZMENYID = @pIntezmenyId
AND m.C_TANEVID = @pTanevId
AND EXISTS (SELECT 1 FROM #Tanulok tk WHERE tk.Id = m.C_ORATANULOIID)
AND (cs.ID IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId)))
AND tcs.C_BELEPESDATUM <= tn.C_DATUM
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tn.C_DATUM)
AND m.C_TIPUS = 1499
AND m.TOROLT = ''F''
GROUP BY
m.C_ORATANULOIID
,m.C_IGAZOLT
,t.C_GYAKORLATI
) xx
GROUP BY tanuloId, xx.isIgazolt
) x
) p
PIVOT (
MAX(kesesOraban)
FOR piv IN ([kesesIgazolandoTanoraiPluszOra], [kesesIgazoltTanoraiPluszOra], [kesesIgazolatlanTanoraiPluszOra])
) AS pvt
) kp ON m.tanuloId = kp.tanuloId
'
EXEC sp_executesql @sql, N'
@pIntezmenyId INT
,@pTanevId INT
,@pOsztalyCsoportId INT
,@pTanuloId INT
,@pIsCsoportVez INT
,@elmeletiOraPercben INT
,@gyakorlatiOraPercben INT
,@osztalyCsoportNev NVARCHAR(200)'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pIsCsoportVez = @pIsCsoportVez
,@elmeletiOraPercben = @elmeletiOraPercben
,@gyakorlatiOraPercben = @gyakorlatiOraPercben
,@osztalyCsoportNev = @osztalyCsoportNev
END
GO