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