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.
174 lines
15 KiB
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
|