USE [PRECIZO]
GO
/****** Object: UserDefinedFunction [dbo].[FUN_R_Brak_Jakości] Script Date: 24.04.2020 11:08:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Radosław Sniegocki>
-- Create date: <13-06-2018>
-- Description: <Funkcja zwraca dane do raportu karty zużycia narzędzi>
-- =============================================
ALTER FUNCTION [dbo].[FUN_R_Brak_Jakości]
(
@oID_Podmiotu BIGINT
,@oID_Przeciwnej_Transakcji_Magazynowej BIGINT
,@oID_Magazynu_Uruchamiania_Zlecen BIGINT
,@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