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.

754 lines
31 KiB

USE [Vertragsverwaltung]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_aufwand_WPI] Script Date: 01.03.2014 11:46:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_rpt_fhrlst_aufwand_WPI]
@von DATETIME = NULL ,
@bis DATETIME = NULL ,
@oestruktur INTEGER = NULL ,
@struktur_Ausschluss VARCHAR(255) = NULL ,
@Honoris_Ausschluss VARCHAR(255) = NULL
AS
BEGIN
IF @von IS NULL
SET @von = '01.01.2013 00:00:00'
IF @bis IS NULL
SET @bis = '31.05.2013 23:59:59'
IF @oestruktur IS NULL
SET @oestruktur = 25
IF @struktur_ausschluss IS NULL
SET @struktur_ausschluss = ''
IF @honoris_ausschluss IS NULL
SET @honoris_ausschluss = ''
declare @dd1 varchar(2)
declare @mm1 varchar(2)
declare @yy1 varchar(4)
declare @datum varchar(255)
set @dd1=DAY(@von)
set @mm1=MONTH(@von)
set @yy1=YEAR(@von)
if LEN(@dd1)<2 set @dd1='0'+@dd1
if LEN(@mm1)<2 set @mm1='0'+@mm1
set @datum=@yy1+'-'+@mm1+'-'+@dd1 +' 00:00:00'
set @von=convert(datetime,@datum,20)
set @dd1=DAY(@bis)
set @mm1=MONTH(@bis)
set @yy1=YEAR(@bis)
if LEN(@dd1)<2 set @dd1='0'+@dd1
if LEN(@mm1)<2 set @mm1='0'+@mm1
set @datum=@yy1+'-'+@mm1+'-'+@dd1 +' 22:48:45'
set @bis=convert(datetime,@datum,20)
--'' SET @oestruktur=34
--'' SET @von = '01.02.2013 00:00:01'
--'' SET @bis = '28.02.2013 23:59:50'
--DECLARE @per DATETIME = NULL ,
-- @von DATETIME = NULL ,
-- @bis DATETIME = NULL
--SET @per = '01.03.2013'
--SET @von = '01.03.2013'
--SET @bis = '31.03.2013'
SET NOCOUNT ON;
DECLARE @tmpa TABLE
(
[TGNummer] [varchar](50) NULL ,
oenr INT ,
sortierung INT ,
START DATETIME ,
Ende DATETIME ,
[Paufwand] [float] NOT NULL ,
[RFC_300] [float] NOT NULL ,
[CTB] [float] NOT NULL ,
[RTB] [float] NOT NULL ,
RFC_200 FLOAT NOT NULL ,
[Total] [float] NOT NULL ,
[Soll] [float] NOT NULL ,
[Prod] [float] NOT NULL ,
[Anteil_CTB] [float] NOT NULL ,
[Anteil_RTB] [float] NOT NULL ,
Engagement_Effektiv FLOAT NOT NULL ,
Soll_Zeit FLOAT NOT NULL
)
DECLARE @ansatz FLOAT
SET @ansatz = 8.0
--IF @per IS NULL
-- SET @per = GETDATE()
--***************************************************************************
-- Relevante Mitarbeiter am Per-Datum
--***************************************************************************
DECLARE @mnr INT
DECLARE @rc INT
DECLARE @mm INT
DECLARE @yy 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
IF @rc > 0
BEGIN
INSERT @tmpa
SELECT TOP 1
dbo.MA.TGNummer, madetails.OENr, ma.sortierung, @von, @bis, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, dbo.get_anteil(engagement, MitarbeiterTypNr), dbo.get_arbeitstage(madetails.MADetailNr, year(@von),month(@von))
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
END
FETCH NEXT FROM xc INTO @mnr
END
CLOSE xc
DEALLOCATE xc
DECLARE @anzahl FLOAT
DECLARE @ma VARCHAR(255)
-- RTB
SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME,
dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM,
dbo.Honoris_PROJEKT.PROJEKT_NR
INTO #tmphono
FROM dbo.Honoris_JOURNAL
INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR
INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR
WHERE ( dbo.honoris_projekt.bool2=1
--AND ( dbo.Honoris_PROJEKT.PROJEKT_NR >= 200 )
-- AND ( dbo.Honoris_PROJEKT.PROJEKT_NR < 300 )
)
AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item
FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) )
DECLARE xc CURSOR
FOR
SELECT SUM(ANZAHLINT), MITARBEITER_ID
FROM #tmphono
WHERE ( DATUM >= @von
AND DATUM <= @bis
)
GROUP BY MITARBEITER_ID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET rfc_200 = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
DROP TABLE #tmpHono
--CTB
SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME,
dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM,
dbo.Honoris_PROJEKT.PROJEKT_NR
INTO #tmphono1
FROM dbo.Honoris_JOURNAL
INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR
INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR
WHERE ( dbo.honoris_projekt.bool3=1 )
--AND ( dbo.Honoris_PROJEKT.PROJEKT_NR >= 300 )
-- AND ( dbo.Honoris_PROJEKT.PROJEKT_NR <= 399 ))
AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item
FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) )
DECLARE xc CURSOR
FOR
SELECT SUM(ANZAHLINT), MITARBEITER_ID
FROM #tmphono1
WHERE ( DATUM >= @von
AND DATUM <= @bis
)
GROUP BY MITARBEITER_ID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET rfc_300 = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
DROP TABLE #tmphono1
-- Führung
SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME,
dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM,
dbo.Honoris_PROJEKT.PROJEKT_NR
INTO #tmpHono2
FROM dbo.Honoris_JOURNAL
INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR
INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR
WHERE (dbo.honoris_projekt.bool6=1 )
--AND ( dbo.Honoris_PROJEKT.PROJEKT_NR < 200 )
-- OR ( dbo.Honoris_PROJEKT.PROJEKT_NR > 399 ))
AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item
FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) )
DECLARE xc CURSOR
FOR
SELECT SUM(ANZAHLINT), MITARBEITER_ID
FROM #tmpHono2
WHERE ( DATUM >= @von )
AND ( DATUM <= @bis )
GROUP BY MITARBEITER_ID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET Paufwand = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
DROP TABLE #tmpHono2
---- IN
-- DECLARE xc CURSOR
-- FOR
-- SELECT SUM(CalculatedValue) AS Expr1, ForUserID
-- FROM dbo.TXP_LVer_IN_AU
-- WHERE ( ExecutedDateTime >= @von
-- AND ExecutedDateTime <= @bis
-- )
-- AND ( Ticket_ID LIKE N'IN_%' )
-- GROUP BY ForUserID
-- OPEN xc
-- FETCH NEXT FROM xc INTO @anzahl, @ma
-- WHILE @@FETCH_STATUS = 0
-- BEGIN
-- UPDATE @tmpa
-- SET rtb = @anzahl
-- WHERE tgnummer = @ma
-- AND start = @von
-- AND ende = @bis
-- FETCH NEXT FROM xc INTO @anzahl, @ma
-- END
-- CLOSE xc
-- DEALLOCATE xc
-- -- AU
-- DECLARE xc CURSOR
-- FOR
-- SELECT SUM(CalculatedValue) AS Expr1, ForUserID
-- FROM dbo.TXP_LVer_IN_AU
-- WHERE ( ExecutedDateTime >= @von
-- AND ExecutedDateTime <= @bis
-- )
-- AND ( Ticket_ID LIKE N'AU_%' )
-- GROUP BY ForUserID
-- OPEN xc
-- FETCH NEXT FROM xc INTO @anzahl, @ma
-- WHILE @@FETCH_STATUS = 0
-- BEGIN
-- UPDATE @tmpa
-- SET ctb = @anzahl
-- WHERE tgnummer = @ma
-- AND start = @von
-- AND ende = @bis
-- FETCH NEXT FROM xc INTO @anzahl, @ma
-- END
-- CLOSE xc
-- DEALLOCATE xc
FETCH NEXT FROM xm INTO @von, @bis
END
CLOSE xm
DEALLOCATE xm
UPDATE @tmpa
--SET total = paufwand + rfc_300 + ctb + rtb + rfc_200
SET total = rfc_300 +rfc_200
-- Berechnen
UPDATE @tmpa
SET soll = ( soll_zeit * @ansatz ) / 100 * Engagement_Effektiv
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.Paufwand, a.RFC_300, a.CTB, a.RTB, a.RFC_200, a.Total, a.Soll, a.Prod, a.Anteil_CTB, a.Anteil_RTB,
a.Engagement_Effektiv, a.Soll_Zeit
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) )
ORDER BY OESort, dbo.MA.Sortierung, dbo.MA.Name
SELECT OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1 AS Sort, Engagement_Effektiv, SUM(Paufwand) AS PAufwand, SUM(RFC_300) AS RFC_300,
SUM(CTB) AS CTB, SUM(RTB) AS RTB, SUM(RFC_200) AS RFC_200, SUM(Total) AS Total, SUM(Soll) AS Soll, CONVERT(NUMERIC(18, 2), 0.00) AS Prod,
CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_CTB, CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_Rtb
INTO #tmpfhr1
FROM #tmpfhr
GROUP BY OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1, Engagement_Effektiv
UPDATE #tmpfhr1
SET prod = ROUND(total / soll * 100, 2)
WHERE total > 0
AND soll > 0
UPDATE #tmpfhr1
SET Anteil_CTB = ROUND(( ( rfc_300 ) / Total ) * 100, 2)
WHERE total > 0
AND ( rfc_300 ) > 0
UPDATE #tmpfhr1
SET Anteil_rtb = ROUND(( ( rfc_200 ) / total ) * 100, 2)
WHERE total > 0
AND ( rfc_200 ) > 0
PRINT 'a'
SELECT *
FROM #tmpfhr1
ORDER BY OESort, Sortierung, Name
DROP TABLE #tmpfhr
DROP TABLE #tmpfhr1
END
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_aufwand] Script Date: 01.03.2014 11:46:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_rpt_fhrlst_aufwand]
@von DATETIME = NULL ,
@bis DATETIME = NULL ,
@oestruktur INTEGER = NULL ,
@struktur_Ausschluss VARCHAR(255) = NULL ,
@Honoris_Ausschluss VARCHAR(255) = NULL
AS
BEGIN
IF @von IS NULL
SET @von = '01.01.2013 00:00:01'
IF @bis IS NULL
SET @bis = '31.12.2013 23:59:50'
IF @oestruktur IS NULL
SET @oestruktur = 24
IF @struktur_ausschluss IS NULL
SET @struktur_ausschluss = ''
IF @honoris_ausschluss IS NULL
SET @honoris_ausschluss = ''
declare @dd1 varchar(2)
declare @mm1 varchar(2)
declare @yy1 varchar(4)
declare @datum varchar(255)
set @dd1=DAY(@von)
set @mm1=MONTH(@von)
set @yy1=YEAR(@von)
if LEN(@dd1)<2 set @dd1='0'+@dd1
if LEN(@mm1)<2 set @mm1='0'+@mm1
set @datum=@yy1+'-'+@mm1+'-'+@dd1 +' 00:00:00'
set @von=convert(datetime,@datum,20)
set @dd1=DAY(@bis)
set @mm1=MONTH(@bis)
set @yy1=YEAR(@bis)
if LEN(@dd1)<2 set @dd1='0'+@dd1
if LEN(@mm1)<2 set @mm1='0'+@mm1
set @datum=@yy1+'-'+@mm1+'-'+@dd1 +' 23:59:59'
set @bis=convert(datetime,@datum,20)
--'' SET @oestruktur=34
--'' SET @von = '01.02.2013 00:00:01'
--'' SET @bis = '28.02.2013 23:59:50'
--DECLARE @per DATETIME = NULL ,
-- @von DATETIME = NULL ,
-- @bis DATETIME = NULL
--SET @per = '01.03.2013'
--SET @von = '01.03.2013'
--SET @bis = '31.03.2013'
SET NOCOUNT ON;
DECLARE @tmpa TABLE
(
[TGNummer] [varchar](50) NULL ,
oenr INT ,
sortierung INT ,
START DATETIME ,
Ende DATETIME ,
[Paufwand] [float] NOT NULL ,
[RFC_300] [float] NOT NULL ,
[CTB] [float] NOT NULL ,
[RTB] [float] NOT NULL ,
RFC_200 FLOAT NOT NULL ,
[Total] [float] NOT NULL ,
[Soll] [float] NOT NULL ,
[Prod] [float] NOT NULL ,
[Anteil_CTB] [float] NOT NULL ,
[Anteil_RTB] [float] NOT NULL ,
Engagement_Effektiv FLOAT NOT NULL ,
Soll_Zeit FLOAT NOT NULL
)
DECLARE @ansatz FLOAT
SET @ansatz = 8.0
--IF @per IS NULL
-- SET @per = GETDATE()
--***************************************************************************
-- Relevante Mitarbeiter am Per-Datum
--***************************************************************************
DECLARE @mnr INT
DECLARE @rc INT
DECLARE @mm INT
DECLARE @yy 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
IF @rc > 0
BEGIN
INSERT @tmpa
SELECT TOP 1
dbo.MA.TGNummer, madetails.OENr, ma.sortierung, @von, @bis, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, dbo.get_anteil(engagement, MitarbeiterTypNr), dbo.get_arbeitstage(madetails.MADetailNr, year(@von),month(@von))
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
END
FETCH NEXT FROM xc INTO @mnr
END
CLOSE xc
DEALLOCATE xc
DECLARE @anzahl FLOAT
DECLARE @ma VARCHAR(255)
-- Honris 200
SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME,
dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM,
dbo.Honoris_PROJEKT.PROJEKT_NR
INTO #tmphono
FROM dbo.Honoris_JOURNAL
INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR
INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR
WHERE (dbo.honoris_projekt.BOOL2=1
--( dbo.Honoris_PROJEKT.PROJEKT_NR >= 200 )
--AND ( dbo.Honoris_PROJEKT.PROJEKT_NR < 300 )
)
AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item
FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) )
DECLARE xc CURSOR
FOR
SELECT SUM(ANZAHLINT), MITARBEITER_ID
FROM #tmphono
WHERE ( DATUM >= @von
AND DATUM <= @bis
)
GROUP BY MITARBEITER_ID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET rfc_200 = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
DROP TABLE #tmpHono
-- Honris 300
SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME,
dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM,
dbo.Honoris_PROJEKT.PROJEKT_NR
INTO #tmphono1
FROM dbo.Honoris_JOURNAL
INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR
INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR
WHERE (dbo.honoris_PROJEKT.BOOL3=1 and ( dbo.Honoris_PROJEKT.PROJEKT_NR >= 300 )
AND ( dbo.Honoris_PROJEKT.PROJEKT_NR <= 399 ))
AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item
FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) )
DECLARE xc CURSOR
FOR
SELECT SUM(ANZAHLINT), MITARBEITER_ID
FROM #tmphono1
WHERE ( DATUM >= @von
AND DATUM <= @bis
)
GROUP BY MITARBEITER_ID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET rfc_300 = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
DROP TABLE #tmphono1
-- Honoris <> 300
SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME,
dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM,
dbo.Honoris_PROJEKT.PROJEKT_NR
INTO #tmpHono2
FROM dbo.Honoris_JOURNAL
INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR
INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR
WHERE (dbo.honoris_projekt.BOOL3=1 and ( dbo.Honoris_PROJEKT.PROJEKT_NR < 200 )
OR ( dbo.Honoris_PROJEKT.PROJEKT_NR > 399 ))
AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item
FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) )
DECLARE xc CURSOR
FOR
SELECT SUM(ANZAHLINT), MITARBEITER_ID
FROM #tmpHono2
WHERE ( DATUM >= @von )
AND ( DATUM <= @bis )
GROUP BY MITARBEITER_ID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET Paufwand = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
DROP TABLE #tmpHono2
-- IN
DECLARE xc CURSOR
FOR
SELECT SUM(CalculatedValue) AS Expr1, ForUserID
FROM dbo.TXP_LVer_IN_AU
WHERE ( ExecutedDateTime >= @von
AND ExecutedDateTime <= @bis
)
AND ( Ticket_ID LIKE N'IN_%' )
GROUP BY ForUserID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET rtb = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
-- AU
DECLARE xc CURSOR
FOR
SELECT SUM(CalculatedValue) AS Expr1, ForUserID
FROM dbo.TXP_LVer_IN_AU
WHERE ( ExecutedDateTime >= @von
AND ExecutedDateTime <= @bis
)
AND ( Ticket_ID LIKE N'AU_%' )
GROUP BY ForUserID
OPEN xc
FETCH NEXT FROM xc INTO @anzahl, @ma
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET ctb = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @anzahl, @ma
END
CLOSE xc
DEALLOCATE xc
FETCH NEXT FROM xm INTO @von, @bis
END
CLOSE xm
DEALLOCATE xm
UPDATE @tmpa
SET total = paufwand + rfc_300 + ctb + rtb + rfc_200
-- Berechnen
UPDATE @tmpa
SET soll = ( soll_zeit * @ansatz ) / 100 * Engagement_Effektiv
SELECT * FROM @tmpa WHERE tgnummer='tg4507'
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.Paufwand, a.RFC_300, a.CTB, a.RTB, a.RFC_200, a.Total, a.Soll, a.Prod, a.Anteil_CTB, a.Anteil_RTB,
a.Engagement_Effektiv, a.Soll_Zeit
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) )
ORDER BY OESort, dbo.MA.Sortierung, dbo.MA.Name
SELECT OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1 AS Sort, Engagement_Effektiv, SUM(Paufwand) AS PAufwand, SUM(RFC_300) AS RFC_300,
SUM(CTB) AS CTB, SUM(RTB) AS RTB, SUM(RFC_200) AS RFC_200, SUM(Total) AS Total, SUM(Soll) AS Soll, CONVERT(NUMERIC(18, 2), 0.00) AS Prod,
CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_CTB, CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_Rtb
INTO #tmpfhr1
FROM #tmpfhr
GROUP BY OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1, Engagement_Effektiv
UPDATE #tmpfhr1
SET prod = ROUND(total / soll * 100, 2)
WHERE total > 0
AND soll > 0
UPDATE #tmpfhr1
SET Anteil_CTB = ROUND(( ( paufwand + rfc_300 + ctb ) / Total ) * 100, 2)
WHERE total > 0
AND ( paufwand + rfc_300 + ctb ) > 0
UPDATE #tmpfhr1
SET Anteil_rtb = ROUND(( ( rfc_200 + rtb ) / total ) * 100, 2)
WHERE total > 0
AND ( rfc_200 + rtb ) > 0
SELECT *
FROM #tmpfhr1
ORDER BY OESort, Sortierung, Name
DROP TABLE #tmpfhr
DROP TABLE #tmpfhr1
END
GO