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.
60 lines
3.9 KiB
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
|