106 lines
3.9 KiB
Transact-SQL
106 lines
3.9 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspFollowUpSzervezet
|
|
GO
|
|
|
|
CREATE PROCEDURE uspFollowUpSzervezet
|
|
@intezmenyId int
|
|
,@aktTanevId int
|
|
,@kovetkezoTanevId int
|
|
,@szervezetId int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @kovSzervezetId int
|
|
,@parentSzerverzetId int
|
|
,@sql nvarchar(max)
|
|
,@insertColList nvarchar(max)
|
|
,@selectColList nvarchar(max)
|
|
,@updateColList nvarchar(max);
|
|
|
|
IF NOT EXISTS (SELECT * FROM T_TANEV_OSSZES WHERE ID = @kovetkezoTanevId and C_KOVETKEZO = 'T' AND C_AKTIVALVA IS NULL AND C_ISKIVALASZTHATO = 'T')
|
|
OR
|
|
EXISTS (SELECT * FROM T_TANEV_OSSZES WHERE ID = @kovetkezoTanevId and C_AKTIV = 'T' AND TOROLT = 'F')
|
|
RETURN;
|
|
|
|
IF (SELECT TOROLT FROM T_SZERVEZET_OSSZES WHERE ID = @szervezetId) = 'T'
|
|
RETURN;
|
|
|
|
-- ha név és azonosító alapján nem létezik a következő tanévben, de van következő tanévi rekordja
|
|
IF @kovSzervezetId IS NULL
|
|
SELECT @kovSzervezetId = kov.ID
|
|
FROM T_SZERVEZET_OSSZES kov
|
|
WHERE kov.TOROLT = 'F'
|
|
AND kov.C_INTEZMENYID = @intezmenyId
|
|
AND kov.C_TANEVID = @kovetkezoTanevId
|
|
AND kov.ELOZOTANEVIREKORDID = @szervezetId;
|
|
|
|
-- ha a következő tanévben már létezik azonos névvel és azonosítóval
|
|
IF @kovSzervezetId IS NULL
|
|
SELECT @kovSzervezetId = kov.ID
|
|
FROM T_SZERVEZET_OSSZES kov
|
|
WHERE kov.TOROLT = 'F'
|
|
AND kov.C_INTEZMENYID = @intezmenyId
|
|
AND kov.C_TANEVID = @kovetkezoTanevId
|
|
AND EXISTS(
|
|
SELECT *
|
|
FROM T_SZERVEZET_OSSZES akt
|
|
WHERE akt.TOROLT = 'F'
|
|
AND akt.C_AZONOSITO = kov.C_AZONOSITO
|
|
AND akt.C_NEV = kov.C_NEV
|
|
AND akt.C_INTEZMENYID = @intezmenyId
|
|
AND akt.C_TANEVID = @aktTanevId
|
|
AND akt.ID = @szervezetId
|
|
);
|
|
|
|
IF @parentSzerverzetId IS NULL
|
|
SELECT @parentSzerverzetId = C_PARENTSZERVEZETID
|
|
FROM T_SZERVEZET_OSSZES
|
|
WHERE TOROLT = 'F'
|
|
AND C_INTEZMENYID = @intezmenyId
|
|
AND C_TANEVID = @aktTanevId
|
|
AND ID = @szervezetId;
|
|
|
|
SELECT @insertColList = ISNULL(@insertColList + ', ', '') + insertColname FROM fnGetFollowUpColumnMapping ('C_PARENTSZERVEZETID', 'T_SZERVEZET') ORDER BY insertColName;
|
|
SELECT @selectColList = ISNULL(@selectColList + ', ', '') + selectColname FROM fnGetFollowUpColumnMapping ('C_PARENTSZERVEZETID', 'T_SZERVEZET') ORDER BY insertColName;
|
|
SELECT @updateColList = ISNULL(@updateColList + ', ', '') + insertColname + ' = ' + updateColName FROM fnGetFollowUpColumnMapping ('C_PARENTSZERVEZETID', 'T_SZERVEZET') WHERE updateColName > '' ORDER BY insertColName;
|
|
|
|
IF @parentSzerverzetId IS NOT NULL
|
|
EXEC uspFollowUpSzervezet @intezmenyId, @aktTanevId, @kovetkezoTanevId, @parentSzerverzetId;
|
|
|
|
IF @kovszervezetId IS NULL
|
|
SET @sql = '
|
|
INSERT INTO T_SZERVEZET_OSSZES(' + @insertColList + ', C_PARENTSZERVEZETID)
|
|
SELECT ' + @selectColList + ', te.ID AS C_PARENTSZERVEZETID
|
|
FROM T_SZERVEZET_OSSZES s
|
|
LEFT JOIN T_SZERVEZET_OSSZES te ON te.ELOZOTANEVIREKORDID = s.C_PARENTSZERVEZETID AND te.TOROLT = ''F''
|
|
WHERE s.ID = @szervezetId
|
|
AND s.TOROLT = ''F''
|
|
AND NOT EXISTS(SELECT * FROM T_SZERVEZET_OSSZES sz WHERE sz.ELOZOTANEVIREKORDID = s.ID AND sz.TOROLT = ''F'')'
|
|
ELSE
|
|
SET @sql = '
|
|
UPDATE t
|
|
SET
|
|
' + @updateColList + ', C_PARENTSZERVEZETID = ps.ID
|
|
FROM T_SZERVEZET_OSSZES t
|
|
INNER JOIN T_SZERVEZET_OSSZES s ON s.ID = t.ELOZOTANEVIREKORDID AND s.TOROLT = ''F''
|
|
LEFT JOIN T_SZERVEZET_OSSZES ps ON ps.ELOZOTANEVIREKORDID = s.C_PARENTSZERVEZETID AND ps.TOROLT = ''F''
|
|
WHERE t.ID = @kovszervezetId
|
|
AND s.ID = @szervezetId
|
|
AND t.TOROLT = ''F'''
|
|
|
|
--print @sql
|
|
EXEC sp_executesql
|
|
@sql, N'
|
|
@intezmenyId int
|
|
,@aktTanevId int
|
|
,@kovetkezoTanevId int
|
|
,@szervezetId int
|
|
,@kovszervezetId int'
|
|
,@intezmenyId = @intezmenyId
|
|
,@aktTanevId = @aktTanevId
|
|
,@kovetkezoTanevId = @kovetkezoTanevId
|
|
,@szervezetId = @szervezetId
|
|
,@kovszervezetId = @kovszervezetId
|
|
|
|
END
|
|
GO
|