kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20171017154046_KRETA_3776/sp_GetNaploEllenorzesTetelek.sql
2024-03-13 00:33:46 +01:00

125 lines
6.1 KiB
Transact-SQL

GO
/****** Object: StoredProcedure [dbo].[sp_GetNaploEllenorzesTetelek] Script Date: 2016.03.29. 9:17:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[DBO].[sp_GetNaploEllenorzesTetelek]') IS NOT NULL BEGIN
DROP PROCEDURE [DBO].[sp_GetNaploEllenorzesTetelek]
END
GO
-- =============================================
-- Author: Kelemen Attila
-- Create date: 2016.03.21.
-- Description: Naplóellenőrzés tételei
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetNaploEllenorzesTetelek]
@osztalyId int,
@hetSorszam int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
select * from
(
--Órarendi órák, amikhez nem tartozik tanóra
select T_ORARENDIORA.ID Id,
naptar.C_HETSORSZAMA HetSzama,
naptar.C_NAPDATUMA Datum,
naptar.C_HETNAPJA Hetnapja,
T_ORARENDIORA.C_ORASZAM Oraszam,
osztaly.C_NEV OsztalyNev,
T_TANTARGY.C_NEV TargyNev,
--Ha van helyettesítő, akkor annak a nevére van szükségünk
(select top 1 tanar.C_NYOMTATASINEV from T_FELHASZNALO tanar
where ((T_TANITASIORA.C_HELYETTESITOTANARID IS null and T_FOGLALKOZAS.C_TANARID = tanar.ID)
OR (T_TANITASIORA.C_HELYETTESITOTANARID IS not null and T_TANITASIORA.C_HELYETTESITOTANARID= tanar.ID))) TanarNev
FROM
T_ORARENDIORA
inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_ORARENDIORA.C_FOGLALKOZASID AND T_FOGLALKOZAS.TOROLT='F'
left join T_TANTARGY on T_TANTARGY.ID= T_FOGLALKOZAS.C_TANTARGYID
inner join T_NAPTARINAP naptar on (( CONVERT(date,naptar.C_NAPDATUMA) BETWEEN CONVERT(date,T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE) AND CONVERT(date,T_ORARENDIORA.C_ORAERVENYESSEGVEGE))
AND
(naptar.C_HETIREND = T_ORARENDIORA.C_HETIREND OR T_ORARENDIORA.C_HETIREND = 1554
AND naptar.C_HETNAPJA = T_ORARENDIORA.C_HETNAPJA) )
LEFT JOIN T_TANITASIORA ON (T_TANITASIORA.C_ORARENDIORAID = T_ORARENDIORA.ID AND T_TANITASIORA.TOROLT='F' AND naptar.C_NAPDATUMA = T_TANITASIORA.C_DATUM
--AND T_TANITASIORA.C_MEGTARTOTT IS NULL
)
inner join T_OSZTALYCSOPORT osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID = osztaly.ID AND osztaly.TOROLT='F'
--Az osztályhoz kapcsolódó csoportok óráit is listázzuk
left join (Select OsztalyID, CsoportID from
(select C_OSZTALYCSOPORTID OsztalyID, C_TANULOID TanuloID from T_TANULOCSOPORT INNER JOIN T_OSZTALY ON T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.ID
WHERE T_TANULOCSOPORT.TOROLT='F'
and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) OsztalyTanuloi
INNER JOIN
(SELECT T_CSOPORT.ID CsoportID, C_TANULOID TanuloID FROM T_TANULOCSOPORT
INNER JOIN T_CSOPORT ON T_TANULOCSOPORT.ID=T_CSOPORT.ID
WHERE T_CSOPORT.TOROLT='F'
AND T_TANULOCSOPORT.TOROLT='F'
and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())
) Csoportok ON OsztalyTanuloi.TanuloID = Csoportok.TanuloID) KapcsolodoCsoportok ON
KapcsolodoCsoportok.OsztalyID = @osztalyId
where T_ORARENDIORA.TOROLT='F'
AND naptar.TOROLT = 'F'
AND GETDATE() >= naptar.C_NAPDATUMA
AND T_TANITASIORA.ID IS NULL
AND (osztaly.ID = @osztalyId OR osztaly.ID = KapcsolodoCsoportok.CsoportID)
and naptar.C_HETSORSZAMA = @hetSorszam
UNION ALL
--Tanítási órák, amikhez nem tartozik órarendi óra
select T_TANITASIORA.ID Id,
naptar.C_HETSORSZAMA HetSzama,
naptar.C_NAPDATUMA Datum,
naptar.C_HETNAPJA Hetnapja,
T_TANITASIORA.C_ORASZAM Oraszam,
osztaly.C_NEV OsztalyNev,
T_TANTARGY.C_NEV TargyNev,
tanar.C_NYOMTATASINEV TanarNev
from T_TANITASIORA
inner join T_NAPTARINAP naptar on (T_TANITASIORA.C_DATUM = naptar.C_NAPDATUMA)
inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_TANITASIORA.C_FOGLALKOZASID
left join T_OSZTALYCSOPORT osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID = osztaly.ID
left join T_TANTARGY on T_TANTARGY.ID= T_FOGLALKOZAS.C_TANTARGYID
left join T_FELHASZNALO tanar on
--Ha van helyettesítő, akkor aszerint joinolunk
(case when T_TANITASIORA.C_HELYETTESITOTANARID IS not null then T_TANITASIORA.C_HELYETTESITOTANARID
else T_FOGLALKOZAS.C_TANARID end) = tanar.ID
left join (Select OsztalyID, CsoportID from
(select C_OSZTALYCSOPORTID OsztalyID, C_TANULOID TanuloID from T_TANULOCSOPORT INNER JOIN T_OSZTALY ON T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.ID
WHERE T_TANULOCSOPORT.TOROLT='F'
and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) OsztalyTanuloi
INNER JOIN
(SELECT T_CSOPORT.ID CsoportID, C_TANULOID TanuloID FROM T_TANULOCSOPORT
INNER JOIN T_CSOPORT ON T_TANULOCSOPORT.ID=T_CSOPORT.ID
WHERE T_CSOPORT.TOROLT='F'
AND T_TANULOCSOPORT.TOROLT='F'
and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())
) Csoportok ON OsztalyTanuloi.TanuloID = Csoportok.TanuloID) KapcsolodoCsoportok ON
KapcsolodoCsoportok.OsztalyID = @osztalyId
where T_TANITASIORA.C_ORARENDIORAID is null
AND T_TANITASIORA.C_MEGTARTOTT is null
AND (osztaly.ID = @osztalyId OR osztaly.ID = KapcsolodoCsoportok.CsoportID)
and naptar.C_HETSORSZAMA = @hetSorszam
) Orak
ORDER BY Datum DESC
END