kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspUpdateTanuloSzakkepzesiJuttatasok.sql
2024-03-13 00:33:46 +01:00

700 lines
22 KiB
Transact-SQL

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
,@pJuttatasTipusId INT
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)
,C_ISINGYENESKEPZES char(1)
,C_ALTANEVID int
,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
,C_ISINGYENESKEPZES
,C_ALTANEVID
,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
,C_ISINGYENESKEPZES
,C_ALTANEVID
,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)
,C_TANEVID int
,TOROLT char(1)
)
INSERT INTO #T_OSZTALYCSOPORT (
ID
,C_EVFOLYAMTIPUSA
,C_ISTECHNIKAI
,C_KERESZTFELEVES
,C_FELADATKATEGORIAID
,C_VEGZOSEVFOLYAM
,C_TANEVID
,TOROLT
) SELECT
ID
,C_EVFOLYAMTIPUSA
,C_ISTECHNIKAI
,C_KERESZTFELEVES
,C_FELADATKATEGORIAID
,C_VEGZOSEVFOLYAM
,C_TANEVID
,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
,C_TANEVID int
,TOROLT char(1)
)
INSERT INTO #T_TANULOCSOPORT (
ID
,C_BELEPESDATUM
,C_KILEPESDATUM
,C_JOGVISZONYTIPUSID
,C_OSZTALYCSOPORTID
,C_TANULOID
,C_TANEVID
,TOROLT
) SELECT
ID
,C_BELEPESDATUM
,C_KILEPESDATUM
,C_JOGVISZONYTIPUSID
,C_OSZTALYCSOPORTID
,C_TANULOID
,C_TANEVID
,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
,C_TANEVID
,TOROLT char(1)
)
INSERT INTO #T_TANULOMULASZTAS (
ID
,C_IGAZOLT
,C_TIPUS
,C_TANITASIORAKID
,C_ORATANULOIID
,C_TANEVID
,TOROLT
) SELECT
ID
,C_IGAZOLT
,C_TIPUS
,C_TANITASIORAKID
,C_ORATANULOIID
,C_TANEVID
,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
,C_TANEVID
,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
,C_TANEVID
,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
,C_TANEVID
,TOROLT
FROM T_TANULOTANUGYIADATOK
WHERE C_TANEVID = @pTanevId
DECLARE @property TABLE (Tabla nvarchar(100), Oszlop nvarchar(100))
INSERT INTO @property (Tabla, Oszlop)
SELECT TablaNev, OszlopNev
FROM fnOsztondijHistoryOszlopok()
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)
,IsIngyenesKepzes 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
,IsIngyenesKepzes
,Code
,ElutasitasOka
,Szorzo
,Atlag
,VegzosEvfolyam
) SELECT
t.ID TanuloId
,o.C_BELEPESDATUM TanulocsoportBelepesDatum
,IIF(o.C_TANULOID IS NOT NULL, 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
,t.C_ISINGYENESKEPZES IsIngyenesKepzes
,o.Code
,dbo.fnGetTanuloElutasitasOka(
ISNULL(IIF(o.C_TANULOID IS NOT NULL, o.C_JOGVISZONYTIPUSID, t.C_JOGVISZONYTIPUSID),0) -- @pJogviszonyTipus
,IIF(o.C_TANULOID IS NULL,''F'',''T'') -- @pBesorolas
,o.C_EVFOLYAMTIPUSA -- @pEvfolyamTipus
,ISNULL(o.C_ISMASODIKTOBBSZAKMA,t.C_ISMASODIKTOBBSZAKMA) -- @pIsMasodikSzakma
,ISNULL(o.C_EVISMETLO,t.C_EVISMETLO) -- @pEvIsmetlo
,mul.MulasztasokSzama -- @pMulSzam
,@pMaxIgazolatlanokSzama -- @pMaxMulSzam
,CASE
WHEN ISNULL(o.C_TANULOSZERZODESES,t.C_TANULOSZERZODESES) = ''T'' OR ISNULL(o.C_ISSZAKKEPZESIMUNKASZERZODESS,t.C_ISSZAKKEPZESIMUNKASZERZODESS) = ''T''
THEN ''T''
ELSE ''F''
END -- @pIsDualisKepzesben
,o.C_ISTECHNIKAI -- @pTechnikaiOsztaly
,ISNULL(o.C_VENDEG,t.C_VENDEG) -- @pIsVendegTanulo
,ISNULL(o.C_JOGVISZONYATSZUNETELTETO,t.C_JOGVISZONYATSZUNETELTETO) -- @pIsJogviszonyatSzunetelteto
,o.C_KERESZTFELEVES -- @pKeresztfeleves
,ISNULL(o.C_ISBESZAMITASOS, t.C_ISBESZAMITASOS) -- @pBeszamitasosTanulo
,t.C_ISOSZTONDIJBOLKIZARVA -- @pOsztondijbolKizarva
,t.C_ISMULASZTASMIATTKIZART -- @pMulasztasMiattKizart
,IIF (o.C_AGAZATUJSZKTTIPUSID <> 7920 OR o.C_SZAKMATIPUSID <> 7946, ''T'', ''F'') -- @IsSzktJogosult
,t.C_ISINGYENESKEPZES -- @IsIngyenesKepzes
,ISNULL(t.C_KEZIATLAG,t.C_SZAMITOTTATLAG) -- @pAtlag
,@pMinOsztondijAtlag -- @pMinAtlag
,IIF ((o.Code = ''003'' AND ISNULL(o.C_ISBESZAMITASOS, t.C_ISBESZAMITASOS) = ''F'')
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) -- @pIsAtlagFuggo
,@pLekerdezesDatuma -- @pLekerdezesDatuma
,@sorszam -- @pTanevSorszam
) 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, N'
INNER JOIN #tanuloIdk tanulok ON tanulok.tanuloid = t.ID','')
+IIF (@pJuttatasTipusId = 8618, N'
INNER JOIN T_APACZAIKGRJOGOSULT akgrj ON akgrj.C_TANULOID = t.ID AND akgrj.TOROLT = ''F''', '')
+ N'
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 evtip.C_ISOSSZEVONT = ''T''
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 evtip.C_ISOSSZEVONT = ''T''
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''
INNER JOIN T_EVFOLYAMTIPUS_OSSZES evtip ON evtip.ID = ocso.C_EVFOLYAMTIPUSA AND evtip.TOROLT = ''F'' AND evtip.C_ALTANEVID = ocso.C_TANEVID
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 t.TOROLT = ''F''
' + IIF(@pTanuloId IS NOT NULL,'AND t.ID = @pTanuloId','') + '
' + IIF(@pVisszaallitasDatuma IS NULL, 'AND t.C_ALTANEVID = @pTanevId', '')
SET @sql +=N'
UPDATE j SET
Atlag = ISNULL(t.C_KEZIATLAG,t.C_SZAMITOTTATLAG)
FROM #JuttatasOkok j
INNER JOIN ' + IIF(@pVisszaallitasDatuma IS NULL, 'T_TANULO_OSSZES', '#T_TANULO') + ' t ON t.ID = j.tanuloId
WHERE t.C_ALTANEVID = @pTanevId
AND t.TOROLT = ''F'''
SET @sql+=N'
UPDATE #JuttatasOkok SET
Szazalek = dbo.fnGetOsztondijSzazalek(BeszamitasosTanulo, IsBeszamitasosFixSzazalek, Atlag, Code, FelevnelValtos, IsSikeresAgazatiVizsga, IsAtlagSzakkepzesi)
'
SET @sql += N'
IF DATEPART(month, @vizsgaltHonap) BETWEEN 6 AND 8
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 = @pJuttatasTipusId
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 = @pJuttatasTipusId
INSERT INTO T_JUTTATAS_OSSZES (
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'')
,@pJuttatasTipusId
,' + CASE @pJuttatasTipusId
WHEN 7888 THEN 'IIF(ElutasitasOka = 0,@pOsztondijAlap*1.0/100*szazalek*szorzo,NULL)'
WHEN 8618 THEN 'IIF(ElutasitasOka = 0 AND akgrj.C_STATUSZID = 13, akgrj.C_OSSZEG*szorzo, NULL)'
ELSE 'NULL'
END
+ N'
,tanuloId
,@intezmenyId
,@pTanevId
,''F''
,0
,GETDATE()
,GETDATE()
,@pFelhasznaloId
,@pFelhasznaloId
,@pGeneraltHonap
FROM #JuttatasOkok'
IF @pJuttatasTipusId = 8618 BEGIN
SET @sql += N'
INNER JOIN T_APACZAIKGRJOGOSULT akgrj ON akgrj.C_TANULOID = #JuttatasOkok.TanuloId AND akgrj.TOROLT = ''F'''
END
SET @sql += N'
--SELECT * FROM #JuttatasOkok
'
IF @pJuttatasTipusId = 7888 BEGIN
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
'
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
,@pJuttatasTipusId int'
,@pMaxIgazolatlanokSzama = @pMaxIgazolatlanokSzama
,@pMinOsztondijAtlag = @pMinOsztondijAtlag
,@pOsztondijAlap = @pOsztondijAlap
,@pLekerdezesDatuma = @vizsgaltHonap
,@pTanuloId = @pTanuloId
,@pTanuloIdList = @pTanuloIdList
,@vizsgaltHonap = @vizsgaltHonap
,@pFelhasznaloId = @pFelhasznaloId
,@pHatarnap = @hatarnap
,@pGeneraltHonap = @pGeneraltHonap
,@pTanevId = @pTanevId
,@pVisszaallitasDatuma = @pVisszaallitasDatuma
,@pJuttatasTipusId = @pJuttatasTipusId
END
GO