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