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/00/000c6def39f2a7816b9904aa37c...

1201 lines
93 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_AN_31] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_rpt_AN_31]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_AN_31] 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 PROCEDURE [dbo].[sp_rpt_AN_31]
@von DATETIME = NULL ,
@bis DATETIME = NULL ,
@oestruktur INTEGER = NULL ,
@struktur_Ausschluss VARCHAR(255) = NULL ,
@Honoris_Ausschluss VARCHAR(255) = NULL ,
@iBereich VARCHAR(255) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @rtb_anteil INT
DECLARE @abwesenheit_anteil INT
SET @rtb_anteil = 30
SET @abwesenheit_anteil = 15
IF @ibereich IS NULL
SET @ibereich = ''
IF @von IS NULL
SET @von = '2015-01-01 00:00:00'
IF @bis IS NULL
SET @bis = '2015-03-31 00:00:00'
IF @oestruktur IS NULL
SET @oestruktur = 42
IF @struktur_ausschluss IS NULL
SET @struktur_ausschluss = ''
IF @honoris_ausschluss IS NULL
SET @honoris_ausschluss = ''
-- ****************************************************************************
-- Planaufwand der AN_Tickets auslesen
--****************************************************************************
DECLARE @planaufwand TABLE
(
tgnummer VARCHAR(255) ,
TicketID VARCHAR(55) ,
Kurzbeschreibung VARCHAR(1024) NULL ,
STATUS VARCHAR(255) ,
Bereich VARCHAR(255) ,
Aufwand INT ,
Aufwand_P INT ,
Aufwand_A INT ,
geleistet FLOAT ,
noch_zu_leisten FLOAT ,
noch_zu_leisten_P FLOAT NULL ,
noch_zu_leisten_A FLOAT NULL ,
noch_zu_leisten_1 FLOAT NULL ,
noch_zu_leisten_1P FLOAT NULL ,
noch_zu_leisten_1A FLOAT NULL ,
g_start DATETIME ,
g_erledigung DATETIME ,
SOLL_AZ FLOAT NULL ,
Fhr_Anteil FLOAT NULL ,
Abwesenheiten FLOAT NULL ,
RTB FLOAT NULL ,
pt_fhranteil FLOAT NULL ,
pt_abwesenheiten FLOAT NULL ,
pt_rtb FLOAT NULL ,
Pensum FLOAT NULL,
Projekt VARCHAR(255) null
)
DECLARE @ticketid VARCHAR(255) ,
@tgnummer VARCHAR(255) ,
@g_erledigung DATETIME ,
@g_start DATETIME ,
@status VARCHAR(255) ,
@bereich VARCHAR(255)
DECLARE @ma1 VARCHAR(255) ,
@p1 INT ,
@ma2 VARCHAR(255) ,
@p2 INT ,
@ma3 VARCHAR(255) ,
@p3 INT ,
@ma4 VARCHAR(255) ,
@p4 INT ,
@ma5 VARCHAR(255) ,
@p5 INT
DECLARE @ma6 VARCHAR(255) ,
@p6 INT ,
@ma7 VARCHAR(255) ,
@p7 INT ,
@ma8 VARCHAR(255) ,
@p8 INT ,
@ma9 VARCHAR(255) ,
@p9 INT
DECLARE @pos1 INT
DECLARE @pos2 INT
DECLARE @x VARCHAR(255)
DECLARE @y INT
DECLARE @yy VARCHAR(255)
DECLARE @mm VARCHAR(255)
DECLARE @tt VARCHAR(255)
DECLARE @ap VARCHAR(255)
DECLARE @pa INT
DECLARE @aa INT
DECLARE xx CURSOR
FOR
SELECT DISTINCT
fullid ,
mitarbeiter_1 ,
planaufwand_1 ,
mitarbeiter_2 ,
planaufwand_2 ,
mitarbeiter_3 ,
planaufwand_3 ,
mitarbeiter_4 ,
planaufwand_4 ,
mitarbeiter_5 ,
planaufwand_5 ,
mitarbeiter_6 ,
planaufwand_6 ,
mitarbeiter_7 ,
planaufwand_7 ,
mitarbeiter_8 ,
planaufwand_8 ,
mitarbeiter_9 ,
planaufwand_9 ,
Geplantes_Erledigungsdatum ,
Geplantes_Startdatum AS Geplantes_Startdatum ,
Status ,
Bereich ,
ausloeser_projekt
FROM dbo.shu_view_an_excelexport_lst
OPEN xx
FETCH NEXT FROM xx INTO @ticketid, @ma1, @p1, @ma2, @p2, @ma3, @p3,
@ma4, @p4, @ma5, @p5, @ma6, @p6, @ma7, @p7, @ma8, @p8, @ma9, @p9,
@g_erledigung, @g_start, @status, @bereich, @ap
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT @g_erledigung IS NULL
BEGIN
SET @yy = YEAR(@g_erledigung)
SET @mm = MONTH(@g_erledigung)
SET @tt = DAY(@g_erledigung)
SET @g_erledigung = @tt + '.' + @mm + '.' + @yy
+ ' 00:00:00'
SET @g_erledigung = DATEADD(DAY, 1, @g_erledigung)
END
IF NOT @g_start IS NULL
BEGIN
SET @yy = YEAR(@g_start)
SET @mm = MONTH(@g_start)
SET @tt = DAY(@g_start)
SET @g_start = @tt + '.' + @mm + '.' + @yy
+ ' 00:00:00'
SET @g_start = DATEADD(DAY, 1, @g_start)
END
IF LEN(@ma1) > 0
BEGIN
SET @x = @ma1
SET @y = @p1
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma2) > 0
BEGIN
SET @x = @ma2
SET @y = @p2
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma3) > 0
BEGIN
SET @x = @ma3
SET @y = @p3
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma4) > 0
BEGIN
SET @x = @ma4
SET @y = @p4
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma5) > 0
BEGIN
SET @x = @ma5
SET @y = @p5
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma6) > 0
BEGIN
SET @x = @ma6
SET @y = @p6
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma7) > 0
BEGIN
SET @x = @ma7
SET @y = @p7
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma8) > 0
BEGIN
SET @x = @ma8
SET @y = @p8
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
IF LEN(@ma9) > 0
BEGIN
SET @x = @ma9
SET @y = @p9
SET @pos1 = 0
SET @pos2 = 0
SET @pos1 = CHARINDEX('(', @x)
SET @pos2 = CHARINDEX(')', @x)
IF @ap = 'Ja'
BEGIN
SET @pa = @y
SET @aa = 0
END
ELSE
BEGIN
SET @pa = 0
SET @aa = @y
END
IF @pos1 > 0
AND @pos2 > 0
BEGIN
SET @pos1 = @pos1 + 1
SET @x = SUBSTRING(@x, @pos1, @pos2 - @pos1)
INSERT @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
VALUES ( @x ,
@ticketid ,
@y ,
@pa ,
@aa ,
@g_erledigung ,
@g_start ,
@status ,
@bereich, @ap
)
END
END
FETCH NEXT FROM xx INTO @ticketid, @ma1, @p1, @ma2, @p2, @ma3,
@p3, @ma4, @p4, @ma5, @p5, @ma6, @p6, @ma7, @p7, @ma8, @p8,
@ma9, @p9, @g_erledigung, @g_start, @status, @bereich, @ap
END
CLOSE xx
DEALLOCATE xx
-- ****************************************************************************
-- Ende Planaufwand der AN_Tickets auslesen
-- ****************************************************************************
insert @planaufwand
( tgnummer ,
ticketid ,
aufwand ,
Aufwand_P ,
Aufwand_A ,
g_erledigung ,
g_start ,
status ,
bereich, Projekt
)
select ma.TGNummer,'',0,0,0,null,null,'','',0
FROM dbo.MA INNER JOIN
dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr
WHERE dbo.MADetails.OENr IN
(SELECT ID FROM dbo.fnkt_get_KPI_hierarchie(@oestruktur) AS fnkt_get_KPI_hierarchie_1)
-- and tgnummer not in (select tgnummer from #ttg)
-- ****************************************************************************
-- Geleistete, noch zu leistende Tage
-- ****************************************************************************
UPDATE @planaufwand
SET geleistet = 0.00 ,
noch_zu_leisten = 00
DECLARE xx CURSOR
FOR
SELECT [Ticket_ID] ,
[ForUserID] ,
[CalculatedValue]
FROM TXP_LVer_IN_AU
WHERE ticket_id LIKE 'AN%'
AND [Statusdatum] < @von
OPEN xx
FETCH NEXT FROM xx INTO @ticketid, @tgnummer, @y
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @planaufwand
SET geleistet = geleistet + @y
WHERE tgnummer = @tgnummer
AND ticketid = @ticketid
FETCH NEXT FROM xx INTO @ticketid, @tgnummer, @y
END
CLOSE xx
DEALLOCATE xx
UPDATE @planaufwand
SET geleistet = ROUND(geleistet / 8, 2)
UPDATE @planaufwand
SET noch_zu_leisten = aufwand - geleistet ,
noch_zu_leisten_p = aufwand_p - geleistet ,
noch_zu_leisten_a = aufwand_a - geleistet
UPDATE @planaufwand
SET noch_zu_leisten_1 = 0.00 ,
noch_zu_leisten_1a = 0.00 ,
noch_zu_leisten_1p = 0.00
DELETE FROM @planaufwand
WHERE g_start > @bis
DELETE FROM @planaufwand
WHERE g_erledigung < @von
UPDATE @planaufwand
SET noch_zu_leisten_1 = noch_zu_leisten ,
noch_zu_leisten_1p = noch_zu_leisten_p ,
noch_zu_leisten_1a = noch_zu_leisten_a
DECLARE @gp_dauer FLOAT
DECLARE @rn_dauer FLOAT
DECLARE @faktor FLOAT
DECLARE xx CURSOR
FOR
SELECT ticketid ,
tgnummer ,
g_erledigung ,
g_start ,
noch_zu_leisten
FROM @planaufwand
WHERE g_erledigung > @bis
OPEN xx
FETCH NEXT FROM xx INTO @ticketid, @tgnummer, @g_erledigung, @g_start,
@y
WHILE @@FETCH_STATUS = 0
BEGIN
SET @gp_dauer = DATEDIFF(DAY, @g_start, @g_erledigung)
IF @g_start <= @von
SET @gp_dauer = DATEDIFF(day, @von, @g_erledigung)
IF @g_start > @von
BEGIN
SET @rn_dauer = DATEDIFF(DAY, @g_start, @bis)
END
ELSE
BEGIN
SET @rn_dauer = DATEDIFF(DAY, @von, @bis)
END
SET @faktor = @rn_dauer / @gp_dauer
UPDATE @planaufwand
SET noch_zu_leisten_1 = ROUND(noch_zu_leisten_1
* ( @rn_dauer / @gp_dauer ),
2)
WHERE ticketid = @ticketid
AND tgnummer = @tgnummer
UPDATE @planaufwand
SET noch_zu_leisten_1p = ROUND(noch_zu_leisten_1p
* ( @rn_dauer / @gp_dauer ),
2)
WHERE ticketid = @ticketid
AND tgnummer = @tgnummer
UPDATE @planaufwand
SET noch_zu_leisten_1a = ROUND(noch_zu_leisten_1a
* ( @rn_dauer / @gp_dauer ),
2)
WHERE ticketid = @ticketid
AND tgnummer = @tgnummer
FETCH NEXT FROM xx INTO @ticketid, @tgnummer, @g_erledigung,
@g_start, @y
END
CLOSE xx
DEALLOCATE xx
--****************************************************************************
-- Ende Geleistete, noch zu leistende Tage
-- ****************************************************************************
DECLARE @an4 TABLE
(
[JJMM] [varchar](255) NULL ,
[OE] [varchar](50) NULL ,
[OESort] [int] NULL ,
[tgnummer] [varchar](50) NULL ,
[Name] [varchar](50) NULL ,
[Vorname] [varchar](50) NULL ,
[Sortierung] [int] NULL ,
[START] [datetime] NULL ,
[ende] [datetime] NULL ,
[Sort] [int] NULL ,
[Pensum] [varchar](255) NULL ,
[Soll] [float] NULL ,
[Geleistet] [float] NOT NULL ,
[Engagement_Effektiv] [float] NOT NULL ,
[Fuehrungsanteil] [float] NULL ,
[Soll_Zeit] [float] NOT NULL ,
[abwesenheiten] [float] NOT NULL ,
[CTB] [float] NULL ,
[RTB] [float] NULL
)
INSERT @an4
EXEC dbo.sp_rpt_AN_4_Summary @von = @von, @bis = @bis,
@oestruktur = @oestruktur,
@struktur_Ausschluss = @struktur_ausschluss,
@honoris_ausschluss = @honoris_ausschluss
UPDATE @an4
SET Soll_Zeit = ROUND(Soll_Zeit / 100 * Pensum, 2)
DECLARE @p FLOAT
DECLARE @s FLOAT
DECLARE @f FLOAT
DECLARE xx CURSOR
FOR
SELECT tgnummer
FROM @planaufwand
OPEN xx
FETCH NEXT FROM xx INTO @tgnummer
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @p = Pensum ,
@s = SUM(Soll) ,
@f = Fuehrungsanteil
FROM @an4
GROUP BY tgnummer ,
Pensum ,
Fuehrungsanteil
HAVING ( tgnummer = @tgnummer )
SELECT @rtb_anteil = dbo.MADetails.Planwert_Anteil_RTB_Person
FROM dbo.MA INNER JOIN
dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr where ma.TGNummer=@tgnummer
UPDATE @planaufwand
SET soll_az = @s ,
fhr_anteil = @f ,
abwesenheiten = @abwesenheit_anteil ,
rtb = @rtb_anteil ,
pensum = @p
WHERE tgnummer = @tgnummer
FETCH NEXT FROM xx INTO @tgnummer
END
CLOSE xx
DEALLOCATE xx
UPDATE @planaufwand
SET pt_fhranteil = soll_az / 100 * fhr_anteil ,
pt_abwesenheiten = soll_az / 100 * abwesenheiten ,
pt_rtb = soll_az / 100 * rtb
-- ****************************************************************************
-- Ressourcen ohne AN-Zuordnung
-- ****************************************************************************
DECLARE @tmpa TABLE
(
[TGNummer] [varchar](50) NULL ,
oenr INT ,
sortierung INT ,
START DATETIME ,
Ende DATETIME ,
Vorhaben VARCHAR(255) ,
Std [float] NOT NULL ,
Engagement_Effektiv FLOAT NOT NULL ,
Soll_Zeit FLOAT NOT NULL ,
JJMM VARCHAR(255) ,
pensum FLOAT NULL
)
DECLARE @tmpb TABLE
(
[TGNummer] [varchar](50) NULL ,
oenr INT ,
sortierung INT ,
START DATETIME ,
Ende DATETIME ,
Pensum VARCHAR(255) ,
Soll_Zeit FLOAT NOT NULL ,
Std_Geleistet [float] NOT NULL ,
Engagement_Effektiv FLOAT NOT NULL ,
Abwesenheiten FLOAT NOT NULL ,
JJMM VARCHAR(255)
)
DECLARE @ansatz FLOAT
SET @ansatz = 8.0
DECLARE @mnr INT
DECLARE @rc INT
DECLARE xm CURSOR
FOR
SELECT *
FROM dbo.get_monatstabelle(@von, @bis)
ORDER BY start_date
OPEN xm
FETCH NEXT FROM xm INTO @von, @bis
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE xc CURSOR
FOR
SELECT manr
FROM ma
WHERE aktiv = 1
AND gueltig_bis >= @bis
OPEN xc
FETCH NEXT FROM xc INTO @mnr
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @rc = COUNT(*)
FROM dbo.MADetails
WHERE manr = @mnr
AND aktiv = 1
AND Gueltig_ab <= @von
INSERT @tmpa
SELECT TOP 1
dbo.MA.TGNummer ,
madetails.OENr ,
ma.sortierung ,
@von ,
@bis ,
'' ,
madetails.Engagement ,
dbo.get_anteil(engagement,
MitarbeiterTypNr) ,
dbo.get_plantage(YEAR(@von),
MONTH(@von)) ,
'' ,
madetails.Engagement
FROM dbo.MA
LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr
WHERE dbo.MADetails.manr = @mnr
AND dbo.MADetails.Aktiv = 1
AND Gueltig_ab <= @von
ORDER BY Gueltig_ab DESC
FETCH NEXT FROM xc INTO @mnr
END
CLOSE xc
DEALLOCATE xc
DECLARE @anzahl FLOAT
DECLARE @ma VARCHAR(255)
FETCH NEXT FROM xm INTO @von, @bis
END
CLOSE xm
DEALLOCATE xm
UPDATE @tmpa
SET jjmm = LTRIM(STR(YEAR(start))) + '' +
LTRIM(STR(MONTH(start)))
SELECT TOP ( 100 ) PERCENT
dbo.OE.Bezeichnung AS OE ,
dbo.OE.Sortierung AS OESort ,
dbo.MA.Name ,
dbo.MA.Vorname ,
dbo.MA.Sortierung ,
a.TGNummer ,
a.START ,
a.ende ,
a.sortierung AS Expr1 ,
a.vorhaben ,
a.Std ,
a.Engagement_Effektiv ,
a.Soll_Zeit ,
a.JJMM ,
a.pensum
INTO #tmpfhr
FROM @tmpa a
INNER JOIN dbo.MA ON a.TGNummer = dbo.MA.TGNummer
INNER JOIN dbo.OE ON a.oenr = dbo.OE.OeNr
WHERE dbo.OE.oenr IN (
SELECT id
FROM dbo.fnkt_get_kpi_hierarchie(@oestruktur) )
AND dbo.oe.oenr NOT IN (
SELECT item
FROM dbo.fnkt_split(@struktur_Ausschluss, ',', 1) )
DELETE FROM #tmpfhr
WHERE tgnummer IN ( SELECT tgnummer
FROM @planaufwand )
DECLARE @pe FLOAT
DECLARE xv CURSOR
FOR
SELECT DISTINCT
tgnummer
FROM #tmpfhr
OPEN xv
FETCH NEXT FROM xv INTO @tgnummer
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @p = engagement_effektiv ,
@s = SUM(Soll_zeit) / 100 * std ,
@f = ( 100 - ( 100 / std * engagement_effektiv ) ) ,
@pe = pensum
FROM #tmpfhr
GROUP BY tgnummer ,
engagement_effektiv ,
std ,
pensum
HAVING ( tgnummer = @tgnummer )
SELECT @rtb_anteil = dbo.MADetails.Planwert_Anteil_RTB_Person
FROM dbo.MA INNER JOIN
dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr where ma.TGNummer=@tgnummer
INSERT @planaufwand
( tgnummer ,
TicketID ,
STATUS ,
Bereich ,
Aufwand ,
Aufwand_P ,
Aufwand_A ,
geleistet ,
noch_zu_leisten ,
noch_zu_leisten_p ,
noch_zu_leisten_a ,
noch_zu_leisten_1 ,
noch_zu_leisten_1p ,
noch_zu_leisten_1a ,
g_start ,
g_erledigung ,
SOLL_AZ ,
Fhr_Anteil ,
Abwesenheiten ,
RTB ,
pt_fhranteil ,
pt_abwesenheiten ,
pt_rtb ,
pensum,projekt
)
VALUES ( @tgnummer ,
'' ,
'' ,
'' ,
0 ,
0 ,
0 ,
0.00 ,
0.00 ,
0.00 ,
0.00 ,
0.00 ,
0.00 ,
0.00 ,
GETDATE() ,
GETDATE() ,
@s ,
@f ,
@abwesenheit_anteil ,
@rtb_anteil ,
NULL ,
NULL ,
NULL ,
@pe,''
)
FETCH NEXT FROM xv INTO @tgnummer
END
CLOSE xv
DEALLOCATE xv
UPDATE @planaufwand
SET kurzbeschreibung = a.Kurzbeschreibung
FROM @planaufwand
INNER JOIN shu_view_an_excelexport_lst a ON fullid = ticketid
UPDATE @planaufwand
SET pt_fhranteil = soll_az / 100 * fhr_anteil ,
pt_abwesenheiten = soll_az / 100 * abwesenheiten ,
pt_rtb = soll_az / 100 * rtb
SELECT TOP ( 100 ) PERCENT
dbo.OE.Bezeichnung AS OE ,
dbo.OE.Sortierung AS OESort ,
dbo.MA.Name ,
dbo.MA.Vorname ,
dbo.MA.Sortierung ,
a.TGNummer ,
a.START ,
a.ende ,
a.sortierung AS Expr1 ,
a.vorhaben ,
a.Std ,
a.Engagement_Effektiv ,
a.Soll_Zeit ,
a.JJMM
INTO #tmpfhr1
FROM @tmpa a
INNER JOIN dbo.MA ON a.TGNummer = dbo.MA.TGNummer
INNER JOIN dbo.OE ON a.oenr = dbo.OE.OeNr
WHERE dbo.OE.oenr IN (
SELECT id
FROM dbo.fnkt_get_kpi_hierarchie(@oestruktur) )
AND dbo.oe.oenr NOT IN (
SELECT item
FROM dbo.fnkt_split(@struktur_Ausschluss, ',', 1) )
SELECT a.* ,
oe ,
oesort ,
sortierung ,
name ,
vorname
INTO #a
FROM @planaufwand a
INNER JOIN #tmpfhr1 ON a.TGNummer = #tmpfhr1.TGNummer
--DROP TABLE _an_03
DELETE FROM #a
WHERE ( g_erledigung IS NULL
AND TicketID <> ''
)
OR ( STATUS = 'abgelehnt' )
--delete from #a where (g_start
SELECT DISTINCT
*
INTO #b
FROM #a
DECLARE @tg VARCHAR(255) ,
@it INT ,
@tga VARCHAR(255) ,
@pp1 FLOAT ,
@pp2 FLOAT ,
@pp3 FLOAT ,
@pp4 FLOAT ,
@pp5 FLOAT ,
@SUM_WE FLOAT ,
@sum_delta FLOAT
SET @it = 0
SET @tga = ''
ALTER TABLE #b ADD idtemp INT IDENTITY(1,1)
ALTER TABLE #b ADD SUM_WE FLOAT
ALTER TABLE #b ADD SUM_Delta FLOAT
DECLARE xc CURSOR
FOR
SELECT tgnummer ,
pt_fhranteil ,
pt_abwesenheiten ,
pt_rtb ,
idtemp ,
soll_az
FROM #b
ORDER BY tgnummer ,
g_erledigung ASC ,
ticketid DESC
OPEN xc
FETCH NEXT FROM xc INTO @tg, @pp1, @pp2, @pp3, @pp4, @pp5
WHILE @@FETCH_STATUS = 0
BEGIN
IF @tg <> @tga
BEGIN
PRINT @tg
UPDATE #b
SET pt_abwesenheiten = 0
WHERE tgnummer = @tg
UPDATE #b
SET pt_fhranteil = 0
WHERE tgnummer = @tg
UPDATE #b
SET pt_rtb = 0
WHERE tgnummer = @tg
UPDATE #b
SET soll_az = 0
WHERE tgnummer = @tg
SELECT @SUM_WE = SUM(noch_zu_leisten_1)
FROM #b
WHERE tgnummer = @tg
SET @sum_WE = @sum_we + ( @pp1 + @pp2 + @pp3 )
SET @sum_delta = @pp5 - @sum_we
UPDATE #b
SET soll_az = @pp5 ,
pt_fhranteil = @pp1 ,
pt_abwesenheiten = @pp2 ,
pt_rtb = @pp3 ,
sum_we = @sum_we ,
sum_delta = @sum_delta
WHERE idtemp = @pp4
SET @tga = @tg
END
FETCH NEXT FROM xc INTO @tg, @pp1, @pp2, @pp3, @pp4, @pp5
END
CLOSE xc
DEALLOCATE xc
ALTER TABLE #b DROP COLUMN idtemp
--select * from #b where Name='Breitler' order by g_erledigung desc, TicketID asc
--return
--DROP TABLE _an_03
UPDATE #b SET noch_zu_leisten_1p =0 WHERE noch_zu_leisten_1p <0
UPDATE #b SET noch_zu_leisten_1a =0 WHERE noch_zu_leisten_1a <0
UPDATE #b SET noch_zu_leisten_a =0 WHERE noch_zu_leisten_a <0
UPDATE #b SET noch_zu_leisten_p =0 WHERE noch_zu_leisten_p <0
update #b set sum_we=0 where sum_we is null
update #b set sum_delta=0 where sum_delta is null
update #b set kurzbeschreibung='' where kurzbeschreibung is null
IF @ibereich <> ''
SELECT DISTINCT
*
FROM #b
WHERE bereich = @ibereich
ORDER BY g_erledigung DESC ,
TicketID ASC
ELSE
SELECT DISTINCT
*
FROM #b
ORDER BY g_erledigung DESC ,
TicketID ASC
DROP TABLE #a
DROP TABLE #b
DROP TABLE #tmpfhr
DROP TABLE #tmpfhr1
END
GO