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/1b/1bc6ac75c4372b427c35582a844...

174 lines
15 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_mittelfristplanung_berechnung] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_mittelfristplanung_berechnung]
GO
/****** Object: StoredProcedure [dbo].[sp_mittelfristplanung_berechnung] Script Date: 02.12.2016 09:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_mittelfristplanung_berechnung]
@datumvon datetime,
@datumbis datetime,
@mitarbeiternr int,
@ereignisnr int
AS
print 'Ereignis ---> ' + str(@ereignisnr)
-- Deklarationen
declare @tmptabl1 varchar(255)
declare @workdate datetime
declare @enddate datetime
declare @year int
declare @dd datetime
set @dd='1900-01-01'
-- VE-Elemente
declare @datum datetime
declare @veendedatum datetime
declare @start datetime
declare @ende datetime
declare @mutdat datetime
declare @aktiv int
declare @periode int
declare @betrag float
declare @inklmwst int
declare @vertragselementnr int
declare @gekuendigtper datetime
--****************************************************************************************************************************
-- Temporäre Tabelle
--****************************************************************************************************************************
set @tmptabl1 = str(@mitarbeiternr)
while left(@tmptabl1,1)=' ' begin
set @tmptabl1=right(@tmptabl1,len(@tmptabl1)-1)
end
set @tmptabl1 = 'dbo.tmp_mfp_' + @tmptabl1
--****************************************************************************************************************************
-- Vertragselement auslesen
--****************************************************************************************************************************
select @datum=datum, @start=start, @ende=ende, @mutdat=mutiert_am, @aktiv=aktiv, @periode=periodizitaetnr, @betrag=betrag,@inklmwst=InklMwSt, @vertragselementnr=Vertragselementnr
from dbo.vertragsereignis
where dbo.vertragsereignis.ereignisnr=@ereignisnr
select @veendedatum = dbo.vertragselement.vertragsablauf, @gekuendigtper=dbo.Vertragselement.Gekuendigt_per
from dbo. Vertragselement
where Vertragselementnr=@vertragselementnr
--****************************************************************************************************************************
-- Einmalige Ereignisse
--****************************************************************************************************************************
if @periode=15 or @periode = 0 begin
-- Vertragselement mit Gekündigt_per-Datum
if @gekuendigtper <=@dd begin
-- Aktiv und VE-Datum in der Selektionsperiode -> verwenden
if @aktiv=1 and @datum >= @datumvon and @datum <= @datumbis begin
set @year = YEAR(@datum)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst, @ereignisnr, @tmptabl1
end
-- Inaktiv nach nach der Selektionsperiode, -> verwenden
if @aktiv=0 and @mutdat > @datumbis begin
set @year = YEAR(@datum)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst,@ereignisnr, @tmptabl1
end
end else begin
-- Aktiv und VE-Datum in der Selektionsperiode -> verwenden
if @aktiv=1 and @datum <= @gekuendigtper and @datum >= @datumvon and @datum <=@datumbis begin
set @year = YEAR(@datum)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst, @ereignisnr, @tmptabl1
end
-- Inaktiv nach nach der Selektionsperiode, -> verwenden
if @aktiv=0 and @mutdat > @gekuendigtper and @mutdat >=@datumvon and @mutdat <= @datumbis begin
set @year = YEAR(@datum)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst,@ereignisnr, @tmptabl1
end
end
return
end
--****************************************************************************************************************************
-- Aktive Ereignisse
--****************************************************************************************************************************
if @periode <> 15 and @aktiv=1 begin
set @workdate=@start
if @ende = @dd set @ende = @datumbis
if @veendedatum > @dd and @veendedatum<@ende set @ende=@veendedatum
if @gekuendigtper <= @dd begin
while @workdate <= @ende begin
if @workdate >= @datumvon and @workdate <= @datumbis begin
set @year=YEAR(@workdate)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst, @ereignisnr, @tmptabl1
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)
end
end else begin
while @workdate <= @gekuendigtper begin
if @workdate >= @datumvon and @workdate <= @datumbis begin
set @year=YEAR(@workdate)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst, @ereignisnr, @tmptabl1
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)
end
end
end
--****************************************************************************************************************************
-- Inaktive Ereignisse
--****************************************************************************************************************************
if @periode <> 15 and @aktiv=0 begin
set @workdate=@start
if @ende <=@dd set @ende = @datumbis
if @workdate <= @dd begin
while @workdate <= @mutdat begin
if @workdate >= @datumvon and @workdate <= @datumbis begin
set @year=YEAR(@workdate)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst, @ereignisnr, @tmptabl1
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)
end
end else begin
while @workdate <= @gekuendigtper begin
if @workdate >= @datumvon and @workdate <= @datumbis begin
set @year=YEAR(@workdate)
execute dbo.sp_mittelfristplanung_addvalue @year,@betrag, @inklmwst, @ereignisnr, @tmptabl1
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)
end
end
end
GO