kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190129135458_AL_477/uspGetIktatottDokumentum.sql
2024-03-13 00:33:46 +01:00

273 lines
No EOL
11 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('uspGetIktatottDokumentum') IS NOT NULL
BEGIN
DROP PROCEDURE uspGetIktatottDokumentum
END
GO
CREATE PROCEDURE dbo.uspGetIktatottDokumentum
@pTanevId INT,
@pIntezmenyId INT,
@pKategoriaId INT = NULL,
@pDokumentumTipus INT = NULL,
@pDokumentumNeve NVARCHAR(256) = NULL,
@pFeladatEllatasiHely INT = NULL,
@pIktatoSzam NVARCHAR(50) = NULL,
@pIktatasKezdete NVARCHAR(24) = NULL,
@pIktatasVege NVARCHAR(24) = NULL,
@pOsztalyId INT = NULL,
@pEvfolyamId INT = NULL,
@pKepzesTipusId INT = NULL,
@pOsztalyFonokId INT = NULL ,
@pTantervId INT = NULL,
@pOsztalyjellemzoId INT = NULL,
@pSzakcsoportId INT = NULL,
@pAgazatId INT = NULL,
@pSzakkepesitesId INT = NULL,
@pReszszakkepesitesId INT = NULL,
@pCsoportnevId INT = NULL,
@pCsoporttipusId INT = NULL,
@pCsoportjellemzoId INT = NULL,
@pTanuloNeve NVARCHAR(50) = NULL,
@pAlkalmazottId INT = NULL,
@pTanuloOktAzon NVARCHAR(20) = NULL,
@pAlkalmazottOktAzon NVARCHAR(20) = NULL,
@pGondviseloNeve NVARCHAR(50) = NULL,
@pIktatoSzemely NVARCHAR(50) = NULL,
@pDokumentumStatusz INT = NULL,
@pFoszamosDokumentumId INT = NULL,
@pOrderBy NVARCHAR(256) = NULL,
@pFirstRow INT = NULL,
@pLastRow INT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @whereCondition NVARCHAR(MAX) = ''
DECLARE @sql NVARCHAR(MAX);
SET @sql = CONCAT(N'DECLARE @tabla TABLE (
ID INT NOT NULL
,Kategoria INT NOT NULL
,DokumentumTipus INT NOT NULL
,DokumentumNeve NVARCHAR(MAX) NOT NULL
,FeladatellatasihelyId INT NULL
,FeladatellatasihelyNeve NVARCHAR(MAX) NULL
,Iktatoszam NVARCHAR(MAX) NULL
,IktatasDatuma DATETIME NULL
,IktatoSzemelye NVARCHAR(MAX) NOT NULL
,Statusz INT NOT NULL
,TanevNev NVARCHAR(MAX) NOT NULL
,ElektronikusPeldanyId INT NULL
,FoszamosDokumentumId INT NULL
,RowNumber INT
)
SELECT * INTO #tmpIktDok
FROM (
SELECT * FROM fnGetIktatottDokumentumok(', @pTanevId, ',', @pIntezmenyId, ')')
IF @pKategoriaId IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'Kategoria = ', @pKategoriaId)
END
IF @pDokumentumTipus IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'DokumentumTipus = ', @pDokumentumTipus)
END
IF @pDokumentumNeve IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'LOWER(DokumentumNeve) LIKE ''%', @pDokumentumNeve ,'%''')
END
IF @pFeladatEllatasiHely IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'FeladatellatasihelyId = ', @pFeladatEllatasiHely)
END
IF @pIktatoSzam IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'LOWER(Iktatoszam) LIKE ''%', @pIktatoszam, '%''')
END
IF @pIktatasKezdete IS NOT NULL AND @pIktatasVege IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'IktatasDatuma BETWEEN ''', CONVERT(NVARCHAR, @pIktatasKezdete, 102), ''' AND ''', CONVERT(NVARCHAR, @pIktatasVege, 102), '''')
END
IF @pIktatoSzemely IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'LOWER(IktatoSzemelye) LIKE ''%', @pIktatoSzemely, '%''')
END
IF @pDokumentumStatusz IS NOT NULL BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', N' WHERE ', N' AND '), N'Statusz = ', @pDokumentumStatusz)
END
SET @sql += CONCAT(@whereCondition, ') data;')
--SET @sql = CONCAT(@sql, N'
--insert into #tmpIktDok
--SELECT * FROM fnGetIktatottDokumentumok(', @pTanevId, ',', @pIntezmenyId, ') AS aaa
--where aaa.ID in (select distinct FoszamosDokumentumId from #tmpIktDok)
-- and aaa.ID not in (select distinct ID from #tmpIktDok)')
SET @whereCondition = ''
declare @cnt int = 0
set @cnt = case when @pOsztalyId IS NOT NULL then 1 else 0 END+
case when @pEvfolyamId IS NOT NULL then 1 else 0 END+
case when @pKepzesTipusId IS NOT NULL then 1 else 0 END+
case when @pOsztalyFonokId IS NOT NULL then 1 else 0 END+
case when @pTantervId IS NOT NULL then 1 else 0 END+
case when @pOsztalyjellemzoId IS NOT NULL then 1 else 0 END+
case when @pSzakcsoportId IS NOT NULL then 1 else 0 END+
case when @pAgazatId IS NOT NULL then 1 else 0 END+
case when @pSzakkepesitesId IS NOT NULL then 1 else 0 END+
case when @pReszszakkepesitesId IS NOT NULL then 1 else 0 END+
case when @pCsoportnevId IS NOT NULL then 1 else 0 END+
case when @pCsoporttipusId IS NOT NULL then 1 else 0 END+
case when @pCsoportjellemzoId IS NOT NULL then 1 else 0 END+
case when @pTanuloNeve IS NOT NULL then 1 else 0 END+
case when @pAlkalmazottId IS NOT NULL then 1 else 0 END+
case when @pTanuloOktAzon IS NOT NULL then 1 else 0 END+
case when @pAlkalmazottOktAzon IS NOT NULL then 1 else 0 END+
case when @pGondviseloNeve IS NOT NULL then 1 else 0 END
SET @sql += N'
select * into #selIktDok from (
select #tmpIktDok.* from #tmpIktDok'
IF @cnt > 0 BEGIN
SET @sql += ' left join (
select count(datadarab.C_IKTATOTTDOKUMENTUMID) darab, datadarab.C_IKTATOTTDOKUMENTUMID from (
select dksz.C_DOKUMENTUMKULCSSZOTIPUS, dksz.C_IKTATOTTDOKUMENTUMID from T_DOKUMENTUMKULCSSZOERTEK_OSSZES dksze
inner join T_DOKUMENTUMKULCSSZO_OSSZES dksz on dksz.C_DOKUMENTUMKULCSSZOERTEKID = dksze.ID
where dksz.C_IKTATOTTDOKUMENTUMID in (select ID from #tmpIktDok)
AND
('
IF (@pOsztalyId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7399 AND dksze.C_ERTEK = ''', @pOsztalyId, ''')')
END
IF (@pEvfolyamId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7400 AND dksze.C_ERTEK = ''', @pEvfolyamId, ''')')
END
IF (@pKepzesTipusId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7402 AND dksze.C_ERTEK = ''', @pKepzesTipusId, ''')')
END
IF (@pOsztalyFonokId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7403 AND dksze.C_ERTEK = ''', @pOsztalyFonokId, ''')')
END
IF (@pTantervId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7404 AND dksze.C_ERTEK = ''', @pTantervId, ''')')
END
IF (@pOsztalyjellemzoId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7405 AND dksze.C_ERTEK = ''', @pOsztalyjellemzoId, ''')')
END
IF (@pSzakcsoportId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7406 AND dksze.C_ERTEK = ''', @pSzakcsoportId, ''')')
END
IF (@pAgazatId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7407 AND dksze.C_ERTEK = ''', @pAgazatId, ''')')
END
IF (@pSzakkepesitesId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7408 AND dksze.C_ERTEK = ''', @pSzakkepesitesId, ''')')
END
IF (@pReszszakkepesitesId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7409 AND dksze.C_ERTEK = ''', @pReszszakkepesitesId, ''')')
END
IF (@pCsoportnevId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7410 AND dksze.C_ERTEK = ''', @pCsoportnevId, ''')')
END
IF (@pCsoporttipusId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7411 AND dksze.C_ERTEK = ''', @pCsoporttipusId, ''')')
END
IF (@pCsoportjellemzoId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7413 AND dksze.C_ERTEK = ''', @pCsoportjellemzoId, ''')')
END
IF (@pTanuloNeve IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7414 AND dksze.C_ERTEK like ''%', @pTanuloNeve, '%'')')
END
IF (@pAlkalmazottId IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7415 AND dksze.C_ERTEK = ', @pAlkalmazottId, ')')
END
IF (@pTanuloOktAzon IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7417 AND dksze.C_ERTEK like ''%', @pTanuloOktAzon, '%'')')
END
IF (@pAlkalmazottOktAzon IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7418 AND dksze.C_ERTEK like ''%', @pAlkalmazottOktAzon, '%'')')
END
IF (@pGondviseloNeve IS NOT NULL)
BEGIN
SET @whereCondition += CONCAT(IIF(@whereCondition = '', '', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7416 AND dksze.C_ERTEK like ''%', @pGondviseloNeve, '%'')')
END
SET @sql += @whereCondition
SET @sql += CONCAT(N')
group by dksz.C_IKTATOTTDOKUMENTUMID, dksz.C_DOKUMENTUMKULCSSZOTIPUS
) datadarab
group by datadarab.C_IKTATOTTDOKUMENTUMID
) darabok on #tmpIktDok.ID = darabok.C_IKTATOTTDOKUMENTUMID
where darabok.darab = ', @cnt)
END
SET @sql += ') as sel';
IF @pFoszamosDokumentumId IS NULL BEGIN
SET @sql += N'
DECLARE kurzor CURSOR FOR
SELECT ID FROM #selIktDok
DECLARE @IktatottDokumentumId INT
OPEN kurzor
FETCH NEXT FROM kurzor INTO @IktatottDokumentumId
WHILE @@FETCH_STATUS = 0 BEGIN'
END
SET @sql += CONCAT(N'
INSERT INTO @tabla
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY IktatasDatuma DESC) AS RowNumber FROM (
SELECT * FROM #selIktDok WHERE ID = ', IIF(@pFoszamosDokumentumId IS NULL, '@IktatottDokumentumId', CAST(@pFoszamosDokumentumId as nvarchar)), N'
OR
-- ha alszámos, akkor a főszámost
ID = (SELECT FoszamosDokumentumId FROM #selIktDok WHERE ID = ', IIF(@pFoszamosDokumentumId IS NULL, '@IktatottDokumentumId', CAST(@pFoszamosDokumentumId as nvarchar)), N')
OR
-- többi alszámos
FoszamosDokumentumId =
(SELECT FoszamosDokumentumId FROM #selIktDok WHERE ID = ', IIF(@pFoszamosDokumentumId IS NULL, '@IktatottDokumentumId', CAST(@pFoszamosDokumentumId as nvarchar)), N')
OR
-- főszámoshoz az alszámosak
FoszamosDokumentumId = ', IIF(@pFoszamosDokumentumId IS NULL, '@IktatottDokumentumId', CAST(@pFoszamosDokumentumId as nvarchar)), N'
) AS a
) AS b
WHERE RowNumber', IIF(@pFoszamosDokumentumId IS NULL, ' = ', ' > '), '1')
IF @pFoszamosDokumentumId IS NULL BEGIN
SET @sql += N'
FETCH NEXT FROM kurzor INTO @IktatottDokumentumId
END
CLOSE kurzor
DEALLOCATE kurzor'
END
SET @sql += CONCAT(N'
SELECT DISTINCT * INTO #resultIktDok FROM @tabla;
SELECT COUNT(#resultIktDok.ID) FROM #resultIktDok;',
IIF(@pFirstRow IS NULL AND @pLastRow IS NULL, N'
SELECT * FROM #resultIktDok',
CONCAT(N'
SELECT * FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY ', IIF(@pOrderBy IS NULL, '(SELECT 0)', @pOrderBy) ,') AS rnum, #resultIktDok.* FROM #resultIktDok
) qqq
WHERE qqq.rnum BETWEEN ', @pFirstRow ,' AND ', @pLastRow)), N'
DROP TABLE #tmpIktDok;
DROP TABLE #selIktDok;
DROP TABLE #resultIktDok;')
--PRINT @sql
EXEC sp_executesql @sql
END
GO