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,247 @@
DROP PROCEDURE IF EXISTS sp_GetTanuloiAdatlapAdatok
GO
CREATE PROCEDURE [dbo].[sp_GetTanuloiAdatlapAdatok]
@osztCsopID int
,@TanevId int
,@pTanuloId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #tanugyiAdatok (TanuloId int,TanugyiAdatId int)
INSERT INTO #tanugyiAdatok (TanuloId,TanugyiAdatId)
SELECT
TanuloId
,TanugyiAdatokId
FROM fnGetOsztalyCsoportTanuloinakTanugyiAdatai (@osztCsopID,default)
DECLARE @DefaultFeladatKategoriaId int = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES tev WHERE tev.ID = @TanevId)
--Fejléc
SELECT
T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve,
T_INTEZMENYADATOK_OSSZES.C_VAROS IntezmenyVaros,
dbo.fnGetDokumentumIntezmenyCime(@tanevId) IntezmenyCime,
T_INTEZMENYADATOK_OSSZES.C_OMKOD OMKod,
T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM TELEFON,
T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
T_TANEV_OSSZES.C_NEV TANEV,
o.C_OSZTALYFONOKID PartnerID,
f.C_NYOMTATASINEV OSZTALYFONOK,
ocs.C_NEV OSZTALYNEV
,@osztCsopID OsztalyId
FROM T_INTEZMENYADATOK_OSSZES
INNER JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID and T_TANEV_OSSZES.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = @osztCsopID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
LEFT JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID AND f.TOROLT = 'F'
WHERE
T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
AND T_INTEZMENYADATOK_OSSZES.C_TANEVID = @TanevId
CREATE TABLE #EmailCimTableTemp (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO #EmailCimTableTemp
SELECT
TanuloId
,C_EMAILCIM
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulo
INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
WHERE
email.TOROLT = 'F'
AND email.C_TANEVID = @TanevId
AND LEN(C_EMAILCIM) > 0
CREATE TABLE #EmailCimTable (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO #EmailCimTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CAST(Btemp.EmailCim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM #EmailCimTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Email
FROM #EmailCimTableTemp temp
CREATE TABLE #TelefonszamTableTemp (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
INSERT INTO #TelefonszamTableTemp
SELECT
TanuloId
,C_TELEFONSZAM
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
WHERE
telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @TanevId
AND LEN(C_TELEFONSZAM) > 0
CREATE TABLE #TelefonszamTable (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
INSERT INTO #TelefonszamTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CAST(Btemp.Telefonszam AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM #TelefonszamTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Telefonszam
FROM #TelefonszamTableTemp temp
CREATE TABLE #TanuloCimTable (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
INSERT INTO #TanuloCimTable
SELECT DISTINCT
TanuloId
,STUFF((
SELECT CAST(Btemp.Cim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @osztCsopID) btemp
WHERE
temp.TanuloId = btemp.TanuloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Cim
,temp.CimTipusa
FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @osztCsopID) temp
CREATE TABLE #GondviselokTableTemp (FelhasznaloId INT, Gondviselo NVARCHAR(MAX))
INSERT INTO #GondviselokTableTemp
SELECT
Gondviselo.TanuloId TanuloId
,Gondviselo.GondviseloNev + ISNULL('('+rokonsagiFoka.C_NAME+')', '') Gondviselo
FROM fnGetDokumentumGondviselok (@osztCsopID, @tanevId, 'F', 'T') Gondviselo
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES rokonsagiFoka ON Gondviselo.RokonsagifokId = rokonsagiFoka.ID AND rokonsagiFoka.C_TANEVID = @TanevId
CREATE TABLE #GondviselokTable (FelhasznaloId INT, Gondviselo NVARCHAR(MAX))
INSERT INTO #GondviselokTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT ', ' + btemp.Gondviselo
FROM #GondviselokTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') Gondviselo
FROM #GondviselokTableTemp temp
--Tanulók Adatai
SELECT DISTINCT
tta.C_BEIRASINAPLOSORSZAM,
tanulok.NaploSorszam NaploSorszam,
tanulok.TorzslapSzam TorzslapSzam,
T_TANEV_OSSZES.C_NEV TANEV,
T_OSZTALYCSOPORT_OSSZES.C_NEV OSZTALYNEV,
T_OSZTALY_OSSZES.C_KEPZESIFORMA Kepzesiforma,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV NEV,
gondviselo.Gondviselo GONDVISELO,
T_FELHASZNALO_OSSZES.C_SZULETESINEV SZULETESINEV,
T_FELHASZNALO_OSSZES.C_ANYJANEVE ANYJANEVE,
T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO,
T_FELHASZNALO_OSSZES.C_SZULETESIHELY,
T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG Szuletesiorszag,
FORMAT(T_FELHASZNALO_OSSZES.C_SZULETESIDATUM, 'yyyy.MM.dd.') C_SZULETESIDATUM,
T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA Allampolgarsag,
T_FELHASZNALO_OSSZES.C_ANYANYELVE Anyanyelv,
tta.C_NYILVANTARTASKEZDETE,
tta.C_TANKOTELEZETT Tankotelezett,
tta.C_TANKOTELEZETTSEGVEGE,
tta.C_JOGVISZONYVARHATOBEFEJEZESE,
T_TANULO_OSSZES.C_DIAKIGAZOLVANYSZAM,
T_TANULO_OSSZES.C_DIAKIGAZOLVANYKELTE,
T_TANULO_OSSZES.C_BANKSZAMLASZAM,
AllandoLakcim.Cim,
TartozkodasiHely.CIM TartozkodasiHely,
telefon.Telefonszam C_TELEFONSZAM,
email.EmailCim C_EMAILCIM,
tta.C_BEJARO Bejaro,
tta.C_SZAKMAIGYAKORLATON Szakmaigyak,
tta.C_VENDEG Vendeg,
tta.C_JOGVISZONYATSZUNETELTETO Jogviszonyszunetelteto,
tta.C_MAGANTANULO Magantanulo,
maganTanuloOk.C_NAME as C_MAGANTANULOSAGANAKOKA,
tta.C_MAGANTANULOSAGKEZDETE,
T_TANULO_OSSZES.C_SZAKKEPESITESSZAMA,
T_TANULO_OSSZES.C_TANULOIJOGVISZONYOSELTARTOTT,
T_TANULO_OSSZES.C_TOBBGYERMEKIGAZOLASSZAMA,
tta.C_EVISMETLO Evismetlo,
T_TANULO_OSSZES.C_SZOCIALISTAMOGATAS Szoctam,
T_TANULO_OSSZES.C_HATRANYOSHELYZETU,
T_TANULO_OSSZES.C_VESZELYEZTETETT Veszelyeztetett,
T_TANULO_OSSZES.C_HALMOZOTTANFOGYATEKOS Halmfogyatekos,
T_TANULO_OSSZES.C_ETKEZESIKEDVEZMENY,
tta.C_TERITESIDIJATFIZETO Teriteses,
tta.C_TANDIJATFIZETO Tandijas,
T_TANULO_OSSZES.C_INGYENESTANKONVYELLATASA,
tta.C_TANULOSZERZODESES Tanszerzodeses,
tta.C_POLGARISZERZODESES Polgszerzodeses,
T_TANULO_OSSZES.C_RENDSZERESGYERMEKVEDELMIKEDV,
T_TANULO_OSSZES.C_ALLAMIGONDOZOTT Allamigond,
T_TANULO_OSSZES.C_KOLLEGIUMIELLATASOS Kollegiumi,
T_TANULO_OSSZES.C_TARTOSGYOGYKEZELESSZAMA,
T_TANULO_OSSZES.C_SAJATOSNEVELESU Sajatosnevelesu,
T_TANULO_OSSZES.C_SNILETSZAMSULY,
T_TANULO_OSSZES.C_SNIKIALLITOINTEZMENY,
FORMAT(T_TANULO_OSSZES.C_SNIOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') C_SNIOKMANYERVENYESSEGKEZDETE,
T_TANULO_OSSZES.C_BTMPROBLEMAS Btmproblemas,
T_TANULO_OSSZES.C_BTMLETSZAMSULY,
T_TANULO_OSSZES.C_BTMHATAROZATOKMANYSZAM,
FORMAT(T_TANULO_OSSZES.C_BTMOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') C_BTMOKMANYERVENYESSEGKEZDETE,
T_TANULO_OSSZES.C_BTMKIALLITOINTEZMENY,
T_TANULO_OSSZES.C_ELSOINTEZMENYOMKOD,
T_FELHASZNALO_OSSZES.C_IGAZOLVANYSZAM,
igazolvanyTipusa.C_NAME AS IgazolvanyTipusa
,T_TANULO_OSSZES.ID AS TanuloId
,@osztCsopID AS OsztalyId
--megjegyzés
FROM T_FELHASZNALO_OSSZES
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulok ON tanulok.TanuloId = T_FELHASZNALO_OSSZES.Id
INNER JOIN T_TANULO_OSSZES on T_TANULO_OSSZES.ID = T_FELHASZNALO_OSSZES.ID
INNER JOIN T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_TANULOID = T_FELHASZNALO_OSSZES.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId /*TODO:Tobb Osztaly*//*OM-1662*/
INNER JOIN T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID
INNER JOIN #tanugyiAdatok ta ON ta.TanuloId=T_FELHASZNALO_OSSZES.ID
INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.ID=ta.TanugyiAdatId
LEFT JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
LEFT JOIN #TelefonszamTable telefon on telefon.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
LEFT JOIN #EmailCimTable email on email.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
LEFT JOIN #GondviselokTable gondviselo on gondviselo.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES igazolvanyTipusa ON T_FELHASZNALO_OSSZES.C_IGAZOLVANYTIPUSA = igazolvanyTipusa.ID AND igazolvanyTipusa.C_TANEVID = @TanevId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES maganTanuloOk ON tta.C_MAGANTANULOSAGANAKOKAID = maganTanuloOk.ID AND maganTanuloOk.C_TANEVID = @TanevId AND maganTanuloOk.TOROLT='F'
LEFT JOIN #TanuloCimTable AllandoLakcim ON AllandoLakcim.FelhasznaloId = T_FELHASZNALO_OSSZES.ID AND AllandoLakcim.Cimtipusa = 907
LEFT JOIN #TanuloCimTable TartozkodasiHely ON TartozkodasiHely.FelhasznaloId = T_FELHASZNALO_OSSZES.ID AND TartozkodasiHely.Cimtipusa = 909
WHERE
T_FELHASZNALO_OSSZES.TOROLT = 'F'
AND T_TANEV_OSSZES.TOROLT = 'F'
AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
AND @pTanuloId IS NULL OR T_TANULO_OSSZES.ID = @pTanuloId
ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
SELECT
o.ID AS OsztalyId
,ocs.C_EVFOLYAMTIPUSA AS EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,o.C_KEPZESIFORMA AS KepzesiForma
,o.C_OSZTALYFONOKID AS OsztalyfonokId
,o.C_TANTERVID AS TantervId
,o.C_SZAKMACSOPORT AS SzakmaCsoport
,o.C_AGAZAT AS Agazat
,o.C_SZAKKEPESITES AS Szakkepesites
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALY_OSSZES AS o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F'
WHERE o.ID = @osztCsopID
END
GO

View file

@ -0,0 +1,256 @@
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'
INNER JOIN T_TANULO tanulo ON tanulo.ID = m.C_ORATANULOIID
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

View file

@ -0,0 +1,42 @@
DROP PROCEDURE IF EXISTS dbo.uspGetMulasztasokDatumNezetDataByOsztalyCsoportId
GO
CREATE PROCEDURE dbo.uspGetMulasztasokDatumNezetDataByOsztalyCsoportId
@pMulasztasTipusJelenlet int,
@pMulasztasTipusUres int,
@pAktualisTanevId int,
@pOsztalyCsoportId int,
@pIntezmenyId int,
@pIsCsoportVezeto int
AS
BEGIN
SET DATEFIRST 1; -- Sets the first day of the week to a number from 1 (Monday) through 7 (Sunday).
SELECT
MulasztasDatuma
,MulasztasokSzama
,d.C_NAME AS MulasztasNapja
,OsztalyCsoportId, d.C_INTEZMENYID
FROM (
SELECT
tn.C_DATUM AS MulasztasDatuma,
COUNT(C_TANULOID) AS MulasztasokSzama,
tcs.C_OSZTALYCSOPORTID AS OsztalyCsoportId
FROM T_TANULOCSOPORT tcs
INNER JOIN T_TANULOMULASZTAS tm ON tm.C_ORATANULOIID = tcs.C_TANULOID
INNER JOIN T_TANITASIORA tn ON tn.ID = tm.C_TANITASIORAKID AND (@pIsCsoportVezeto = 0 OR tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId)
INNER JOIN T_TANULO tanulo ON tanulo.ID = tm.C_ORATANULOIID
WHERE tm.TOROLT = 'F'
AND tm.C_IGAZOLT IS NULL AND tm.C_TIPUS <> @pMulasztasTipusJelenlet AND tm.C_TIPUS <> @pMulasztasTipusUres AND tm.C_TANEVID = @pAktualisTanevId AND tm.C_INTEZMENYID = @pIntezmenyId
AND tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND tcs.C_BELEPESDATUM <= tn.C_DATUM AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tn.C_DATUM)
GROUP BY
tn.C_DATUM,
tcs.C_OSZTALYCSOPORTID
) x
INNER JOIN T_DICTIONARYITEMBASE d ON d.C_VALUE = DATEPART(dw,x.MulasztasDatuma)
AND C_TYPE = N'HetnapjaTipus'
AND d.C_INTEZMENYID = @pIntezmenyId
AND d.C_TANEVID = @pAktualisTanevId
ORDER BY MulasztasDatuma DESC
END
GO