DROP PROCEDURE IF EXISTS [dev].[uspGenerateUtalasiAllomany] GO CREATE PROCEDURE [dev].[uspGenerateUtalasiAllomany] @pLekerdezesDatuma datetime = NULL ,@pTanevNev nvarchar(10) ,@pGeneraltHonap int = NULL ,@pOsszevonas nvarchar(100) = NULL ,@pVisszaallitasDatuma datetime = NULL AS BEGIN DECLARE @tanevId nvarchar(100) CREATE TABLE #Osszevonasok (Id int primary key) INSERT INTO #Osszevonasok (Id) SELECT VALUE FROM string_split(@pOsszevonas,',') IF @pLekerdezesDatuma IS NOT NULL BEGIN​ DECLARE cur CURSOR LOCAL FOR SELECT ia.C_TANEVID FROM T_INTEZMENY i INNER JOIN T_INTEZMENYADATOK ia ON i.ID = ia.C_INTEZMENYID INNER JOIN T_TANEV tv ON tv.ID = ia.C_TANEVID AND tv.C_AKTIV = 'T' AND tv.TOROLT = 'F' WHERE i.TOROLT = 'F' AND ia.C_ISSZAKKEPZOJUTTATAS = 'T' AND i.C_ISARCHIV = 'F' ​ OPEN cur FETCH NEXT FROM cur INTO @tanevId WHILE @@FETCH_STATUS = 0 BEGIN EXEC uspUpdateTanuloSzakkepzesiJuttatasok @pTanevId = @tanevId ,@pMaxIgazolatlanokSzama = 6 ,@pMinOsztondijAtlag = 2.0 ,@pOsztondijAlap = 100000 ,@pLekerdezesDatuma = @pLekerdezesDatuma ,@pTanuloId = NULL ,@pTanuloIdList = NULL ,@pFelhasznaloId = 0 ,@pGeneraltHonap = @pGeneraltHonap ,@pVisszaallitasDatuma = @pVisszaallitasDatuma ,@pJuttatasTipusId = 7888 FETCH NEXT FROM cur INTO @tanevId END CLOSE cur DEALLOCATE cur END DECLARE @sql nvarchar(max) = N''; SET @sql = N' SELECT i.C_AZONOSITO as ''KRÉTA Azonosító'' ,ia.C_NEV as ''Intézmény neve'' ,ia.C_OMKOD as ''OM kód'' ,fn.C_AZONOSITO as ''Fenntartó'' ,ISNULL(fn.C_NEV, ''Ismeretlen fenntartó'') AS ''Fenntartónév'' ,ISNULL(lmszf.C_NEV, ''Ismeretlen legmagasabb szintű fenntartó'') AS ''Legmagasabb szintű fenntartó'' ,f.C_OKTATASIAZONOSITO as ''Oktatási azonosító'' ,f.C_NYOMTATASINEV as ''Diák neve'' ,f.C_SZULETESIDATUM as ''Születési dátum'' ,f.C_SZULETESIHELY as ''Születési hely'' ,f.C_ANYJANEVE as ''Anyja neve'' ,tel.C_TELEFONSZAM as ''Telefonszám'' ,em.C_EMAILCIM as ''E-mail cím'' ,x.C_NEV as ''Gondviselő neve'' ,x.C_TELEFONSZAM as ''Telefonszám'' ,x.C_EMAILCIM as ''E-mail cím'' ,x2.C_NEV as ''Gondviselő neve 2'' ,x2.C_TELEFONSZAM as ''Telefonszám 2'' ,x2.C_EMAILCIM as ''E-mail cím 2'' ,cim.C_CIM AS ''Cím'' ,CONCAT(IIF(ISDATE(CONCAT(''1900/'', CASE WHEN evtip.C_ISOSSZEVONT = ''T'' THEN IIF(dib3.C_NAME IS NOT NULL, CONCAT(dib3.C_NAME, '' ('', dib.C_NAME, '')''), dib.C_NAME) ELSE dib.C_NAME END)) = 1, '''''''', ''''), CASE WHEN evtip.C_ISOSSZEVONT = ''T'' THEN IIF(dib3.C_NAME IS NOT NULL, CONCAT(dib3.C_NAME, '' ('', dib.C_NAME, '')''), dib.C_NAME) ELSE dib.C_NAME END) as ''Évfolyam'' ,COALESCE(CAST(tt.C_SZAMITOTTATLAG as nvarchar), '''') as ''Tanulmányi átlag (számított)'' ,COALESCE(CAST(tt.C_KEZIATLAG as nvarchar), '''') as ''Tanulmányi átlag (kézi)'' ,COALESCE(CAST(tt.C_KEZIATLAG as nvarchar), CAST(tt.C_SZAMITOTTATLAG as nvarchar), '''') as ''Tanulmányi átlag (alkalmazott)'' ,dibAgazat.C_NAME as ''Ágazat'' ,dibSzakma.C_NAME as ''Szakma'' ,CONCAT(mukodHely.C_NEV, '' - '', dibFeladatTipus.C_NAME) as ''Tanuló tanulási helyszíne, feladatellátási hely'' ,CONCAT(mukodHely.C_IRANYITOSZAM, '' '', mukodHely.C_VAROS, '', '', mukodHely.C_KOZTERULETNEV, '' '', mukodHely.C_KOZTERULETJELLEGENEV, '' '', mukodHely.C_HAZSZAM, '', '' + mukodHely.C_EMELET + ''. emelet'', '' '' + mukodHely.C_AJTO + ''. ajtó'') as ''Működési hely címe'' ,mukodHely.C_VAROS as ''Működési hely városa'' ,COALESCE(CONVERT(nvarchar, tta.C_NYILVANTARTASKEZDETE, 23), '''') as ''Jogviszony kezdete dátum'' ,COALESCE(CONVERT(nvarchar, tta.C_JOGVISZONYVARHATOBEFEJEZESE, 23), CAST(tt.C_JOGVISZONYVARHATOBEFEJEZESE as nvarchar), '''') as ''Jogviszony várható befejezésének dátuma'' ,COALESCE(CONVERT(nvarchar, tcs.C_KILEPESDATUM, 23), '''') as ''Jogviszony befejezésének dátuma'' ,IIF(ISNULL(tta.C_ISBESZAMITASOS, tt.C_ISBESZAMITASOS) = ''T'', ''Igen'', ''Nem'') as ''Beszámításos a tanuló'' ,IIF(ISNULL(tta.C_ISBESZAMITASOSFIXSZAZALEK, tt.C_ISBESZAMITASOSFIXSZAZALEK) = ''T'', ''Igen'', ''Nem'') as ''Beszámításos fix százalék'' ,IIF(tt.C_ISSIKERESAGAZATIVIZSGA = ''T'', ''Igen'', ''Nem'') as ''Sikeres ágazati alapvizsgát tett'' ,IIF(tt.C_ISATLAGSZAKKEPZESI = ''T'', ''Igen'', ''Nem'') as ''Átlag szakképzésből'' ,IIF(ISNULL(tta.C_TANULOSZERZODESES,tt.C_TANULOSZERZODESES) = ''T'', ''Igen'', ''Nem'') as ''Tanulói szerződéses'' ,IIF(ISNULL(tta.C_EGYUTTMUKODESES,tt.C_EGYUTTMUKODESES) = ''T'', ''Igen'', ''Nem'') as ''Együttműködési megállapodásos'' ,IIF(ISNULL(tta.C_ISSZAKKEPZESIMUNKASZERZODESS,tt.C_ISSZAKKEPZESIMUNKASZERZODESS) = ''T'', ''Igen'', ''Nem'') as ''Szakképzési munkaszerződéssel'' ,IIF(ocs.C_VEGZOSEVFOLYAM = ''T'', ''Igen'', ''Nem'') as ''Végzős'' ,j.C_OSSZEG as ''Ösztöndíj összege'' ,'''''''' + tt.C_BANKSZAMLASZAM as ''Számlaszáma'' ,tt.C_BANKSZAMLATULAJNEVE as ''Számla tulajdonosának neve'' ,dib2.c_name as ''Számla típusa'' FROM t_intezmeny i INNER JOIN T_TANEV t on t.C_INTEZMENYID = i.id and t.C_AKTIV = ''T'' and t.C_NEV = '''+@pTanevNev+''' and t.TOROLT = ''F'' INNER JOIN T_INTEZMENYADATOK ia on ia.C_TANEVID = t.ID and ia.TOROLT = ''F'''; IF (@pOsszevonas is not null) SET @sql += N' INNER JOIN ( SELECT SUM(IIF(bj.C_ISJOGOSULT = ''T'', bj.C_OSSZEG, 0)) AS C_OSSZEG ,bj.C_TANULOID AS C_TANULOID ,IIF(AVG(IIF(bj.C_ISJOGOSULT = ''T'', 1.0, 0.0)) = 0, ''F'', ''T'') AS C_ISJOGOSULT ,bj.C_TANEVId AS C_TANEVId FROM T_JUTTATAS bj JOIN #Osszevonasok ov ON ov.Id = bj.C_GENERALTHONAP WHERE bj.TOROLT = ''F'' AND bj.C_JUTTATASTIPUSID = 7888 GROUP BY bj.C_TANULOID, bj.C_TANEVId ) j ON j.C_TANEVId = t.id '; ELSE SET @sql += N' INNER JOIN T_JUTTATAS j on j.C_TANEVId = t.id and j.C_ISAKTIV = ''T'' and j.TOROLT = ''F'' and j.C_JUTTATASTIPUSID = 7888 '; SET @sql += N' INNER JOIN T_FELHASZNALO f on f.id = j.C_TANULOID and f.torolt =''F'' LEFT JOIN T_TANULOCSOPORT tcs on tcs.C_TANULOID = f.id and tcs.torolt =''F'' and tcs.C_TANEVID = t.ID LEFT JOIN T_FENNTARTO fn ON fn.TOROLT = ''F'' AND fn.ID = i.C_FENNTARTOID LEFT JOIN T_LEGMAGASABBSZINTUFENNTARTO lmszf ON lmszf.TOROLT = ''F'' AND fn.C_LEGMAGASABBSZINTUFENNTARTOID = lmszf.Id LEFT JOIN (T_TANULOCSOPORT tcs2 INNER JOIN T_OSZTALYCSOPORT ocs2 on ocs2.id = tcs2.C_OSZTALYCSOPORTID and ocs2.torolt = ''F'' and ocs2.C_FELADATKATEGORIAID = 7553 INNER JOIN T_OSZTALY o2 ON tcs2.C_OSZTALYCSOPORTID = o2.ID ) on tcs2.C_TANULOID = f.ID AND (tcs.C_KILEPESDATUM < tcs2.C_KILEPESDATUM OR (tcs.C_KILEPESDATUM IS NOT NULL AND tcs2.C_KILEPESDATUM IS NULL)) AND tcs2.TOROLT = ''F'' AND tcs2.C_TANEVID = t.ID INNER JOIN t_osztaly o on o.id = tcs.C_OSZTALYCSOPORTID and o.torolt = ''F'' and o.C_ALTANEVID = t.ID INNER JOIN T_OSZTALYCSOPORT ocs on ocs.id = o.id and ocs.C_TANEVID = t.id and ocs.torolt = ''F'' AND ocs.C_FELADATKATEGORIAID = 7553 INNER JOIN T_DICTIONARYITEMBASE dib on dib.id = ocs.C_EVFOLYAMTIPUSA and dib.C_TANEVID = t.id INNER JOIN t_tanulo tt on tt.id = f.id and tt.torolt = ''F'' and tt.C_ALTANEVID = t.ID AND tt.C_ISOSZTONDIJBOLKIZARVA = ''F'' LEFT JOIN T_DICTIONARYITEMBASE dib2 on dib2.id = tt.C_BANKSZAMLATULAJDONOSTIPUSID and dib2.C_TANEVID = t.id LEFT JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID and tta.TOROLT = ''F'' LEFT JOIN T_DICTIONARYITEMBASE dibAgazat on dibAgazat.id = tta.C_AGAZATUJSZKTTIPUSID and dibAgazat.C_TANEVID = t.id and dibAgazat.TOROLT = ''F'' LEFT JOIN T_DICTIONARYITEMBASE dibSzakma on dibSzakma.id = tta.C_SZAKMATIPUSID and dibSzakma.C_TANEVID = t.id and dibSzakma.TOROLT = ''F'' INNER JOIN T_FELADATELLATASIHELY felhely on felhely.ID = ocs.C_FELADATELLATASIHELYID and felhely.TOROLT = ''F'' INNER JOIN T_MUKODESIHELY_OSSZES mukodHely ON mukodHely.ID = felhely.C_MUKODESIHELYID and mukodHely.TOROLT = ''F'' INNER JOIN T_DICTIONARYITEMBASE dibFeladatTipus on dibFeladatTipus.id = felhely.C_OKTATASINEVELESIFELADATTIPUS and dibFeladatTipus.C_TANEVID = t.id and dibFeladatTipus.TOROLT = ''F'' LEFT JOIN T_DICTIONARYITEMBASE dib3 on dib3.id = tta.C_TANULOEVFOLYAMTIPUSID and dib3.C_TANEVID = t.id and dib3.TOROLT = ''F'' INNER JOIN T_EVFOLYAMTIPUS_OSSZES evtip ON evtip.ID = ocs.C_EVFOLYAMTIPUSA AND evtip.TOROLT = ''F'' AND evtip.C_ALTANEVID = ocs.C_TANEVID '; SET @sql += N' OUTER APPLY ( SELECT TOP(1) C_TELEFONSZAM FROM T_TELEFON x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID is null) tel OUTER APPLY ( SELECT TOP(1) C_EMAILCIM FROM T_EMAIL x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID is null) em OUTER APPLY ( SELECT TOP(1) * FROM T_GONDVISELO g OUTER APPLY ( SELECT TOP(1) C_EMAILCIM FROM T_EMAIL x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID = g.ID and x.C_TANEVID = t.ID) em2 OUTER APPLY ( SELECT TOP(1) C_TELEFONSZAM FROM T_TELEFON x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID = g.ID and x.C_TANEVID = t.ID) tel2 WHERE g.TOROLT = ''F'' AND g.C_TANULOID = tt.ID and g.C_TANEVID = t.ID ORDER BY g.CREATED DESC ) x'; SET @sql += N' OUTER APPLY ( SELECT TOP(1) *FROM T_GONDVISELO g OUTER APPLY ( SELECT TOP(1) C_EMAILCIM FROM T_EMAIL x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID = g.ID and x.C_TANEVID = t.ID) em2 OUTER APPLY ( SELECT TOP(1) C_TELEFONSZAM FROM T_TELEFON x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID = g.ID and x.C_TANEVID = t.ID) tel2 WHERE g.TOROLT = ''F'' AND g.C_TANULOID = tt.ID and g.C_TANEVID = t.ID ORDER BY g.CREATED DESC ) x2 OUTER APPLY ( SELECT TOP(1) CONCAT(x.C_IRANYITOSZAM, '' '', x.C_VAROS, '', '', x.C_KOZTERULET, '' '', x.C_KOZTERULETJELLEGENEV, '' '', x.C_HAZSZAM, '', '' + x.C_EMELET + ''. emelet'', '' '' + x.C_AJTO + ''. ajtó'') AS C_CIM FROM T_CIM x WHERE x.C_FELHASZNALOID = tt.ID and x.C_ALAPERTELMEZETT = ''T'' and x.TOROLT = ''F'' and x.C_GONDVISELOID IS NULL and x.C_TANEVID = t.ID ORDER BY x.C_ALAPERTELMEZETT DESC) cim WHERE i.torolt = ''F'' AND fn.C_ISTESZTFENNTARTO = ''F'' AND j.C_ISJOGOSULT = ''T'' AND tcs2.ID IS NULL AND ia.C_ISSZAKKEPZOJUTTATAS = ''T'' AND i.C_ISARCHIV = ''F'' ORDER BY i.C_AZONOSITO, f.C_NYOMTATASINEV'; exec sp_executesql @sql END GO