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.
ITSM/.svn/pristine/24/24724259d8a24b1b8f52f7c2bf0...

60 lines
3.9 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: UserDefinedFunction [dbo].[Get_Next_Kuendigungstermin] Script Date: 02.12.2016 09:08:53 ******/
DROP FUNCTION [dbo].[Get_Next_Kuendigungstermin]
GO
/****** Object: UserDefinedFunction [dbo].[Get_Next_Kuendigungstermin] Script Date: 02.12.2016 09:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <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