DROP FUNCTION IF EXISTS fnGetLathatoSzervezetek
GO

CREATE FUNCTION fnGetLathatoSzervezetek (
   @pIntezmenyId INT
  ,@pTanevId INT
  ,@pSzervezetId INT = NULL
  ,@pAdatokHalmaza INT = 0 -- 0: megadott szervezet és alszervezetei, 1: megadott szervezet (SzervezetId = NULL esetén az ősszes székhely), 2: megadott szervezet alszervezetei
)
RETURNS TABLE
RETURN (
  SELECT
    ID
  FROM T_SZERVEZET_OSSZES sz
  WHERE sz.TOROLT = 'F'
    AND sz.C_TANEVID = @pTanevId
    AND sz.C_INTEZMENYID = @pIntezmenyId
    AND ((@pAdatokHalmaza = 1 AND @pSzervezetId IS NOT NULL AND ID = @pSzervezetId)
      OR (@pAdatokHalmaza = 1 AND @pSzervezetId IS NULL AND C_PARENTSZERVEZETID IS NULL)
      OR (@pAdatokHalmaza = 2 AND @pSzervezetId IS NOT NULL AND C_PARENTSZERVEZETID = @pSzervezetId)
      OR (@pAdatokHalmaza = 0 AND @pSzervezetId IS NOT NULL AND (C_PARENTSZERVEZETID = @pSzervezetId OR ID = @pSzervezetId))
      OR (@pAdatokHalmaza = 0 AND @pSzervezetId IS NULL))
);

GO

