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,35 @@
DECLARE @lekerdezesDatuma nvarchar(12) = CONVERT(nvarchar, GETDATE(), 23)
DECLARE tanevCursor CURSOR LOCAL FOR
SELECT t.ID AS TanevId, telozo.ID AS ElozoTanevId
FROM T_TANEV t
INNER JOIN T_TANEV telozo ON telozo.C_INTEZMENYID = t.C_INTEZMENYID AND telozo.TOROLT = 'F'
WHERE t.C_AKTIV = 'T'
AND t.C_SORSZAM = 42
AND t.TOROLT = 'F'
AND telozo.C_SORSZAM = t.C_SORSZAM - 2
DECLARE @tanevId int
,@elozoTanevId int
OPEN tanevCursor
FETCH NEXT FROM tanevCursor INTO @tanevId, @elozoTanevId
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC uspUpdateSzamitottAtlagEvvegi
@pTanevId = @elozoTanevId
,@pKovTanevId = @tanevId
,@pFelhasznaloId = 0
EXEC uspUpdateTanuloSzakkepzesiJuttatasok
@pTanevId = @tanevId
,@pMaxIgazolatlanokSzama = 6
,@pMinOsztondijAtlag = 2.00
,@pOsztondijAlap = 167400
,@pLekerdezesDatuma = @lekerdezesDatuma
,@pFelhasznaloId = 0
FETCH NEXT FROM tanevCursor INTO @tanevId, @elozoTanevId
END
CLOSE tanevCursor
DEALLOCATE tanevCursor

View file

@ -0,0 +1,65 @@
DROP FUNCTION IF EXISTS fnGetTanuloElutasitasOka
GO
CREATE FUNCTION fnGetTanuloElutasitasOka (
@pJogviszonyTipus int
,@pBesorolas char(1)
,@pEvfolyamTipus int
,@pIsMasodikSzakma char(1)
,@pEvIsmetlo char(1)
,@pMulSzam int
,@pMaxMulSzam int
,@pIsDualisKepzesben char(1)
,@pTechnikaiOsztaly char(1)
,@pIsVendegTanulo char(1)
,@pIsJogviszonyatSzunetelteto char(1)
,@pKeresztfeleves char(1)
,@pBeszamitasosTanulo char(1)
,@pOsztondijbolKizarva char(1)
,@pMulasztasMiattKizart char(1)
,@IsSzktJogosult char(1)
,@pAtlag float
,@pMinAtlag float
,@pIsAtlagFuggo bit
,@pLekerdezesDatuma datetime
,@pTanevSorszam int
)
RETURNS int
BEGIN
DECLARE @retval int = 0
IF @pJogviszonyTipus <> 7860
SET @retval += 1
IF @pBesorolas = 'F'
SET @retval += 2
IF @pIsMasodikSzakma = 'T'
SET @retval += 8
IF @pEvIsmetlo = 'T'
SET @retval += 16
IF @pMulSzam > @pMaxMulSzam
SET @retval += 32
IF @pIsDualisKepzesben = 'T'
SET @retval += 64
IF @pIsAtlagFuggo = 1
BEGIN
IF @pAtlag < @pMinAtlag
SET @retval += 128
END
IF @pTechnikaiOsztaly = 'T'
SET @retval += 256
IF @pIsVendegTanulo = 'T'
SET @retval += 512
IF @pIsJogviszonyatSzunetelteto = 'T'
SET @retval += 1024
IF @pKeresztfeleves = 'T'
SET @retval += 2048
IF @pOsztondijbolKizarva = 'T'
SET @retval += 4096
IF @pMulasztasMiattKizart = 'T'
SET @retval += 8192
IF @IsSzktJogosult = 'F'
AND @pEvfolyamTipus NOT IN (7904, 7889, 7868) -- dobbantó, mûhelyiskola, orientációs évfolyam szkt beállítás nélkül is kap
AND @pBeszamitasosTanulo <> 'T' -- beszámításos tanuló is kap
SET @retval += 16384
return @retval
END
GO

View file

@ -0,0 +1,39 @@
-- Juttatáshoz átlag számítása az előző év végi jegyek alapján
DROP PROCEDURE IF EXISTS uspUpdateSzamitottAtlagEvvegi
GO
CREATE PROCEDURE uspUpdateSzamitottAtlagEvvegi
@pTanevId int
,@pKovTanevId int
,@pFelhasznaloId int
AS
BEGIN
UPDATE dk SET dk.C_SZAMITOTTATLAG = x.ATLAG
,dk.MODIFIER = @pFelhasznaloId
,dk.LASTCHANGED = GETDATE()
,dk.SERIAL = dk.SERIAL + 1
FROM T_TANULO_OSSZES dk
INNER JOIN (
SELECT er.C_TANULOID, AVG(ISNULL(dpot.C_VALUE, d.C_VALUE) * 1.0) AS ATLAG
FROM T_TANULOERTEKELES_OSSZES er
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = er.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = 7553 AND ocs.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = er.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = er.C_TANEVID AND d.TOROLT = 'F'
LEFT JOIN T_TANULOERTEKELES_OSSZES erpot ON er.C_TANULOID = erpot.C_TANULOID AND er.TOROLT = 'F' AND erpot.C_TANTARGYID = er.C_TANTARGYID AND erpot.C_TIPUSID = 6917 -- Javítóvizsga
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dpot ON d.ID = erpot.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = erpot.C_TANEVID AND dpot.TOROLT = 'F'
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = er.C_TANTARGYID AND tgy.TOROLT = 'F'
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.ID = cs.C_TIPUSA AND cs.C_ALTANEVID = cst.C_ALTANEVID AND cst.TOROLT = 'F'
WHERE er.C_TIPUSID = 1520 /* Év végi jegy */
AND er.TOROLT = 'F'
AND er.C_ISMAGATARTASSZORGALOM = 'F'
AND er.C_TANEVID = @pTanevId
AND tgy.C_ISOSZTALYNAPLOBANEMLATSZIK = 'F' AND tgy.C_ISTANULMANYIATLAGBANEMSZAMIT = 'F'
AND ((cs.ID IS NULL OR cst.C_ISTANORAICELU = 'T' AND tgy.C_FOTARGYE = 'T') OR (tgy.C_FOTARGYE = 'F' AND tgy.C_ALTANTARGYKENTNYOMTATVANYBAN = 'T'))
GROUP BY er.C_TANULOID
) x ON x.C_TANULOID = dk.ELOZOTANEVIREKORDID
WHERE dk.TOROLT = 'F'
AND dk.C_ALTANEVID = @pKovTanevId
END
GO

View file

@ -0,0 +1,716 @@
DROP PROCEDURE IF EXISTS uspUpdateTanuloSzakkepzesiJuttatasok
GO
CREATE PROCEDURE uspUpdateTanuloSzakkepzesiJuttatasok
@pTanevId int
,@pMaxIgazolatlanokSzama int
,@pMinOsztondijAtlag float
,@pOsztondijAlap int
,@pLekerdezesDatuma datetime
,@pTanuloId int = NULL
,@pTanuloIdList nvarchar(max) = NULL
,@pFelhasznaloId int
,@pGeneraltHonap int = NULL
,@pVisszaallitasDatuma datetime = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@sql nvarchar(max) = N''
,@vizsgaltHonap datetime
,@hatarnap int
,@szorzo int
,@defaultJuttatasHatarnap int = 15
IF @pMaxIgazolatlanokSzama IS NULL BEGIN
SET @pMaxIgazolatlanokSzama = 6
END
IF @pLekerdezesDatuma IS NULL OR @pLekerdezesDatuma > GETDATE() BEGIN
SET @pLekerdezesDatuma = GETDATE()
END
SELECT TOP (1) @hatarnap = ISNULL(DATEPART(DAY, C_JUTTATASHATARNAP), @defaultJuttatasHatarnap) + 1
FROM T_INTEZMENYADATOK
WHERE C_TANEVID = @pTanevId
CREATE TABLE #hatarnapok (
C_NAPDATUMA datetime primary key
)
INSERT INTO #hatarnapok
SELECT C_NAPDATUMA
FROM T_NAPTARINAP
WHERE DATEPART(day, C_NAPDATUMA) = @hatarnap
AND DATEPART(month, C_NAPDATUMA) <> 9
AND C_TANEVID = @pTanevId
SET @vizsgaltHonap = (SELECT MIN(C_NAPDATUMA) FROM #hatarnapok
WHERE C_NAPDATUMA > @pLekerdezesDatuma)
IF @vizsgaltHonap IS NULL BEGIN
SET @vizsgaltHonap = (SELECT MAX(C_NAPDATUMA) FROM #hatarnapok)
END
SET @vizsgaltHonap = DATEADD(month, DATEDIFF(month, 0, @vizsgaltHonap), 0)
IF @pTanuloIdList IS NOT NULL BEGIN
SET @sql += N'
CREATE TABLE #tanuloIdk(tanuloid int)
INSERT INTO #tanuloIdk (tanuloId)
SELECT value FROM STRING_SPLIT(@ptanuloIdList,'','')'
END
IF @pVisszaallitasDatuma IS NOT NULL BEGIN
SET @sql += N'
CREATE TABLE #T_TANULO (
ID int PRIMARY KEY
,C_EVISMETLO char(1)
,C_ISBESZAMITASOS char(1)
,C_ISMASODIKTOBBSZAKMA char(1)
,C_ISOSZTONDIJBOLKIZARVA char(1)
,C_ISSZAKKEPZESIMUNKASZERZODESS char(1)
,C_JOGVISZONYATSZUNETELTETO char(1)
,C_JOGVISZONYTIPUSID int
,C_KEZIATLAG float
,C_SZAMITOTTATLAG float
,C_TANULOSZERZODESES char(1)
,C_VENDEG char(1)
,C_ISBESZAMITASOSFIXSZAZALEK char(1)
,C_ISMULASZTASMIATTKIZART char(1)
,C_ISSIKERESAGAZATIVIZSGA char(1)
,C_ISATLAGSZAKKEPZESI char(1)
,TOROLT char(1)
)
INSERT INTO #T_TANULO (
ID
,C_EVISMETLO
,C_ISBESZAMITASOS
,C_ISMASODIKTOBBSZAKMA
,C_ISOSZTONDIJBOLKIZARVA
,C_ISSZAKKEPZESIMUNKASZERZODESS
,C_JOGVISZONYATSZUNETELTETO
,C_JOGVISZONYTIPUSID
,C_KEZIATLAG
,C_SZAMITOTTATLAG
,C_TANULOSZERZODESES
,C_VENDEG
,C_ISBESZAMITASOSFIXSZAZALEK
,C_ISMULASZTASMIATTKIZART
,C_ISSIKERESAGAZATIVIZSGA
,C_ISATLAGSZAKKEPZESI
,TOROLT
) SELECT
ID
,C_EVISMETLO
,C_ISBESZAMITASOS
,C_ISMASODIKTOBBSZAKMA
,C_ISOSZTONDIJBOLKIZARVA
,C_ISSZAKKEPZESIMUNKASZERZODESS
,C_JOGVISZONYATSZUNETELTETO
,C_JOGVISZONYTIPUSID
,C_KEZIATLAG
,C_SZAMITOTTATLAG
,C_TANULOSZERZODESES
,C_VENDEG
,C_ISBESZAMITASOSFIXSZAZALEK
,C_ISMULASZTASMIATTKIZART
,C_ISSIKERESAGAZATIVIZSGA
,C_ISATLAGSZAKKEPZESI
,TOROLT
FROM T_TANULO
WHERE C_ALTANEVID = @pTanevId
CREATE TABLE #T_OSZTALYCSOPORT (
ID int PRIMARY KEY
,C_EVFOLYAMTIPUSA int
,C_ISTECHNIKAI char(1)
,C_KERESZTFELEVES char(1)
,C_FELADATKATEGORIAID int
,C_VEGZOSEVFOLYAM char(1)
,TOROLT char(1)
)
INSERT INTO #T_OSZTALYCSOPORT (
ID
,C_EVFOLYAMTIPUSA
,C_ISTECHNIKAI
,C_KERESZTFELEVES
,C_FELADATKATEGORIAID
,C_VEGZOSEVFOLYAM
,TOROLT
) SELECT
ID
,C_EVFOLYAMTIPUSA
,C_ISTECHNIKAI
,C_KERESZTFELEVES
,C_FELADATKATEGORIAID
,C_VEGZOSEVFOLYAM
,TOROLT
FROM T_OSZTALYCSOPORT
WHERE C_TANEVID = @pTanevId
CREATE TABLE #T_TANULOCSOPORT (
ID int PRIMARY KEY
,C_BELEPESDATUM datetime
,C_KILEPESDATUM datetime
,C_JOGVISZONYTIPUSID int
,C_OSZTALYCSOPORTID int
,C_TANULOID int
,TOROLT char(1)
)
INSERT INTO #T_TANULOCSOPORT (
ID
,C_BELEPESDATUM
,C_KILEPESDATUM
,C_JOGVISZONYTIPUSID
,C_OSZTALYCSOPORTID
,C_TANULOID
,TOROLT
) SELECT
ID
,C_BELEPESDATUM
,C_KILEPESDATUM
,C_JOGVISZONYTIPUSID
,C_OSZTALYCSOPORTID
,C_TANULOID
,TOROLT
FROM T_TANULOCSOPORT
WHERE C_TANEVID = @pTanevId
CREATE TABLE #T_TANULOMULASZTAS (
ID int PRIMARY KEY
,C_IGAZOLT char(1)
,C_TIPUS int
,C_TANITASIORAKID int
,C_ORATANULOIID int
,TOROLT char(1)
)
INSERT INTO #T_TANULOMULASZTAS (
ID
,C_IGAZOLT
,C_TIPUS
,C_TANITASIORAKID
,C_ORATANULOIID
,TOROLT
) SELECT
ID
,C_IGAZOLT
,C_TIPUS
,C_TANITASIORAKID
,C_ORATANULOIID
,TOROLT
FROM T_TANULOMULASZTAS
WHERE C_TANEVID = @pTanevId
CREATE TABLE #T_TANULOTANUGYIADATOK (
ID int PRIMARY KEY
,C_EVISMETLO char(1)
,C_ISBESZAMITASOS char(1)
,C_ISMASODIKTOBBSZAKMA char(1)
,C_ISSZAKKEPZESIMUNKASZERZODESS char(1)
,C_JOGVISZONYATSZUNETELTETO char(1)
,C_TANULOEVFOLYAMTIPUSID int
,C_TANULOSZERZODESES char(1)
,C_VENDEG char(1)
,C_TANULOCSOPORTID int
,C_ISBESZAMITASOSFIXSZAZALEK char(1)
,C_AGAZATUJSZKTTIPUSID int
,C_SZAKMATIPUSID int
,TOROLT char(1)
)
INSERT INTO #T_TANULOTANUGYIADATOK (
ID
,C_EVISMETLO
,C_ISBESZAMITASOS
,C_ISMASODIKTOBBSZAKMA
,C_ISSZAKKEPZESIMUNKASZERZODESS
,C_JOGVISZONYATSZUNETELTETO
,C_TANULOEVFOLYAMTIPUSID
,C_TANULOSZERZODESES
,C_VENDEG
,C_TANULOCSOPORTID
,C_ISBESZAMITASOSFIXSZAZALEK
,C_AGAZATUJSZKTTIPUSID
,C_SZAKMATIPUSID
,TOROLT
) SELECT
ID
,C_EVISMETLO
,C_ISBESZAMITASOS
,C_ISMASODIKTOBBSZAKMA
,C_ISSZAKKEPZESIMUNKASZERZODESS
,C_JOGVISZONYATSZUNETELTETO
,C_TANULOEVFOLYAMTIPUSID
,C_TANULOSZERZODESES
,C_VENDEG
,C_TANULOCSOPORTID
,C_ISBESZAMITASOSFIXSZAZALEK
,C_AGAZATUJSZKTTIPUSID
,C_SZAKMATIPUSID
,TOROLT
FROM T_TANULOTANUGYIADATOK
WHERE C_TANEVID = @pTanevId
DECLARE @property TABLE (Tabla nvarchar(100), Oszlop nvarchar(100))
INSERT INTO @property (Tabla, Oszlop) VALUES
(''T_OSZTALYCSOPORT'', ''C_EVFOLYAMTIPUSA'')
,(''T_OSZTALYCSOPORT'', ''C_ISTECHNIKAI'')
,(''T_OSZTALYCSOPORT'', ''C_KERESZTFELEVES'')
,(''T_OSZTALYCSOPORT'', ''C_FELADATKATEGORIAID'')
,(''T_OSZTALYCSOPORT'', ''C_VEGZOSEVFOLYAM'')
,(''T_OSZTALYCSOPORT'', ''TOROLT'')
,(''T_TANULO'', ''C_EVISMETLO'')
,(''T_TANULO'', ''C_ISBESZAMITASOS'')
,(''T_TANULO'', ''C_ISMASODIKTOBBSZAKMA'')
,(''T_TANULO'', ''C_ISOSZTONDIJBOLKIZARVA'')
,(''T_TANULO'', ''C_ISSZAKKEPZESIMUNKASZERZODESS'')
,(''T_TANULO'', ''C_JOGVISZONYATSZUNETELTETO'')
,(''T_TANULO'', ''C_JOGVISZONYTIPUSID'')
,(''T_TANULO'', ''C_KEZIATLAG'')
,(''T_TANULO'', ''C_SZAMITOTTATLAG'')
,(''T_TANULO'', ''C_TANULOSZERZODESES'')
,(''T_TANULO'', ''C_VENDEG'')
,(''T_TANULO'', ''C_ISBESZAMITASOSFIXSZAZALEK'')
,(''T_TANULO'', ''C_ISMULASZTASMIATTKIZART'')
,(''T_TANULO'', ''C_ISSIKERESAGAZATIVIZSGA'')
,(''T_TANULO'', ''C_ISATLAGSZAKKEPZESI'')
,(''T_TANULO'', ''TOROLT'')
,(''T_TANULOCSOPORT'', ''C_BELEPESDATUM'')
,(''T_TANULOCSOPORT'', ''C_KILEPESDATUM'')
,(''T_TANULOCSOPORT'', ''C_JOGVISZONYTIPUSID'')
,(''T_TANULOCSOPORT'', ''TOROLT'')
,(''T_TANULOMULASZTAS'', ''C_IGAZOLT'')
,(''T_TANULOMULASZTAS'', ''C_TIPUS'')
,(''T_TANULOMULASZTAS'', ''C_TANITASIORAKID'')
,(''T_TANULOMULASZTAS'', ''C_ORATANULOIID'')
,(''T_TANULOMULASZTAS'', ''TOROLT'')
,(''T_TANULOTANUGYIADATOK'', ''C_EVISMETLO'')
,(''T_TANULOTANUGYIADATOK'', ''C_ISBESZAMITASOS'')
,(''T_TANULOTANUGYIADATOK'', ''C_ISMASODIKTOBBSZAKMA'')
,(''T_TANULOTANUGYIADATOK'', ''C_ISSZAKKEPZESIMUNKASZERZODESS'')
,(''T_TANULOTANUGYIADATOK'', ''C_JOGVISZONYATSZUNETELTETO'')
,(''T_TANULOTANUGYIADATOK'', ''C_TANULOEVFOLYAMTIPUSID'')
,(''T_TANULOTANUGYIADATOK'', ''C_TANULOSZERZODESES'')
,(''T_TANULOTANUGYIADATOK'', ''C_VENDEG'')
,(''T_TANULOTANUGYIADATOK'', ''TOROLT'')
,(''T_TANULOTANUGYIADATOK'', ''C_ISBESZAMITASOSFIXSZAZALEK'')
,(''T_TANULOTANUGYIADATOK'', ''C_AGAZATUJSZKTTIPUSID'')
,(''T_TANULOTANUGYIADATOK'', ''C_SZAKMATIPUSID'')
DECLARE @sql nvarchar(max)
DECLARE @SqlTable TABLE (Command nvarchar(max), AlterationDate datetime)
INSERT INTO @SqlTable (Command, AlterationDate)
SELECT DISTINCT sqlCmd, x.C_ALTERATIONDATE FROM (
SELECT
''UPDATE #'' + eh.C_ENTITYNAME + '' '' + CASE
WHEN eh.C_REASON = ''New'' THEN ''SET TOROLT = ''''T''''''
WHEN eh.C_REASON = ''Modified'' THEN ''SET '' + eah.C_PROPERTYNAME + '' = '' + ISNULL('''''''' + eah.C_ORIGINALVALUE + '''''''',''NULL '')
WHEN eh.C_REASON = ''Logical Removed'' THEN '' SET TOROLT = ''''F'''''' END
+ '' WHERE ID = '' + CAST(eh.C_ENTITYID AS varchar) sqlCmd
,eh.C_ALTERATIONDATE
FROM T_ENTITYHISTORY eh WITH(NOLOCK)
INNER JOIN T_ENTITYATTRIBUTEHISTORY eah WITH(NOLOCK) ON eah.C_ENTITYHISTORYID = eh.ID
INNER JOIN @property p ON p.Tabla = eh.C_ENTITYNAME AND p.Oszlop = eah.C_PROPERTYNAME
WHERE eh.C_TANEVID = ' + CAST(@pTanevId AS nvarchar(10)) + ' AND eh.C_ALTERATIONDATE >= ''' + FORMAT(@pVisszaallitasDatuma, 'yyyyMMdd') + '''
AND C_ENTITYNAME IN (''T_OSZTALYCSOPORT'', ''T_TANULO'', ''T_TANULOCSOPORT'', ''T_TANULOMULASZTAS'', ''T_TANULOTANUGYIADATOK'')
) x
WHERE x.sqlCmd IS NOT NULL
ORDER BY x.C_ALTERATIONDATE DESC
DECLARE cur CURSOR FOR
SELECT Command FROM @SqlTable ORDER BY AlterationDate desc
OPEN cur
FETCH NEXT FROM cur INTO @sql
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC sp_executesql @sql
FETCH NEXT FROM cur INTO @sql
END
CLOSE cur
DEALLOCATE cur
'
END
SET @sql += N'
DECLARE
@intezmenyId int
,@sorszam int
DECLARE
@jogviszonyVizsgalatEleje datetime
,@jogviszonyVizsgalatVege datetime
SET @jogviszonyVizsgalatEleje = @vizsgaltHonap
SET @jogviszonyVizsgalatVege = DATEADD(day, @pHatarnap - 1, DATEADD(month, DATEDIFF(month, 0, @vizsgaltHonap), 0))
SELECT
@intezmenyId = C_INTEZMENYID
,@sorszam = C_SORSZAM
FROM T_TANEV WHERE ID = @pTanevId
'
SET @sql +=N'
CREATE TABLE #TanuloIgazolatlanMulasztasok (
TanuloId int PRIMARY KEY
,MulasztasokSzama int
)
CREATE TABLE #TanuloAtlag (
TanuloId int PRIMARY KEY
,Atlag float
)
CREATE TABLE #JuttatasOkok (
TanuloId int PRIMARY KEY
,TanulocsoportBelepesDatum datetime
,JogviszonyTipus int
,VanValidBesorolasa char(1)
,EvfolyamTipusa int
,MasodikSzakma char(1)
,Evismetlo char(1)
,IgazolatlanMulasztasokSzama int
,Dualis char(1)
,TechnikaiOsztaly char(1)
,Vendeg char(1)
,IsJogviszonyatSzunetelteto char(1)
,KeresztfelevesOsztaly char(1)
,FelevnelValtos char(1)
,BeszamitasosTanulo char(1)
,OsztondijbolKizarva char(1)
,MulasztasMiattKizart char(1)
,IsSikeresAgazatiVizsga char(1)
,IsAtlagSzakkepzesi char(1)
,IsBeszamitasosFixSzazalek char(1)
,IsSzktJogosult char(1)
,Code nvarchar(3)
,Szazalek int
,ElutasitasOka int
,Szorzo int
,Atlag float
,VegzosEvfolyam char(1)
)
INSERT INTO #TanuloIgazolatlanMulasztasok (
TanuloId
,MulasztasokSzama
) SELECT
tm.C_ORATANULOIID
,COUNT(1) AS CNT
FROM (
SELECT tcs.ID, tcs.C_TANULOID, tcs.C_BELEPESDATUM, tcs.C_KILEPESDATUM, tcs.C_TANEVID
,ROW_NUMBER() OVER (PARTITION BY tcs.C_TANULOID ORDER BY C_BELEPESDATUM DESC) AS rn
FROM ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_TANULOCSOPORT_OSSZES', '#T_TANULOCSOPORT') + ' tcs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID AND o.TOROLT = ''F''
INNER JOIN ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_OSZTALYCSOPORT_OSSZES', '#T_OSZTALYCSOPORT') + ' ocs ON ocs.ID = o.ID
AND ocs.C_FELADATKATEGORIAID = 7553 AND ocs.TOROLT = ''F''
WHERE tcs.TOROLT = ''F''
) AS x
INNER JOIN ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_TANULOMULASZTAS_OSSZES', '#T_TANULOMULASZTAS') + ' tm ON tm.C_ORATANULOIID = x.C_TANULOID
AND tm.TOROLT = ''F''
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.ID = tm.C_TANITASIORAKID AND tao.TOROLT = ''F''
INNER JOIN ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_OSZTALYCSOPORT_OSSZES', '#T_OSZTALYCSOPORT') + ' ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID
AND ocs.C_FELADATKATEGORIAID = 7553 AND ocs.TOROLT = ''F''
' + IIF(@pTanuloIdList IS NOT NULL,'INNER JOIN #tanuloIdk tanulok ON tanulok.tanuloid = tm.C_ORATANULOIID','') + '
WHERE x.rn = 1
AND tao.C_DATUM >= x.C_BELEPESDATUM
AND (tao.C_DATUM < x.C_KILEPESDATUM OR x.C_KILEPESDATUM IS NULL)
AND tm.C_IGAZOLT = ''F''
AND tm.C_TIPUS = 1500
AND tao.C_DATUM < @vizsgaltHonap
' + IIF(@pTanuloId IS NOT NULL,' AND tm.C_ORATANULOIID = @pTanuloid','') + '
' + IIF(@pVisszaallitasDatuma IS NULL, ' AND tm.C_TANEVID = @pTanevId', '') + '
GROUP BY tm.C_ORATANULOIID'
SET @sql +=N'
INSERT INTO #JuttatasOkok(
TanuloId
,TanulocsoportBelepesDatum
,JogviszonyTipus
,VanValidBesorolasa
,EvfolyamTipusa
,MasodikSzakma
,Evismetlo
,IgazolatlanMulasztasokSzama
,Dualis
,TechnikaiOsztaly
,Vendeg
,IsJogviszonyatSzunetelteto
,KeresztfelevesOsztaly
,FelevnelValtos
,BeszamitasosTanulo
,OsztondijbolKizarva
,MulasztasMiattKizart
,IsSikeresAgazatiVizsga
,IsAtlagSzakkepzesi
,IsBeszamitasosFixSzazalek
,IsSzktJogosult
,Code
,ElutasitasOka
,Szorzo
,Atlag
,VegzosEvfolyam
) SELECT
t.ID TanuloId
,o.C_BELEPESDATUM TanulocsoportBelepesDatum
,ISNULL(o.C_JOGVISZONYTIPUSID, t.C_JOGVISZONYTIPUSID) JogviszonyTipus
,IIF(o.C_TANULOID IS NULL,''F'',''T'') VanValidBesorolasa
,o.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ISNULL(o.C_ISMASODIKTOBBSZAKMA,t.C_ISMASODIKTOBBSZAKMA) MasodikSzakma
,ISNULL(o.C_EVISMETLO,t.C_EVISMETLO) Evismetlo
,ISNULL(mul.MulasztasokSzama, 0) IgazolatlanMulasztasokSzama
,CASE
WHEN ISNULL(o.C_TANULOSZERZODESES,t.C_TANULOSZERZODESES) = ''T'' OR ISNULL(o.C_ISSZAKKEPZESIMUNKASZERZODESS,t.C_ISSZAKKEPZESIMUNKASZERZODESS) = ''T''
THEN ''T''
ELSE ''F''
END Dualis
,o.C_ISTECHNIKAI TechnikaiOsztaly
,ISNULL(o.C_VENDEG,t.C_VENDEG) Vendeg
,ISNULL(o.C_JOGVISZONYATSZUNETELTETO,t.C_JOGVISZONYATSZUNETELTETO) IsJogviszonyatSzunetelteto
,o.C_KERESZTFELEVES
,IIF(o.C_EVFOLYAMTIPUSA IN (7866,7883),''T'',''F'') FelevnelValtos
,ISNULL(o.C_ISBESZAMITASOS, t.C_ISBESZAMITASOS) BeszamitasosTanulo
,t.C_ISOSZTONDIJBOLKIZARVA OsztondijbolKizarva
,t.C_ISMULASZTASMIATTKIZART MulasztasMiattKizart
,t.C_ISSIKERESAGAZATIVIZSGA IsSikeresAgazatiVizsga
,t.C_ISATLAGSZAKKEPZESI IsAtlagSzakkepzesi
,ISNULL(o.C_ISBESZAMITASOSFIXSZAZALEK,t.C_ISBESZAMITASOSFIXSZAZALEK) IsBeszamitasosFixSzazalek
,IIF (o.C_AGAZATUJSZKTTIPUSID <> 7920 OR o.C_SZAKMATIPUSID <> 7946, ''T'', ''F'') IsSzktJogosult -- AgazatUjSzktTipus.Na, SzakmaTipus.Na
,o.Code
,dbo.fnGetTanuloElutasitasOka(
COALESCE(o.C_JOGVISZONYTIPUSID,t.C_JOGVISZONYTIPUSID,0)
,IIF(o.C_TANULOID IS NULL,''F'',''T'')
,o.C_EVFOLYAMTIPUSA
,ISNULL(o.C_ISMASODIKTOBBSZAKMA,t.C_ISMASODIKTOBBSZAKMA)
,ISNULL(o.C_EVISMETLO,t.C_EVISMETLO)
,mul.MulasztasokSzama
,@pMaxIgazolatlanokSzama
,CASE
WHEN ISNULL(o.C_TANULOSZERZODESES,t.C_TANULOSZERZODESES) = ''T'' OR ISNULL(o.C_ISSZAKKEPZESIMUNKASZERZODESS,t.C_ISSZAKKEPZESIMUNKASZERZODESS) = ''T''
THEN ''T''
ELSE ''F''
END
,o.C_ISTECHNIKAI
,ISNULL(o.C_VENDEG,t.C_VENDEG)
,ISNULL(o.C_JOGVISZONYATSZUNETELTETO,t.C_JOGVISZONYATSZUNETELTETO)
,o.C_KERESZTFELEVES
,ISNULL(o.C_ISBESZAMITASOS, t.C_ISBESZAMITASOS)
,t.C_ISOSZTONDIJBOLKIZARVA
,t.C_ISMULASZTASMIATTKIZART
,IIF (o.C_AGAZATUJSZKTTIPUSID <> 7920 OR o.C_SZAKMATIPUSID <> 7946, ''T'', ''F'')
,ISNULL(t.C_KEZIATLAG,t.C_SZAMITOTTATLAG)
,@pMinOsztondijAtlag
,IIF (o.Code = ''003''
OR (ISNULL(o.C_ISBESZAMITASOS, t.C_ISBESZAMITASOS) = ''T'' AND ISNULL(o.C_ISBESZAMITASOSFIXSZAZALEK,t.C_ISBESZAMITASOSFIXSZAZALEK) = ''F'')
OR (t.C_ISSIKERESAGAZATIVIZSGA = ''T'' AND t.C_ISATLAGSZAKKEPZESI = ''T''), 1, 0)
,@pLekerdezesDatuma
,@sorszam
) ElutasitasOka
,o.Szorzo Szorzo
,0 Atlag
,o.C_VEGZOSEVFOLYAM AS VegzosEvfolyam
'
SET @sql+=N'
FROM ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_TANULO_OSSZES', '#T_TANULO') + ' t
'+IIF(@pTanuloIdList IS NOT NULL,'INNER JOIN #tanuloIdk tanulok ON tanulok.tanuloid = t.ID','')+'
LEFT JOIN #TanuloIgazolatlanMulasztasok mul ON mul.tanuloId = t.ID
OUTER APPLY (
SELECT TOP 1
tcso.C_TANULOID
,tcso.C_BELEPESDATUM
,tcso.C_JOGVISZONYTIPUSID
,CASE WHEN ocso.C_EVFOLYAMTIPUSA IN (6908,6910,6911,6912,6913,7366,6909,6911,6913)
THEN ISNULL(tta.C_TANULOEVFOLYAMTIPUSID,ocso.C_EVFOLYAMTIPUSA)
ELSE ocso.C_EVFOLYAMTIPUSA
END AS C_EVFOLYAMTIPUSA
,tta.C_ISMASODIKTOBBSZAKMA
,tta.C_EVISMETLO
,tta.C_TANULOSZERZODESES
,ocso.C_ISTECHNIKAI
,tta.C_VENDEG
,tta.C_JOGVISZONYATSZUNETELTETO
,tta.C_ISSZAKKEPZESIMUNKASZERZODESS
,ocso.C_KERESZTFELEVES
,CASE WHEN ocso.C_EVFOLYAMTIPUSA IN (6908,6910,6911,6912,6913,7366,6909,6911,6913)
THEN dibCodetta.C_CODE
ELSE dibCodeocs.C_CODE
END Code
,1 AS Szorzo
,tta.C_ISBESZAMITASOS
,tta.C_ISBESZAMITASOSFIXSZAZALEK
,ocso.C_VEGZOSEVFOLYAM
,tta.C_AGAZATUJSZKTTIPUSID
,tta.C_SZAKMATIPUSID
FROM ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_TANULOCSOPORT_OSSZES', '#T_TANULOCSOPORT') + ' tcso
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcso.C_OSZTALYCSOPORTID AND t.TOROLT = ''F''
INNER JOIN ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_OSZTALYCSOPORT_OSSZES', '#T_OSZTALYCSOPORT') + ' ocso ON ocso.ID = o.ID AND ocso.C_FELADATKATEGORIAID = 7553 AND ocso.TOROLT = ''F''
INNER JOIN ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_TANULOTANUGYIADATOK_OSSZES', '#T_TANULOTANUGYIADATOK') + ' tta ON tta.C_TANULOCSOPORTID = tcso.ID AND tta.TOROLT = ''F''
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dibCodeocs ON dibCodeocs.ID = ocso.C_EVFOLYAMTIPUSA AND dibCodeocs.C_TANEVID = @pTanevId AND dibCodeocs.TOROLT = ''F''
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dibCodetta ON dibCodetta.ID = tta.C_TANULOEVFOLYAMTIPUSID AND dibCodetta.C_TANEVID = @pTanevId AND dibCodetta.TOROLT = ''F''
WHERE tcso.C_BELEPESDATUM < @jogviszonyVizsgalatVege
AND (tcso.C_KILEPESDATUM >= @jogviszonyVizsgalatEleje OR tcso.C_KILEPESDATUM IS NULL)
AND tcso.C_TANULOID = t.ID
AND tcso.TOROLT = ''F''
' + IIF(@pVisszaallitasDatuma IS NULL, 'AND tcso.C_TANEVID = @pTanevId', '') + '
ORDER BY ISNULL(tcso.C_KILEPESDATUM,''22000101'') DESC
) o
WHERE 1 = 1
' + IIF(@pTanuloId IS NOT NULL,'AND t.ID = @pTanuloId','') + '
' + IIF(@pVisszaallitasDatuma IS NULL, 'AND t.C_ALTANEVID = @pTanevId', '')
IF @pVisszaallitasDatuma IS NULL BEGIN
SET @sql +=N'
UPDATE j SET
Atlag = ISNULL(t.C_KEZIATLAG,C_SZAMITOTTATLAG)
FROM #JuttatasOkok j
INNER JOIN T_TANULO_OSSZES t ON t.ID = j.tanuloId
WHERE t.C_ALTANEVID = @pTanevId
AND t.TOROLT = ''F'''
END
SET @sql+=N'
UPDATE #JuttatasOkok SET
Szazalek =
CASE
WHEN BeszamitasosTanulo = ''T'' AND IsBeszamitasosFixSzazalek = ''T'' THEN 10
WHEN BeszamitasosTanulo = ''T'' THEN dbo.fnGetOsztondijSzazalekFromAtlag(Atlag)
WHEN Code = ''003'' THEN dbo.fnGetOsztondijSzazalekFromAtlag(Atlag)
WHEN FelevnelValtos = ''T'' THEN
CASE
WHEN IsSikeresAgazatiVizsga = ''F'' AND Code = ''001'' THEN 5
WHEN IsSikeresAgazatiVizsga = ''F'' AND Code = ''002'' THEN 10
WHEN IsSikeresAgazatiVizsga = ''T'' AND IsAtlagSzakkepzesi = ''F'' THEN 10
WHEN IsSikeresAgazatiVizsga = ''T'' AND IsAtlagSzakkepzesi = ''T'' THEN dbo.fnGetOsztondijSzazalekFromAtlag(Atlag)
ELSE -1
END
WHEN Code IN (''001'',''004'',''005'') THEN 5
WHEN Code = ''002'' THEN 10
ELSE 0
END
'
SET @sql += N'
IF DATEPART(month, @vizsgaltHonap) >= 6
BEGIN
UPDATE #JuttatasOkok SET
Szorzo = 3
WHERE VegzosEvfolyam = ''F''
END
IF DATEPART(month, @vizsgaltHonap) = 10
BEGIN
UPDATE #JuttatasOkok SET
Szorzo = CASE
WHEN (ElutasitasOka & 32) = 0 THEN 2
ELSE 0
END
END
'
SET @sql +=N'
IF @pGeneraltHonap IS NOT NULL BEGIN
UPDATE T_JUTTATAS_OSSZES
SET C_GENERALTHONAP = NULL
WHERE C_GENERALTHONAP = @pGeneraltHonap
AND C_TANEVID = @pTanevId
AND C_JUTTATASTIPUSID = 7888
END
'
SET @sql += N'
UPDATE j SET
C_ISAKTIV = ''F''
,LASTCHANGED = GETDATE()
,MODIFIER = @pFelhasznaloId
FROM T_JUTTATAS_OSSZES j
INNER JOIN #JuttatasOkok jo ON jo.tanuloId = j.C_TANULOID
WHERE j.C_ISAKTIV = ''T''
AND C_TANEVID = @pTanevId
AND C_JUTTATASTIPUSID = 7888
INSERT INTO T_JUTTATAS (
C_ELUTASITASOKA
,C_ISAKTIV
,C_ISJOGOSULT
,C_JUTTATASTIPUSID
,C_OSSZEG
,C_TANULOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
,C_GENERALTHONAP
) SELECT
ElutasitasOka
,' + IIF(@pVisszaallitasDatuma IS NULL, '''T''', '''F''') + '
,IIF(ElutasitasOka = 0,''T'',''F'')
,7888
,IIF(ElutasitasOka = 0,@pOsztondijAlap*1.0/100*szazalek*szorzo,NULL)
,tanuloId
,@intezmenyId
,@pTanevId
,''F''
,0
,GETDATE()
,GETDATE()
,@pFelhasznaloId
,@pFelhasznaloId
,@pGeneraltHonap
FROM #JuttatasOkok
--SELECT * FROM #JuttatasOkok
'
SET @sql += N'
IF @pGeneraltHonap IS NOT NULL BEGIN
UPDATE t SET
t.C_ISMULASZTASMIATTKIZART = ''T''
FROM T_TANULO_OSSZES t
INNER JOIN #JuttatasOkok j on j.tanuloId = t.ID
AND j.IgazolatlanMulasztasokSzama > @pMaxIgazolatlanokSzama
WHERE t.C_ISMULASZTASMIATTKIZART = ''F''
AND t.C_ALTANEVID = @pTanevId
AND t.TOROLT = ''F''
END
'
--select @sql
EXEC sp_executesql @sql,N'
@ptanuloIdList nvarchar(max)
,@pMaxIgazolatlanokSzama int
,@pMinOsztondijAtlag float
,@pOsztondijAlap int
,@pLekerdezesDatuma datetime
,@pTanuloId int
,@vizsgaltHonap datetime
,@pFelhasznaloId int
,@pHatarnap int
,@pGeneraltHonap int
,@pTanevId int
,@pVisszaallitasDatuma datetime'
,@pMaxIgazolatlanokSzama = @pMaxIgazolatlanokSzama
,@pMinOsztondijAtlag = @pMinOsztondijAtlag
,@pOsztondijAlap = @pOsztondijAlap
,@pLekerdezesDatuma = @vizsgaltHonap
,@pTanuloId = @pTanuloId
,@pTanuloIdList = @pTanuloIdList
,@vizsgaltHonap = @vizsgaltHonap
,@pFelhasznaloId = @pFelhasznaloId
,@pHatarnap = @hatarnap
,@pGeneraltHonap = @pGeneraltHonap
,@pTanevId = @pTanevId
,@pVisszaallitasDatuma = @pVisszaallitasDatuma
END
GO