258 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			258 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
IF OBJECT_ID('[dbo].[sp_GetCsoportNaplo]') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE [dbo].[sp_GetCsoportNaplo]
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[sp_GetCsoportNaplo]
 | 
						|
  @tanevId				INT,
 | 
						|
  @intezmenyid			INT,
 | 
						|
  @csoportId			INT,
 | 
						|
  @iskolaErdekuSzamit	BIT
 | 
						|
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
 | 
						|
--Tanulók adatai, elérhetőségei
 | 
						|
  DECLARE @tanulok TABLE (
 | 
						|
     Id int
 | 
						|
    ,Nev nvarchar(max)
 | 
						|
    ,Osztaly nvarchar(max)
 | 
						|
    ,Sorszam nvarchar(max)
 | 
						|
    ,Torzslapszam nvarchar(max)
 | 
						|
    ,Allampolgarsaga nvarchar(max)
 | 
						|
    ,DiakIg nvarchar(max)
 | 
						|
    ,SzulHely nvarchar(max)
 | 
						|
    ,SzulIdo nvarchar(max)
 | 
						|
    ,Anyja nvarchar(max)
 | 
						|
    ,Taj nvarchar(20)
 | 
						|
    ,OktAzon nvarchar(20)
 | 
						|
    ,Kilepes nvarchar(max)
 | 
						|
    ,Kepzes nvarchar(max)
 | 
						|
    ,TanuloCimTipus nvarchar(max)
 | 
						|
    ,TanuloCim nvarchar(max)
 | 
						|
    ,TanuloTelefon nvarchar(max)
 | 
						|
    ,TanuloEmail nvarchar(max)
 | 
						|
    ,szoc nvarchar(max)
 | 
						|
  )
 | 
						|
 
 | 
						|
  INSERT INTO @tanulok
 | 
						|
  SELECT DISTINCT 
 | 
						|
     t.id Id 
 | 
						|
    ,iif(tcs.C_KILEPESDATUM is not null, f.C_NYOMTATASINEV + ' (kilépett)',f.c_nyomtatasinev) as Nev
 | 
						|
    ,Osztaly.Osztaly as Osztaly
 | 
						|
    ,t.c_naplosorszam as Sorszam
 | 
						|
    ,t.c_beirasinaplosorszam as Torzslapszam
 | 
						|
    ,Allampolgarsaga.C_NAME as Allampolgarsag
 | 
						|
    ,t.c_diakigazolvanyszam as DiakIg
 | 
						|
    ,f.c_szuletesihely as SzulHely 
 | 
						|
		,FORMAT(f.c_szuletesidatum, 'yyyy. MMMM dd.', 'hu-hu') as SzulIdo
 | 
						|
    ,f.c_anyjaneve as Anyja
 | 
						|
    ,f.c_tajszam as Taj
 | 
						|
    ,f.c_oktatasiazonosito as OktAzon
 | 
						|
    ,FORMAT(tcs.c_kilepesdatum, 'yyyy. MMMM dd.', 'hu-hu') as Kilepes
 | 
						|
    ,tt.c_nev as Kepzes 
 | 
						|
		,cim.Tipus
 | 
						|
    ,cim.cim
 | 
						|
    ,tel.c_telefonszam
 | 
						|
    ,email.c_emailcim as TanuloEmail
 | 
						|
    ,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') + IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') + 
 | 
						|
      IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') + 
 | 
						|
      IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') AS szoc
 | 
						|
	FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
  	INNER JOIN T_FELHASZNALO_OSSZES f ON f.id=tcs.c_tanuloid AND f.torolt='F'
 | 
						|
  	INNER JOIN T_DICTIONARYITEMBASE_OSSZES Allampolgarsaga ON Allampolgarsaga.Id = f.c_allampolgarsaga AND Allampolgarsaga.C_TANEVID = f.C_TANEVID
 | 
						|
  	LEFT JOIN (
 | 
						|
      SELECT tcs.c_tanuloid TanuloId, ocs.c_nev as Osztaly, tcs.c_kilepesdatum Kilepes 
 | 
						|
      FROM T_TANULOCSOPORT_OSSZES tcs 
 | 
						|
  		  INNER JOIN T_OSZTALY_OSSZES o ON o.id=tcs.c_osztalycsoportid 
 | 
						|
  		  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON o.id=ocs.id
 | 
						|
    ) osztaly ON tcs.c_tanuloid=osztaly.TanuloId
 | 
						|
  	INNER JOIN T_TANTERV_OSSZES tt ON tt.c_intezmenyid=tcs.c_intezmenyid AND tt.c_intezmenyid=@intezmenyid AND tt.c_tanevid=@tanevid
 | 
						|
	  INNER JOIN T_TANULO_OSSZES t ON t.id=f.id
 | 
						|
	  INNER JOIN (
 | 
						|
      SELECT f.id Tanulo, dt.c_name Tipus, c.c_iranyitoszam+', '+c.c_varos+' '+c.c_kozterulet+' '+dj.c_name+' '+c.c_hazszam as Cim 
 | 
						|
      FROM t_cim_osszes c
 | 
						|
  			INNER JOIN (select distinct d.id, d.c_name from T_DICTIONARYITEMBASE_OSSZES d )dt ON dt.id=c.c_cimtipusa
 | 
						|
  			INNER JOIN T_FELHASZNALO_OSSZES f ON f.id=c.c_felhasznaloid
 | 
						|
  			INNER JOIN (select distinct d.id, d.c_name from T_DICTIONARYITEMBASE_OSSZES d)dj ON dj.id=c.c_kozteruletjellege
 | 
						|
			WHERE c.c_cimtipusa = 907 
 | 
						|
        AND c.c_gondviseloid is null 
 | 
						|
        AND c.torolt='F' 
 | 
						|
        AND c.c_tanevid=@tanevId
 | 
						|
    ) cim ON cim.Tanulo=tcs.c_tanuloid
 | 
						|
	  LEFT JOIN T_TELEFON_OSSZES tel ON tel.c_felhasznaloid = f.id AND tel.c_gondviseloid IS NULL AND tel.torolt = 'F' AND tel.c_alapertelmezett = 'T'
 | 
						|
	  LEFT JOIN T_EMAIL_OSSZES email ON email.c_felhasznaloid = tcs.c_tanuloid AND email.c_gondviseloid IS NULL AND email.torolt = 'F' AND email.c_alapertelmezett = 'T'
 | 
						|
  WHERE tcs.c_osztalycsoportid = @csoportId AND tcs.c_tanevid = @tanevid
 | 
						|
 | 
						|
--Kezdőoldal
 | 
						|
  SELECT 
 | 
						|
     ia.c_nev as IntezmenyNev
 | 
						|
    ,ia.c_cime as IntezmenyCim
 | 
						|
    ,ia.c_omkod as OMKOD
 | 
						|
    ,ia.c_igazgatoneve as IntezmenyVezeto
 | 
						|
    ,ocs.c_nev Csoport 
 | 
						|
		,isnull(f.c_nyomtatasinev,'-') as CsoportVezeto
 | 
						|
    ,isnull(cs.c_csoportnaploleiras,'-') as CsoportNaploLeiras
 | 
						|
    ,FORMAT(cs.c_csoportnaplomegnyitasa, 'yyyy. MMMM dd.', 'hu-hu') as Megnyitas 
 | 
						|
		,isnull(FORMAT(cs.c_csoportnaplozarasa, 'yyyy. MMMM dd.', 'hu-hu'),'-') as Lezaras
 | 
						|
    ,ocs.c_nev RovidNev 
 | 
						|
  FROM T_INTEZMENY_OSSZES i
 | 
						|
	  INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.c_intezmenyid = i.id
 | 
						|
	  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.c_intezmenyid = i.id AND ocs.c_tanevid = @tanevid
 | 
						|
	  INNER JOIN T_CSOPORT_OSSZES cs ON cs.id = ocs.id 
 | 
						|
	  LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id=cs.c_csoportvezetoid
 | 
						|
  WHERE i.id = @intezmenyid AND ia.c_tanevid = @tanevid AND ocs.id = @csoportId
 | 
						|
 | 
						|
  --Csoportot vezette
 | 
						|
  SELECT isnull(f.c_nyomtatasinev,'-') as CsoportVezeto 
 | 
						|
  FROM T_CSOPORT_OSSZES cs
 | 
						|
  	LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = cs.c_csoportvezetoid
 | 
						|
  WHERE cs.id = @csoportId 
 | 
						|
 | 
						|
  --Tanulók
 | 
						|
  SELECT DISTINCT Nev,  Osztaly, OktAzon FROM @tanulok
 | 
						|
 | 
						|
  --Naplóhetek
 | 
						|
  DECLARE @elsonap as date
 | 
						|
  DECLARE @utolsonap as date
 | 
						|
 | 
						|
  select @elsonap=c_elsotanitasinap, @utolsonap=c_utolsotanitasinap from t_tanev_osszes where id=@tanevId 
 | 
						|
 | 
						|
  SELECT 
 | 
						|
     n.c_hetsorszama as Het
 | 
						|
    ,FORMAT(convert(date,min(c_napdatuma)), 'yyyy. MMMM dd.', 'hu-hu')as HetEleje
 | 
						|
    ,FORMAT(convert(date,max(c_napdatuma)), 'yyyy. MMMM dd.', 'hu-hu') as HetVege 
 | 
						|
  FROM T_NAPTARINAP_OSSZES n
 | 
						|
  WHERE n.c_napdatuma >= @elsonap 
 | 
						|
   AND n.c_napdatuma <= @utolsonap 
 | 
						|
   AND n.c_orarendinap = 'T'
 | 
						|
   AND n.c_tanevid = @tanevid 
 | 
						|
   AND n.c_intezmenyid = @intezmenyid
 | 
						|
  GROUP BY n.c_hetsorszama
 | 
						|
 | 
						|
  --Tanuló adatok
 | 
						|
  SELECT * FROM @tanulok
 | 
						|
 | 
						|
--Napló
 | 
						|
  SELECT DISTINCT 
 | 
						|
     nn.c_hetsorszama as Het
 | 
						|
    ,d.Nap as Nap
 | 
						|
    ,FORMAT(nn.c_napdatuma, 'yyyy. MMMM dd.', 'hu-hu') as Datum 
 | 
						|
  FROM T_NAPTARINAP_OSSZES nn 
 | 
						|
  	LEFT JOIN T_TANITASIORA_OSSZES tao ON tao.c_datum = nn.c_napdatuma AND tao.c_osztalycsoportid = @csoportid AND tao.torolt = 'F'
 | 
						|
  	LEFT JOIN (select distinct d.id as ID, d.c_name Nap from T_DICTIONARYITEMBASE_OSSZES d) d ON d.id = nn.c_hetnapja 
 | 
						|
  	LEFT JOIN T_FOGLALKOZAS_OSSZES fog ON fog.id=tao.c_foglalkozasid AND fog.c_tanevid = @tanevid 
 | 
						|
  	LEFT JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.c_foglalkozasokid=fog.id
 | 
						|
  	LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id=ft.c_tanarokid AND f.torolt='F'
 | 
						|
  WHERE nn.c_orarendinap='T' AND nn.c_napdatuma >= @elsonap AND nn.c_napdatuma <= @utolsonap
 | 
						|
  ORDER BY nn.c_hetsorszama, FORMAT(nn.c_napdatuma, 'yyyy. MMMM dd.', 'hu-hu')
 | 
						|
 | 
						|
--Napló adatok
 | 
						|
  DECLARE @Orak TABLE (
 | 
						|
     datum date
 | 
						|
    ,Sorszam int
 | 
						|
    ,Hetsorszam int
 | 
						|
  )
 | 
						|
  
 | 
						|
  INSERT INTO @Orak
 | 
						|
  SELECT DISTINCT 
 | 
						|
     n.c_napdatuma datum
 | 
						|
    ,sz.Oraszam
 | 
						|
    ,n.c_hetsorszama
 | 
						|
  FROM T_NAPTARINAP_OSSZES n
 | 
						|
  CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) sz (Oraszam)
 | 
						|
  WHERE n.c_napdatuma >= @elsonap 
 | 
						|
    AND n.c_napdatuma <= @utolsonap
 | 
						|
    AND n.c_orarendinap = 'T'
 | 
						|
    AND TOROLT = 'F'
 | 
						|
    AND n.C_TANEVID = @tanevId
 | 
						|
 | 
						|
  DECLARE @oraSorszam TABLE (Id int, EvesSorszam int)
 | 
						|
  
 | 
						|
  INSERT INTO @oraSorszam (Id, EvesSorszam)
 | 
						|
  SELECT DISTINCT 
 | 
						|
     s.Id 
 | 
						|
    ,s.EvesSorszam
 | 
						|
  FROM (
 | 
						|
    SELECT DISTINCT tn.C_TANTARGYID, tn.C_OSZTALYCSOPORTID, ot.C_TANAROKID, tn.C_INTEZMENYID--, fh.C_NYOMTATASINEV
 | 
						|
    FROM T_TANITASIORA_OSSZES tn
 | 
						|
      INNER JOIN T_ORAK_TANAROK ot ON tn.ID = ot.C_ORAKID
 | 
						|
      INNER JOIN T_FELHASZNALO fh ON fh.ID = ot.C_TANAROKID
 | 
						|
    WHERE tn.C_OSZTALYCSOPORTID = @csoportid
 | 
						|
  ) x
 | 
						|
  CROSS APPLY dbo.fnGetEvesOraszamLista (
 | 
						|
     x.C_TANTARGYID
 | 
						|
    ,x.C_OSZTALYCSOPORTID
 | 
						|
    ,x.C_TANAROKID
 | 
						|
    ,GETDATE() 
 | 
						|
    ,x.C_INTEZMENYID
 | 
						|
    ,@tanevID
 | 
						|
  ) s
 | 
						|
  
 | 
						|
  SELECT DISTINCT 
 | 
						|
     o.Hetsorszam as Het
 | 
						|
    ,o.Sorszam as Oraszam
 | 
						|
    ,FORMAT(o.Datum, 'yyyy. MMMM dd.', 'hu-hu') as Datum
 | 
						|
    ,FORMAT(tao.c_orakezdete, 'hh:mm')as OraKezd
 | 
						|
    ,fh.C_NYOMTATASINEV as Tanar
 | 
						|
    ,os.EvesSorszam as Sorszam
 | 
						|
    ,tao.c_tema as Tema
 | 
						|
  FROM @Orak o
 | 
						|
  	LEFT JOIN T_TANITASIORA_OSSZES tao ON tao.c_datum = o.Datum 
 | 
						|
      AND tao.torolt = 'F' 
 | 
						|
      AND tao.c_oraszam = o.Sorszam 
 | 
						|
      AND tao.c_tanevid = @tanevid
 | 
						|
      AND tao.c_osztalycsoportid = @csoportid
 | 
						|
    LEFT JOIN @oraSorszam os ON os.Id = tao.ID
 | 
						|
    LEFT JOIN T_ORAK_TANAROK ot ON tao.ID = ot.C_ORAKID
 | 
						|
    LEFT JOIN T_FELHASZNALO fh ON fh.ID = ot.C_TANAROKID
 | 
						|
  ORDER BY Oraszam
 | 
						|
 | 
						|
 | 
						|
--Napló mulasztás
 | 
						|
  SELECT C_HETSORSZAMA Het, C_NYOMTATASINEV Tanulo, 
 | 
						|
     MAX([1]) AS [Hetfo]
 | 
						|
    ,MAX([2]) AS [Kedd]
 | 
						|
    ,MAX([3]) AS [Szerda]
 | 
						|
    ,MAX([4]) AS [Csutortok]
 | 
						|
    ,MAX([5]) AS [Pentek]
 | 
						|
    ,MAX([6]) AS [Szombat] 
 | 
						|
  FROM (
 | 
						|
    SELECT C_HETSORSZAMA, C_NYOMTATASINEV, [0], [1], [2], [3], [4], [5], [6]
 | 
						|
    FROM (
 | 
						|
     SELECT DISTINCT n.C_NAPTARINAPID, DATEPART(dw,n.C_DATUM) AS NAP, t.C_NYOMTATASINEV, n.C_HETSORSZAMA,
 | 
						|
      '[' + STUFF((
 | 
						|
        SELECT  ', ' + CAST(o.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1500, '', '(k)')
 | 
						|
        FROM T_TANULOMULASZTAS_OSSZES tm
 | 
						|
          INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID  
 | 
						|
		      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.id=@csoportid
 | 
						|
        WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID
 | 
						|
          AND m.C_ORATANULOIID = tm.C_ORATANULOIID
 | 
						|
          AND o.C_TANEVID = @tanevID 
 | 
						|
          AND tm.C_TANEVID = @tanevID
 | 
						|
		  AND TM.TOROLT='F'
 | 
						|
		  AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
 | 
						|
        ORDER BY o.C_NAPTARINAPID, o.C_ORASZAM
 | 
						|
        FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'T' OR m.C_TIPUS = 1499, 0, 1)) AS varchar(2)) AS hianyzas
 | 
						|
      FROM T_TANITASIORA_OSSZES n
 | 
						|
        INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID  AND m.TOROLT='F'
 | 
						|
        INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
 | 
						|
      WHERE 
 | 
						|
		n.C_TANEVID = @tanevID 
 | 
						|
		AND m.C_TANEVID = @tanevID 
 | 
						|
		AND n.c_osztalycsoportid=@csoportId 
 | 
						|
		AND n.torolt='F' 
 | 
						|
		AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
 | 
						|
      GROUP BY n.C_NAPTARINAPID, C_ORATANULOIID, C_NYOMTATASINEV, n.C_HETSORSZAMA, n.C_DATUM) AS SUB
 | 
						|
      PIVOT
 | 
						|
      (
 | 
						|
      MAX(HIANYZAS)
 | 
						|
      FOR NAP IN ([0], [1], [2], [3], [4], [5], [6])
 | 
						|
    ) AS PivotTable
 | 
						|
  ) AS x
 | 
						|
  GROUP BY C_HETSORSZAMA, C_NYOMTATASINEV
 | 
						|
  ORDER BY C_HETSORSZAMA  
 | 
						|
END
 | 
						|
 | 
						|
GO |