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
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
|
|
|