USE [PRECIZO] GO /****** Object: UserDefinedFunction [dbo].[FUN_R_Brak_Jakości] Script Date: 24.04.2020 10:43:51 ******/ 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 bigint ,@ID_Przeciwnej_Transakcji_Magazynowej bigint ,@ID_Magazynu_Uruchamiania_Zlecen bigint ,@ID_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 @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