kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170425134431_KRETA_963/sp_GetDokumentumErtekelesek.sql
2024-03-13 00:33:46 +01:00

144 lines
No EOL
5.1 KiB
Transact-SQL

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetDokumentumErtekelesek') IS NOT NULL BEGIN
DROP PROCEDURE [sp_GetDokumentumErtekelesek]
END
GO
CREATE PROCEDURE sp_GetDokumentumErtekelesek
@osztalyId int,
@tanevId int,
@ertekelesTipus int,
@isBizonyitvany int = 0
AS
BEGIN
SET NOCOUNT ON;
--Osztályhoz tartozó tanulók
DECLARE @Tanulok TABLE (TanuloId int)
INSERT INTO @Tanulok
SELECT
C_TANULOID
FROM T_TANULOCSOPORT
WHERE
C_OSZTALYCSOPORTID = @osztalyId
AND TOROLT='F'
--Tanulóhoz kapcsolódó óraszámok
DECLARE @Oraszamok TABLE (TanuloId int, Tantargy INT, Oraszam INT)
INSERT INTO @Oraszamok
SELECT
TanuloId
, TantargyId
, SUM(Oraszam)
FROM
(
SELECT
te.C_TANULOID TanuloId
, IIF(C_FOTARGYE = 'T', t.Id, C_FOTARGYID) TantargyId
, IIF((SELECT C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId) = 'T', 30, 36) * fog.C_ORASZAM Oraszam
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN T_FOGLALKOZAS_OSSZES fog on fog.C_OSZTALYCSOPORTID = te.C_OSZTALYCSOPORTID and fog.C_TANTARGYID = te.C_TANTARGYID
INNER JOIN T_TANTARGY_OSSZES t on t.ID = te.C_TANTARGYID
INNER JOIN @Tanulok tanulok on tanulok.TanuloId = te.C_TANULOID
WHERE
te.TOROLT = 'F'
AND te.C_TANEVID = @tanevId
AND te.C_ERTEKELESTIPUSA = @ertekelesTipus
) a
GROUP BY TanuloId, TantargyId
--Értékelések
SELECT
ERTEKELES.C_TANULOID TANULOID
, 'MAGATARTAS' TARGY
, ERT.C_NAME Ertekeles
, NULL Jegyzet
, ERT.C_NAME ErtekelesJegyzettel
, ERT.C_NAME SzovegesErtekeles
, NULL Oraszam
, 1 RENDEZ
FROM T_TANULOERTEKELES_OSSZES ERTEKELES
INNER JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
LEFT JOIN T_OSZTALYFONOKIERTEKELES_OSSZES OSZTALYZAT
ON OSZTALYZAT.ID = ERTEKELES.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ERT ON ERT.ID=OSZTALYZAT.C_MAGATARTAS AND ERT.C_TANEVID = @tanevId
WHERE
TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
AND ERTEKELES.C_ERTEKELESTIPUSA = @ertekelesTipus
AND (OSZTALYZAT.C_MAGATARTAS IS NOT NULL OR (LEN(ERTEKELES.C_ERTEKELESSZOVEG) > 0 AND ERTEKELES.C_TANTARGYID IS NULL) )
AND ERTEKELES.C_TANEVID = @tanevId
AND ERTEKELES.TOROLT='F'
UNION
SELECT
ERTEKELES.C_TANULOID TANULOID
, 'SZORGALOM' TARGY
, ERT.C_NAME Ertekeles
, NULL Jegyzet
, ERT.C_NAME ErtekelesJegyzettel
, ERT.C_NAME SzovegesErtekeles
, NULL Oraszam
, 2 RENDEZ
FROM T_TANULOERTEKELES_OSSZES ERTEKELES
INNER JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
LEFT JOIN T_OSZTALYFONOKIERTEKELES_OSSZES OSZTALYZAT
ON OSZTALYZAT.ID = ERTEKELES.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ERT ON ERT.ID=OSZTALYZAT.C_SZORGALOM
WHERE
TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
AND ERTEKELES.C_ERTEKELESTIPUSA = @ertekelesTipus
AND OSZTALYZAT.C_SZORGALOM IS NOT NULL
AND ERTEKELES.C_TANEVID = @TanevId
AND ERTEKELES.TOROLT='F'
UNION
SELECT
ERTEKELES.C_TANULOID TANULOID
, TARGY.TARGYNEV TARGY
, ERT.C_NAME Ertekeles
, ertekelesMegjegyzes.C_TEMA Jegyzet
, ERT.C_NAME + IIF(ertekelesMegjegyzes.C_TEMA IS NULL, '', +' * '+ertekelesMegjegyzes.C_TEMA) ErtekelesJegyzettel
, ERTEKELES.C_ERTEKELESSZOVEG SzovegesErtekeles
, Oraszam Oraszam
, TARGY.KAT RENDEZ
FROM T_TANULOERTEKELES_OSSZES ERTEKELES
INNER JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES
WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
INNER JOIN ( SELECT ID,C_NEV TARGYNEV,C_TARGYKATEGORIA KAT, C_ALTANTARGYKENTNYOMTATVANYBAN, C_FOTARGYE FROM T_TANTARGY_OSSZES where TOROLT = 'F') TARGY
ON TARGY.ID = ERTEKELES.C_TANTARGYID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ERT ON ERT.ID=ERTEKELES.C_OSZTALYZAT AND ERT.C_TANEVID = @tanevId
LEFT JOIN T_OSZTALYZATERTEKELES_OSSZES ertekelesMegjegyzes on ertekelesMegjegyzes.ID=ertekeles.Id
LEFT JOIN @Oraszamok oraszam ON
oraszam.Tantargy = ERTEKELES.C_TANTARGYID
AND oraszam.TanuloId = ERTEKELES.C_TANULOID
WHERE
TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
AND ERTEKELES.C_ERTEKELESTIPUSA = @ertekelesTipus
AND ERTEKELES.C_TANEVID = @tanevId
AND ERTEKELES.TOROLT='F'
AND (TARGY.C_FOTARGYE = 'T' OR TARGY.C_ALTANTARGYKENTNYOMTATVANYBAN='T')
ORDER BY TANULOID, RENDEZ
END
GO