This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,19 @@
DECLARE intezmenytanevekCursor CURSOR LOCAL FOR
SELECT C_INTEZMENYID, C_TANEVID
FROM T_INTEZMENYADATOK
DECLARE @intezmenyId int, @tanevId int
OPEN intezmenytanevekCursor
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @tanevId
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'INTÉZMÉNY ID: ' + CAST(@intezmenyId AS NVARCHAR(10)) + ', TANÉV ID: ' + CAST(@tanevId AS NVARCHAR(10))
EXEC sp_Global_CreateDictionaryItems @IntezmenyId = @intezmenyId, @TanevId = @tanevId
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @tanevId
END
CLOSE intezmenytanevekCursor
DEALLOCATE intezmenytanevekCursor

View file

@ -0,0 +1,10 @@
IF EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID') BEGIN
DROP INDEX IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID ON T_TANULOMULASZTAS
END
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID_INC_KESESPERCBEN') BEGIN
CREATE INDEX IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID_INC_KESESPERCBEN
ON T_TANULOMULASZTAS (C_ORATANULOIID, C_TANITASIORAKID, C_TIPUS, C_INTEZMENYID, C_TANEVID)
INCLUDE (C_KESESPERCBEN)
WHERE TOROLT = 'F'
END

View file

@ -0,0 +1,243 @@
-- =============================================
-- Description: <Dinamikus import>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_DynamicImport]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_DynamicImport]
END
GO
CREATE PROCEDURE [dbo].[sp_DynamicImport]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pUserId INT
,@pInsertAlways BIT = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@sqlCommand NVARCHAR(MAX) = ''
,@lastChangedDateTime DATETIME = GETDATE()
,@modifierId INT = @pUserId
,@openJsonWithCommand NVARCHAR(MAX)
,@rootElementJsonWithCommand NVARCHAR(300)
,@columnNameFromJsonCommand NVARCHAR(300)
,@columnListForInsert NVARCHAR(MAX)
,@columnListForUpdate NVARCHAR(MAX)
,@sqlInsertCommand NVARCHAR(MAX)
,@sqlUpdateCommand NVARCHAR(MAX)
,@sqlDeleteCommand NVARCHAR(MAX)
,@rootElement NVARCHAR(100)
,@tableNameFromJson NVARCHAR(50)
,@columnCount INT
,@openJsonPath NVARCHAR(300)
DECLARE @TableName TABLE
(
TableName NVARCHAR(50)
)
DECLARE @ColumnTable TABLE
(
ColumnName NVARCHAR(50)
)
DECLARE @ColumnDataTable TABLE
(
ColumnName NVARCHAR(50)
,ColumnType NVARCHAR(50)
,MaxLengthValue NVARCHAR(50)
,NumericPrecision NVARCHAR(50)
,NumericScale NVARCHAR(50)
,IsNullable NVARCHAR(50)
)
-- A Json Root elemének kiszedése változóba @rootElement
SELECT
@rootElement = [key]
FROM
OPENJSON(@pImportJson, N'strict $')
--Az importálandó táblanevének kiszedése JSON-ből (rootelem utáni elem) @tableNameFromJson
SET @rootElementJsonWithCommand =
'SELECT
@tableNameFromJson = [key]
FROM
OPENJSON(@pImportJson, N''lax $.' + @rootElement + ''')
SELECT
@tableNameFromJson '
INSERT INTO @TableName
EXEC sp_executesql @rootElementJsonWithCommand, N'@pImportJson NVARCHAR(MAX), @tableNameFromJson NVARCHAR(50)', @pImportJson, @tableNameFromJson
SELECT @tableNameFromJson = (SELECT TOP 1 TableName FROM @TableName)
--NOTE: Megvizsgáljuk, hogy létezik-e a tábla neve a Json-ben
IF (@tableNameFromJson IS NOT NULL)
BEGIN
--Ha Törölnünk is kell akkor azzal kezdünk!
IF @pIsTorles = 1
BEGIN
--DELETE összeállítása (Igazából update mert csak töröltre állít)
SET @sqlDeleteCommand =
'UPDATE '
+ @tableNameFromJson + '
SET '
+ @tableNameFromJson + '.TOROLT = ''T'', '
+ @tableNameFromJson + '.SERIAL = ' + @tableNameFromJson + '.SERIAL + 1, '
+ @tableNameFromJson + '.LASTCHANGED = ''' + CONVERT(NVARCHAR(32), @lastChangedDateTime, 126) + ''', '
+ @tableNameFromJson + '.MODIFIER = ''' + CONVERT(NVARCHAR(32), @modifierId) + '''
WHERE '
+ @tableNameFromJson + '.TOROLT = ''F''
AND ' + @tableNameFromJson + '.C_IMPORTALT = ''T'' '
SET @sqlCommand = @sqlDeleteCommand + @sqlCommand
END
--Oszlopok nevei a Json-ben
SET @columnNameFromJsonCommand =
'SELECT
[key] ColumnNameList
INTO
#ColumnList
FROM
OPENJSON(@pImportJson, N''lax $.' + @rootElement + '.' + @tableNameFromJson + '[0]'')
SELECT * FROM #ColumnList'
INSERT INTO @ColumnTable
EXEC sp_executesql @columnNameFromJsonCommand, N'@pImportJson NVARCHAR(MAX)', @pImportJson
SELECT @columnCount = (SELECT COUNT(*) FROM @ColumnTable)
--NOTE: Megvizsgáljuk, hogy van-e oszlop a Json-ben
IF (@columnCount <> 0)
BEGIN
INSERT INTO
@ColumnDataTable
SELECT
COLUMN_NAME
,DATA_TYPE
,CHARACTER_MAXIMUM_LENGTH
,NUMERIC_PRECISION
,NUMERIC_SCALE
,IS_NULLABLE
FROM
INFORMATION_SCHEMA.columns
WHERE
TABLE_NAME = @tableNameFromJson
AND TABLE_SCHEMA = 'dbo'
AND COLUMN_NAME IN (SELECT ColumnName FROM @ColumnTable)
SELECT @openJsonWithCommand =
ISNULL(@openJsonWithCommand + CHAR(13) + CHAR(10) + CHAR(9) + ',', CHAR(9) + SPACE(1) + '')
+ '[' + ColumnName + '] ' + ColumnType
+ CASE
WHEN ColumnType IN ('DECIMAL', 'NUMERIC')
THEN ISNULL('(' + CONVERT(VARCHAR(2), NumericPrecision) + ', ' + CONVERT(VARCHAR(2), NumericScale) + ') ', ' ')
WHEN ColumnType IN ('NVARCHAR', 'VARCHAR', 'NCHAR', 'CHAR')
THEN ISNULL('(' + CONVERT(VARCHAR(4), IIF(MaxLengthValue = -1, 'MAX', MaxLengthValue)) + ') ', ' ')
ELSE
' '
END
+ '''$.' + ColumnName + ''''
FROM @ColumnDataTable
SET @openJsonWithCommand = '(' + CHAR(13) + CHAR(10) + @openJsonWithCommand + CHAR(13) + CHAR(10) + ')'
--OSZLOPLISTA INSERTHEZ
SELECT
@columnListForInsert = ISNULL(@columnListForInsert + ', ', '') + '[' + columnDataTable.ColumnName + ']' --TODO andrejkovicse: Függvény a []-ra
FROM
@ColumnDataTable columnDataTable
WHERE
columnDataTable.ColumnName <> 'ID' OR @pInsertAlways = 1
--OSZLOPLISTA UPDATHEZ
SELECT
@columnListForUpdate = ISNULL(@columnListForUpdate + ', ', '') + '[' + @tableNameFromJson + '].' + '[' + columnDataTable.ColumnName + '] = [ImportData].' + '[' + columnDataTable.ColumnName + ']'
FROM
@ColumnDataTable columnDataTable
WHERE
columnDataTable.ColumnName NOT IN ('ID', 'SERIAL', 'CREATOR', 'CREATED', 'C_IMPORTALT')
-- OPENJSON path beállítása (ez megegyezik mindhárom műveletnél)
SET @openJsonPath = N'''strict $.' + @rootElement + '.' + @tableNameFromJson + ''''
--INSERT összeállítása
SET @sqlInsertCommand =
'INSERT INTO '
+ @tableNameFromJson + '(' + @columnListForInsert + ')
SELECT '
+ @columnListForInsert + '
FROM
OPENJSON(@pImportJson, ' + @openJsonPath + ')
WITH '
+ @openJsonWithCommand
IF(@pInsertAlways = 0)
BEGIN
SET @sqlInsertCommand = @sqlInsertCommand + '
WHERE
ID IS NULL '
END
IF(@pInsertAlways = 0)
BEGIN
--UPDATE összeállítása
SET @sqlUpdateCommand =
'UPDATE '
+ @tableNameFromJson + '
SET '
+ @columnListForUpdate + ', '
+ @tableNameFromJson + '.SERIAL = ' + @tableNameFromJson + '.SERIAL + 1 ' + '
FROM
(SELECT *
FROM
OPENJSON(@pImportJson, ' + @openJsonPath + ')
WITH '
+ @openJsonWithCommand + '
WHERE
ID IS NOT NULL) AS ImportData
WHERE ' +
@tableNameFromJson + '.ID = ImportData.ID '
END
IF(@sqlUpdateCommand IS NULL OR @sqlUpdateCommand = '')
BEGIN
SET @sqlCommand = @sqlCommand + @sqlInsertCommand
END
ELSE
BEGIN
SET @sqlCommand = @sqlCommand + @sqlInsertCommand + @sqlUpdateCommand
END
END
IF(@sqlCommand IS NOT NULL OR @sqlCommand <> '')
BEGIN
EXEC sp_executesql @sqlCommand, N'@pImportJson NVARCHAR(MAX)', @pImportJson
END
END
END
GO

View file

@ -0,0 +1,83 @@
-- =============================================
-- Description: <Json daraboló a dinamikus importhoz>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_DynamicImportJsonSplit]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_DynamicImportJsonSplit]
END
GO
CREATE PROCEDURE [dbo].[sp_DynamicImportJsonSplit]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pUserId INT
,@pInsertAlways BIT
,@pTableNameList NVARCHAR(2000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @OrderTable TABLE (
Number INT
,TableName NVARCHAR(50)
)
--Paraméterként kapott táblanevek beszúrása
INSERT INTO
@OrderTable
SELECT *
FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY [value] DESC) Number
,VALUE TableName
FROM
STRING_SPLIT (@pTableNameList, ',')
WHERE
RTRIM(value) <> '') AS subSelect
DECLARE
@number INT = 1
,@tableName NVARCHAR(50)
,@actualJson NVARCHAR(MAX)
WHILE EXISTS(SELECT TableName FROM @OrderTable WHERE Number = @number)
BEGIN
SELECT
@tableName = TableName
FROM
@OrderTable
WHERE
Number = @number
IF EXISTS(SELECT [Key] FROM OPENJSON(@pImportJson, N'strict $.ImportJson') WHERE [Key] = @tableName)
BEGIN
--[dbo].[sp_DynamicImport] meghívása a JSON megfelelő részével
SET @actualJson = CONVERT(NVARCHAR(max), (
SELECT
[value]
FROM
OPENJSON(@pImportJson, N'strict $.ImportJson')
WHERE
[Key] = @tableName)
)
SET @actualJson = '{"ImportJson": {"' + @tableName + '":' + @actualJson + '} }'
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson, @pIsTorles = @pIsTorles, @pUserId = @pUserId, @pInsertAlways = @pInsertAlways
END
SET @number = @number + 1;
END
END
GO

View file

@ -0,0 +1,110 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetFogadooraInfo]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetFogadooraInfo]
END
GO
CREATE PROCEDURE [dbo].[sp_GetFogadooraInfo]
@alkalmazottId INT,
@tanevId INT
AS
BEGIN
SET NOCOUNT ON;
--fejléc
SELECT
i.C_NEV as intezmeny
,m.C_NEV as mukodesihely
,d.C_NAME as oktatasiNevelesiFeladatTipus
,ISNULL(i.C_VAROS + ', ', '') + FORMAT(GETDATE(), 'yyyy. MMMM dd.', 'hu-hu') AS kelt
FROM T_INTEZMENYADATOK_OSSZES i
INNER JOIN T_MUKODESIHELY_OSSZES m ON i.C_INTEZMENYID = m.C_INTEZMENYID AND m.TOROLT = 'F'
INNER JOIN T_FELADATELLATASIHELY_OSSZES f ON m.ID = f.C_MUKODESIHELYID AND f.TOROLT = 'F' AND f.C_TANEVID = @tanevId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.id = f.C_OKTATASINEVELESIFELADATTIPUS AND d.C_TANEVID = @tanevId
WHERE
i.C_TANEVID = @tanevId
SELECT
C_NYOMTATASINEV Nev
INTO #DuplikaltNevek
FROM T_FELHASZNALO_OSSZES
WHERE C_TANEVID = @tanevId AND TOROLT = 'F'
GROUP BY C_NYOMTATASINEV
HAVING COUNT(Id) > 1
--tanulocsoport
SELECT DISTINCT
tn.ID tanuloID
,tn.C_NYOMTATASINEV + IIF(tn.C_NYOMTATASINEV IN (SELECT NEV FROM #DuplikaltNevek), ' - ('
+ (FORMAT(tn.C_SZULETESIDATUM, 'yyyy.MM.dd') + ', '
+ dbo.fnGetDokumentumTanuloAktualisOsztaly (tn.ID) +')' ), '') TanuloNeve
FROM T_FOGLALKOZAS_OSSZES f
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = f.C_TANTARGYID
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.id = f.C_TANARID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = f.C_OSZTALYCSOPORTID
LEFT JOIN T_CSOPORTOK_OSZTALYOK cso ON cso.C_CSOPORTOKID = ocs.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES csocs ON csocs.ID = cso.C_OSZTALYOKID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES tn ON tn.ID = tcs.C_TANULOID
WHERE
f.C_TANARID = @alkalmazottId
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
AND f.C_TANEVID=@TANEVID
AND f.TOROLT='F'
ORDER BY TanuloNeve
--tanuloinfo
SELECT e.ID, tn.ID as tanuloID, tn.C_NYOMTATASINEV as tanuloNev, FORMAT(e.C_ERTEKELESDATUM, 'd', 'hu-hu') as ertekelesDatuma,
dt.C_NAME as ertekelesTipusa, dm.C_NAME as ertekelesModja, e.C_ERTEKELESSZOVEG as feljegyzes,
fh.C_NYOMTATASINEV as tanarNev, do.C_NAME as osztalyzat, ocs.ID as csoportID, ocs.C_NEV as csoportNev,
t.id as tantargyID, t.C_NEV as tantargyNev
FROM T_TANULOERTEKELES_OSSZES e
INNER JOIN T_OSZTALYZATERTEKELES_OSSZES oe ON e.ID = oe.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = e.C_OSZTALYCSOPORTID
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_OSZTALYCSOPORTID = ocs.ID
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = f.C_TANTARGYID and e.C_TANTARGYID = t.ID
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.id = f.C_TANARID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.C_TANULOID = e.C_TANULOID AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES tn ON tn.ID = tcs.C_TANULOID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dt ON dt.ID = e.C_ERTEKELESTIPUSA AND dt.C_TANEVID = @tanevId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dm ON (dm.ID = oe.C_ERTEKELESMODJA AND DM.C_INTEZMENYID = OE.C_ALINTEZMENYID AND DM.C_TANEVID = OE.C_ALTANEVID)
INNER JOIN T_DICTIONARYITEMBASE_OSSZES do ON (do.ID = e.C_OSZTALYZAT AND Do.C_INTEZMENYID = E.C_INTEZMENYID AND Do.C_TANEVID = E.C_TANEVID)
WHERE
f.C_TANARID = @alkalmazottId
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
AND e.C_TANEVID=@tanevId
AND e.TOROLT='F'
UNION ALL
SELECT e.ID, tn.ID as tanuloID, tn.C_NYOMTATASINEV as tanuloNev, FORMAT(e.C_ERTEKELESDATUM, 'd', 'hu-hu') as ertekelesDatuma,
dt.C_NAME as ertekelesTipusa, null as ertekelesModja, e.C_ERTEKELESSZOVEG as feljegyzes,
fh.C_NYOMTATASINEV as tanarNev, dm.C_NAME + ', ' + ds.C_NAME as osztalyzat, ocs.ID as csoportID, ocs.C_NEV as csoportNev,
t.id as tantargyID, t.C_NEV as tantargyNev
FROM T_TANULOERTEKELES_OSSZES e
INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe ON e.ID = oe.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = e.C_OSZTALYCSOPORTID
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_OSZTALYCSOPORTID = ocs.ID
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = f.C_TANTARGYID and e.C_TANTARGYID = t.ID
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.id = f.C_TANARID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.C_TANULOID = e.C_TANULOID AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES tn ON tn.ID = tcs.C_TANULOID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dt ON dt.ID = e.C_ERTEKELESTIPUSA AND dt.C_TANEVID = @tanevId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dm ON dm.ID = oe.C_MAGATARTAS AND dm.C_TANEVID = @tanevId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES ds ON ds.ID = oe.C_SZORGALOM AND ds.C_TANEVID = @tanevId
WHERE
f.C_TANARID = @alkalmazottId
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
AND e.C_TANEVID=@TANEVID
AND e.TOROLT='F'
END
GO

View file

@ -0,0 +1,35 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetJsonForMobileFoglalkozasokListaja]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetJsonForMobileFoglalkozasokListaja]
END
GO
CREATE PROCEDURE [dbo].[sp_GetJsonForMobileFoglalkozasokListaja]
@tanarId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT
foglalkozas.ID AS 'foglalkozasId'
,foglalkozas.C_NEV AS 'nev'
,tgy.ID AS 'tantargyId'
,tgy.C_NEV AS 'tantargyNev'
,ocs.ID AS 'osztalyCsoportId'
,ocs.C_NEV AS 'osztalyCsoportNev'
,dic.C_NAME AS 'tantargyKategoria'
FROM T_FOGLALKOZAS foglalkozas
JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = foglalkozas.C_OSZTALYCSOPORTID
JOIN T_TANTARGY tgy ON tgy.ID = foglalkozas.C_TANTARGYID
JOIN T_DICTIONARYITEMBASE dic on dic.ID = tgy.C_TARGYKATEGORIA AND dic.C_TANEVID = tgy.C_TANEVID AND dic.C_INTEZMENYID = tgy.C_INTEZMENYID
WHERE
foglalkozas.TOROLT = 'F'
AND foglalkozas.C_TANARID = @tanarId
FOR JSON PATH
END

View file

@ -0,0 +1,27 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetJsonForMobileTanarProfil]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetJsonForMobileTanarProfil]
END
GO
CREATE PROCEDURE [dbo].[sp_GetJsonForMobileTanarProfil]
@tanarId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT
felhasznalo.ID AS 'id'
,felhasznalo.C_NYOMTATASINEV AS 'nev'
,'' AS 'kep'
FROM T_FELHASZNALO felhasznalo
WHERE
felhasznalo.TOROLT = 'F' AND felhasznalo.ID = @tanarId
FOR JSON PATH
END

View file

@ -0,0 +1,109 @@
GO
/****** Object: StoredProcedure [dbo].[sp_GetJsonForMobileTanoraListaPart1] Script Date: 2018. 02. 02. 14:35:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetJsonForMobileTanoraListaPart1]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetJsonForMobileTanoraListaPart1]
END
GO
CREATE PROCEDURE [dbo].[sp_GetJsonForMobileTanoraListaPart1]
@tanarId INT
AS
BEGIN
SET NOCOUNT ON;
(SELECT
oo.ID AS 'id'
,CONVERT(datetime,
(
CAST(DATEPART(year,nn.C_NAPDATUMA) AS nvarchar(4))
+ '-' +
CAST(DATEPART(month,nn.C_NAPDATUMA) AS nvarchar(2))
+ '-' +
CAST(DATEPART(day,nn.C_NAPDATUMA) AS nvarchar(2))
+ ' ' +
CAST(DATEPART(hour,oo.C_ORAKEZDETE) AS nvarchar(2))
+ ':' +
CAST(DATEPART(minute,oo.C_ORAKEZDETE) AS nvarchar(2))
), 102) AS 'start'
,CONVERT(datetime,
(
CAST(DATEPART(year,nn.C_NAPDATUMA) AS nvarchar(4))
+ '-' +
CAST(DATEPART(month,nn.C_NAPDATUMA) AS nvarchar(2))
+ '-' +
CAST(DATEPART(day,nn.C_NAPDATUMA) AS nvarchar(2))
+ ' ' +
CAST(DATEPART(hour,oo.C_ORAVEGE) AS nvarchar(2))
+ ':' +
CAST(DATEPART(minute,oo.C_ORAVEGE) AS nvarchar(2))
),102) AS 'end'
,oo.C_ORASZAM AS 'oraszam'
,IIF(tno.ID IS NULL,'false','true') AS 'naplozott'
,'false' AS 'mobilnaplozott'
,IIF(ISNULL(tno.C_MEGTARTOTT,'T') = 'T','false','true') AS 'isElmaradt'
,ISNULL(tno.C_TEMA,'') AS 'tema'
,IIF(tno.C_HELYETTESITOTANARID IS NULL,'false','true') AS 'helyettesitett'
,ISNULL(helyettesito.C_NYOMTATASINEV,'') AS 'helyettesitoNev'
,ISNULL(tno.C_HELYETTESITOTANARID,0) AS 'helyettesitoId'
,tantargy.C_NEV AS 'tantargyNev'
,tantargy.ID AS 'tantargyId'
,tanar.C_NYOMTATASINEV AS 'tanarNev'
,tanar.ID AS 'tanarId'
,osztalycsoport.C_NEV AS 'osztalycsoportNev'
,osztalycsoport.ID AS 'osztalycsoportId'
,terem.C_NEV AS 'teremNev'
,terem.ID AS 'teremId'
,ISNULL(tno.C_HAZIFELADAT,'') AS 'hazifeladat'
,dic.C_NAME AS 'TantargyKategoriaNev'
,'tanulok' =
(
SELECT
tanulo.ID AS 'tanuloId'
,tanulo.C_NYOMTATASINEV AS 'tanuloNev'
,tanulo.C_ANYJANEVE AS 'tanuloAnyjaNeve'
,convert(datetime,tanulo.C_SZULETESIDATUM,102) AS 'tanuloSzuletesiDatum'
,ISNULL(tm.C_TIPUS,1498) AS 'mulasztasTipusEnumId'
,tm.ID AS 'mulasztasId'
,ISNULL(tm.C_KESESPERCBEN,0) AS 'keses'
,'feljegyzesek' =
(
SELECT
te.ID AS 'Id'
,te.C_TIPUS AS 'feljegyzesTipusEnumId'
FROM T_TANULOESEMENY te
INNER JOIN T_TANULO_TANULOESEMENY tte ON tte.C_TANULOID = tanulo.ID AND te.ID = tte.C_TANULOESEMENYID
WHERE
te.C_TANITASIORAID = tno.ID AND te.TOROLT = 'F'
FOR JSON PATH
)
FROM T_TANULOCSOPORT tcs
INNER JOIN T_FELHASZNALO tanulo ON tanulo.TOROLT = 'F' AND tcs.C_TANULOID = tanulo.ID
INNER JOIN T_TANULO t ON t.ID = tanulo.ID AND t.TOROLT = 'F' AND t.C_JOGVISZONYATSZUNETELTETO = 'F'
LEFT JOIN T_TANULOMULASZTAS tm ON tm.C_ORATANULOIID = tanulo.ID AND tm.C_TANITASIORAKID = tno.ID AND tm.TOROLT = 'F'
WHERE
tcs.TOROLT = 'F' AND tcs.C_OSZTALYCSOPORTID = osztalycsoport.ID AND
tcs.C_BELEPESDATUM < nn.C_NAPDATUMA AND (tcs.C_KILEPESDATUM > nn.C_NAPDATUMA OR tcs.C_KILEPESDATUM IS NULL)
FOR JSON PATH
)
FROM T_NAPTARINAP nn
INNER JOIN T_ORARENDIORA oo ON oo.C_ORAERVENYESSEGKEZDETE <= nn.C_NAPDATUMA AND oo.C_ORAERVENYESSEGVEGE >= nn.C_NAPDATUMA AND oo.TOROLT = 'F' AND oo.C_HETNAPJA = nn.C_HETNAPJA AND (oo.C_HETIREND = nn.C_HETIREND OR oo.C_HETIREND = 1554)
LEFT JOIN T_TANITASIORA tno ON tno.C_DATUM = nn.C_NAPDATUMA AND tno.C_ORASZAM = oo.C_ORASZAM AND tno.C_OSZTALYCSOPORTID = oo.C_OSZTALYCSOPORTID AND tno.C_TANTARGYID = oo.C_TANTARGYID AND (tno.C_TANARID = oo.C_TANARID OR tno.C_HELYETTESITOTANARID = oo.C_TANARID)
LEFT JOIN T_FELHASZNALO helyettesito ON helyettesito.ID = tno.C_HELYETTESITOTANARID AND helyettesito.TOROLT = 'F'
INNER JOIN T_TANTARGY tantargy ON tantargy.ID = oo.C_TANTARGYID AND tantargy.TOROLT = 'F'
INNER JOIN T_TEREM terem ON terem.ID = oo.C_TEREMID AND terem.TOROLT = 'F'
INNER JOIN T_FELHASZNALO tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT osztalycsoport ON osztalycsoport.ID = oo.C_OSZTALYCSOPORTID AND osztalycsoport.TOROLT = 'F'
JOIN T_DICTIONARYITEMBASE dic on dic.ID = tantargy.C_TARGYKATEGORIA AND dic.C_TANEVID = tantargy.C_TANEVID AND dic.C_INTEZMENYID = tantargy.C_INTEZMENYID
WHERE
nn.TOROLT = 'F' AND
nn.C_NAPDATUMA > DATEADD(week,-2,GETDATE()) AND
nn.C_NAPDATUMA < DATEADD(week,2,GETDATE()) AND
oo.C_TANARID = @tanarId AND tno.ID IS NULL)
FOR JSON PATH
END

View file

@ -0,0 +1,89 @@
GO
/****** Object: StoredProcedure [dbo].[sp_GetJsonForMobileTanoraListaPart2] Script Date: 2018. 02. 02. 14:42:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetJsonForMobileTanoraListaPart2]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetJsonForMobileTanoraListaPart2]
END
GO
Create PROCEDURE [dbo].[sp_GetJsonForMobileTanoraListaPart2]
@tanarId INT
AS
BEGIN
SET NOCOUNT ON;
(SELECT
tno.ID AS 'id'
,convert(datetime,tno.C_ORAKEZDETE,102) AS 'start'
,convert(datetime,tno.C_ORAVEGE,102) AS 'end'
,tno.C_ORASZAM AS 'oraszam'
,'true' AS 'naplozott'
,IIF(tno.C_MOBILNAPLOZOTT = 'F','false','true') AS 'mobilnaplozott'
,IIF(tno.C_MEGTARTOTT = 'F','true','false') AS 'isElmaradt'
,ISNULL(tno.C_TEMA,'') AS 'tema'
,IIF(tno.C_HELYETTESITOTANARID IS NULL,'false','true') AS 'helyettesitett'
,ISNULL(helyettesito.C_NYOMTATASINEV,'') AS 'helyettesitoNev'
,ISNULL(tno.C_HELYETTESITOTANARID,0) AS 'helyettesitoId'
,tantargy.C_NEV AS 'tantargyNev'
,tantargy.ID AS 'tantargyId'
,tanar.C_NYOMTATASINEV AS 'tanarNev'
,tanar.ID AS 'tanarId'
,osztalycsoport.C_NEV AS 'osztalycsoportNev'
,osztalycsoport.ID AS 'osztalycsoportId'
,terem.C_NEV AS 'teremNev'
,terem.ID AS 'teremId'
,ISNULL(hf.C_FELADATSZOVEGE,'') AS 'hazifeladat'
,'tanulok' =
(
SELECT
tanulo.ID AS 'tanuloId'
,tanulo.C_NYOMTATASINEV AS 'tanuloNev'
,tanulo.C_ANYJANEVE AS 'tanuloAnyjaNeve'
,convert(datetime,tanulo.C_SZULETESIDATUM,102) AS 'tanuloSzuletesiDatum'
,tm.ID AS 'mulasztasId'
,ISNULL(tm.C_TIPUS,1498) AS 'mulasztasTipusEnumId'
,ISNULL(tm.C_KESESPERCBEN,0) AS 'keses'
,'feljegyzesek' =
(
SELECT
te.ID AS 'Id'
,te.C_TIPUS AS 'feljegyzesTipusEnumId'
FROM T_TANULOESEMENY te
INNER JOIN T_TANULO_TANULOESEMENY tte ON tte.C_TANULOID = tanulo.ID AND te.ID = tte.C_TANULOESEMENYID
WHERE
te.C_TANITASIORAID = tno.ID AND te.TOROLT = 'F'
FOR JSON PATH
)
FROM T_TANULOCSOPORT tcs
INNER JOIN T_FELHASZNALO tanulo ON tanulo.TOROLT = 'F' AND tcs.C_TANULOID = tanulo.ID
INNER JOIN T_TANULO t ON t.ID = tanulo.ID AND t.TOROLT = 'F' AND t.C_JOGVISZONYATSZUNETELTETO = 'F'
LEFT JOIN T_TANULOMULASZTAS tm ON tm.C_ORATANULOIID = tanulo.ID AND tm.C_TANITASIORAKID = tno.ID AND tm.TOROLT = 'F'
WHERE
tcs.TOROLT = 'F' AND tcs.C_OSZTALYCSOPORTID = osztalycsoport.ID AND
tcs.C_BELEPESDATUM < nn.C_NAPDATUMA AND (tcs.C_KILEPESDATUM > nn.C_NAPDATUMA OR tcs.C_KILEPESDATUM IS NULL)
FOR JSON PATH
)
FROM T_NAPTARINAP nn
JOIN T_TANITASIORA tno ON tno.C_DATUM = nn.C_NAPDATUMA AND tno.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO helyettesito ON helyettesito.ID = tno.C_HELYETTESITOTANARID AND helyettesito.TOROLT = 'F'
JOIN T_TANTARGY tantargy ON tantargy.ID = tno.C_TANTARGYID AND tantargy.TOROLT = 'F'
JOIN T_TEREM terem ON terem.ID = tno.C_TEREMID AND terem.TOROLT = 'F'
JOIN T_FELHASZNALO tanar ON tanar.ID = tno.C_TANARID AND tanar.TOROLT = 'F'
JOIN T_OSZTALYCSOPORT osztalycsoport ON osztalycsoport.ID = tno.C_OSZTALYCSOPORTID AND osztalycsoport.TOROLT = 'F'
JOIN T_DICTIONARYITEMBASE dic on dic.ID = tantargy.C_TARGYKATEGORIA AND dic.C_TANEVID = tantargy.C_TANEVID AND dic.C_INTEZMENYID = tantargy.C_INTEZMENYID
LEFT JOIN T_HAZIFELADATOK hf on hf.C_TANITASIORAID = tno.ID and hf.C_TANEVID = tno.C_TANEVID
WHERE
nn.TOROLT = 'F' AND
nn.C_NAPDATUMA > DATEADD(week,-2,GETDATE()) AND
nn.C_NAPDATUMA < DATEADD(week,2,GETDATE()) AND
(
tno.C_TANARID = @tanarId OR
tno.C_HELYETTESITOTANARID = @tanarId
)
) FOR JSON PATH
END

View file

@ -0,0 +1,67 @@
GO
/****** Object: StoredProcedure [dbo].[sp_GetJsonForMobileTanuloLista] Script Date: 2018. 02. 02. 14:43:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetJsonForMobileTanuloLista]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetJsonForMobileTanuloLista]
END
GO
Create PROCEDURE [dbo].[sp_GetJsonForMobileTanuloLista]
@tanarId INT,
@foglalkozasId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
osztalycsoport.ID AS 'osztalycsoportId'
,osztalycsoport.C_NEV AS 'osztalycsoportNev'
,tantargy.ID AS 'tantargyId'
,tantargy.C_NEV AS 'tantargyNev'
,dic.C_NAME AS 'tantargyKategoriaNev'
,'tanulok' =
(
SELECT
tanulo.ID AS 'tanuloid'
,tanulo.C_NYOMTATASINEV AS 'tanuloNev'
,tanulo.C_ANYJANEVE AS 'tanuloAnyjaNeve'
,tanulo.C_SZULETESIDATUM AS 'tanuloSzuletesiDatum'
,'ertekelesek' =
(
SELECT
te.ID AS 'Id'
,te.C_ERTEKELESOSZTALYZATID AS 'ertekelesOsztalyzatEnumId'
,te.C_ERTEKELESSZAZALEK AS 'ertekelesSzazalek'
,ISNULL(te.C_ERTEKELESSZOVEG, '') AS 'ertekelesSzoveg'
,ISNULL(te.C_ERTEKELESTEMA, '') AS 'ertekelesTema'
,te.C_TIPUSID AS 'ertekelesTipusEnumId'
,te.C_ERTEKELESMODID AS 'ertekelesModEnumId'
,te.C_DATUM AS 'ertekelesDatum'
FROM T_TANULOERTEKELES te
WHERE
te.C_TANULOID = tanulo.ID AND te.TOROLT = 'F' AND te.C_TANTARGYID = tantargy.ID
FOR JSON PATH
)
FROM T_TANULOCSOPORT tcs
INNER JOIN T_FELHASZNALO tanulo ON tanulo.TOROLT = 'F' AND tcs.C_TANULOID = tanulo.ID
WHERE
tcs.TOROLT = 'F' AND tcs.C_OSZTALYCSOPORTID = osztalycsoport.ID AND
tcs.C_BELEPESDATUM < GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)
FOR JSON PATH
)
FROM T_OSZTALYCSOPORT osztalycsoport
JOIN T_FOGLALKOZAS foglalkozas ON foglalkozas.TOROLT = 'F' AND foglalkozas.C_OSZTALYCSOPORTID = osztalycsoport.ID
JOIN T_TANTARGY tantargy ON tantargy.TOROLT = 'F' AND foglalkozas.C_TANTARGYID = tantargy.ID
JOIN T_FELHASZNALO felhasznalo ON felhasznalo.TOROLT = 'F' AND foglalkozas.C_TANARID = felhasznalo.ID
JOIN T_DICTIONARYITEMBASE dic on dic.ID = tantargy.C_TARGYKATEGORIA AND dic.C_TANEVID = tantargy.C_TANEVID AND dic.C_INTEZMENYID = tantargy.C_INTEZMENYID
WHERE
osztalycsoport.TOROLT = 'F' AND
felhasznalo.ID = @tanarId AND
((foglalkozas.ID = @foglalkozasId) OR (@foglalkozasId IS NULL))
FOR JSON PATH
END

View file

@ -0,0 +1,137 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.sp_Global_CreateTriggers') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_Global_CreateTriggers]
END
GO
CREATE PROCEDURE [dbo].[sp_Global_CreateTriggers]
@tableName nvarchar(30)
AS BEGIN
DECLARE
@sel nvarchar(max),
@unpvt nvarchar(max),
@sql nvarchar(max)
SELECT
@unpvt = ISNULL(@unpvt + ', ', '') + c.COLUMN_NAME,
@sel = ISNULL(@sel + ', ', '') + IIF(c.DATA_TYPE IN ('date', 'datetime'),'CONVERT(nvarchar(MAX), ' + c.COLUMN_NAME + ', 121)', 'CAST( ' + c.COLUMN_NAME + ' AS nvarchar(MAX))') + ' AS ' + c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = @tableName
AND c.COLUMN_NAME NOT IN (N'ID', N'C_INTEZMENYID', N'C_ALINTEZMENYID', N'C_TANEVID', N'C_ALTANEVID', N'CREATED', N'LASTCHANGED', N'SERIAL', N'CREATOR', N'MODIFIER')
AND c.TABLE_SCHEMA = 'dbo'
AND c.DATA_TYPE NOT IN ('binary', 'varbinary');
DECLARE @tanevCol nvarchar(30),
@intezmenyCol nvarchar(30)
SELECT @intezmenyCol = c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.COLUMN_NAME LIKE '%INTEZMENYID'
AND c.TABLE_NAME = @tableName
AND c.TABLE_SCHEMA = 'dbo'
SELECT @tanevCol = c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.COLUMN_NAME LIKE '%TANEVID'
AND c.TABLE_NAME = @tableName
AND c.TABLE_SCHEMA = 'dbo'
SET @sql = '
IF OBJECT_ID(''tr_' + LOWER(SUBSTRING(@tableName, 3, 100)) + 'Log'') IS NOT NULL BEGIN
DROP TRIGGER tr_' + LOWER(SUBSTRING(@tableName, 3, 100)) + 'Log
END'
EXEC sp_executesql @sql;
SET @sql = '
CREATE TRIGGER tr_' + LOWER(SUBSTRING(@tableName, 3, 100)) + 'Log ON ' + @tableName + '
FOR INSERT, DELETE, UPDATE AS
BEGIN
SET NOCOUNT ON
DECLARE
@insTable TABLE (objectId int, intezmenyId int, tanevId int, creator int, modifier int, col nvarchar(30), val varchar(max))
DECLARE
@delTable TABLE (objectId int, intezmenyId int, tanevId int, creator int, modifier int, col nvarchar(30), val varchar(max))
DECLARE
@linkTable TABLE (id int, objectId int, intezmenyId int, tanevId int)
DECLARE
@action char(1),
@xml xml
SET @action =
CASE
WHEN NOT EXISTS (SELECT 1 FROM DELETED) THEN ''I''
WHEN NOT EXISTS (SELECT 1 FROM INSERTED) THEN ''D''
ELSE ''U''
END
INSERT INTO @insTable (objectId, intezmenyId, tanevId, creator, modifier, col, val)
SELECT ID, C_INTEZMENYID, C_TANEVID, CREATOR, MODIFIER, col, val
FROM
(
SELECT ID, ' + @intezmenyCol + ' AS C_INTEZMENYID, ' + @tanevCol + ' AS C_TANEVID, CREATOR, MODIFIER, ' + @sel + '
FROM INSERTED) p
UNPIVOT (val FOR col IN (' + @unpvt +')) AS unpvt
INSERT INTO @delTable (objectId, intezmenyId, tanevId, creator, modifier, col, val)
SELECT ID, C_INTEZMENYID, C_TANEVID, CREATOR, MODIFIER, col, val
FROM
(
SELECT ID, ' + @intezmenyCol + ' AS C_INTEZMENYID, ' + @tanevCol + ' AS C_TANEVID, CREATOR, MODIFIER, ' + @sel + '
FROM DELETED) p
UNPIVOT (val FOR col IN (' + @unpvt +')) AS unpvt
IF @action = ''I'' BEGIN
INSERT INTO T_ENTITYHISTORY (C_ALTERATIONDATE, C_ENTITYID, C_ENTITYNAME, C_REASON, C_FELHASZNALOID, C_INTEZMENYID, C_TANEVID)
OUTPUT INSERTED.ID, INSERTED.C_ENTITYID, INSERTED.C_INTEZMENYID, INSERTED.C_TANEVID INTO @linkTable
SELECT DISTINCT GETDATE(), objectId, ''' + @tableName + ''', ''New'', creator, intezmenyId, tanevId FROM @insTable
INSERT INTO T_ENTITYATTRIBUTEHISTORY (C_CURRENTVALUE, C_ORIGINALVALUE, C_PROPERTYNAME, C_ENTITYHISTORYID)
SELECT val, NULL, col, lk.id
FROM @insTable i
INNER JOIN @linkTable lk ON i.objectId = lk.objectId AND i.intezmenyId = lk.intezmenyId AND i.tanevId = lk.tanevId
END
IF @action = ''D'' BEGIN
INSERT INTO T_ENTITYHISTORY (C_ALTERATIONDATE, C_ENTITYID, C_ENTITYNAME, C_REASON, C_FELHASZNALOID, C_INTEZMENYID, C_TANEVID)
OUTPUT INSERTED.ID, INSERTED.C_ENTITYID, INSERTED.C_INTEZMENYID, INSERTED.C_TANEVID INTO @linkTable
SELECT DISTINCT GETDATE(), objectId, ''' + @tableName + ''', ''Removed'', modifier, intezmenyId, tanevId FROM @delTable
INSERT INTO T_ENTITYATTRIBUTEHISTORY (C_CURRENTVALUE, C_ORIGINALVALUE, C_PROPERTYNAME, C_ENTITYHISTORYID)
SELECT val, NULL, col, lk.id
FROM @delTable i
INNER JOIN @linkTable lk ON i.objectId = lk.objectId AND i.intezmenyId = lk.intezmenyId AND i.tanevId = lk.tanevId
END
IF @action = ''U'' BEGIN
INSERT INTO T_ENTITYHISTORY (C_ALTERATIONDATE, C_ENTITYID, C_ENTITYNAME, C_REASON, C_FELHASZNALOID, C_INTEZMENYID, C_TANEVID)
OUTPUT INSERTED.ID, INSERTED.C_ENTITYID, INSERTED.C_INTEZMENYID, INSERTED.C_TANEVID INTO @linkTable
SELECT DISTINCT GETDATE(), i.objectId, ''' + @tableName + ''',
CASE
WHEN i.val = ''T'' AND d.val = ''F'' THEN ''Logical Removed''
WHEN i.val = ''F'' AND d.val = ''T'' THEN ''Restored''
ELSE ''Modified''
END, i.modifier, i.intezmenyId, i.tanevId
FROM @insTable i
INNER JOIN @delTable d ON i.intezmenyId = d.intezmenyId AND i.objectId = d.objectId AND i.tanevId = d.tanevId AND i.col = d.col
WHERE i.col = ''TOROLT'' AND d.COL = ''TOROLT''
INSERT INTO T_ENTITYATTRIBUTEHISTORY (C_CURRENTVALUE, C_ORIGINALVALUE, C_PROPERTYNAME, C_ENTITYHISTORYID)
SELECT i.val, d.val, ISNULL(i.col, d.col), lk.id
FROM @delTable d
FULL JOIN @insTable i ON i.objectId = d.objectId AND i.intezmenyId = d.intezmenyId AND i.tanevId = d.tanevId AND i.col = d.col
INNER JOIN @linkTable lk ON ISNULL(i.objectId, d.objectId) = lk.objectId AND ISNULL(i.intezmenyId, d.intezmenyId) = lk.intezmenyId AND ISNULL(i.tanevId, d.tanevId) = lk.tanevId
WHERE (i.val <> d.val OR ((i.val IS NULL OR d.val IS NULL) AND (i.val IS NOT NULL OR d.val IS NOT NULL)))
END
END'
EXEC sp_executesql @sql;
END
GO

View file

@ -0,0 +1,260 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]
END
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]
@pTanevId INT,
@pIntezmenyId INT,
@pErtekelestipusaId INT,
@pLezaroNaptipusId INT,
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@pAtsoroltTanuloAdatok INT = 1,
@pElmeletgyakorlat BIT = 0
AS
BEGIN
SET NOCOUNT ON;
--Const
DECLARE @ElsoFelveVege INT = 1400
DECLARE @IneVege INT = 1403
DECLARE @IIIneVege INT = 1404
DECLARE @UtolsoTanitasiNap INT = 1395
DECLARE @VegzosUtolsoTanitasiNap INT = 1402
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId);
DECLARE @oid int, @onev nvarchar(50), @okf char(1), @ovegz char(1)
DECLARE osztaly_cursor CURSOR FOR
SELECT T_OSZTALYCSOPORT_OSSZES.ID AS OSZTALYID, T_OSZTALYCSOPORT_OSSZES.C_NEV AS NEV, C_KERESZTFELEVES AS KERESZTFELEVES, C_VEGZOSEVFOLYAM AS VEGZOSEVFOLYAM
FROM T_OSZTALYCSOPORT_OSSZES
JOIN T_OSZTALY_OSSZES ON T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID
JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
JOIN T_DICTIONARYITEMBASE_OSSZES ON T_DICTIONARYITEMBASE_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F' AND T_DICTIONARYITEMBASE_OSSZES.C_TANEVID = T_TANEV_OSSZES.ID
WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_INTEZMENYID=@pIntezmenyId AND T_TANEV_OSSZES.TOROLT = 'F' AND T_TANEV_OSSZES.ID = @pTanevId
ORDER BY T_DICTIONARYITEMBASE_OSSZES.C_ORDER ASC, T_OSZTALYCSOPORT_OSSZES.C_NEV ASC;
DECLARE @osztalyTanulok TABLE (TANULOID NVARCHAR(20) PRIMARY KEY, OSZTALYID INT, TANULONEV NVARCHAR(MAX), OSZTALYNEV NVARCHAR(MAX), BELEPESDATUM DATE, KILEPESDATUM DATE);
DECLARE @tantargyak TABLE(TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX), TARGYKATEGORIA_NEV NVARCHAR(MAX), TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1), C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1));
DECLARE @szurtMulasztas TABLE (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), TANULOID NVARCHAR(20), C_GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT);
DECLARE @szurtErtekeles TABLE (
T_TANULOERTEKELES_ID INT, TANULOID NVARCHAR(20), ERTEKELES NVARCHAR(MAX), ERTEKELES_SZOVEG_MEGJEGYZES NVARCHAR(MAX), C_ERTEKELESDATUM DATETIME,
TANTARGYID INT, TANTARGY_NEV NVARCHAR(255), TARGYKATEGORIA_NEV NVARCHAR(255), TARGYKATEGORIA_SORSZAM INT, T_TANTARGY_C_FOTARGYE CHAR(1), T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1), C_OSZTALYCSOPORTID INT
);
DECLARE @szurtMagszorg TABLE (T_TANULOERTEKELES_ID INT, TANULOID NVARCHAR(20), MagatartasOsztalyzat INT, MagatartasErtek NVARCHAR(MAX), SzorgalomOsztalyzat INT, SzorgalomErtek NVARCHAR(MAX), ERTEKELESSZOVEG NVARCHAR(MAX), ERTEKELESDATUM DATETIME, TOROLT CHAR(1));
DECLARE @szurtMulasztasRes TABLE (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), TANULOID NVARCHAR(20), KESESPERC INT, KESESORA INT, MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1));
DECLARE @szurtMulasztasOsszesRes TABLE (C_IGAZOLT CHAR(1), TANULOID NVARCHAR(20), MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1));
INSERT INTO @tantargyak (TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN)
SELECT TANTARGYAK.ID AS TANTARGYID, COALESCE(TANTARGYAK.C_NEVNYOMTATVANYBAN, TANTARGYAK.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, TANTARGYAK.C_FOTARGYE, TANTARGYAK.C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_TANTARGY_OSSZES AS TANTARGYAK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGYAK.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = TANTARGYAK.C_TANEVID
WHERE TANTARGYAK.TOROLT = 'F' AND TANTARGYAK.C_TANEVID = @pTanevId
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL
DROP TABLE #tempMulasztas;
CREATE TABLE #tempMulasztas (
ID INT IDENTITY(1,1) PRIMARY KEY,
TIPUS_CHAR CHAR(1), TIPUS INT, IGAZOLT CHAR(1), TANULOID NVARCHAR(20), GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT, OSZTALYCSOPORTID INT, DATUM DATETIME);
INSERT INTO #tempMulasztas(TIPUS_CHAR, TIPUS, IGAZOLT, TANULOID, GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA, OSZTALYCSOPORTID, DATUM)
SELECT IIF(C_TIPUS = @pMulasztasTipusIdKeses, 'K', 'H'), C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, SUM(C_KESESPERCBEN), COUNT(1) AS MULASZTASOK_SZAMA, TanitasiOra.C_OSZTALYCSOPORTID, C_DATUM
FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = TanuloMulasztas.C_TANITASIORAKID
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_TANULOID = TanuloMulasztas.C_ORATANULOIID
AND TanuloCsoport.C_OSZTALYCSOPORTID = TanitasiOra.C_OSZTALYCSOPORTID
AND TanuloCsoport.TOROLT = 'F'
AND TanitasiOra.C_DATUM BETWEEN TanuloCsoport.C_BELEPESDATUM AND ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE())
INNER JOIN T_TANTARGY_OSSZES t on t.ID = TanitasiOra.C_TANTARGYID
WHERE TanuloMulasztas.C_TIPUS IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
AND TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport (@pTanevId))
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA <> 1533))
AND TanuloMulasztas.TOROLT = 'F' AND TanuloMulasztas.C_IGAZOLT IS NOT NULL
AND TanitasiOra.TOROLT = 'F' AND TanitasiOra.C_MEGTARTOTT = 'T'
AND TanuloMulasztas.C_TANEVID = @pTanevId
GROUP BY C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, TanitasiOra.C_OSZTALYCSOPORTID, C_DATUM
OPEN osztaly_cursor
FETCH NEXT FROM osztaly_cursor
INTO @oid, @onev, @okf, @ovegz
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @keresztFeleves BIT = (SELECT IIF(@okf = 'T', 1, 0))
DECLARE @vegzosEvfolyamu BIT = (SELECT IIF(@ovegz = 'T', 1, 0))
--Osztalyjellemzok alapjan a nyito/lezaro naptipus csereje
DECLARE @pKezdeteOsztalyNaptipusId INT = (
IIF(@keresztFeleves = 0, @pTanevrendjeTanevKezdeteNaptipusId,
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @pTanevrendjeTanevKezdeteNaptipusId
WHEN @pLezaroNaptipusId = @IneVege THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @pTanevrendjeTanevKezdeteNaptipusId
END)
)
DECLARE @pLezaroOsztalyNaptipusId INT = (
IIF(@keresztFeleves = 0, IIF(@vegzosEvfolyamu = 1 AND @pLezaroNaptipusId = @UtolsoTanitasiNap, @VegzosUtolsoTanitasiNap, @pLezaroNaptipusId),
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @UtolsoTanitasiNap
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IneVege THEN @IIIneVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @IneVege
END)
)
DECLARE @idoszakEleje DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pKezdeteOsztalyNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @oid)
ORDER BY C_OSZTALYCSOPORTID DESC),
(SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId))
);
DECLARE @idoszakVege DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pLezaroOsztalyNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @oid)
ORDER BY C_OSZTALYCSOPORTID DESC),
GETDATE())
);
INSERT INTO @osztalyTanulok (TANULOID, OSZTALYID, TANULONEV, OSZTALYNEV, BELEPESDATUM, KILEPESDATUM)
SELECT DISTINCT CAST(TANCSOPORT.C_OSZTALYCSOPORTID AS NVARCHAR) + '_' + CAST(FELHASZNALO.ID AS NVARCHAR) /*AS OSZTALYTANULOID, FELHASZNALO.ID*/ AS TANULOID, TANCSOPORT.C_OSZTALYCSOPORTID AS OSZTALYID, C_NYOMTATASINEV, C_NEV, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_FELHASZNALO_OSSZES AS FELHASZNALO
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_NEV, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES AS TANULOCSOPORT
INNER JOIN T_OSZTALYCSOPORT_OSSZES AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = TANULOCSOPORT.C_OSZTALYCSOPORTID
WHERE TANULOCSOPORT.TOROLT = 'F' AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @oid AND TANULOCSOPORT.C_BELEPESDATUM < @idoszakVege AND (@keresztFeleves = 0 OR TANULOCSOPORT.C_BELEPESDATUM >= @idoszakEleje)
AND (TANULOCSOPORT.C_KILEPESDATUM IS NULL OR TANULOCSOPORT.C_KILEPESDATUM >= @idoszakVege)
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = FELHASZNALO.ID
WHERE FELHASZNALO.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @oid AND FELHASZNALO.C_TANEVID = @pTanevId;
IF OBJECT_ID('tempdb..#tempOsztalyErtekelesek') IS NOT NULL
DROP TABLE #tempOsztalyErtekelesek;
SELECT * INTO #tempOsztalyErtekelesek FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @oid, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok) AS ERTEKELESEK
INSERT INTO @szurtErtekeles (T_TANULOERTEKELES_ID, TANULOID, ERTEKELES, ERTEKELES_SZOVEG_MEGJEGYZES, C_ERTEKELESDATUM, TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN, C_OSZTALYCSOPORTID)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId), CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloId AS NVARCHAR), COALESCE(CAST(ErtekelesOsztalyzatValue AS NVARCHAR(MAX)), IIF(ErtekelesSzoveg IS NOT NULL, ISNULL(ErtekelesSzovegRovidNev, NULL), NULL), ErtekelesSzazalek), COALESCE(ErtekelesSzoveg, ErtekelesTema, ''), Datum,
TantargyId, TantargyNevZarojellel, TARGYKATEG.C_NAME, TARGYKATEG.C_VALUE, FotargyE, Altantargy, OsztalyCsoportId
FROM #tempOsztalyErtekelesek AS ERTEKELESEK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = ERTEKELESEK.TargyKategoriaId AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE TantargyId IS NOT NULL AND (FotargyE = 'T' OR Altantargy = 'T')
--MAGATARTÁS-SZORGALOM
INSERT INTO @szurtMagszorg (T_TANULOERTEKELES_ID, TANULOID, MagatartasOsztalyzat, MagatartasErtek, SzorgalomOsztalyzat, SzorgalomErtek, ERTEKELESSZOVEG, ERTEKELESDATUM, TOROLT)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId) AS ID, CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloId AS NVARCHAR) AS TANULOID,
COALESCE(CAST(MagatartasOsztalyzatValue AS NVARCHAR(MAX)), CAST(MagatartasErtekOsztalyzatkent AS NVARCHAR(MAX)), MagatartasSzovegRovidNev) AS MagatartasOsztalyzat, MagatartasErtek,
COALESCE(CAST(SzorgalomOsztalyzatValue AS NVARCHAR(MAX)), CAST(SzorgalomErtekOsztalyzatkent AS NVARCHAR(MAX)), SzorgalomSzovegRovidNev) AS SzorgalomOsztalyzat, SzorgalomErtek,
ErtekelesSzoveg AS C_ERTEKELESSZOVEG, Datum AS C_ERTEKELESDATUM, 'F' AS TOROLT
FROM #tempOsztalyErtekelesek AS ERTEKELESEK
WHERE TantargyId IS NULL;
--MULASZTÁS
INSERT INTO @szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, C_GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA)
SELECT TIPUS_CHAR, TIPUS, IGAZOLT, CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloMulasztas.TANULOID AS NVARCHAR), GYAKORLATI, SUM(KESESPERC), SUM(MULASZTASOK_SZAMA)
FROM #tempMulasztas AS TanuloMulasztas
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @oid, 'T') AS TANULO ON TANULO.TanuloId = TanuloMulasztas.TANULOID
WHERE TANULO.BelepesDatum <= DATUM
AND (TANULO.KilepesDatum IS NULL OR TANULO.KilepesDatum >= DATUM)
AND (IIF(@pAtsoroltTanuloAdatok > 0, 1, 0) = 1 OR (OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@oid, @pTanevId, DEFAULT))))
AND (@idoszakEleje IS NULL OR DATUM >= @idoszakEleje)
AND (@idoszakVege IS NULL OR DATUM <= @idoszakVege)
GROUP BY TIPUS_CHAR, TIPUS, IGAZOLT, TanuloMulasztas.TANULOID, GYAKORLATI
IF @pElmeletgyakorlat=0
BEGIN
INSERT INTO @szurtMulasztasRes
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(KESESPERC) AS KESESPERC, SUM(KESESPERC)/45 AS KESESORA, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, 'F'
FROM @szurtMulasztas
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
ORDER BY TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
INSERT INTO @szurtMulasztasOsszesRes
SELECT C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, 'F'
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(KESESPERC)/45 AS MULASZTASOK_SZAMA
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'K'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'H'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
) AS KM
GROUP BY C_IGAZOLT, TANULOID
ORDER BY TANULOID, C_IGAZOLT DESC;
END
ELSE
BEGIN
INSERT INTO @szurtMulasztasRes
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, KESESPERC, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS KESESORA, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM @szurtMulasztas
ORDER BY TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
INSERT INTO @szurtMulasztasOsszesRes
SELECT C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'K'
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'H'
) AS KM
GROUP BY C_IGAZOLT, TANULOID, C_GYAKORLATI
ORDER BY TANULOID, C_IGAZOLT DESC;
END
FETCH NEXT FROM osztaly_cursor
INTO @oid, @onev, @okf, @ovegz
END
CLOSE osztaly_cursor;
DEALLOCATE osztaly_cursor;
SELECT DISTINCT TANULOID, TANULONEV, OSZTALYNEV, FORMAT(BELEPESDATUM, 'yyyy.MM.dd', 'hu-HU') + ' - ' + ISNULL (FORMAT(KILEPESDATUM, 'yyyy.MM.dd', 'hu-HU'), '') AS BESOROLASA
FROM @osztalyTanulok
ORDER BY OSZTALYNEV, TANULONEV;
SELECT DISTINCT TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_SORSZAM
FROM @tantargyak
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
SELECT * FROM @szurtErtekeles
SELECT * FROM @szurtMagszorg
SELECT * FROM @szurtMulasztasRes
SELECT * FROM @szurtMulasztasOsszesRes
IF OBJECT_ID('tempdb..#tempOsztalyErtekelesek') IS NOT NULL
DROP TABLE #tempOsztalyErtekelesek;
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL
DROP TABLE #tempMulasztas;
END
GO

View file

@ -0,0 +1,376 @@
-- =============================================
-- Description: <>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_TantargyfelosztasImport]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_TantargyfelosztasImport]
END
GO
CREATE PROCEDURE [dbo].[sp_TantargyfelosztasImport]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pUserId INT
,@pTanevId INT
,@pIntezmenyId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList nvarchar(2000) = 'T_TANTARGY_OSSZES,T_OSZTALYCSOPORT_OSSZES'
,@actualJson NVARCHAR(MAX) = ''
,@lastChangedDateTime DATETIME = GETDATE()
,@modifierId INT = @pUserId
--Ha Törölnünk is kell akkor azzal kezdünk!
IF (@pIsTorles = 1)
BEGIN
--Foglalkozás kapcsolatainak törlése
UPDATE
OrarendiOra
SET
OrarendiOra.C_FOGLALKOZASID = NULL
,OrarendiOra.SERIAL = OrarendiOra.SERIAL + 1
,OrarendiOra.LASTCHANGED = @lastChangedDateTime
,OrarendiOra.MODIFIER = @modifierId
FROM
T_ORARENDIORA_OSSZES OrarendiOra
WHERE
OrarendiOra.C_INTEZMENYID = @pIntezmenyId
AND OrarendiOra.C_TANEVID = @pTanevId
AND OrarendiOra.TOROLT = 'F'
AND EXISTS
(SELECT TOP 1
ID
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
WHERE
Foglalkozas.ID = OrarendiOra.C_FOGLALKOZASID
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.TOROLT = 'F'
AND Foglalkozas.C_IMPORTALT = 'T'
)
UPDATE
TanitasiOra
SET
TanitasiOra.C_FOGLALKOZASID = NULL
,TanitasiOra.SERIAL = TanitasiOra.SERIAL + 1
,TanitasiOra.LASTCHANGED = @lastChangedDateTime
,TanitasiOra.MODIFIER = @modifierId
FROM
T_TANITASIORA_OSSZES TanitasiOra
WHERE
TanitasiOra.C_INTEZMENYID = @pIntezmenyId
AND TanitasiOra.C_TANEVID = @pTanevId
AND TanitasiOra.TOROLT = 'F'
AND EXISTS
(SELECT TOP 1
ID
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
WHERE
Foglalkozas.ID = TanitasiOra.C_FOGLALKOZASID
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.TOROLT = 'F'
AND Foglalkozas.C_IMPORTALT = 'T'
)
UPDATE
TanuloMulasztasStatisztika
SET
TanuloMulasztasStatisztika.C_TARGYMULASZTASSTATISZTIKAIID = NULL
,TanuloMulasztasStatisztika.SERIAL = TanuloMulasztasStatisztika.SERIAL + 1
,TanuloMulasztaSstatisztika.LASTCHANGED = @lastChangedDateTime
,TanuloMulasztasStatisztika.MODIFIER = @modifierId
FROM
T_TANULOTARGYMULASZTASSTATISZT_OSSZES TanuloMulasztasStatisztika
WHERE
TanuloMulasztasStatisztika.C_INTEZMENYID = @pIntezmenyId
AND TanuloMulasztasStatisztika.C_TANEVID = @pTanevId
AND TanuloMulasztasStatisztika.TOROLT = 'F'
AND EXISTS
(SELECT TOP 1
ID
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
WHERE
Foglalkozas.ID = TanuloMulasztasStatisztika.C_TARGYMULASZTASSTATISZTIKAIID
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.TOROLT = 'F'
AND Foglalkozas.C_IMPORTALT = 'T'
)
DELETE
TeremFoglalkozas
FROM
T_TEREM_FOGLALKOZAS TeremFoglalkozas
WHERE
EXISTS
(SELECT TOP 1
ID
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
WHERE
Foglalkozas.ID = TeremFoglalkozas.C_FOGLALKOZASID
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.TOROLT = 'F'
AND Foglalkozas.C_IMPORTALT = 'T'
)
--Foglalkozások törlése
UPDATE
Foglalkozas
SET
Foglalkozas.TOROLT = 'T'
,Foglalkozas.SERIAL = Foglalkozas.SERIAL + 1
,Foglalkozas.LASTCHANGED = @lastChangedDateTime
,Foglalkozas.MODIFIER = @modifierId
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
WHERE
Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.TOROLT = 'F'
AND Foglalkozas.C_IMPORTALT = 'T'
END
--NOTE: A törlés itt azért false, mert a T_TANTARGY_OSSZES és a T_OSZTALYCSOPORT_OSSZES view-ból nem törlünk importnál
EXECUTE [dbo].[sp_DynamicImportJsonSplit] @pImportJson = @pImportJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0, @pTableNameList = @tableNameList
--Osztályok beszúrása
SET @actualJson = ' { "ImportJson":{ "T_OSZTALY_OSSZES":' +
(SELECT
Osztaly.OsztalyCsoportId ID
,Osztaly. C_KEPZESIFORMA
,Osztaly. C_TECHNIKAIOSZTALY
,Osztaly. C_GYOGYPEDAGOGIAI
,Osztaly. C_KETTANNYELVU
,Osztaly. C_LOGOPEDIAI
,Osztaly. C_NEMZETISEGI
,Osztaly. C_NYELVIELOKESZITO
,Osztaly. C_SPORT
,Osztaly. C_ALINTEZMENYID
,Osztaly. C_ALTANEVID
,Osztaly. TOROLT
,Osztaly. SERIAL
,Osztaly. LASTCHANGED
,Osztaly. CREATED
,Osztaly. MODIFIER
,Osztaly. CREATOR
,Osztaly. ELOZOTANEVIREKORDID
,Osztaly. NNID
FROM
(SELECT
OsztalyJsonData.*
,OsztalyCsoport.ID OsztalyCsoportId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY_OSSZES')
WITH (
ID INT '$.ID'
,C_KEPZESIFORMA INT '$.C_KEPZESIFORMA'
,C_TECHNIKAIOSZTALY CHAR(1) '$.C_TECHNIKAIOSZTALY'
,C_GYOGYPEDAGOGIAI CHAR(1) '$.C_GYOGYPEDAGOGIAI'
,C_KETTANNYELVU CHAR(1) '$.C_KETTANNYELVU'
,C_LOGOPEDIAI CHAR(1) '$.C_LOGOPEDIAI'
,C_NEMZETISEGI CHAR(1) '$.C_NEMZETISEGI'
,C_NYELVIELOKESZITO CHAR(1) '$.C_NYELVIELOKESZITO'
,C_SPORT CHAR(1) '$.C_SPORT'
,C_ALINTEZMENYID INT '$.C_INTEZMENYID'
,C_ALTANEVID INT '$.C_TANEVID'
,TOROLT CHAR(1) '$.TOROLT'
,SERIAL INT '$.SERIAL'
,LASTCHANGED DATETIME '$.LASTCHANGED'
,CREATED DATETIME '$.CREATED'
,MODIFIER INT '$.MODIFIER'
,CREATOR INT '$.CREATOR'
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
,NNID INT '$.NNID'
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
) OsztalyJsonData
LEFT JOIN
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(OsztalyJsonData.OsztalyCsoportNev)
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
AND OsztalyJsonData.ID IS NULL
) AS Osztaly
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés itt azért false, mert a T_OSZTALY_OSSZES view-ból nem törlünk importnál
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 1
--Csoportok beszúrása
SET @actualJson = ' { "ImportJson":{ "T_CSOPORT_OSSZES":' +
(SELECT
Csoport.OsztalyCsoportId ID
,Csoport. C_TIPUSA
,Csoport.OsztalybontasId C_OSZTALYBONTASID
,Csoport. C_ALINTEZMENYID
,Csoport. C_ALTANEVID
,Csoport. TOROLT
,Csoport. SERIAL
,Csoport. LASTCHANGED
,Csoport. CREATED
,Csoport. MODIFIER
,Csoport. CREATOR
,Csoport. NNID
,Csoport. ELOZOTANEVIREKORDID
FROM
(SELECT
CsoportJsonData.*
,OsztalyCsoport.ID OsztalyCsoportId
,Osztalybontas.ID OsztalybontasId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CSOPORT_OSSZES')
WITH (
ID INT '$.ID'
,C_TIPUSA INT '$.C_TIPUSA'
,C_OSZTALYBONTASID INT '$.C_OSZTALYBONTASID'
,C_ALINTEZMENYID INT '$.C_INTEZMENYID'
,C_ALTANEVID INT '$.C_TANEVID'
,TOROLT CHAR(1) '$.TOROLT'
,SERIAL INT '$.SERIAL'
,LASTCHANGED DATETIME '$.LASTCHANGED'
,CREATED DATETIME '$.CREATED'
,MODIFIER INT '$.MODIFIER'
,CREATOR INT '$.CREATOR'
,NNID INT '$.NNID'
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
,OsztalybontasNev NVARCHAR(255) '$.OsztalybontasNev'
) CsoportJsonData
LEFT JOIN
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CsoportJsonData.OsztalyCsoportNev)
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
AND CsoportJsonData.ID IS NULL
LEFT JOIN
T_OSZTALYCSOPORT_OSSZES Osztalybontas ON
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(Osztalybontas.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CsoportJsonData.OsztalybontasNev)
AND Osztalybontas.C_TANEVID = @pTanevId
AND Osztalybontas.C_INTEZMENYID = @pIntezmenyId
AND Osztalybontas.TOROLT = 'F'
AND CsoportJsonData.ID IS NULL
) AS Csoport
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés itt azért false, mert a T_CSOPORT_OSSZES view-ból nem törlünk importnál
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId ,@pInsertAlways = 1
--Foglalkozások beszúrása
SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS_OSSZES":' +
(SELECT
Foglalkozas. ID
,Foglalkozas. C_FOGLALKOZASTIPUSA
,Foglalkozas. C_ORASZAM
,Foglalkozas. C_NEV
,Foglalkozas. C_ERTEKELESKELL
,Foglalkozas. C_MULASZTASKELL
,Foglalkozas. C_TANARFELVEHETI
,Foglalkozas.TantargyId C_TANTARGYID
,Foglalkozas.OsztalyCsoportId C_OSZTALYCSOPORTID
,Foglalkozas.TanarId C_TANARID
,Foglalkozas. C_INTEZMENYID
,Foglalkozas. C_TANEVID
,Foglalkozas. C_IMPORTALT
,Foglalkozas. TOROLT
,Foglalkozas. SERIAL
,Foglalkozas. LASTCHANGED
,Foglalkozas. CREATED
,Foglalkozas. MODIFIER
,Foglalkozas. CREATOR
,Foglalkozas. ELOZOTANEVIREKORDID
,Foglalkozas. NNID
FROM
(SELECT
FoglalkozasJsonData.*
,OsztalyCsoport.ID OsztalyCsoportId
,Felhasznalo.ID TanarId
,Tantargy.ID TantargyId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS_OSSZES')
WITH (
ID INT '$.ID'
,C_FOGLALKOZASTIPUSA INT '$.C_FOGLALKOZASTIPUSA'
,C_ORASZAM NUMERIC(10,2) '$.C_ORASZAM'
,C_NEV NVARCHAR(255) '$.C_NEV'
,C_ERTEKELESKELL CHAR(1) '$.C_ERTEKELESKELL'
,C_MULASZTASKELL CHAR(1) '$.C_MULASZTASKELL'
,C_TANARFELVEHETI CHAR(1) '$.C_TANARFELVEHETI'
,C_TANTARGYID INT '$.C_TANTARGYID'
,C_OSZTALYCSOPORTID INT '$.C_OSZTALYCSOPORTID'
,C_TANARID INT '$.C_TANARID'
,C_INTEZMENYID INT '$.C_INTEZMENYID'
,C_TANEVID INT '$.C_TANEVID'
,C_IMPORTALT CHAR(1) '$.C_IMPORTALT'
,TOROLT CHAR(1) '$.TOROLT'
,SERIAL INT '$.SERIAL'
,LASTCHANGED DATETIME '$.LASTCHANGED'
,CREATED DATETIME '$.CREATED'
,MODIFIER INT '$.MODIFIER'
,CREATOR INT '$.CREATOR'
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
,NNID INT '$.NNID'
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
,TanarNev NVARCHAR(255) '$.TanarNev'
,TanarSzuletesiIdo NVARCHAR(255) '$.TanarSzuletesiIdo'
,TantargyNev NVARCHAR(255) '$.TantargyNev'
) FoglalkozasJsonData
LEFT JOIN
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.OsztalyCsoportNev)
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
LEFT JOIN
T_FELHASZNALO_OSSZES Felhasznalo ON
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_NYOMTATASINEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.TanarNev)
AND (FoglalkozasJsonData.TanarSzuletesiIdo IS NULL
OR Felhasznalo.C_SZULETESIDATUM = FoglalkozasJsonData.TanarSzuletesiIdo)
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.TOROLT = 'F'
INNER JOIN
T_ALKALMAZOTT_OSSZES Alkalmazott ON
Alkalmazott.ID = Felhasznalo.ID
AND Alkalmazott.C_ALTANEVID = @pTanevId
AND Alkalmazott.C_ALINTEZMENYID = @pIntezmenyId
AND Alkalmazott.TOROLT = 'F'
LEFT JOIN
T_TANTARGY_OSSZES Tantargy ON
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(Tantargy.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.TantargyNev)
AND Tantargy.C_TANEVID = @pTanevId
AND Tantargy.C_INTEZMENYID = @pIntezmenyId
AND Tantargy.TOROLT = 'F'
) AS Foglalkozas
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés itt azért false, mert a T_FOGLALKOZAS_OSSZES view-ból korábban elvégeztük a törlést, mivel az osztálycsoport és a tantárgy törlések miatt, nem találná.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0
END
GO

View file

@ -0,0 +1,43 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_UpdateErtesitesiDatum]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_UpdateErtesitesiDatum]
END
GO
CREATE PROCEDURE [dbo].[sp_UpdateErtesitesiDatum]
-- Add the parameters for the stored procedure here
@pUserId INT
,@pNebuloId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @currentDateTime DATETIME
SET @currentDateTime = (SELECT GETDATE())
BEGIN
UPDATE
T_NEBULO
SET
C_ERTESITESDATUMA = @currentDateTime
,C_IMPORTALT = 'F'
,SERIAL = SERIAL + 1
,LASTCHANGED = @currentDateTime
,MODIFIER = @pUserId
WHERE
ID = @pNebuloId
END
END
GO

View file

@ -0,0 +1,11 @@
update t_dictionaryitembase_osszes
set c_name = N'Összefüggő szakmai gyakorlati nap', c_name_1 = N'Összefüggő szakmai gyakorlati nap'
where id = 1405
update t_dictionaryitembase_osszes
set c_name = N'Rendkívüli tanítási nap', c_name_1 = N'Rendkívüli tanítási nap'
where id = 1406
update t_dictionaryitembase_osszes
set c_name = N'Összefüggő szakmai gyakorlati csoport', c_name_1 = N'Összefüggő szakmai gyakorlati csoport'
where id = 1073

View file

@ -0,0 +1,191 @@
IF OBJECT_ID('dbo.uspGetOsztalycsoportTantargyiMulasztasai') IS NOT NULL BEGIN
DROP PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
END
GO
CREATE PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
@pOsztalyId int
,@pTantargyId int
,@pTanevid int
,@pIntezmenyId int
,@pCsakMegtartott bit /*0 - nem, 1 - igen */
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@isResultTableDeclered bit = 0
,@oraPerc int
,@isIskolaiErdekuSzamit bit
,@sql nvarchar(max)
SET @isIskolaiErdekuSzamit = dbo.fnGetRendszerbeallitasEnumBool(1683, @pIntezmenyId, @pTanevid)
SET @oraPerc = (
SELECT ISNULL(csp.C_ORAPERC, 45)
FROM T_OSZTALYCSOPORT ocs
LEFT JOIN T_CSOPORT cs on cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS csp ON csp.ID = cs.C_TIPUSA AND cs.TOROLT = 'F'
WHERE ocs.ID = @pOsztalyId AND ocs.TOROLT = 'F')
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
CREATE TABLE #OsztalyTanuloi (
TanuloId int
,Belepes datetime
,Kilepes datetime
,PRIMARY KEY CLUSTERED (TanuloId)
)
INSERT INTO #OsztalyTanuloi (TanuloId)
SELECT DISTINCT C_TANULOID
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID = @pOsztalyId
AND C_TANEVID = @pTanevId
AND TOROLT = 'F'
IF OBJECT_ID('tempdb..#Result') IS NULL BEGIN
SET @isResultTableDeclered = 1;
CREATE TABLE #Result (
TanuloId int
,TantargyId int
,Mulasztas int
,MegtartottOra int
,HatralevoOra int
,PRIMARY KEY CLUSTERED (TanuloId, TantargyId)
)
END
SET @sql = N'
INSERT INTO #Result (
TanuloId
,TantargyId
,Mulasztas
,MegtartottOra
,HatralevoOra
) SELECT
ot.TanuloId
,tn.C_TANTARGYID AS TantargyId
,SUM(IIF(C_TIPUS = 1500, 1, 0)) + (SUM(IIF(C_TIPUS = 1499, C_KESESPERCBEN, 0)) / @pOraPerc) AS Mulasztas
,COUNT(DISTINCT tn.ID) AS MegtartottOra
,IIF(@pCsakMegtartott = 1, NULL, 0) AS HatralevoOra
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId
INNER JOIN T_TANITASIORA_OSSZES tn
ON tn.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND tn.C_BEJEGYZESIDEJE >= tcs.C_BELEPESDATUM
AND tn.C_BEJEGYZESIDEJE < ISNULL(tcs.C_KILEPESDATUM, ''21000101'')
AND tn.C_MEGTARTOTT = ''T'' AND tn.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES tm
ON tm.C_TANITASIORAKID = tn.ID
AND tm.C_ORATANULOIID = ot.TanuloId
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tm.TOROLT = ''F''
' + IIF(@isIskolaiErdekuSzamit = 0, 'AND tm.C_IGAZOLASTIPUSA <> 1533', '') + '
WHERE tcs.TOROLT = ''F''
' + IIF(@pTantargyId IS NULL, '', 'AND tn.C_TANTARGYID = @pTantargyId') + '
GROUP BY ot.TanuloId, tn.C_TANTARGYID
'
EXEC sys.sp_executesql @sql, N'
@pTantargyId int
,@pOraPerc int
,@pCsakMegtartott bit'
,@pTantargyId = @pTantargyId
,@pOraPerc = @oraPerc
,@pCsakMegtartott = @pCsakMegtartott
IF @pCsakMegtartott = 0 BEGIN
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID INT
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX_TanevRendOsztalyCsoportId CLUSTERED (TanevRendOsztalyCsoportId)
)
DECLARE @idoszakKezdete datetime = GETDATE()
DECLARE @idoszakVege datetime
SELECT @idoszakVege = C_NAPDATUMA
FROM T_NAPTARINAP
WHERE C_NAPTIPUSA = 1395
AND C_TANEVID = @pTanevId
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @idoszakKezdete
,@pIdoszakVege = @idoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = NULL
,@pTantargyId = @pTantargyId
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = 0
UPDATE r
SET
r.HatralevoOra = ISNULL(o.HatralevoOra, 0)
FROM #Result r
LEFT JOIN (
SELECT
ot.TanuloId, COUNT(1) AS HatralevoOra
FROM T_TANULOCSOPORT tcs
INNER JOIN #OrarendTable oo ON tcs.C_OSZTALYCSOPORTID = oo.TanevRendOsztalyCsoportId
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId AND oo.Datum >= tcs.C_BELEPESDATUM AND oo.Datum < ISNULL(tcs.C_KILEPESDATUM, '21000101')
GROUP BY ot.TanuloId
) o ON o.TanuloId = r.TanuloId
END
IF @isResultTableDeclered = 1 BEGIN
SELECT
TanuloId
,TantargyId
,Mulasztas
,MegtartottOra
,HatralevoOra
FROM #Result
END
END
GO