USE [Vertragsverwaltung_20160404] GO /****** Object: UserDefinedFunction [dbo].[_count_Appl_Kontakt] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[_count_Appl_Kontakt] ( @applnr int ) RETURNS int AS BEGIN declare @rc int select @rc=count(ApplikationKontaktnr) from applikationkontakt where applikationnr=@applnr and aktiv=1 RETURN @rc END GO /****** Object: UserDefinedFunction [dbo].[Check_Date] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[Check_Date] (@datum datetime) RETURNS datetime BEGIN declare @result datetime if @datum is null set @datum='01.01.1900' set @result=@datum if year(@datum)=1900 set @result=null return @result END GO /****** Object: UserDefinedFunction [dbo].[Check_Generate_Activity] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE FUNCTION [dbo].[Check_Generate_Activity] (@startdatum datetime, @enddatum datetime, @steuerdatum datetime, @vorlauf int, @periode int, @generate int, @kuendigungsfristnr int, @kuendigung int, @fnkt int, @einmalig int) Returns varchar(25) AS BEGIN declare @workdate datetime declare @result varchar(15) declare @eom int declare @eomdate datetime declare @dd varchar(2) declare @mm varchar(2) declare @yy varchar(4) set @eom=0 set @result=0 --------------------------------------------------------------------------------------------------------------------------- --Initialisierung - Datum / Zeit-Sync --------------------------------------------------------------------------------------------------------------------------- set @startdatum = FLOOR( CAST( @startdatum AS FLOAT ) ) set @enddatum = FLOOR( CAST( @enddatum AS FLOAT ) ) set @steuerdatum = FLOOR( CAST( @steuerdatum AS FLOAT ) ) set @eomdate=DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@startdatum)+1,0)) set @eomdate = FLOOR( CAST( @eomdate AS FLOAT ) ) --if @enddatum < '01.01.1901' set @enddatum = '31.12.2099' if @enddatum < '01.01.1901' set @enddatum = '31.12.2099'--------------------------------------------------------------------------------------------------------------------------- --Einmalige Ereignisse --------------------------------------------------------------------------------------------------------------------------- if @einmalig = 1 begin if @periode=15 begin set @result='' set @workdate = @startdatum if @kuendigung=1 begin if @kuendigungsfristnr=1 set @workdate=dateadd(mm,-1,@startdatum) if @kuendigungsfristnr=2 set @workdate=dateadd(mm,-2,@startdatum) if @kuendigungsfristnr=3 set @workdate=dateadd(mm,-3,@startdatum) if @kuendigungsfristnr=4 set @workdate=dateadd(mm,-6,@startdatum) if @kuendigungsfristnr=5 set @workdate=dateadd(mm,-9,@startdatum) if @kuendigungsfristnr=6 set @workdate=dateadd(mm,-12,@startdatum) set @workdate=FLOOR( CAST( @workdate AS FLOAT ) ) end set @workdate=dateadd(dd,@vorlauf*-1,@workdate) if @steuerdatum=floor(cast(@workdate as float)) begin set @result='1' if @fnkt=1 begin set @dd=ltrim(str(day(@startdatum))) while len(@dd)<2 begin set @dd='0'+@dd end set @mm=ltrim(str(month(@startdatum))) while len(@mm)<2 begin set @mm='0'+@mm end set @result=@dd+'.'+@mm+'.'+ltrim(str(year(@startdatum))) end --if @fnkt=1 set @result=@startdatum end end return @result end --------------------------------------------------------------------------------------------------------------------------- --Startdatum auf EOM prüfen --------------------------------------------------------------------------------------------------------------------------- if @eomdate=@startdatum begin set @eom=1 end if @generate=0 begin set @result='' return @result end --------------------------------------------------------------------------------------------------------------------------- --Vorlaufzeit in Tagen vom Startdatum abziehen. Wenn dieses nach dem aktuellen Tagesdatum liegt, keine Aktivität generieren --------------------------------------------------------------------------------------------------------------------------- if @startdatum='01.01.1900' begin set @result='' return @result end set @workdate=@startdatum if @kuendigung=1 begin if @kuendigungsfristnr=1 set @workdate=dateadd(mm,-1,@startdatum) if @kuendigungsfristnr=2 set @workdate=dateadd(mm,-2,@startdatum) if @kuendigungsfristnr=3 set @workdate=dateadd(mm,-3,@startdatum) if @kuendigungsfristnr=4 set @workdate=dateadd(mm,-6,@startdatum) if @kuendigungsfristnr=5 set @workdate=dateadd(mm,-9,@startdatum) if @kuendigungsfristnr=6 set @workdate=dateadd(mm,-12,@startdatum) end set @workdate=dateadd(dd,@vorlauf*-1,@workdate) if @workdate > @steuerdatum begin set @result='' return @result end --------------------------------------------------------------------------------------------------------------------------- -- Berechnung -- 1=einmalig,2=täglich,3=wöchentlich,4=monatlich,5=zwei-monatlich,6=vierteljährlich,7=halbjährlich,8=jählrich --------------------------------------------------------------------------------------------------------------------------- declare @dd1 int declare @dd2 int set @dd1=datepart(dd,@startdatum) --Print @workdate declare @tmpdate datetime declare @ok int set @ok=0 while @workdate < @enddatum begin if month(@workdate)=2 and day(@startdatum)>28 and @vorlauf>0 begin set @tmpdate=dateadd(dd,(day(@startdatum)-28)*-1,@workdate) if @tmpdate=@steuerdatum set @ok=1 end if @workdate=@steuerdatum begin set @ok=1 end if @ok=1 begin set @result='1' --------------------------------------------------------------------------------------------------------------------------- --Berechnung des Kündigungstermins --------------------------------------------------------------------------------------------------------------------------- if @fnkt=1 begin --set @workdate=dateadd(d,@vorlauf,@workdate) if @kuendigungsfristnr=1 set @workdate=dateadd(mm,1,@workdate) if @kuendigungsfristnr=2 set @workdate=dateadd(mm,2,@workdate) if @kuendigungsfristnr=3 set @workdate=dateadd(mm,3,@workdate) if @kuendigungsfristnr=4 set @workdate=dateadd(mm,6,@workdate) if @kuendigungsfristnr=5 set @workdate=dateadd(mm,9,@workdate) if @kuendigungsfristnr=6 set @workdate=dateadd(mm,12,@workdate) if @eom=1 begin set @workdate=DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@workdate)+1,0)) set @workdate = FLOOR( CAST( @workdate AS FLOAT ) ) set @dd=ltrim(str(day(@workdate))) while len(@dd)<2 begin set @dd='0'+@dd end set @mm=ltrim(str(month(@workdate))) while len(@mm)<2 begin set @mm='0'+@mm end set @result=@dd+'.'+@mm+'.'+ltrim(str(year(@workdate))) -- set @result=@workdate end else begin set @workdate = FLOOR( CAST( @workdate AS FLOAT ) ) -- Datumsberechung zur Datumsausgabe - Termin (28. - 31.) set @dd2=datepart(dd,@workdate) if @dd1>=28 begin if @dd2 < @dd1 begin set @workdate=dateadd(dd,@dd1-@dd2,@workdate) end end set @dd=ltrim(str(day(@workdate))) while len(@dd)<2 begin set @dd='0'+@dd end set @mm=ltrim(str(month(@workdate))) while len(@mm)<2 begin set @mm='0'+@mm end set @result=@dd+'.'+@mm+'.'+ltrim(str(year(@workdate))) --set @result=@workdate end end else begin if @kuendigungsfristnr=1 set @workdate=dateadd(mm,1,@workdate) if @kuendigungsfristnr=2 set @workdate=dateadd(mm,2,@workdate) if @kuendigungsfristnr=3 set @workdate=dateadd(mm,3,@workdate) if @kuendigungsfristnr=4 set @workdate=dateadd(mm,6,@workdate) if @kuendigungsfristnr=5 set @workdate=dateadd(mm,9,@workdate) if @kuendigungsfristnr=6 set @workdate=dateadd(mm,12,@workdate) if @workdate > @enddatum begin set @result='' return @result end end return @result break end if @workdate > @steuerdatum begin set @result='' return @result break end if @periode = 10 set @workdate=dateadd(dd,1,@workdate) if @periode = 11 set @workdate=dateadd(ww,1,@workdate) if @periode = 12 set @workdate=dateadd(mm,1,@workdate) if @periode =13 set @workdate=dateadd(mm,2,@workdate) if @periode = 16 set @workdate=dateadd(qq,1,@workdate) if @periode = 14 set @workdate=dateadd(qq,2,@workdate) if @periode =9 set @workdate=dateadd(yy,1,@workdate) --if @periode = 9 set @workdate=dateadd(mm,1,@workdate) end set @result='' return @result end GO /****** Object: UserDefinedFunction [dbo].[fnkt_erstloesungsquote] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[fnkt_erstloesungsquote] ( @fnkt INT, @ticketid VARCHAR(255) ) RETURNS int AS BEGIN DECLARE @res int DECLARE @bg VARCHAR(255) DECLARE @cnt int IF @fnkt=1 BEGIN -- Check Erste Besitzergruppe = ServiceDesk SELECT TOP 1 @bg=besitzergruppe FROM txp_ticket_data WHERE ticketid=@ticketid ORDER BY Status_Changedate IF @bg='ServiceDesk' SET @res = 1 ELSE SET @res=0 IF @res=0 BEGIN SET @res = @res END ELSE BEGIN SELECT @cnt=COUNT(*) FROM txp_ticket_data WHERE ticketid=@ticketid AND (status_neu='Zugewiesen 2nd Level' OR Status_Neu='In Bearbeitung - 3rd Level' OR status_neu='Zugewiesen WPI') IF @cnt>0 SET @res=0 ELSE SET @res= 1 end END RETURN @res --IF @fnkt=1 BEGIN -- Check Erste Besitzergruppe = ServiceDesk -- SELECT TOP 1 @bg=besitzergruppe FROM txp_ticket_data WHERE ticketid=@ticketid ORDER BY Status_Changedate -- IF @bg='ServiceDesk' SET @res = 1 ELSE SET @res=0 -- END --IF @fnkt=2 BEGIN -- Prüfung, ob Status durchlaufen worden sind -- SELECT @cnt=COUNT(*) FROM txp_ticket_data WHERE ticketid=@ticketid AND (status_neu='Zugewiesen 2nd Level' OR Status_Neu='In Bearbeitung - 3rd Level' OR status_neu='Zugewiesen WPI') -- IF @cnt>0 SET @res=1 ELSE SET @res= 0 -- END --RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[fnkt_get_KPI_hierarchie] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create Function [dbo].[fnkt_get_KPI_hierarchie] ( @startkey int ) RETURNS @tmp1 TABLE ( ID INT ) AS begin WITH tmp1 (id) AS ( SELECT oenr FROM oe WHERE oenr=@startkey UNION ALL SELECT C.oenr FROM oe C INNER JOIN tmp1 R ON C.parentid = R.id ) INSERT INTO @tmp1 SELECT id FROM tmp1 RETURN end GO /****** Object: UserDefinedFunction [dbo].[fnkt_get_last_closedstate] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[fnkt_get_last_closedstate] ( @ticketid varchar(255) ) RETURNS varchar(255) AS BEGIN DECLARE @res VARCHAR(255) SELECT TOP 1 @res= ISNULL(statusid,'') FROM txp_ticket_data WHERE ticketid=@ticketid AND status_neu='Solved' ORDER BY Erstellungsdatum DESC RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[fnkt_get_last_status] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[fnkt_get_last_status] ( @ticketid varchar(255) ) RETURNS VARCHAR(255) AS BEGIN DECLARE @res VARCHAR(255) SELECT TOP 1 @res=status_neu FROM TXP_Ticket_Data WHERE ticketid=@ticketid ORDER BY Status_Changedate desc RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[fnkt_get_last_statusID] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create FUNCTION [dbo].[fnkt_get_last_statusID] ( @ticketid varchar(255) ) RETURNS VARCHAR(255) AS BEGIN DECLARE @res VARCHAR(255) SELECT TOP 1 @res=statusID FROM TXP_Ticket_Data WHERE ticketid=@ticketid ORDER BY Status_Changedate desc RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[fnkt_split] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[fnkt_split] ( @sInputList varchar(8000) -- List of delimited items , @Delimiter char(1) = ',' -- delimiter that separates items , @Delimiterlength INT = 1 ) RETURNS @tmp1 TABLE (item varchar(8000)) AS begin DECLARE @Item VARCHAR(8000) WHILE CHARINDEX(@Delimiter, @sInputList, 0) <> 0 BEGIN SELECT @Item = RTRIM(LTRIM(SUBSTRING(@sInputList, 1, CHARINDEX(@Delimiter, @sInputList, 0) - 1))), @sInputList = RTRIM(LTRIM(SUBSTRING(@sInputList, CHARINDEX(@Delimiter, @sInputList, 0) + @Delimiterlength, LEN(@sInputList)))) IF LEN(@Item) > 0 INSERT INTO @tmp1 SELECT @Item END IF LEN(@sInputList) > 0 INSERT INTO @tmp1 SELECT @sInputList RETURN END GO /****** Object: UserDefinedFunction [dbo].[get_anteil] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_anteil] ( @engagement int, @matyp int ) RETURNS float AS BEGIN DECLARE @fhranteil INT SELECT @fhranteil=Fuehrungsanteil FROM dbo.MitarbeiterTyp WHERE mitarbeitertypnr=@matyp DECLARE @res FLOAT SET @res=(@engagement * (100-@fhranteil))/100 RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[get_applobject] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_applobject] ( -- Add the parameters for the function here @input_guid varchar(255), @input_type int ) RETURNS varchar(1024) AS BEGIN declare @resultat varchar(1024) set @resultat='' declare @appl varchar(255) declare @crlf varchar(2) SET @crlf = char(13) + char(10) if @input_type=1 begin declare xc cursor for select applikation from applikationarchitekturobjectappl where guid=@input_guid open xc fetch next from xc into @appl while @@fetch_status=0 begin set @resultat=@resultat + '- '+@appl+@crlf fetch next from xc into @appl end close xc deallocate xc RETURN @resultat end if @input_type=2 begin declare xc cursor for select datenbank from applikationarchitekturobjectdb where guid=@input_guid open xc fetch next from xc into @appl while @@fetch_status=0 begin set @resultat=@resultat + '- '+@appl+@crlf fetch next from xc into @appl end close xc deallocate xc RETURN @resultat end if @input_type=3 begin declare xc cursor for select sst from applikationarchitekturobjectsst where guid=@input_guid open xc fetch next from xc into @appl while @@fetch_status=0 begin set @resultat=@resultat + '- '+@appl+@crlf fetch next from xc into @appl end close xc deallocate xc RETURN @resultat end if @input_type=4 begin declare xc cursor for select applikation from applikationarchitekturobjectvirt where guid=@input_guid open xc fetch next from xc into @appl while @@fetch_status=0 begin set @resultat=@resultat + '- '+@appl+@crlf fetch next from xc into @appl end close xc deallocate xc RETURN @resultat end RETURN @resultat END GO /****** Object: UserDefinedFunction [dbo].[get_arbeitstage] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_arbeitstage] ( @madetailnr INT, @jahr int, @monat INT ) RETURNS float AS BEGIN DECLARE @SOLL INT DECLARE @Netto INT DECLARE @oenr INT DECLARE @Individuelle_Reduktion float DECLARE @reduktion_nicht_verrechenbar int DECLARE @valuefound INT SET @valuefound=-1 SET @Individuelle_Reduktion=0 SELECT @Individuelle_Reduktion=Individuelle_Reduktion, @oenr=oenr FROM dbo.MADetails WHERE MADetailNr=@madetailnr WHILE @valuefound<0 BEGIN SELECT @reduktion_nicht_verrechenbar=ISNULL(reduktion_nicht_verrechenbar,0),@oenr=parentid FROM oe WHERE oenr=@oenr IF @reduktion_nicht_verrechenbar>0 SET @valuefound=1 IF @oenr = 0 BEGIN SET @valuefound=2 IF @reduktion_nicht_verrechenbar=0 SET @reduktion_nicht_verrechenbar=0 END end IF @Individuelle_Reduktion > 0 SET @Individuelle_Reduktion=@Individuelle_Reduktion/12 DECLARE @res float SELECT @res = Plantage FROM jahrestabelle WHERE jahr=@jahr AND monat=@monat SET @res=@res*((100-@reduktion_nicht_verrechenbar))/100 SET @res=@res - @Individuelle_Reduktion SET @res=ROUND(@res,2) --SELECT @res = Arbeitstage FROM jahrestabelle WHERE jahr=@jahr AND monat=@monat RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[get_arbeitstage_old] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create FUNCTION [dbo].[get_arbeitstage_old] ( @jahr int, @monat int ) RETURNS float AS BEGIN DECLARE @res int SELECT @res = arbeitstage FROM jahrestabelle WHERE jahr=@jahr AND monat=@monat RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[get_arbeitstage_prozent] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_arbeitstage_prozent] ( @OE INT ) RETURNS float AS BEGIN DECLARE @SOLL INT DECLARE @Netto INT DECLARE @oenr INT DECLARE @Individuelle_Reduktion float DECLARE @reduktion_nicht_verrechenbar int DECLARE @valuefound INT SET @valuefound=-1 SELECT @reduktion_nicht_verrechenbar=ISNULL(reduktion_nicht_verrechenbar,0),@oenr=parentid FROM oe WHERE oenr=@oe if @reduktion_nicht_verrechenbar > 0 set @valuefound=1 WHILE @valuefound<0 BEGIN SELECT @reduktion_nicht_verrechenbar=ISNULL(reduktion_nicht_verrechenbar,0),@oenr=parentid FROM oe WHERE oenr=@oenr IF @reduktion_nicht_verrechenbar>0 SET @valuefound=1 IF @oenr = 0 BEGIN SET @valuefound=2 IF @reduktion_nicht_verrechenbar=0 SET @reduktion_nicht_verrechenbar=0 END end DECLARE @res float set @res=@reduktion_nicht_verrechenbar --SET @res=@res*((100-@reduktion_nicht_verrechenbar))/100 --'SET @res=ROUND(@res,2) RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[Get_Dateperiode] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create FUNCTION [dbo].[Get_Dateperiode] ( @type varchar(255), @startperiode int ) Returns datetime AS BEGIN declare @dt datetime declare @offset int if @type='ActWeek' begin if @startperiode=1 begin set @dt=DATEADD(wk, DATEDIFF(wk, 6, getdate()), 6) set @dt=dateadd(dd,1,@dt) end if @startperiode=0 begin set @dt=DATEADD(wk, DATEDIFF(wk, 5, getdate()), 5) set @dt=dateadd(dd,2,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='ActMonth' begin if @startperiode=1 set @dt=DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) if @startperiode=0 set @dt=Dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0)) return @dt end if @type='ActQuarter' begin if @startperiode=1 set @dt= DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) if @startperiode=0 begin set @dt= dateadd(qq,datediff(qq,-1,getdate()),-1) set @dt=dateadd(dd,1,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='ActYear' begin if @startperiode=1 set @dt = DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) if @startperiode=0 set @dt = dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate() )+1, 0)) return @dt end declare @calcdate datetime if @type='LastWeek' begin set @calcdate=dateadd(wk,-1,getdate()) if @startperiode=1 begin set @dt=DATEADD(wk, DATEDIFF(wk, 6, @calcdate), 6) set @dt=dateadd(dd,1,@dt) end if @startperiode=0 begin set @dt=DATEADD(wk, DATEDIFF(wk, 5, @calcdate), 5) set @dt=dateadd(dd,2,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='LastMonth' begin set @calcdate=dateadd(mm,-1,getdate()) if @startperiode=1 set @dt=DATEADD(mm, DATEDIFF(mm,0,@calcdate), 0) if @startperiode=0 set @dt=Dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@calcdate )+1, 0)) return @dt end if @type='LastQuarter' begin set @calcdate=dateadd(qq,-1,getdate()) if @startperiode=1 set @dt= DATEADD(qq, DATEDIFF(qq,0,@calcdate), 0) if @startperiode=0 begin set @dt= dateadd(qq,datediff(qq,-1,@calcdate),-1) set @dt=dateadd(dd,1,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='LastYear' begin set @calcdate=dateadd(yy,-1,getdate()) if @startperiode=1 set @dt = DATEADD(yy, DATEDIFF(yy,0,@calcdate), 0) if @startperiode=0 set @dt = dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,@calcdate )+1, 0)) return @dt end return @dt END GO /****** Object: UserDefinedFunction [dbo].[get_gremium] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_gremium] ( @keyvalue int ) RETURNS varchar(255) AS BEGIN declare @res varchar(255) set @res='' select @res=ISNULL(Gruppierungsbegriff,'') from gremiumgruppierung where gremiumgruppierungnr=@keyvalue and aktiv=1 if @@ROWCOUNT=0 set @res='' return @res END GO /****** Object: UserDefinedFunction [dbo].[get_keyuser_stv] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_keyuser_stv] (@applikationnr int, @typ int) RETURNS varchar(255) AS BEGIN declare @res varchar(255) SELECT @res=dbo.Person.Name + ' ' + dbo.Person.Vorname FROM dbo.ApplikationKontakt INNER JOIN dbo.Person ON dbo.ApplikationKontakt.PersonNr = dbo.Person.PersonNr WHERE (dbo.Person.Aktiv = 1) AND (dbo.ApplikationKontakt.Aktiv = 1) AND (dbo.ApplikationKontakt.KontakttypNr = @typ) AND (dbo.ApplikationKontakt.Applikationnr = @applikationnr) if @res is null set @res='' return @res END GO /****** Object: UserDefinedFunction [dbo].[Get_Kuendigungsfrist] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE FUNCTION [dbo].[Get_Kuendigungsfrist] (@kuendigungsfristnr int, @kuendigung int) RETURNS varchar (25) as BEGIN declare @result varchar(25) SET @result='' if @kuendigung=0 return @result select @result = bezeichnung from kuendigungsfristen where kuendigungsfristnr = @kuendigungsfristnr return @result END GO /****** Object: UserDefinedFunction [dbo].[get_monatstabelle] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_monatstabelle](@from AS DATETIME, @to AS DATETIME) RETURNS @Dates TABLE(start_date DATETIME, End_Date datetime) AS BEGIN DECLARE @st DATETIME DECLARE @ed DATETIME WHILE @from < @to BEGIN SELECT @st=DATEADD(MONTH, DATEDIFF(MONTH, 0, @from), 0) SELECT @ed=DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, @from) + 1, 0)) SET @ed=DATEADD(HOUR,23,@ed) SET @ed=DATEADD(MINUTE,59,@ed) SET @ed=DATEADD(SECOND,45,@ed) INSERT @dates (start_date, end_date) VALUES(@st, @ed) SET @from = DATEADD(MONTH, 1,@from) end RETURN END GO /****** Object: UserDefinedFunction [dbo].[Get_Next_Kuendigungstermin] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create FUNCTION [dbo].[Get_Next_Kuendigungstermin] (@ereignisnr int) Returns datetime AS BEGIN declare @start as datetime declare @ende as datetime declare @periode as integer declare @workdate datetime select @start=start, @ende=ende, @periode=periodizitaetnr from vertragsereignis where ereignisnr=@ereignisnr if @ende < '01.01.1901' set @ende='31.12.2099' if @periode = 15 begin select @start=datum, @ende=ende, @periode=periodizitaetnr from vertragsereignis where ereignisnr=@ereignisnr if @start > getdate() set @workdate=@start return @workdate end --PeriodizitaetNr Bezeichnung-- --9 jährlich --10 täglich --11 wöchentlich --12 monatlich --13 zwei-monatlich --14 halb-jährlich --15 einmalig --16 vierteljährlich set @workdate = @start while @workdate < @ende and @workdate < getdate() begin if @periode = 9 set @workdate=dateadd(yy,1,@workdate) if @periode = 10 set @workdate=dateadd(dd,1,@workdate) if @periode = 11 set @workdate=dateadd(ww,1,@workdate) if @periode = 12 set @workdate=dateadd(mm,1,@workdate) if @periode = 13 set @workdate=dateadd(mm,2,@workdate) if @periode = 14 set @workdate=dateadd(mm,6,@workdate) if @periode = 16 set @workdate=dateadd(qq,1,@workdate) end if @workdate > @ende set @workdate='01.01.1900' return @workdate end GO /****** Object: UserDefinedFunction [dbo].[get_plantage] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_plantage] ( @jahr int, @monat INT ) RETURNS float AS BEGIN DECLARE @res INT SELECT @res = plantage FROM jahrestabelle WHERE jahr=@jahr AND monat=@monat RETURN @res END GO /****** Object: UserDefinedFunction [dbo].[Get_SecurityLevel] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE FUNCTION [dbo].[Get_SecurityLevel] (@mitarbeiternr int) RETURNS int AS BEGIN declare @seclevel int SELECT TOP 1 @seclevel = dbo.SecurityLevel.SecurityLevelNr FROM dbo.funktionsgruppe_rolle INNER JOIN dbo.rolle ON dbo.funktionsgruppe_rolle.rollenr = dbo.rolle.rollenr INNER JOIN dbo.rolle_securitylevel ON dbo.rolle.rollenr = dbo.rolle_securitylevel.rollenr INNER JOIN dbo.funktionsgruppe ON dbo.funktionsgruppe_rolle.funktionsgruppenr = dbo.funktionsgruppe.funktionsgruppenr INNER JOIN dbo.mitarbeiter_funktionsgruppe ON dbo.funktionsgruppe.funktionsgruppenr = dbo.mitarbeiter_funktionsgruppe.funktionsgruppenr INNER JOIN dbo.SecurityLevel ON dbo.rolle_securitylevel.SecurityLevelNr = dbo.SecurityLevel.SecurityLevelNr WHERE (dbo.SecurityLevel.Aktiv = 1) AND (dbo.mitarbeiter_funktionsgruppe.aktiv = 1) AND (dbo.funktionsgruppe.aktiv = 1) AND (dbo.rolle.aktiv = 1) AND (dbo.funktionsgruppe_rolle.aktiv = 1) AND (dbo.rolle_securitylevel.aktiv = 1) and dbo.mitarbeiter_funktionsgruppe.mitarbeiternr=@mitarbeiternr ORDER BY dbo.rolle_securitylevel.SecurityLevelNr desc if @@rowcount = 0 begin set @seclevel=9999 end return @seclevel END GO /****** Object: UserDefinedFunction [dbo].[Get_SecurityLevelTab] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[Get_SecurityLevelTab] ( @mitarbeiternr int ) RETURNS @Seclevel TABLE(SecurityLevelnr int) AS begin insert @Seclevel (SecurityLevelnr) values(0) insert @seclevel SELECT dbo.SecurityLevel.SecurityLevelNr FROM dbo.funktionsgruppe_rolle INNER JOIN dbo.rolle ON dbo.funktionsgruppe_rolle.rollenr = dbo.rolle.rollenr INNER JOIN dbo.rolle_securitylevel ON dbo.rolle.rollenr = dbo.rolle_securitylevel.rollenr INNER JOIN dbo.funktionsgruppe ON dbo.funktionsgruppe_rolle.funktionsgruppenr = dbo.funktionsgruppe.funktionsgruppenr INNER JOIN dbo.mitarbeiter_funktionsgruppe ON dbo.funktionsgruppe.funktionsgruppenr = dbo.mitarbeiter_funktionsgruppe.funktionsgruppenr INNER JOIN dbo.SecurityLevel ON dbo.rolle_securitylevel.SecurityLevelNr = dbo.SecurityLevel.SecurityLevelNr WHERE (dbo.SecurityLevel.Aktiv = 1) AND (dbo.mitarbeiter_funktionsgruppe.aktiv = 1) AND (dbo.funktionsgruppe.aktiv = 1) AND (dbo.rolle.aktiv = 1) AND (dbo.funktionsgruppe_rolle.aktiv = 1) AND (dbo.rolle_securitylevel.aktiv = 1) and dbo.mitarbeiter_funktionsgruppe.mitarbeiternr=@mitarbeiternr return end GO /****** Object: UserDefinedFunction [dbo].[get_solved_in] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[get_solved_in] ( @von DATETIME, @bis DATETIME ) RETURNS @solved_in TABLE (ticketid varchar(255), statusid varchar(255)) AS begin DECLARE @ticketid varchar(255) DECLARE @statusid VARCHAR(255) DECLARE @changedate DATETIME DECLARE @rc int DECLARE xc CURSOR FOR SELECT DISTINCT ticketid FROM txp_ticket_data WHERE ticketid LIKE 'in_%' AND status_neu = 'solved' AND Status_Changedate BETWEEN @von AND @bis OPEN xc FETCH NEXT FROM xc INTO @ticketid WHILE @@FETCH_STATUS=0 BEGIN FETCH NEXT FROM xc INTO @ticketid SELECT TOP 1 @statusid=statusid, @changedate=Status_Changedate FROM txp_ticket_data WHERE ticketid=@ticketid AND status_neu='Solved' ORDER BY Status_Changedate DESC SELECT @rc=COUNT(*) FROM dbo.TXP_Ticket_Data WHERE ticketid=@ticketid AND Status_Changedate>@changedate AND status_neu <> 'Solved' AND status_neu <> 'Geschlossen' AND status_neu <> 'Geschlossen "Autoclose"' AND status_neu <> 'Warten auf Schliessung' IF @rc=0 begin INSERT @solved_in (ticketid, statusid) VALUES(@ticketid, @statusid) end END CLOSE xc DEALLOCATE xc return END GO /****** Object: UserDefinedFunction [dbo].[Get_Type] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[Get_Type] ( @typ int, @det varchar(25), @applnr int ) RETURNS varchar(50) AS BEGIN declare @ret varchar(50) declare @cnt int declare @user varchar(50) if @typ=1 begin if @det='TS' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=1 and aktiv = 1 if @det='Filer' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=2 and aktiv = 1 if @det='FAT (paketiert)' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=3 and aktiv = 1 if @det='FAT Manuell' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=4 and aktiv = 1 if @det='Web-Server' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=5 and aktiv = 1 if @det='Standalone' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=6 and aktiv = 1 if @det='externe URL' select @cnt=count(*) from ApplikationInstallationTyp where applikationnr=@applnr and installationtypnr=7 and aktiv = 1 if @cnt>0 set @ret='X' else set @ret='' return @ret end if @typ=2 begin if @det='SPF' select @cnt=count(*) from ApplikationInstallationals where applikationnr=@applnr and installationalstypnr=1 and aktiv=1 if @det='IPF' select @cnt=count(*) from ApplikationInstallationals where applikationnr=@applnr and installationalstypnr=2 and aktiv=1 if @det='NL' select @cnt=count(*) from ApplikationInstallationals where applikationnr=@applnr and installationalstypnr=3 and aktiv=1 if @det='HS' select @cnt=count(*) from ApplikationInstallationals where applikationnr=@applnr and installationalstypnr=4 and aktiv=1 if @det='CC' select @cnt=count(*) from ApplikationInstallationals where applikationnr=@applnr and installationalstypnr=5 and aktiv=1 if @det='Handel' select @cnt=count(*) from ApplikationInstallationals where applikationnr=@applnr and installationalstypnr=6 and aktiv=1 if @cnt>0 set @ret='X' else set @ret='' return @ret end if @typ=3 begin if @det='PK' select @cnt=count(*) from ApplikationInstallationFuer where applikationnr=@applnr and ApplikationStandardTypNr=1 and aktiv=1 if @det='FK' select @cnt=count(*) from ApplikationInstallationFuer where applikationnr=@applnr and ApplikationStandardTypNr=2 and aktiv=1 if @det='PBI'select @cnt=count(*) from ApplikationInstallationFuer where applikationnr=@applnr and ApplikationStandardTypNr=3 and aktiv=1 if @det='Stab' select @cnt=count(*) from ApplikationInstallationFuer where applikationnr=@applnr and ApplikationStandardTypNr=4 and aktiv=1 if @cnt>0 set @ret='X' else set @ret='' return @ret end if @typ=4 begin if @det='Key_User' begin SELECT @ret=dbo.Person.Name + ' ' + dbo.Person.Vorname FROM dbo.ApplikationKontakt INNER JOIN dbo.Person ON dbo.ApplikationKontakt.PersonNr = dbo.Person.PersonNr WHERE (dbo.ApplikationKontakt.Aktiv = 1) AND (dbo.ApplikationKontakt.Applikationnr = @applnr) AND (dbo.ApplikationKontakt.KontakttypNr = 1) end if @det='Key_User_Stv' begin SELECT @ret=dbo.Person.Name + ' ' + dbo.Person.Vorname FROM dbo.ApplikationKontakt INNER JOIN dbo.Person ON dbo.ApplikationKontakt.PersonNr = dbo.Person.PersonNr WHERE (dbo.ApplikationKontakt.Aktiv =1 ) AND (dbo.ApplikationKontakt.Applikationnr = @applnr) AND (dbo.ApplikationKontakt.KontakttypNr = 2) end if @det='Fachvertreter' begin SELECT @ret=dbo.Person.Name + ' ' + dbo.Person.Vorname FROM dbo.ApplikationKontakt INNER JOIN dbo.Person ON dbo.ApplikationKontakt.PersonNr = dbo.Person.PersonNr WHERE (dbo.ApplikationKontakt.Aktiv = 1) AND (dbo.ApplikationKontakt.Applikationnr = @applnr) AND (dbo.ApplikationKontakt.KontakttypNr = 3) end return @ret end return @ret END GO /****** Object: UserDefinedFunction [dbo].[get_x] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[get_x] ( @inp bit ) RETURNS varchar(1) AS BEGIN DECLARE @RET VARCHAR(1) IF @INP=1 SET @RET='x' ELSE SET @RET='' RETURN @RET END GO /****** Object: UserDefinedFunction [dbo].[lc_rpt1] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[lc_rpt1] ( @produkte VARCHAR(255), @von varchar(255), @bis varchar(255), @produkttypnr int ) RETURNS @tmp1 TABLE (LC_Phasenr INT, Phase VARCHAR(255)) AS begin declare @tmp2 TABLE (LC_Phasenr INT, Phase VARCHAR(255), datum datetime) declare @tmp3 TABLE (LC_Phasenr INT, Phase VARCHAR(255)) IF @von='' SET @von='01.01.1900' IF @bis='' SET @bis='31.12.4712' IF @produkte='' BEGIN insert into @tmp2 SELECT DISTINCT dbo.LC_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, lc_produkt_phase.datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis AND (@produkttypnr=-1 OR @produkttypnr = lc_produkt.ProdukttypNr) ORDER BY lc_produkt_phase.datum END IF @produkte<>'' BEGIN insert into @tmp2 SELECT DISTINCT dbo.LC_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, lc_produkt_phase.datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) and dbo.LC_Produkt_Phase.LC_Produktnr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1)) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis AND (@produkttypnr=-1 OR @produkttypnr = lc_produkt.ProdukttypNr) ORDER BY lc_produkt_phase.datum end INSERT @tmp3 SELECT TOP (100) PERCENT LC_Phasenr, Phase FROM @tmp2 GROUP BY LC_Phasenr, Phase ORDER BY MIN(datum) DECLARE @phase VARCHAR(255) DECLARE @i INT DECLARE @zwphase VARCHAR(255) SET @zwphase='' SET @i=0 DECLARE xc CURSOR FOR SELECT phase FROM @tmp3 OPEN xc FETCH NEXT FROM xc INTO @phase WHILE @@FETCH_STATUS=0 BEGIN IF @zwphase<>@phase BEGIN SET @i=@i+1 SET @zwphase=@phase END UPDATE @tmp3 SET phase=STR(@i)+' '+@phase WHERE phase=@phase FETCH NEXT FROM xc INTO @phase END CLOSE xc deallocate xc INSERT @tmp1 SELECT lc_phasenr, phase FROM @tmp3 RETURN end GO /****** Object: UserDefinedFunction [dbo].[lc_rpt2] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[lc_rpt2] ( @produkte VARCHAR(255), @von varchar(255), @bis varchar(255), @produkttypnr int ) RETURNS @tmp1 TABLE (LC_Produktnr INT, Produkt VARCHAR(255), LC_PhaseNr INT, datum DATETIME) AS begin IF @von='' SET @von='01.01.1900' IF @bis='' SET @bis='31.12.4712' IF @produkte='' BEGIN insert into @tmp1 SELECT distinct dbo.LC_Produkt.LC_ProduktNr, dbo.LC_Produkt.Bezeichnung AS Produkt, dbo.LC_Phase.LC_PhaseNr, dbo.LC_Produkt_Phase.Datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis ORDER BY Produkt end IF @produkte<>'' BEGIN insert into @tmp1 SELECT distinct dbo.LC_Produkt.LC_ProduktNr, dbo.LC_Produkt.Bezeichnung AS Produkt, dbo.LC_Phase.LC_PhaseNr, dbo.LC_Produkt_Phase.Datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) and dbo.lc_produkt.lc_produktnr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1)) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis ORDER BY Produkt end RETURN end GO /****** Object: UserDefinedFunction [dbo].[lc_rpt3] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[lc_rpt3] ( @produkte VARCHAR(255), @von varchar(255), @bis varchar(255), @produkttypnr int ) RETURNS @tmp1 TABLE (LC_Phasenr INT, Phase VARCHAR(255)) AS begin declare @tmp2 TABLE (LC_Phasenr INT, Phase VARCHAR(255), datum datetime) declare @tmp3 TABLE (LC_Phasenr INT, Phase VARCHAR(255)) IF @von='' SET @von='01.01.1900' IF @bis='' SET @bis='31.12.4712' IF @produkte='' BEGIN insert into @tmp2 SELECT DISTINCT dbo.LC_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, lc_produkt_phase.datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis AND (@produkttypnr=-1 OR @produkttypnr = lc_produkt.ProdukttypNr) ORDER BY lc_produkt_phase.datum END IF @produkte<>'' BEGIN insert into @tmp2 SELECT DISTINCT dbo.LC_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, lc_produkt_phase.datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) and dbo.lc_phase.lc_phasenr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1)) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis AND (@produkttypnr=-1 OR @produkttypnr = lc_produkt.ProdukttypNr) ORDER BY lc_produkt_phase.datum end INSERT @tmp3 SELECT TOP (100) PERCENT LC_Phasenr, Phase FROM @tmp2 GROUP BY LC_Phasenr, Phase ORDER BY MIN(datum) DECLARE @phase VARCHAR(255) DECLARE @i INT DECLARE @zwphase VARCHAR(255) SET @zwphase='' SET @i=0 DECLARE xc CURSOR FOR SELECT phase FROM @tmp3 OPEN xc FETCH NEXT FROM xc INTO @phase WHILE @@FETCH_STATUS=0 BEGIN IF @zwphase<>@phase BEGIN SET @i=@i+1 SET @zwphase=@phase END UPDATE @tmp3 SET phase=STR(@i)+' '+@phase WHERE phase=@phase FETCH NEXT FROM xc INTO @phase END CLOSE xc deallocate xc INSERT @tmp1 SELECT lc_phasenr, phase FROM @tmp3 RETURN end GO /****** Object: UserDefinedFunction [dbo].[lc_rpt4] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[lc_rpt4] ( @produkte VARCHAR(255), @von varchar(255), @bis varchar(255), @produkttypnr int ) RETURNS @tmp1 TABLE (LC_Produktnr INT, Produkt VARCHAR(255), LC_PhaseNr INT, datum DATETIME) AS begin IF @von='' SET @von='01.01.1900' IF @bis='' SET @bis='31.12.4712' IF @produkte='' BEGIN insert into @tmp1 SELECT distinct dbo.LC_Produkt.LC_ProduktNr, dbo.LC_Produkt.Bezeichnung AS Produkt, dbo.LC_Phase.LC_PhaseNr, dbo.LC_Produkt_Phase.Datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis AND (@produkttypnr=-1 OR @produkttypnr = lc_produkt.ProdukttypNr) ORDER BY dbo.LC_Produkt_Phase.Datum,Produkt end IF @produkte<>'' BEGIN insert into @tmp1 SELECT distinct dbo.LC_Produkt.LC_ProduktNr, dbo.LC_Produkt.Bezeichnung AS Produkt, dbo.LC_Phase.LC_PhaseNr, dbo.LC_Produkt_Phase.Datum FROM dbo.LC_Produkt INNER JOIN dbo.LC_Produkt_Phase ON dbo.LC_Produkt.LC_ProduktNr = dbo.LC_Produkt_Phase.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Phase.Aktiv = 1) AND (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) and dbo.lc_phase.lc_phasenr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1)) AND dbo.LC_Produkt_Phase.Datum BETWEEN @von AND @bis AND (@produkttypnr=-1 OR @produkttypnr = lc_produkt.ProdukttypNr) ORDER BY dbo.LC_Produkt_Phase.Datum,Produkt end RETURN end GO /****** Object: UserDefinedFunction [dbo].[lc_rpt5] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[lc_rpt5] ( @produkte VARCHAR(255), @inTagen varchar(255) ) RETURNS @tmp1 TABLE (LC_Phasenr INT, Phase VARCHAR(255)) AS begin DECLARE @von DATETIME DECLARE @it integer DECLARE @bis datetime SET @it=@intagen IF @intagen <> 0 BEGIN SET @von=DATEADD(DAY,@it,GETDATE()) SET @von=DATEADD(dd, DATEDIFF(dd, 0, @von), 0) END DECLARE @tmp2 TABLE (lc_Produktnr INT, Produkt VARCHAR(255), lc_phasenr INT, Phase VARCHAR(255), datum DATETIME, skey INT IDENTITY) DECLARE @tmp3 TABLE (lc_Produktnr INT, Produkt VARCHAR(255), lc_phasenr int, phase VARCHAR(255), datumvon DATETIME, datumbis DATETIME, diff INT, skey INT ) INSERT @tmp2 SELECT TOP (100) PERCENT dbo.LC_Produkt_Phase.LC_ProduktNr, dbo.lc_produkt.bezeichnung AS Produkt, dbo.LC_Produkt_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, dbo.LC_Produkt_Phase.Datum FROM dbo.LC_Produkt_Phase INNER JOIN dbo.LC_Produkt ON dbo.LC_Produkt_Phase.LC_ProduktNr = dbo.LC_Produkt.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) ORDER BY dbo.LC_Produkt_Phase.LC_ProduktNr, dbo.LC_Produkt_Phase.Datum DESC INSERT @tmp3 SELECT t1.lc_ProduktNr, t1.produkt, t1.lc_phasenr, t1.Phase , t1.datum AS DatumVon, x.datum AS DatumBis, ISNULL(DATEDIFF(DAY,t1.datum,x.datum),0) AS Diff, t1.skey FROM @tmp2 t1 OUTER APPLY ( SELECT TOP 1 datum FROM @tmp2 t2 WHERE t2.skey < t1.skey ORDER BY t2.skey desc) x ORDER BY lc_ProduktNr, t1.datum asc UPDATE @tmp3 SET diff=0 WHERE diff < 0 DELETE FROM @tmp3 WHERE diff=0 IF @produkte='' BEGIN insert into @tmp1 SELECT DISTINCT LC_PhaseNr, Phase AS Phase FROM @tmp3 WHERE @von BETWEEN datumvon AND datumbis END IF @produkte<>'' BEGIN insert into @tmp1 SELECT DISTINCT LC_PhaseNr, Phase AS Phase FROM @tmp3 WHERE @von BETWEEN datumvon AND datumbis AND lc_produktnr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1)) end RETURN end GO /****** Object: UserDefinedFunction [dbo].[lc_rpt6] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[lc_rpt6] ( @produkte VARCHAR(255), @inTagen VARCHAR(255) ) RETURNS @tmp1 TABLE (LC_Produktnr INT, Produkt VARCHAR(255), LC_PhaseNr INT, datum DATETIME) AS begin DECLARE @von DATETIME DECLARE @it integer DECLARE @bis datetime SET @it=@intagen IF @intagen <> 0 BEGIN SET @von=DATEADD(DAY,@it,GETDATE()) SET @von=DATEADD(dd, DATEDIFF(dd, 0, @von), 0) END DECLARE @tmp2 TABLE (lc_Produktnr INT, Produkt VARCHAR(255), lc_phasenr INT, Phase VARCHAR(255), datum DATETIME, skey INT IDENTITY) DECLARE @tmp3 TABLE (lc_Produktnr INT, Produkt VARCHAR(255), lc_phasenr int, phase VARCHAR(255), datumvon DATETIME, datumbis DATETIME, diff INT, skey INT ) INSERT @tmp2 SELECT TOP (100) PERCENT dbo.LC_Produkt_Phase.LC_ProduktNr, dbo.lc_produkt.bezeichnung AS Produkt, dbo.LC_Produkt_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, dbo.LC_Produkt_Phase.Datum FROM dbo.LC_Produkt_Phase INNER JOIN dbo.LC_Produkt ON dbo.LC_Produkt_Phase.LC_ProduktNr = dbo.LC_Produkt.LC_ProduktNr INNER JOIN dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr WHERE (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1) ORDER BY dbo.LC_Produkt_Phase.LC_ProduktNr, dbo.LC_Produkt_Phase.Datum DESC INSERT @tmp3 SELECT t1.lc_ProduktNr, t1.produkt, t1.lc_phasenr, t1.Phase , t1.datum AS DatumVon, x.datum AS DatumBis, ISNULL(DATEDIFF(DAY,t1.datum,x.datum),0) AS Diff, t1.skey FROM @tmp2 t1 OUTER APPLY ( SELECT TOP 1 datum FROM @tmp2 t2 WHERE t2.skey < t1.skey ORDER BY t2.skey desc) x ORDER BY lc_ProduktNr, t1.datum asc UPDATE @tmp3 SET diff=0 WHERE diff < 0 DELETE FROM @tmp3 WHERE diff=0 IF @produkte='' BEGIN insert into @tmp1 SELECT DISTINCT LC_Produktnr, Produkt, lc_phasenr, datumvon FROM @tmp3 WHERE @von BETWEEN datumvon AND datumbis ORDER BY Produkt end IF @produkte<>'' BEGIN insert into @tmp1 SELECT DISTINCT LC_Produktnr, Produkt, lc_phasenr, datumvon FROM @tmp3 WHERE @von BETWEEN datumvon AND datumbis AND lc_produktnr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1)) ORDER BY Produkt end RETURN end GO /****** Object: UserDefinedFunction [dbo].[search_vertragselement] Script Date: 27.01.2017 08:56:19 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE FUNCTION [dbo].[search_vertragselement] (@vertragselementnr int, @suchstring varchar(255)) RETURNS int AS BEGIN declare @cnt int set @suchstring='%'+@suchstring+'%' select @cnt=count(vertragselementnr) from dbo.vertragselement where vertragselementnr=@vertragselementnr and (bezeichnung like @suchstring or beschreibung like @suchstring or nummer like @suchstring or suchbegriffe like @suchstring) return @cnt END GO