Facebook
From Bistre Capybara, 4 Years ago, written in SQL.
This paste is a reply to Untitled from Crimson Ibis - go back
Embed
Viewing differences between Untitled and Re: Untitled
USE [PRECIZO]
GO
/****** Object:  UserDefinedFunction [dbo].[FUN_R_Brak_Jakości]    Script Date: 24.04.2020 10:43:51 11:08:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:                
-- Create date: <13-06-2018>
-- Description:        
-- =============================================
ALTER FUNCTION [dbo].[FUN_R_Brak_Jakości]
(
        @ID_Podmiotu @oID_Podmiotu bigint
        ,@ID_Przeciwnej_Transakcji_Magazynowej ,@oID_Przeciwnej_Transakcji_Magazynowej bigint
        ,@ID_Magazynu_Uruchamiania_Zlecen ,@oID_Magazynu_Uruchamiania_Zlecen bigint
        ,@ID_Produktu ,@oID_Produktu bigint
)
RETURNS @TABELA TABLE
(
                [Źródło złej jakości] nvarchar(10)
                ,[Data analityczna] datetime
                ,[Tydzień roku daty analitycznej] int
                ,[Data wystawienia] datetime
                ,[Data zgłoszenia przez pracownika] datetime
                ,[Zakończył] nvarchar(150)
                ,[Data zakończenia] datetime
                ,[Tydzień roku] int
                ,[Indeks wyrobu] nvarchar(30)
                ,[Wariant wyrobu] bigint
                ,[Nazwa wyrobu] nvarchar(200)
                ,[Rodzaj] varchar(10)
                ,[Nr zlecenia] nvarchar(20)
                ,[Status WT] bigint
                ,[Koncern] nvarchar(50)
                ,[Ilość zlecona] numeric(18,6)
                ,[Ilość zabrakowana/naprawiona] numeric(18,6)
                ,[Nr operacji] nvarchar(4)
                ,[Nazwa operacji] nvarchar(50)
                ,[Przyczyna] nvarchar(30)
                ,[Powód] nvarchar(100)
                ,[Obszar] nvarchar(200)
                ,[Zasób] nvarchar(200)
                ,[Symbol obrabiarki] nvarchar(30)
                ,[Nr inwentarzowy] nvarchar(50)
                ,[Koszt materiału na sztukę] money
                ,[Wartość zabr. materiałów] money
                ,[Suma Tj złej jakości] numeric(18,2)
                ,[Suma Tpz złej jakości] numeric(18,2)
                ,[Suma Tj+Tpz złej jakości] numeric(18,2)
                ,[Indeks materiału]  nvarchar(30)
                ,[Nazwa materiału]  nvarchar(200)
                ,[Nr PZ]  nvarchar(70)
                ,[Dostawca]  nvarchar(200)
                ,[Pracownik]  nvarchar(70)
                ,[Status pracownika]  nvarchar(30)
                ,[Lider]  nvarchar(70)
                ,[Bezpośredni przełożony]  nvarchar(70)
                ,[Koszt robocizny] money
                ,[Godziny robocizny] numeric(18,6)
                ,[Kierownik procesu]  nvarchar(70)
                ,[Wystawił]  nvarchar(70)
                ,[Uwagi operacji]  nvarchar(300)
                ,[ID Zlecenia] bigint
)
AS
        BEGIN

        DECLARE @ID_Podmiotu bigint = @oID_Podmiotu
        DECLARE @ID_Przeciwnej_Transakcji_Magazynowej bigint = @oID_Przeciwnej_Transakcji_Magazynowej
        DECLARE @ID_Magazynu_Uruchamiania_Zlecen bigint = @oID_Magazynu_Uruchamiania_Zlecen
        DECLARE @ID_Produktu bigint = @oID_Produktu


        --5, 101, 37,0
                DECLARE @ZN TABLE
                (
                [Źródło złej jakości] nvarchar(10)
                ,[Data analityczna] datetime
                ,[Tydzień roku daty analitycznej] int
                ,[Data wystawienia] datetime
                ,[Data zgłoszenia przez pracownika] datetime
                ,[Zakończył] nvarchar(150)
                ,[Data zakończenia] datetime
                ,[Tydzień roku] int
                ,[Indeks wyrobu] nvarchar(30)
                ,[Wariant wyrobu] bigint
                ,[Nazwa wyrobu] nvarchar(200)
                ,[Rodzaj] varchar(10)
                ,[Nr zlecenia] nvarchar(20)
                ,[Status WT] bigint
                ,[Koncern] nvarchar(50)
                ,[Ilość zlecona] numeric(18,6)
                ,[Ilość zabrakowana/naprawiona] numeric(18,6)
                ,[Nr operacji] nvarchar(4)
                ,[Nazwa operacji] nvarchar(50)
                ,[Przyczyna] nvarchar(30)
                ,[Powód] nvarchar(100)
                ,[Obszar] nvarchar(200)
                ,[Zasób] nvarchar(200)
                ,[Symbol obrabiarki] nvarchar(30)
                ,[Nr inwentarzowy] nvarchar(50)
                ,[Koszt materiału na sztukę] money
                ,[Wartość zabr. materiałów] money
                ,[Suma Tj złej jakości] numeric(18,2)
                ,[Suma Tpz złej jakości] numeric(18,2)
                ,[Suma Tj+Tpz złej jakości] numeric(18,2)
                ,[Indeks materiału]  nvarchar(30)
                ,[Nazwa materiału]  nvarchar(200)
                ,[Nr PZ]  nvarchar(70)
                ,[Dostawca]  nvarchar(200)
                ,[Pracownik]  nvarchar(70)
                ,[Status pracownika]  nvarchar(30)
                ,[Lider]  nvarchar(70)
                ,[Bezpośredni przełożony]  nvarchar(70)
                ,[Koszt robocizny] money
                ,[Godziny robocizny] numeric(18,6)
                ,[Kierownik procesu]  nvarchar(70)
                ,[Wystawił]  nvarchar(70)
                ,[Uwagi operacji]  nvarchar(300)
                ,[ID Zlecenia] bigint
                )

                DECLARE @OP TABLE
                (
                [Źródło złej jakości] nvarchar(10)
                ,[Data analityczna] datetime
                ,[Tydzień roku daty analitycznej] int
                ,[Data wystawienia] datetime
                ,[Data zgłoszenia przez pracownika] datetime
                ,[Zakończył] nvarchar(150)
                ,[Data zakończenia] datetime
                ,[Tydzień roku] int
                ,[Indeks wyrobu] nvarchar(30)
                ,[Wariant wyrobu] bigint
                ,[Nazwa wyrobu] nvarchar(200)
                ,[Rodzaj] varchar(10)
                ,[Nr zlecenia] nvarchar(20)
                ,[Status WT] bigint
                ,[Koncern] nvarchar(50)
                ,[Ilość zlecona] numeric(18,6)
                ,[Ilość zabrakowana/naprawiona] numeric(18,6)
                ,[Nr operacji] nvarchar(4)
                ,[Nazwa operacji] nvarchar(50)
                ,[Przyczyna] nvarchar(30)
                ,[Powód] nvarchar(100)
                ,[Obszar] nvarchar(200)
                ,[Zasób] nvarchar(200)
                ,[Symbol obrabiarki] nvarchar(30)
                ,[Nr inwentarzowy] nvarchar(50)
                ,[Koszt materiału na sztukę] money
                ,[Wartość zabr. materiałów] money
                ,[Suma Tj złej jakości] numeric(18,2)
                ,[Suma Tpz złej jakości] numeric(18,2)
                ,[Suma Tj+Tpz złej jakości] numeric(18,2)
                ,[Indeks materiału]  nvarchar(30)
                ,[Nazwa materiału]  nvarchar(200)
                ,[Nr PZ]  nvarchar(70)
                ,[Dostawca]  nvarchar(200)
                ,[Pracownik]  nvarchar(70)
                ,[Status pracownika]  nvarchar(30)
                ,[Lider]  nvarchar(70)
                ,[Bezpośredni przełożony]  nvarchar(70)
                ,[Koszt robocizny] money
                ,[Godziny robocizny] numeric(18,6)
                ,[Kierownik procesu]  nvarchar(70)
                ,[Wystawił]  nvarchar(70)
                ,[Uwagi operacji]  nvarchar(300)
                ,[ID Zlecenia] bigint
                )


                DECLARE @KB TABLE
                (
                [Źródło złej jakości] nvarchar(10)
                ,[Data analityczna] datetime
                ,[Tydzień roku daty analitycznej] int
                ,[Data wystawienia] datetime
                ,[Data zgłoszenia przez pracownika] datetime
                ,[Zakończył] nvarchar(150)
                ,[Data zakończenia] datetime
                ,[Tydzień roku] int
                ,[Indeks wyrobu] nvarchar(30)
                ,[Wariant wyrobu] bigint
                ,[Nazwa wyrobu] nvarchar(200)
                ,[Rodzaj] varchar(10)
                ,[Nr zlecenia] nvarchar(20)
                ,[Status WT] bigint
                ,[Koncern] nvarchar(50)
                ,[Ilość zlecona] numeric(18,6)
                ,[Ilość zabrakowana/naprawiona] numeric(18,6)
                ,[Nr operacji] nvarchar(4)
                ,[Nazwa operacji] nvarchar(50)
                ,[Przyczyna] nvarchar(30)
                ,[Powód] nvarchar(100)
                ,[Obszar] nvarchar(200)
                ,[Zasób] nvarchar(200)
                ,[Symbol obrabiarki] nvarchar(30)
                ,[Nr inwentarzowy] nvarchar(50)
                ,[Koszt materiału na sztukę] money
                ,[Wartość zabr. materiałów] money
                ,[Suma Tj złej jakości] numeric(18,2)
                ,[Suma Tpz złej jakości] numeric(18,2)
                ,[Suma Tj+Tpz złej jakości] numeric(18,2)
                ,[Indeks materiału]  nvarchar(30)
                ,[Nazwa materiału]  nvarchar(200)
                ,[Nr PZ]  nvarchar(70)
                ,[Dostawca]  nvarchar(200)
                ,[Pracownik]  nvarchar(70)
                ,[Status pracownika]  nvarchar(30)
                ,[Lider]  nvarchar(70)
                ,[Bezpośredni przełożony]  nvarchar(70)
                ,[Koszt robocizny] money
                ,[Godziny robocizny] numeric(18,6)
                ,[Kierownik procesu]  nvarchar(70)
                ,[Wystawił]  nvarchar(70)
                ,[Uwagi operacji]  nvarchar(300)
                ,[ID Zlecenia] bigint
                )
                DECLARE @RE TABLE
                (
                [Źródło złej jakości] nvarchar(10)
                ,[Data analityczna] datetime
                ,[Tydzień roku daty analitycznej] int
                ,[Data wystawienia] datetime
                ,[Data zgłoszenia przez pracownika] datetime
                ,[Zakończył] nvarchar(150)
                ,[Data zakończenia] datetime
                ,[Tydzień roku] int
                ,[Indeks wyrobu] nvarchar(30)
                ,[Wariant wyrobu] bigint
                ,[Nazwa wyrobu] nvarchar(200)
                ,[Rodzaj] varchar(10)
                ,[Nr zlecenia] nvarchar(20)
                ,[Status WT] bigint
                ,[Koncern] nvarchar(50)
                ,[Ilość zlecona] numeric(18,6)
                ,[Ilość zabrakowana/naprawiona] numeric(18,6)
                ,[Nr operacji] nvarchar(4)
                ,[Nazwa operacji] nvarchar(50)
                ,[Przyczyna] nvarchar(30)
                ,[Powód] nvarchar(100)
                ,[Obszar] nvarchar(200)
                ,[Zasób] nvarchar(200)
                ,[Symbol obrabiarki] nvarchar(30)
                ,[Nr inwentarzowy] nvarchar(50)
                ,[Koszt materiału na sztukę] money
                ,[Wartość zabr. materiałów] money
                ,[Suma Tj złej jakości] numeric(18,2)
                ,[Suma Tpz złej jakości] numeric(18,2)
                ,[Suma Tj+Tpz złej jakości] numeric(18,2)
                ,[Indeks materiału]  nvarchar(30)
                ,[Nazwa materiału]  nvarchar(200)
                ,[Nr PZ]  nvarchar(70)
                ,[Dostawca]  nvarchar(200)
                ,[Pracownik]  nvarchar(70)
                ,[Status pracownika]  nvarchar(30)
                ,[Lider]  nvarchar(70)
                ,[Bezpośredni przełożony]  nvarchar(70)
                ,[Koszt robocizny] money
                ,[Godziny robocizny] numeric(18,6)
                ,[Kierownik procesu]  nvarchar(70)
                ,[Wystawił]  nvarchar(70)
                ,[Uwagi operacji]  nvarchar(300)
                ,[ID Zlecenia] bigint
                )

                DECLARE @Pracownicy TABLE
                (
                [ID Pracownika] bigint
                ,[ID Kolekcji Pracownika] bigint
                ,[Dane] nvarchar(70)
                ,[Status] nvarchar(30)
                )

                DECLARE @Koszt TABLE
                (
                [ID Produktu] bigint,
                [Koszt] numeric (18,6)
                )

;WITH CTE_Koszty AS
(
        SELECT P.[ID Produktu], [Koszt] = WNKNH.[Koszt netto]
        FROM [Produkty] P 
        OUTER APPLY dbo.[Wyroby_Normatywny_Koszt_Materialow_Historia](@ID_Podmiotu,P.[ID Produktu],1,'Materiały podstawowe',17,P.[Data utworzenia]) WNKNH
        WHERE P.[Przeznaczenie] = 'Wyroby' AND (P.[ID Produktu] = @ID_Produktu OR @ID_Produktu = 0)
)

INSERT INTO @Koszt
        SELECT * FROM CTE_Koszty

;WITH  CTE_Pracownicy AS
(
        SELECT 
                [ID Pracownika] = P.[ID Pracownika], 
                [ID Kolekcji Pracownika] = PU.[ID Kolekcji Pracownika],
                [Dane] = P.[Imię] + ' ' + PU.[Nazwisko],
                [Status]
        FROM
                [Pracownicy] P
                INNER JOIN [Pracownicy-Ustawienia] PU ON PU.[ID Pracownika] = P.[ID Pracownika] 
                        AND PU.[ID Kolekcji Pracownika] = [dbo].[Pobierz_ID_Ustawienia_Pracownika](P.[ID Pracownika], GETDATE())
                LEFT JOIN [Słowniki-Statusy] SS ON SS.[ID Statusu] = PU.[ID Statusu]
        WHERE
                P.[ID Podmiotu] = @ID_Podmiotu
)

INSERT INTO @Pracownicy
        SELECT * FROM CTE_Pracownicy
        
;WITH BASE_CTS AS
(
    SELECT 
                PZP.[ID Zlecenia], 
                PZP.[Data wystawienia], 
                PZP.[Data uruchomienia], 
                PZP.[Data zamknięcia],
                P.[Indeks], 
                P.[Wariant], 
                P.[Nazwa], 
                PZP.[Numer], 
                SPOP.[Przyczyna],
                SPZN.[Powód], 
                U.[Login], 
                [TjM] = (SUM(PZP_ON.[TjM]) * PZP.[Ilość] / 3600), 
                [TpzM] = (SUM(CAST(PZP_ON.[TpzM] AS numeric(18,2)) / 60)), 
                PZP.[Ilość],
                vWR.[Rodzaj]
    FROM 
                [Produkcja-Zlecenia produkcyjne] PZP
                INNER JOIN [Produkty] P ON PZP.[ID Produktu] = P.[ID Produktu]
                INNER JOIN [dbo].[Wyroby_Rodzaj] vWR ON P.[ID Produktu] = vWR.[ID Produktu]
                INNER JOIN [Produkcja-Zlecenia produkcyjne-Operacje naprawcze] PZP_ON ON PZP.[ID Zlecenia] = PZP_ON.[ID Zlecenia]
                LEFT JOIN [Kontrahenci-Produkty] KP ON PZP.[ID Produktu] = KP.[ID Produktu]
                LEFT JOIN [Kontrahenci] K ON KP.[ID Kontrahenta] = K.[ID Kontrahenta]
                LEFT JOIN [Słowniki-Statusy] SS ON PZP.[ID Statusu] = SS.[ID Statusu]
                LEFT JOIN [Aktualne_Statusy_WT_Wyrobow_K] ASWTW ON PZP.[ID Produktu] = ASWTW.[ID Produktu]  
                LEFT JOIN [Słowniki-Przyczyny operacji naprawczych] SPOP ON SPOP.[ID Przyczyny] = PZP.[ID Przyczyny]
                LEFT JOIN [Słowniki-Powody zleceń naprawczych] SPZN ON SPZN.[ID Powodu] = PZP.[ID Powodu]
                LEFT JOIN [Użytkownicy] U ON U.[ID Użytkownika] = PZP.[ID Użytkownika Wystawił]
    WHERE 
                PZP.[ID Podmiotu] = @ID_Podmiotu
                AND PZP.[Naprawcze] = 1
                AND PZP.[Data uruchomienia] IS NOT NULL
                AND (P.[ID Produktu] = @ID_Produktu OR @ID_Produktu = 0)
    GROUP BY 
                PZP.[ID Zlecenia], 
                PZP.[Data wystawienia], 
                PZP.[Data uruchomienia], 
                PZP.[Data zamknięcia],
                P.[Indeks], 
                P.[Wariant], 
                P.[Nazwa], 
                PZP.[Numer], 
                SPOP.[Przyczyna], 
                SPZN.[Powód], 
                U.[Login], 
                PZP.[Ilość], 
                vWR.[Rodzaj]
)
 
,Koszt_Materiału_CTE AS
(
SELECT
        PZP.[ID Zlecenia],
        [Koszt] = SUM(PMO_P.[Ilość] * PMO_P.[Cena netto])
FROM 
        [Produkcja-Zlecenia produkcyjne] PZP
        INNER JOIN [Produkty-Magazyn-Obroty-Pozycje] AS PMO_P ON PZP.[ID Zlecenia] = PMO_P.[ID Zlecenia Produkcyjnego] 
                AND PZP.[ID Produktu] <> PMO_P.[ID Produktu]
        INNER JOIN [Produkty-Magazyn-Obroty] PMO ON PMO.[ID Obrotu] = PMO_P.[ID Obrotu]
WHERE 
        PMO_P.[ID Zlecenia Produkcyjnego] IN (SELECT [ID Zlecenia] FROM BASE_CTS)
        AND PMO.[ID Transakcji] = @ID_Przeciwnej_Transakcji_Magazynowej -- ID_Przeciwnej_Transakcji_Magazynowej(Ustawienia_Glowne.Produkcja.ID_Transkacji_Uruchamiania_Zlecen)
        AND PMO.[ID Magazynu] = @ID_Magazynu_Uruchamiania_Zlecen -- Ustawienia_Glowne.Produkcja.ID_Magazynu_Uruchamiania_Zlecen & _
        AND (PZP.[ID Produktu] = @ID_Produktu OR @ID_Produktu = 0)
GROUP BY 
        PZP.[ID Zlecenia]
)
 
,CTE_ALL_ZN AS
 (
        SELECT
                [Źródło złej jakości] = 'ZN',
                [Data analityczna] = BCTE.[Data zamknięcia],
                [Tydzień roku daty analitycznej] = DATEPART(WEEK,BCTE.[Data zamknięcia]),
                [Data wystawienia] = BCTE.[Data wystawienia],
                [Data zgłoszenia przez pracownika] = null,
                [Zakończył] = null,
                [Data zakończenia] = BCTE.[Data zamknięcia],
                [Tydzień roku] = DATEPART(WEEK,BCTE.[Data uruchomienia]),
                [Indeks wyrobu] = BCTE.[Indeks],
                [Wariant wyrobu] = BCTE.[Wariant],
                [Nazwa wyrobu] = BCTE.[Nazwa],
                [Rodzaj] = BCTE.[Rodzaj],
                [Nr zlecenia] = BCTE.[Numer],
                [Status WT] = null,
                [Koncern] = null,
                [Ilość zlecona] = SUM(BCTE.[Ilość]),
                [Ilość zabrakowana/naprawiona] = null,
                [Nr operacji] = null,
                [Nazwa operacji] = null,
                [Przyczyna] = BCTE.[Przyczyna],
                [Powód] = BCTE.[Powód],
                [Obszar] = null,
                [Zasób] = null,
                [Symbol obrabiarki] = null,
                [Nr inwentarzowy] = null,
                [Koszt materiału na sztukę] = SUM(KMCTE.[Koszt] / BCTE.[Ilość]),
                [Wartość zabr. materiałów] = null,
                [Suma Tj złej jakości] = SUM(BCTE.[TjM]),
                [Suma Tpz złej jakości] = SUM(BCTE.[TpzM]),
                [Suma Tj+Tpz złej jakości]= SUM(BCTE.[TjM] + BCTE.[TpzM] ),
                [Indeks materiału] = null,
                [Nazwa materiału] = null,
                [Nr PZ] = null,
                [Dostawca] = null,
                [Pracownik] = null,
                [Status pracownika] = null,
                [Lider] = null,
                [Bezpośredni przełożony] = null,
                [Koszt robocizny] = null,
                [Godziny robocizny] = null,
                [Kierownik procesu] = null,
                [Wystawił] = BCTE.[Login],
                [Uwagi operacji] = null,
                [ID Zlecenia] = BCTE.[ID Zlecenia]
        FROM 
                BASE_CTS AS BCTE
                LEFT JOIN Koszt_Materiału_CTE KMCTE ON KMCTE.[ID Zlecenia] = BCTE.[ID Zlecenia]
        GROUP BY 
                BCTE.[ID Zlecenia], 
                BCTE.[Data wystawienia], 
                BCTE.[Data uruchomienia], 
                BCTE.[Data zamknięcia],
                BCTE.[Indeks], 
                BCTE.[Wariant], 
                BCTE.[Nazwa], 
                BCTE.[Numer], 
                BCTE.[Przyczyna], 
                BCTE.[Powód], 
                BCTE.[Login], 
                BCTE.[Ilość],
                BCTE.[Rodzaj]
)
INSERT INTO @ZN
        SELECT * FROM CTE_ALL_ZN

;WITH CTE_ALL_OP AS
(
        SELECT 
                [Źródło złej jakości] = 'OP'
                ,[Data analityczna] = OA.[Data zakończenie]
                ,[Tydzień roku daty analitycznej] = DATEPART(WEEK,OA.[Data zakończenie])
                ,[Data wystawienia] = P_ZP_ON.[Data utworzenia]
                ,[Data zgłoszenia przez pracownika] = PROP.[Data rozliczenia]
                ,[Zakończył] = OA.[Zakończył]
                ,[Data zakończenia] = OA.[Data zakończenie]
                ,[Tydzień roku] = DATEPART(WEEK,P_ZP_ON.[Data utworzenia])
                ,[Indeks wyrobu] = P.[Indeks]
                ,[Wariant wyrobu] = P.[Wariant]
                ,[Nazwa wyrobu] = P.[Nazwa]
                ,[Rodzaj] = vWR.[Rodzaj]
                ,[Nr zlecenia] = P_ZP.[Numer]
                ,[Status WT] = ISNULL(SSWT.[ID Statusu],0)
                ,[Koncern] = null
                ,[Ilość zlecona] = P_ZP_ON.[Ilość]
                ,[Ilość zabrakowana/naprawiona] = PROP.[Ilość wykonana]
                ,[Nr operacji] = P_ZP_ON.[Nr operacji]
                ,[Nazwa operacji] = ISNULL(S_OP.Operacja,null)
                ,[Przyczyna] = ISNULL(S_KON.[Przyczyna],null)
                ,[Powód] = ISNULL(S_PON.[Powód],null)
                ,[Obszar] = ISNULL(POb.[Nazwa], null)
                ,[Zasób] = ISNULL(PZ.[Nazwa], null)
                ,[Symbol obrabiarki] = OS.[Indeks]
                ,[Nr inwentarzowy] = OS.[Nr inwentarzowy]
                ,[Koszt materiału na sztukę] = ISNULL(KOSZT.Koszt,0)
                ,[Wartość zabr. materiałów] = null
                ,[Suma Tj złej jakości] = CAST((PROP.[Ilość wykonana] * P_ZP_ON.[TjM]) as numeric(18,2)) / 3600
                ,[Suma Tpz złej jakości] = CAST((PROP.[Uwzględnij Tpz] * P_ZP_ON.[TpzM]) as numeric(18,2)) / 60
                ,[Suma Tj+Tpz złej jakości] = (CAST((PROP.[Ilość wykonana] * P_ZP_ON.[TjM]) as numeric(18,2)) / 3600) + (CAST((PROP.[Uwzględnij Tpz] * P_ZP_ON.[TpzM]) as numeric(18,2)) / 60)
                ,[Indeks materiału] = null
                ,[Nazwa materiału] = null
                ,[Nr PZ] = null
                ,[Dostawca] = null
                ,[Pracownik] = CASE WHEN PROP.[ID Pracownika] IS NOT NULL THEN
                                                        PU.[Nazwisko] + ' ' + PRAC.[Imię]
                                                ELSE 
                                                        UZYT.[Login]
                                                END
                ,[Status pracownika] = (SELECT [Status] FROM @Pracownicy WHERE [ID Pracownika] = PU.[ID Pracownika])
                ,[Lider] = (SELECT [Dane] FROM @Pracownicy WHERE [ID Kolekcji Pracownika] = PU.[ID Kolekcji Pracownika lidera])
                ,[Bezpośredni przełożony] = (SELECT [Dane] FROM @Pracownicy WHERE [ID Kolekcji Pracownika] = PU.[ID Kolekcji Pracownika Przełożonego])
                ,[Koszt robocizny] = ISNULL((PROP.[Ilość wykonana] * convert(numeric(18,6),P_ZP_ON.[TjM]) / 3600) + (CONVERT(int,PROP.[Uwzględnij Tpz]) * convert(numeric(18,6),P_ZP_ON.[TpzM]) / 60),0) * 150
                ,[Godziny robocizny] = ISNULL((PROP.[Ilość wykonana] * convert(numeric(18,6),P_ZP_ON.[TjM]) / 3600) + (CONVERT(int,PROP.[Uwzględnij Tpz]) * convert(numeric(18,6),P_ZP_ON.[TpzM]) / 60),0)
                ,[Kierownik procesu] = null
                ,[Wystawił] = P_ZP_ON.[Utworzył użytkownik]
                ,[Uwagi operacji] = P_ZP_ON.[Uwagi operacji]
                ,[ID Zlecenia] = P_ZP.[ID Zlecenia]
        FROM 
                [Produkcja-Zlecenia produkcyjne-Operacje naprawcze] AS P_ZP_ON
                INNER JOIN [Produkcja-ROP] PROP ON PROP.[ID Kolekcji operacji naprawczej] = P_ZP_ON.[ID Kolekcji operacji]
                INNER JOIN [Produkcja-Zlecenia produkcyjne] P_ZP ON P_ZP.[ID Zlecenia] = P_ZP_ON.[ID Zlecenia] AND P_ZP.[Naprawcze] = 0 AND P_ZP.[ID Podmiotu] = @ID_Podmiotu
                INNER JOIN [Produkty] P ON P.[ID Produktu] = P_ZP.[ID Produktu]
                INNER JOIN [Technologia-Procesy technologiczne] T_PT ON T_PT.[ID Procesu] = P_ZP.[ID Procesu technologicznego]
                INNER JOIN [Słowniki-Wersje PW] S_WP ON S_WP.[ID Wersji] = T_PT.[ID Wersji]
                INNER JOIN [dbo].[Wyroby_Rodzaj] vWR ON P.[ID Produktu] = vWR.[ID Produktu]
                LEFT JOIN @Koszt KOSZT ON KOSZT.[ID Produktu] = P.[ID Produktu]
                LEFT JOIN [Pracownicy] PRAC ON PRAC.[ID Pracownika] = PROP.[ID Pracownika]
                LEFT JOIN [Pracownicy-Ustawienia] PU ON PU.[ID Kolekcji Pracownika] = [dbo].[Pobierz_ID_Ustawienia_Pracownika](PRAC.[ID Pracownika],PROP.[Data rozliczenia])
                LEFT JOIN [Użytkownicy] UZYT ON UZYT.[ID Użytkownika] = PROP.[ID Użytkownika] 
                LEFT JOIN [Słowniki-Statusy wymagań technicznych] SSWT ON SSWT.[ID Statusu] = P_ZP.[ID Statusu wymagań technicznych]
                LEFT JOIN [Słowniki-Przyczyny operacji naprawczych] S_KON ON P_ZP_ON.[ID Przyczyny] = S_KON.[ID Przyczyny]
                LEFT JOIN [Słowniki-Powody operacji naprawczych] S_PON ON P_ZP_ON.[ID Powodu] = S_PON.[ID Powodu]
                LEFT JOIN [Produkty-Usługi produkcyjne] P_UP ON P_ZP_ON.[ID Kolekcji Produkt-Usługa] = P_UP.[ID Kolekcji]
                LEFT JOIN [Usługi produkcyjne] UP ON P_UP.[ID Usługi produkcyjnej] = UP.[ID Usługi]
                LEFT JOIN [Obrabiarki i stanowiska] OS ON P_ZP_ON.[ID Obrabiarki] = OS.[ID Obrabiarki]
                LEFT JOIN [Słowniki-Operacje produkcyjne] S_OP ON P_ZP_ON.[ID Operacji] = S_OP.[ID Operacji]
                LEFT JOIN [Produkcja-Zasoby-Obrabiarki] PZO ON P_ZP_ON.[ID Obrabiarki] = PZO.[ID Obrabiarki]
                LEFT JOIN [Produkcja-Zasoby] PZ ON PZO.[ID Zasobu] = PZ.[ID Zasobu]
                LEFT JOIN [Produkcja-Obszary-Zasoby] POZ ON PZ.[ID Zasobu] = POZ.[ID Zasobu]
                LEFT JOIN [Produkcja-Obszary] POb ON POZ.[ID Obszaru] = POb.[ID Obszaru]
                OUTER APPLY (
                        SELECT TOP 1 
                                [Data zakończenie] = FIRST_VALUE(xPROP.[Data modyfikacji]) OVER (ORDER BY xPROP.[Data modyfikacji] DESC),
                                [Zakończył] = FIRST_VALUE(xPROP.[Zmodyfikował użytkownik]) OVER (ORDER BY xPROP.[Data modyfikacji] DESC)
                        FROM 
                                [Produkcja-ROP] xPROP
                        WHERE 
                                xPROP.[Operacja zakończona] = 1 
                                AND xPROP.[ID Kolekcji operacji naprawczej] = P_ZP_ON.[ID Kolekcji operacji]
                ) OA 
                WHERE (P.[ID Produktu] = @ID_Produktu OR @ID_Produktu = 0)
                
        )

INSERT INTO @OP
        SELECT * FROM CTE_ALL_OP

;WITH CTE_ALL_KB AS
(
        SELECT 
                [Źródło złej jakości] = 'KB',
                [Data analityczna] = P_KB.[Data],
                [Tydzień roku daty analitycznej] = DATEPART(WEEK,P_KB.[Data]),
                [Data wystawienia] = P_KB.[Data], 
                [Data zgłoszenia przez pracownika] = PROP.[Data rozliczenia], 
                [Zakończył] = null,
                [Data zakończenia] = P_KB.[Data],
                [Tydzień roku] = DATEPART(WEEK,PROP.[Data rozliczenia]),
                [Indeks wyrobu] = P.[Indeks], 
                [Wariant wyrobu] = P.[Wariant],
                [Nazwa wyrobu] = P.[Nazwa], 
                [Rodzaj] = vWR.[Rodzaj],
                [Nr zlecenia] = P_ZP.[Numer], 
                [Status WT] = ISNULL(P_ZP.[ID Statusu WT-Wystawione],0), 
                [Koncern] = null,
                [Ilość zlecona] = P_ZP.[Ilość], 
                [Ilość zabrakowana/naprawiona] = P_KB.[Ilość], 
                [Nr operacji] = ISNULL(T_PTO.[Nr operacji], P_ZPON.[Nr operacji]), 
                [Nazwa operacji] = SOP.[Operacja],
                [Przyczyna] = P_KB.[Przyczyna braku], 
                [Powód] = P_KB.[Powód braku], 
                [Obszar] = PO.Nazwa, 
                [Zasób] = PZ.[Nazwa], 
                [Symbol obrabiarki] = O.[Indeks], 
                [Nr inwentarzowy] = O.[Nr inwentarzowy], 
                [Koszt materiału na sztukę] = ISNULL(KOSZT.Koszt,0),
                [Wartość zabr. materiałów] = P_KB.[Koszt materiałów], 
                [Suma Tj złej jakości] = CAST(P_KB.[Zabrakowany Tj całkowity] AS numeric(18,2))  / 3600,
                [Suma Tpz złej jakości] = CAST(P_KB.[Zabrakowany Tpz całkowity] AS numeric(18,2))  / 3600,
                [Suma Tj+Tpz złej jakości] = (CAST(P_KB.[Zabrakowany Tj całkowity] AS numeric(18,2))  / 3600) + (CAST(P_KB.[Zabrakowany Tpz całkowity] AS numeric(18,2))  / 3600),
                [Indeks materiału] = null,
                [Nazwa materiału] = null,
                [Nr PZ] = null,
                [Dostawca] = null,
                [Pracownik] = (SELECT [Dane] FROM @Pracownicy WHERE [ID Pracownika] = P_KB.[ID Pracownika]), 
                [Status pracownika] = (SELECT [Status] FROM @Pracownicy WHERE [ID Pracownika] = P_KB.[ID Pracownika]),
                [Lider] = (SELECT [Dane] FROM @Pracownicy WHERE [ID Kolekcji Pracownika] = PRAC_U.[ID Kolekcji Pracownika lidera]),
                [Bezpośredni przełożony] = (SELECT [Dane] FROM @Pracownicy WHERE [ID Kolekcji Pracownika] = PRAC_U.[ID Kolekcji Pracownika Przełożonego]),
                [Koszt robocizny] = P_KB.[Koszt robocizny], 
                [Godziny robocizny] = null,
                [Kierownik procesu] = (SELECT [Login] FROM [Użytkownicy] WHERE [ID Użytkownika] = T_PT.[ID Użytkownika kierownik]),
                [Wystawił] = P_KB.[Utworzył użytkownik],
                [Uwagi operacji],
                [ID Zlecenia] = P_ZP.[ID Zlecenia] 
        FROM 
                [Produkcja-Karty braków] AS P_KB 
                INNER JOIN [PRodukcja-Braki] PB ON PB.[ID Braku] = P_KB.[ID Braku]  
                INNER JOIN [Produkcja-ROP] PROP ON PROP.[ID Rozliczenia] = PB.[ID Rozliczenia] 
                INNER JOIN [Produkcja-Zlecenia produkcyjne] P_ZP ON P_KB.[ID Zlecenia] = P_ZP.[ID Zlecenia] 
                INNER JOIN [Produkty] P ON P_KB.[ID Produktu] = P.[ID Produktu] 
                INNER JOIN [Słowniki-Jednostki miary] SJM ON P.[ID Jednostki podstawowej] = SJM.[ID Jednostki] 
                INNER JOIN [dbo].[Wyroby_Rodzaj] vWR ON P.[ID Produktu] = vWR.[ID Produktu]
                LEFT JOIN @Koszt KOSZT ON KOSZT.[ID Produktu] = P.[ID Produktu]
                LEFT JOIN [Technologia-Procesy technologiczne] T_PT ON P_ZP.[ID Procesu technologicznego] = T_PT.[ID Procesu] 
                LEFT JOIN [Obrabiarki i stanowiska] O ON P_KB.[ID Obrabiarki] = O.[ID Obrabiarki] 
                LEFT JOIN [Produkcja-Zasoby-Obrabiarki] PZO ON O.[ID Obrabiarki] = PZO.[ID Obrabiarki] 
                LEFT JOIN [Produkcja-Zasoby] PZ ON PZ.[ID Zasobu] = PZO.[ID Zasobu]
                LEFT JOIN [Produkcja-Obszary-Zasoby] POZ ON PZO.[ID Zasobu] = POZ.[ID Zasobu] 
                LEFT JOIN [Produkcja-Obszary] PO ON PO.[ID Obszaru] = POZ.[ID Obszaru]
                LEFT JOIN [Słowniki-Grupy] AS S_G ON O.[ID Grupy] = S_G.[ID Grupy] 
                LEFT JOIN [Produkcja-Zlecenia produkcyjne-Operacje naprawcze] AS P_ZPON ON P_KB.[ID Kolekcji Operacji zlecenia naprawczego] = P_ZPON.[ID Kolekcji operacji] 
                LEFT JOIN [Technologia-Procesy technologiczne-Operacje] AS T_PTO ON P_KB.[ID Kolekcji Operacji procesu technologicznego] = T_PTO.[ID Kolekcji operacji] 
                LEFT JOIN [Słowniki-Operacje produkcyjne] SOP ON SOP.[ID Operacji] = T_PTO.[ID Operacji]
                LEFT JOIN [Pracownicy] PRAC ON PRAC.[ID Pracownika] = P_KB.[ID Pracownika]
                LEFT JOIN [Pracownicy-Ustawienia] PRAC_U ON PRAC_U.[ID Pracownika] = PRAC.[ID Pracownika] AND PRAC_U.[ID Kolekcji Pracownika] = dbo.Pobierz_ID_Ustawienia_Pracownika(PRAC.[ID Pracownika], GETDATE())
        WHERE 
                P_KB.[ID Podmiotu] = @ID_Podmiotu
                AND (P.[ID Produktu] = @ID_Produktu OR @ID_Produktu = 0)
)

INSERT INTO @KB
        SELECT * FROM CTE_ALL_KB

 ;WITH CTE_ALL_RE AS
 (
        SELECT
                [Źródło złej jakości] = 'RE'
                ,[Data analityczna] = PB.[Data weryfikacji]
                ,[Tydzień roku daty analitycznej] = DATEPART(WEEK,PB.[Data weryfikacji])
                ,[Data wystawienia] = PB.[Data weryfikacji]
                ,[Data zgłoszenia przez pracownika] = PB.[Data utworzenia]
                ,[Zakończył] = null
                ,[Data zakończenia] = PB.[Data akceptacji]
                ,[Tydzień roku] = DATEPART(WEEK,PB.[Data weryfikacji])
                ,[Indeks wyrobu] = P.[Indeks]
                ,[Wariant wyrobu] = P.[Wariant]
                ,[Nazwa wyrobu] = P.[Nazwa]
                ,[Rodzaj] = vWR.[Rodzaj]
                ,[Nr zlecenia] = PZP.[Numer]
                ,[Status WT] = null
                ,[Koncern] = null
                ,[Ilość zlecona] = PZP.[Ilość]
                ,[Ilość zabrakowana/naprawiona] = PB.[Ilość]
                ,[Nr operacji] = TPTO.[Nr operacji]
                ,[Nazwa operacji] = SOP.[Operacja]
                ,[Przyczyna] = PB.[Przyczyna]
                ,[Powód] = PB.[Powód]
                ,[Obszar] = PO.[Nazwa]
                ,[Zasób] = PZ.[Nazwa]
                ,[Symbol obrabiarki] = O.[Indeks]
                ,[Nr inwentarzowy] = O.[Nr inwentarzowy]
                ,[Koszt materiału na sztukę] = ISNULL(KOSZT.Koszt,0)
                ,[Wartość zabr. materiałów] = null
                ,[Suma Tj złej jakości] = CAST((PB.[Ilość] * X.[Suma TjM]) as numeric(18,2)) / 3600
                ,[Suma Tpz złej jakości] = CAST((PROP.[Uwzględnij Tpz] * X.[Suma TpZ]) as numeric(18,2)) / 60
                ,[Suma Tj+Tpz złej jakości]= (CAST((PB.[Ilość] * X.[Suma TjM]) as numeric(18,2)) / 3600) + (CAST((PROP.[Uwzględnij Tpz] * TPTO.[TpzM]) as numeric(18,2)) / 60)
                ,[Indeks materiału] = null
                ,[Nazwa materiału] = null
                ,[Nr PZ] = null
                ,[Dostawca] = null
                ,[Pracownik] = null
                ,[Status pracownika] = null
                ,[Lider] = null
                ,[Bezpośredni przełożony] = null
                ,[Koszt robocizny] = (CAST((PB.[Ilość] * X.[Suma TjM]) as numeric(18,2)) / 3600) * O.[Koszt roboczogodziny]
                ,[Godziny robocizny] = (CAST((PB.[Ilość] * X.[Suma TjM]) as numeric(18,2)) / 3600)
                ,[Kierownik procesu] = null
                ,[Wystawił] = (SELECT [Login] FROM [Użytkownicy] WHERE [ID Użytkownika] = PB.[ID Użytkownika Zaakceptował])
                ,[Uwagi operacji] = null
                ,[ID Zlecenia] = PZP.[ID Zlecenia]
        FROM 
                [Produkcja-Braki] PB
                INNER JOIN [Produkcja-ROP] PROP ON PROP.[ID Rozliczenia] = PB.[ID Rozliczenia]
                INNER JOIN [Produkcja-Zlecenia produkcyjne] PZP ON PZP.[ID Zlecenia] = PROP.[ID Zlecenia]
                INNER JOIN [Technologia-Procesy technologiczne] TPT ON TPT.[ID Procesu] = PZP.[ID Procesu technologicznego]
                INNER JOIN [Technologia-Procesy technologiczne-Operacje] TPTO ON TPTO.[ID Procesu] = TPT.[ID Procesu] AND TPTO.[ID Kolekcji operacji] = PROP.[ID Kolekcji operacji] 
                INNER JOIN [Produkty] P ON P.[ID Produktu] = PZP.[ID Produktu]
                INNER JOIN [Obrabiarki i stanowiska] O ON PROP.[ID Obrabiarki] = O.[ID Obrabiarki] 
                INNER JOIN [Słowniki-Operacje produkcyjne] SOP ON SOP.[ID Operacji] = TPTO.[ID Operacji]
                INNER JOIN [Produkcja-Zasoby-Obrabiarki] PZO ON O.[ID Obrabiarki] = PZO.[ID Obrabiarki] 
                INNER JOIN [Produkcja-Zasoby] PZ ON PZ.[ID Zasobu] = PZO.[ID Zasobu]
                INNER JOIN [Produkcja-Obszary-Zasoby] POZ ON PZO.[ID Zasobu] = POZ.[ID Zasobu] 
                INNER JOIN [Produkcja-Obszary] PO ON PO.[ID Obszaru] = POZ.[ID Obszaru]
                INNER JOIN [dbo].[Wyroby_Rodzaj] vWR ON P.[ID Produktu] = vWR.[ID Produktu]
                LEFT JOIN @Koszt KOSZT ON KOSZT.[ID Produktu] = P.[ID Produktu]
                OUTER APPLY (SELECT [Suma TjM] = SUM([TjM]), [Suma TpZ] = SUM([TpzM]) FROM [Technologia-Procesy technologiczne-Operacje] xTPTO WHERE xTPTO.[ID Procesu] = TPT.[ID Procesu] ) X
        WHERE
                PB.[Decyzja] = 'Reklamacja'
                AND P.[ID Podmiotu] = @ID_Podmiotu
                AND (P.[ID Produktu] = @ID_Produktu OR @ID_Produktu = 0)
)

INSERT INTO @RE
        SELECT * FROM CTE_ALL_RE

INSERT INTO @TABELA
        SELECT * FROM @OP
        UNION ALL 
        SELECT * FROM @KB
        UNION ALL
        SELECT * FROM @ZN
        UNION ALL
        SELECT * FROM @RE
        RETURN
END