You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

226 lines
21 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Lizenzstruktur_suche] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_get_Lizenzstruktur_suche]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Lizenzstruktur_suche] Script Date: 02.12.2016 09:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
-- =============================================
-- Author: <Stefan Hutter>
-- Create date: <13.01.2008>
-- Description: <Auslesen der Struktur (inkl. Kategorien) der Applikationsverwaltung anhand eines Suchbegriffs>
-- =============================================
CREATE PROCEDURE [dbo].[sp_get_Lizenzstruktur_suche]
@suchstring varchar(255),
@mitarbeiternr int,
@nuraktive int=0,
@alphasort int=0,
@suche int=0
AS
if @suchstring='' set @suche=0
CREATE TABLE #tmpx(
[Lizenznr] [int] ,
[bezeichnung] [varchar] (255) null,
[parentid] [int] null,
[SecurityLevelNr] [int] null,
[aktiv] [bit] null,
[strukturelement] [bit] null,
[Treffer] [varchar] (1) null,
) ON [DEFAULT]
CREATE TABLE #tmpd(
[Lizenznr] [int] ,
[bezeichnung] [varchar] (255) null,
[parentid] [int] null,
[SecurityLevelNr] [int] null,
[aktiv] [bit] null,
[strukturelement] [bit] null,
[Treffer] [varchar] (1) null,
) ON [DEFAULT]
-- Rootentry für die Treeaufbereitung in der Applikation
insert #tmpd (Lizenznr, bezeichnung, parentid, aktiv) values(0,'Root',null,1)
declare @appnr int
declare @appbez varchar(50)
declare @appprnt int
declare @anr int
declare @bez varchar(50)
declare @pid int
declare @snr int
declare @aktiv bit
declare @knr int
declare @ste int
declare @ste1 int
set @appprnt = -1
-----------------------------------------------------------------------------------------
-- Erster Loop über die Applikationen, welche den entsprechenden Suchbegriff beinhalten
-----------------------------------------------------------------------------------------
set @suchstring='%' + @suchstring + '%'
insert #tmpx
SELECT DISTINCT
dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement, '*' AS Treffer
FROM dbo.Lizenzschluessel FULL OUTER JOIN
dbo.Lizenzkauf FULL OUTER JOIN
dbo.LizenzVertragselementApplikation ON dbo.Lizenzkauf.Vertragselementapplikationnr = dbo.LizenzVertragselementApplikation.LizenzVEApplNr FULL OUTER JOIN
dbo.Vertragselement FULL OUTER JOIN
dbo.VertragselementApplikation FULL OUTER JOIN
dbo.Applikation ON dbo.VertragselementApplikation.Applikationnr = dbo.Applikation.ApplikationNr ON
dbo.Vertragselement.Vertragselementnr = dbo.VertragselementApplikation.Vertragselementnr ON
dbo.LizenzVertragselementApplikation.VertragselementApplikationNr = dbo.VertragselementApplikation.VertragselementApplikationnr FULL OUTER JOIN
dbo.Lizenz ON dbo.LizenzVertragselementApplikation.Lizenznr = dbo.Lizenz.LizenzNr ON dbo.Lizenzschluessel.Lizenzkaufnr = dbo.Lizenzkauf.LizenzkaufNr
WHERE (dbo.Lizenz.Bezeichnung LIKE @suchstring) OR
(dbo.LizenzVertragselementApplikation.Bemerkung LIKE @suchstring) OR
(dbo.Lizenz.Beschreibung LIKE @suchstring) OR
(dbo.VertragselementApplikation.Bemerkung LIKE @suchstring) OR
(dbo.Vertragselement.Bezeichnung LIKE @suchstring) OR
(dbo.Vertragselement.Beschreibung LIKE @suchstring) OR
(dbo.Lizenzkauf.KGNummer LIKE @suchstring) OR
(dbo.Lizenzkauf.SAPNummer LIKE @suchstring) OR
(dbo.Lizenzkauf.Bemerkung LIKE @suchstring) OR
(dbo.Applikation.Bezeichnung LIKE @suchstring) OR
(dbo.Lizenzschluessel.Lizenzschluessel LIKE @suchstring) OR
(dbo.Lizenzschluessel.Bemerkung LIKE @suchstring)
insert #tmpx SELECT DISTINCT
dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement, '*' AS Treffer
FROM dbo.Vertragselement INNER JOIN
dbo.VertragselementApplikation ON dbo.Vertragselement.Vertragselementnr = dbo.VertragselementApplikation.Vertragselementnr INNER JOIN
dbo.Vertragspartner ON dbo.Vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN
dbo.Applikation ON dbo.VertragselementApplikation.Applikationnr = dbo.Applikation.ApplikationNr INNER JOIN
dbo.Lizenz INNER JOIN
dbo.LizenzVertragselementApplikation ON dbo.Lizenz.LizenzNr = dbo.LizenzVertragselementApplikation.Lizenznr ON
dbo.VertragselementApplikation.VertragselementApplikationnr = dbo.LizenzVertragselementApplikation.VertragselementApplikationNr
WHERE (dbo.Vertragselement.Bezeichnung LIKE @suchstring) OR
(dbo.Vertragspartner.NameZ1 LIKE @suchstring) OR
(dbo.Applikation.Bezeichnung LIKE @suchstring)
-- SELECT DISTINCT dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement, '*' AS Treffer
--FROM dbo.Applikation INNER JOIN
-- dbo.VertragselementApplikation ON dbo.Applikation.ApplikationNr = dbo.VertragselementApplikation.Applikationnr INNER JOIN
-- dbo.Vertragspartner INNER JOIN
-- dbo.Vertragselement ON dbo.Vertragspartner.VertragspartnerNr = dbo.Vertragselement.VertragspartnerNr ON
-- dbo.VertragselementApplikation.Vertragselementnr = dbo.Vertragselement.Vertragselementnr INNER JOIN
-- dbo.LizenzVertragselementApplikation INNER JOIN
-- dbo.Lizenz ON dbo.LizenzVertragselementApplikation.Lizenznr = dbo.Lizenz.LizenzNr ON
-- dbo.VertragselementApplikation.VertragselementApplikationnr = dbo.LizenzVertragselementApplikation.VertragselementApplikationNr
--WHERE dbo.lizenz.bezeichnung like @suchstring or dbo.lizenz.beschreibung like @suchstring or
-- dbo.Vertragselement.Bezeichnung like @suchstring or dbo.Applikation.Bezeichnung like @suchstring or dbo.Vertragspartner.NameZ1 like @suchstring
if @nuraktive=1 begin
delete from #tmpx where aktiv<>1
end
if @nuraktive=0 begin
delete from #tmpx where aktiv<>0
end
declare xc cursor for
select [lizenznr], [bezeichnung],[parentid],[SecurityLevelNr],[aktiv], strukturelement from #tmpx
open xc
fetch next from xc into @appnr, @appbez, @pid, @snr, @aktiv, @ste
while @@fetch_status=0 begin
-----------------------------------------------------------------------------------------
-- Zweiter Loop über die Einträge der obesten Ebene der Lizenzen
-----------------------------------------------------------------------------------------
declare yc cursor for
select lizenznr, bezeichnung, parentid, securitylevelnr, aktiv, strukturelement from lizenz
where Lizenznr=@appnr
open yc
fetch next from yc into @anr, @bez, @pid, @snr, @aktiv , @ste1
while @@fetch_status=0 begin
insert #tmpd(Lizenznr, bezeichnung, parentid, securitylevelnr, aktiv, strukturelement)
values (@anr, @bez, @appprnt, @snr, @aktiv,@ste1)
-----------------------------------------------------------------------------------------
-- Je Applikation die untergeordneten Applikationen/Module auslesen
-----------------------------------------------------------------------------------------
--execute dbo.sp_get_applstruktur_down @anr,1, @anr
execute dbo.sp_get_lizenzstruktur_up @anr,1
fetch next from yc into @anr, @bez, @pid, @snr, @aktiv , @ste1
end
close yc
deallocate yc
set @appprnt = @appprnt - 1
fetch next from xc into @appnr, @appbez, @pid, @snr, @aktiv, @ste
end
close xc
deallocate xc
-----------------------------------------------------------------------------------------
-- Daten zurück geben und temporäre Tabelle löschen
-----------------------------------------------------------------------------------------
delete from #tmpd where Lizenznr is null
insert #tmpd (lizenznr, bezeichnung, parentid, aktiv) values(0,'Root',null,1)
--update #tmpd set strukturelement=0
delete from #tmpd where parentid<0
if @alphasort = 1 begin
update #tmpd set parentid=0 where parentid<0
delete from #tmpd where Lizenznr < 0
if @suche=1 begin
update #tmpd set treffer='*' where [lizenznr] in (select [Lizenznr] from #tmpx)
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end else begin
select distinct Lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end
drop table #tmpd
return
end
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end else begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end
drop table #tmpd
return
end
if @suche=1 begin
update #tmpd set treffer='*' where lizenznr in (select lizenznr from #tmpx)
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
end else begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
end
drop table #tmpd
return
end
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
end else begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
-- select distinct applikationsnr, bezeichnung, parentid, lic, aktiv from #tmpd where aktiv=1 order by bezeichnung
end
drop table #tmpd
return
GO