kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGenerateTeljesOrarend.sql
2024-03-13 00:33:46 +01:00

108 lines
No EOL
8.4 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS dbo.uspGenerateTeljesOrarend;
GO
CREATE PROCEDURE dbo.uspGenerateTeljesOrarend
@pIntezmenyId int
,@pTanevId int
,@pOrarendioraId int = null
AS
SET NOCOUNT ON;
DELETE FROM T_ORARENDTELJES_OSSZES
WHERE C_INTEZMENYID = @pIntezmenyId
AND C_TANEVID = @pTanevId
AND C_ORARENDIORAID = CASE WHEN @pOrarendioraId IS NULL THEN C_ORARENDIORAID ELSE @pOrarendioraId END;
INSERT INTO T_ORARENDTELJES_OSSZES(
C_INTEZMENYID
,C_TANEVID
,C_DATUM
,C_ORARENDIORAID
,C_ORARENDIORAGROUPID
,C_OSZTALYCSOPORTID
,C_FELADATKATEGORIAID
,C_TANTARGYID
,C_ISOSZTALYORARENDBENEMLATSZIK
,C_TANARID
,C_TEREMID
,C_ORASZAM
,C_CSENGETESIRENDID
,C_BONTOTT
,C_HETIREND
,C_HETNAPJA
,C_HETSORSZAMA
,C_NAPDATUMA
,C_ORAERVENYESSEGKEZDETE
,C_ORAERVENYESSEGVEGE
,C_ORAKEZDETE
,C_ORAVEGE
,C_EGYEDINAP
,C_KOZPONTIORAGROUPID
,C_KOZPONTILAGTOROLTORAGROUPID
,C_HELYETTESTANAROKID
,C_HELYETTESITESID
,CREATED
,LASTCHANGED
)
SELECT
orr.C_INTEZMENYID
,orr.C_TANEVID
,orr.C_DATUM
,orr.C_ORARENDIORAID
,oo.C_ORARENDIORAGROUPID
,oo.C_OSZTALYCSOPORTID
,ocs.C_FELADATKATEGORIAID
,oo.C_TANTARGYID
,tt.C_ISOSZTALYORARENDBENEMLATSZIK
,oo.C_TANARID
,oo.C_TEREMID
,oo.C_ORASZAM
,oo.C_CSENGETESIRENDID
,oo.C_BONTOTT
,oo.C_HETIREND
,oo.C_HETNAPJA
,nn.C_HETSORSZAMA
,nn.C_NAPDATUMA
,oo.C_ORAERVENYESSEGKEZDETE
,oo.C_ORAERVENYESSEGVEGE
,oo.C_ORAKEZDETE
,oo.C_ORAVEGE
,oo.C_EGYEDINAP
,oo.C_KOZPONTIORAGROUPID
,oo.C_KOZPONTILAGTOROLTORAGROUPID
,hisz.C_HELYETTESTANAROKID
,hisz.ID AS C_HELYETTESITESID
,oo.CREATED
,ISNULL(oo.LASTCHANGED, oo.CREATED) AS LASTCHANGED
FROM T_ORAREND_OSSZES orr
INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = orr.C_ORARENDIORAID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON oo.C_OSZTALYCSOPORTID = ocs.ID AND ocs.TOROLT = 'F'
INNER JOIN T_NAPTARINAP_OSSZES nn ON nn.C_NAPDATUMA = orr.C_DATUM AND nn.C_INTEZMENYID = orr.C_INTEZMENYID AND nn.C_TANEVID = orr.C_TANEVID AND nn.TOROLT = 'F'
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hisz ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND hisz.C_HELYETTESITESNAPJA = nn.C_NAPDATUMA AND hisz.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tt on tt.ID = oo.C_TANTARGYID AND tt.TOROLT = 'F'
WHERE oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.ID = CASE WHEN @pOrarendioraId IS NULL THEN oo.ID ELSE @pOrarendioraId END
AND oo.TOROLT = 'F';
UPDATE ot
SET ot.C_MAXORASZAM = ISNULL(o.C_MAXORASZAM, 12)
FROM T_ORARENDTELJES_OSSZES ot
LEFT JOIN (
SELECT C_INTEZMENYID, C_TANEVID, C_DATUM, MAX(C_ORASZAM) AS C_MAXORASZAM
FROM T_ORARENDTELJES_OSSZES t
WHERE t.C_INTEZMENYID = @pIntezmenyId
AND t.C_TANEVID = @pTanevId
GROUP BY C_INTEZMENYID, C_TANEVID, C_DATUM
) o ON o.C_INTEZMENYID = ot.C_INTEZMENYID
AND o.C_TANEVID = ot.C_TANEVID
AND o.C_DATUM = ot.C_DATUM
WHERE ot.C_INTEZMENYID = @pIntezmenyId
AND ot.C_TANEVID = @pTanevId
AND ISNULL(ot.C_MAXORASZAM, 0) <> ISNULL(o.C_MAXORASZAM, 12);
GO