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

