diff --git a/Programmability/Functions/EncodeHtml.sql b/Programmability/Functions/EncodeHtml.sql
new file mode 100644
index 0000000..817be41
--- /dev/null
+++ b/Programmability/Functions/EncodeHtml.sql
@@ -0,0 +1,16 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[EncodeHtml] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[EncodeHtml] (@RawStr varchar(max)) RETURNS varchar(max) AS BEGIN RETURN REPLACE(
+ REPLACE(REPLACE(@RawStr, '&', '&'), '<', '<'),
+ '>',
+ '>'
+ )
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn8DConvertCANoToCADisplayFormat.sql b/Programmability/Functions/fn8DConvertCANoToCADisplayFormat.sql
new file mode 100644
index 0000000..70cda4c
--- /dev/null
+++ b/Programmability/Functions/fn8DConvertCANoToCADisplayFormat.sql
@@ -0,0 +1,33 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn8DConvertCANoToCADisplayFormat] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn8DConvertCANoToCADisplayFormat] (
+ -- Add the parameters for the function here
+ @CANo INT
+ ) RETURNS VARCHAR(10) AS BEGIN -- Declare the return variable here
+ DECLARE @CADisplay VARCHAR(10) -- Add the T-SQL statements to compute the return value here
+SET
+ @CADisplay = LTRIM(
+ RTRIM(
+ CAST(
+ 'C' + RIGHT(
+ '00000' + ISNULL(CAST(@CANo AS VARCHAR(10)), ''),
+ 5
+ ) AS VARCHAR(50)
+ )
+ )
+ ) -- Return the result of the function
+ RETURN @CADisplay
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnAuditConvertAuditNoToDisplayFormat.sql b/Programmability/Functions/fnAuditConvertAuditNoToDisplayFormat.sql
new file mode 100644
index 0000000..cefb825
--- /dev/null
+++ b/Programmability/Functions/fnAuditConvertAuditNoToDisplayFormat.sql
@@ -0,0 +1,28 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnAuditConvertAuditNoToDisplayFormat] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnAuditConvertAuditNoToDisplayFormat] (
+ -- Add the parameters for the function here
+ @AuditNo INT
+ ) RETURNS VARCHAR(10) AS BEGIN -- Declare the return variable here
+ DECLARE @Display VARCHAR(10) -- Add the T-SQL statements to compute the return value here
+SET
+ @Display = LTRIM(
+ RTRIM(
+ CAST(
+ 'A' + RIGHT(
+ '00000' + ISNULL(CAST(@AuditNo AS VARCHAR(10)), ''),
+ 5
+ ) AS VARCHAR(50)
+ )
+ )
+ ) -- Return the result of the function
+ RETURN @Display
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetApprovalFullNames.sql b/Programmability/Functions/fnGetApprovalFullNames.sql
new file mode 100644
index 0000000..545533a
--- /dev/null
+++ b/Programmability/Functions/fnGetApprovalFullNames.sql
@@ -0,0 +1,64 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetApprovalFullNames] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnGetApprovalFullNames] (
+ @IssueID int,
+ @DocumentTypeID int,
+ @Separator varchar(10),
+ @IncludeRole bit,
+ @IncludeSubRole bit,
+ @IncludePending bit,
+ @IncludeApproved bit,
+ @IncludeOthers bit
+ ) RETURNS varchar(max) AS BEGIN DECLARE @r varchar(max) DECLARE @t TABLE(u varchar(200))
+INSERT INTO
+ @t
+SELECT
+ @Separator + ISNULL(U.FirstName, '') + ' ' + ISNULL(U.LastName, '') + CASE
+ WHEN @IncludeRole <> 0 THEN ' (' + A.RoleName + ')'
+ ELSE ''
+ END + CASE
+ WHEN @IncludeSubRole <> 0 THEN ' (' + A.SubRole + ')'
+ ELSE ''
+ END
+FROM
+ Approval A
+ LEFT OUTER JOIN Users U ON A.UserID = U.UserID
+WHERE
+ A.IssueID = @IssueID
+ AND A.DocumentTypeID = @DocumentTypeID
+ AND (
+ (
+ @IncludeOthers <> 0
+ AND A.ItemStatus NOT IN (0, 1)
+ )
+ OR (
+ @IncludePending <> 0
+ AND A.ItemStatus = 0
+ )
+ OR (
+ @IncludeApproved <> 0
+ AND A.ItemStatus = 1
+ )
+ )
+ORDER BY
+ A.Step,
+ U.FirstName,
+ U.LastName
+SELECT
+ @r = (
+ SELECT
+ u + ''
+ FROM
+ @t FOR XML PATH('')
+ ) IF @r <> ''
+SET
+ @r = STUFF(@r, 1, LEN(@Separator), '') RETURN @r
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetITARUsers.sql b/Programmability/Functions/fnGetITARUsers.sql
new file mode 100644
index 0000000..e2eba52
--- /dev/null
+++ b/Programmability/Functions/fnGetITARUsers.sql
@@ -0,0 +1,24 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetITARUsers] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetITARUsers] () RETURNS TABLE AS RETURN (
+ SELECT
+ UserID,
+ HasITARAccess
+ FROM
+ SAMUsers
+ WHERE
+ HasITARAccess = 1
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetLotCount_Fab.sql b/Programmability/Functions/fnGetLotCount_Fab.sql
new file mode 100644
index 0000000..56fda5f
--- /dev/null
+++ b/Programmability/Functions/fnGetLotCount_Fab.sql
@@ -0,0 +1,33 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetLotCount_Fab] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetLotCount_Fab] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS FLOAT AS BEGIN DECLARE @FabCount INT -- Declare the return variable here
+SET
+ @FabCount = 0
+SET
+ @FabCount = (
+ SELECT
+ COUNT(*)
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = @IssueID
+ AND L.Location NOT IN ('6300', '6400 ', '6600', 'QDB')
+ ) -- Return the result of the function
+ RETURN @FabCount
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetLotCount_Probe.sql b/Programmability/Functions/fnGetLotCount_Probe.sql
new file mode 100644
index 0000000..573ca5c
--- /dev/null
+++ b/Programmability/Functions/fnGetLotCount_Probe.sql
@@ -0,0 +1,33 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetLotCount_Probe] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetLotCount_Probe] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS FLOAT AS BEGIN DECLARE @ProbeCount INT -- Declare the return variable here
+SET
+ @ProbeCount = 0
+SET
+ @ProbeCount = (
+ SELECT
+ COUNT(*)
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = @IssueID
+ AND L.Location IN ('6300', '6400 ', '6600')
+ ) -- Return the result of the function
+ RETURN @ProbeCount
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetLotCount_QDB.sql b/Programmability/Functions/fnGetLotCount_QDB.sql
new file mode 100644
index 0000000..4821936
--- /dev/null
+++ b/Programmability/Functions/fnGetLotCount_QDB.sql
@@ -0,0 +1,33 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetLotCount_QDB] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetLotCount_QDB] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS FLOAT AS BEGIN DECLARE @QDBCount INT -- Declare the return variable here
+SET
+ @QDBCount = 0
+SET
+ @QDBCount = (
+ SELECT
+ COUNT(*)
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = @IssueID
+ AND L.Location = 'QDB'
+ ) -- Return the result of the function
+ RETURN @QDBCount
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetLotCount_RH_MA.sql b/Programmability/Functions/fnGetLotCount_RH_MA.sql
new file mode 100644
index 0000000..3458b41
--- /dev/null
+++ b/Programmability/Functions/fnGetLotCount_RH_MA.sql
@@ -0,0 +1,37 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetLotCount_RH_MA] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetLotCount_RH_MA] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS FLOAT AS BEGIN DECLARE @QDBCount INT -- Declare the return variable here
+SET
+ @QDBCount = 0
+SET
+ @QDBCount = (
+ SELECT
+ COUNT(*)
+ FROM
+ LotDisposition LD
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ WHERE
+ (
+ L.ProductFamily = 'RH'
+ OR L.ProductFamily = 'MA'
+ )
+ AND LD.IssueID = @IssueID
+ ) -- Return the result of the function
+ RETURN @QDBCount
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetLot_RH.sql b/Programmability/Functions/fnGetLot_RH.sql
new file mode 100644
index 0000000..8810ed1
--- /dev/null
+++ b/Programmability/Functions/fnGetLot_RH.sql
@@ -0,0 +1,27 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetLot_RH] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetLot_RH] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS TABLE AS RETURN (
+ SELECT
+ L.IssueID
+ FROM
+ LotDisposition LD
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ WHERE
+ LD.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetMRB_SPN_HoldLots.sql b/Programmability/Functions/fnGetMRB_SPN_HoldLots.sql
new file mode 100644
index 0000000..43735e1
--- /dev/null
+++ b/Programmability/Functions/fnGetMRB_SPN_HoldLots.sql
@@ -0,0 +1,63 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetMRB_SPN_HoldLots] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetMRB_SPN_HoldLots] (
+ -- Add the parameters for the function here
+ @MRBNumber INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ L.LotNumber,
+ MD.MRBNumber
+ FROM
+ MRBDispositionByMRB MD
+ INNER JOIN MRBLot L ON MD.DispositionType = L.DispoType
+ INNER JOIN MRB M ON M.MRBNumber = MD.MRBNumber
+ WHERE
+ CloseToQDBOptionID = 1
+ AND L.MRBNumber = @MRBNumber
+ AND MD.MRBNumber = @MRBNumber
+ AND L.LotNumber + CONVERt(VARCHAR(10), MD.MRBNumber) NOT IN (
+ SELECT
+ LotNumber + CONVERt(VARCHAR(10), MRBNumber)
+ FROM
+ MRB_SPN_HoldFlagLot
+ )
+ UNION
+ SELECT
+ LotNumber,
+ MRBNumber
+ FROM
+ MRB_SPN_HoldFlagLot
+ WHERE
+ LotNumber IN (
+ SELECT
+ DISTINCT L.LotNumber
+ FROM
+ MRBDispositionByMRB MD
+ INNER JOIN MRBLot L ON MD.DispositionType = L.DispoType
+ INNER JOIN MRB M ON M.MRBNumber = MD.MRBNumber
+ WHERE
+ CloseToQDBOptionID = 1
+ AND L.MRBNumber = @MRBNumber
+ AND MD.MRBNumber = @MRBNumber
+ AND L.LotNumber + CONVERt(VARCHAR(10), MD.MRBNumber) NOT IN (
+ SELECT
+ LotNumber + CONVERt(VARCHAR(10), MRBNumber)
+ FROM
+ MRB_SPN_HoldFlagLot
+ )
+ )
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetScrapCost.sql b/Programmability/Functions/fnGetScrapCost.sql
new file mode 100644
index 0000000..eeb7652
--- /dev/null
+++ b/Programmability/Functions/fnGetScrapCost.sql
@@ -0,0 +1,70 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetScrapCost] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetScrapCost] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS FLOAT AS BEGIN -- Declare the return variable here
+ DECLARE @WaferCount INT DECLARE @DieCount INT DECLARE @ScrapWaferCount INT DECLARE @ScrapCost FLOAT DECLARE @ScrapDieCount INT DECLARE @TotalCost FLOAT DECLARE @PerWaferCost FLOAT DECLARE @PerDieCost FLOAT DECLARE @TotalScrapCost FLOAT DECLARE @LotStatusOptionID INT
+SET
+ @TotalScrapCost = 0 DECLARE ScrapCostCursor CURSOR FOR
+SELECT
+ L.TotalCost,
+ L.WaferCount,
+ L.DieCount,
+ S.ScrapCount,
+ L.LotStatusOptionID
+FROM
+ Lot L
+ INNER JOIN ScrapLot S ON L.IssueID = S.IssueID
+ AND L.LotNumber = S.LotNo
+WHERE
+ L.IssueID = @IssueID OPEN ScrapCostCursor FETCH NEXT
+FROM
+ ScrapCostCursor INTO @TotalCost,
+ @WaferCount,
+ @DieCount,
+ @ScrapWaferCount,
+ @LotStatusOptionID WHILE @ @FETCH_STATUS = 0 BEGIN
+SET
+ @PerWaferCost = 0
+SET
+ @PerDieCost = 0 IF @ScrapWaferCount > 0
+ AND @WaferCount > 0
+ AND @TotalCost > 0 BEGIN
+SET
+ @PerWaferCost = @TotalCost / @WaferCount;
+
+SET
+ @ScrapCost = @ScrapWaferCount * @PerWaferCost --PRINT @ScrapCost
+SET
+ @TotalScrapCost = @TotalScrapCost + @ScrapCost
+END
+ELSE IF @DieCount > 0
+AND @LotStatusOptionID = 2 BEGIN
+SET
+ @ScrapCost = @TotalCost
+SET
+ @TotalScrapCost = @TotalScrapCost + @ScrapCost
+END FETCH NEXT
+FROM
+ ScrapCostCursor INTO @TotalCost,
+ @WaferCount,
+ @ScrapDieCount,
+ @ScrapWaferCount,
+ @LotStatusOptionID
+END CLOSE ScrapCostCursor DEALLOCATE ScrapCostCursor -- Return the result of the function
+RETURN @TotalScrapCost
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetScrapCount.sql b/Programmability/Functions/fnGetScrapCount.sql
new file mode 100644
index 0000000..309f13e
--- /dev/null
+++ b/Programmability/Functions/fnGetScrapCount.sql
@@ -0,0 +1,32 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetScrapCount] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetScrapCount] (
+ -- Add the parameters for the function here
+ @IssueID INT
+ ) RETURNS INT AS BEGIN -- Declare the return variable here
+ DECLARE @ScrapCount INT -- Add the T-SQL statements to compute the return value here
+SELECT
+ @ScrapCount = SUM(ScrapCount)
+FROM
+ LotDisposition LD
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN ScrapLot S ON L.IssueID = S.IssueID
+ AND L.LotNumber = S.LotNo
+WHERE
+ LD.IssueID = @IssueID
+ AND ScrapCount > 0 -- Return the result of the function
+ RETURN @ScrapCount
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep1Roles.sql b/Programmability/Functions/fnGetStep1Roles.sql
new file mode 100644
index 0000000..daa2774
--- /dev/null
+++ b/Programmability/Functions/fnGetStep1Roles.sql
@@ -0,0 +1,109 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep1Roles] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep1Roles] (
+ -- Add the parameters for the function here
+ @IssueID INT,
+ @CurrentDate DATETIME
+ ) RETURNS TABLE AS RETURN (
+ -- Get Roles based on the Responibility
+ SELECT
+ DISTINCT IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ DocumentType D
+ INNER JOIN Workflows W ON D.DocumentTypeID = W.DocumentTypeID
+ INNER JOIN WorkFlowSteps WS ON W.WorkflowID = WS.WorkflowID
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN ResponsibilityIssue RI ON LTRIM(RTRIM(SRC.SubRoleCategoryItem)) = LTRIM(RTRIM(RI.Issue))
+ INNER JOIN LotDisposition LD ON RI.ResponsibilityIssueID = LD.ResponsibilityIssueID -- Get the em
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND WorkflowStepNumber = LD.CurrentStep
+ AND DocumentType = 'LotDisposition'
+ UNION
+ ALL -- Get YE Roles Based on Product and Gen
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND LTRIM(RTRIM(L.ProductFamily)) + '-G' + LTRIM(RTRIM(CONVERT(CHAR(10), L.Gen))) = SRC.SubRoleCategoryItem
+ AND RoleName = 'Yield Engineer'
+ UNION
+ ALL -- M_Suffix
+ SELECT
+ DISTINCT Ld.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ INNER JOIN LotStatusOption LSO ON L.LotStatusOptionID = LSO.LotStatusOptionID
+ WHERE
+ LD.IssueID = @IssueID
+ AND LSO.LotStatusOption = SRC.SubRoleCategoryItem
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep1RolesMA_YE.sql b/Programmability/Functions/fnGetStep1RolesMA_YE.sql
new file mode 100644
index 0000000..3096d87
--- /dev/null
+++ b/Programmability/Functions/fnGetStep1RolesMA_YE.sql
@@ -0,0 +1,50 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep1RolesMA_YE] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep1RolesMA_YE] (
+ -- Add the parameters for the function here
+ @IssueID INT,
+ @CurrentDate DATETIME
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND (SRC.SubRoleCategoryItem = 'MA-All')
+ AND (RoleName = 'Yield Engineer')
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep1RolesMA_YE_PE.sql b/Programmability/Functions/fnGetStep1RolesMA_YE_PE.sql
new file mode 100644
index 0000000..a39c4cd
--- /dev/null
+++ b/Programmability/Functions/fnGetStep1RolesMA_YE_PE.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep1RolesMA_YE_PE] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep1RolesMA_YE_PE] (@IssueID INT, @CurrentDate DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND (SRC.SubRoleCategoryItem = 'MA-All')
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep1RolesRH_YE.sql b/Programmability/Functions/fnGetStep1RolesRH_YE.sql
new file mode 100644
index 0000000..652a041
--- /dev/null
+++ b/Programmability/Functions/fnGetStep1RolesRH_YE.sql
@@ -0,0 +1,50 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep1RolesRH_YE] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep1RolesRH_YE] (
+ -- Add the parameters for the function here
+ @IssueID INT,
+ @CurrentDate DATETIME
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND (SRC.SubRoleCategoryItem = 'RH-All')
+ AND (RoleName = 'Yield Engineer')
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep1RolesRH_YE_PE.sql b/Programmability/Functions/fnGetStep1RolesRH_YE_PE.sql
new file mode 100644
index 0000000..f4abad9
--- /dev/null
+++ b/Programmability/Functions/fnGetStep1RolesRH_YE_PE.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep1RolesRH_YE_PE] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep1RolesRH_YE_PE] (@IssueID INT, @CurrentDate DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND (SRC.SubRoleCategoryItem = 'RH-All')
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep1Roles_PERequired.sql b/Programmability/Functions/fnGetStep1Roles_PERequired.sql
new file mode 100644
index 0000000..9d636a7
--- /dev/null
+++ b/Programmability/Functions/fnGetStep1Roles_PERequired.sql
@@ -0,0 +1,108 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep1Roles_PERequired] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep1Roles_PERequired] (
+ -- Add the parameters for the function here
+ @IssueID INT,
+ @CurrentDate DATETIME
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ DocumentType D
+ INNER JOIN Workflows W ON D.DocumentTypeID = W.DocumentTypeID
+ INNER JOIN WorkFlowSteps WS ON W.WorkflowID = WS.WorkflowID
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN ResponsibilityIssue RI ON LTRIM(RTRIM(SRC.SubRoleCategoryItem)) = LTRIM(RTRIM(RI.Issue))
+ INNER JOIN LotDisposition LD ON RI.ResponsibilityIssueID = LD.ResponsibilityIssueID -- Get the em
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND WorkflowStepNumber = LD.CurrentStep
+ AND DocumentType = 'LotDisposition'
+ UNION
+ ALL --YE and PE Rquired
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ AND LTRIM(RTRIM(L.ProductFamily)) + '-G' + LTRIM(RTRIM(CONVERT(CHAR(10), L.Gen))) = SRC.SubRoleCategoryItem
+ UNION
+ ALL -- M_Suffix
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ INNER JOIN LotStatusOption LSO ON L.LotStatusOptionID = LSO.LotStatusOptionID
+ WHERE
+ LD.IssueID = @IssueID
+ AND LSO.LotStatusOption = SRC.SubRoleCategoryItem
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep2Roles_GT_10Wafers.sql b/Programmability/Functions/fnGetStep2Roles_GT_10Wafers.sql
new file mode 100644
index 0000000..c721553
--- /dev/null
+++ b/Programmability/Functions/fnGetStep2Roles_GT_10Wafers.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep2Roles_GT_10Wafers] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep2Roles_GT_10Wafers] (@IssueID INT, @CurrentDate DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN LotDispoDepartment LDD ON LD.IssueID = LDD.IssueID
+ AND SRC.SubRoleCategoryID = LDD.DepartmentID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep2Roles_PlantManager.sql b/Programmability/Functions/fnGetStep2Roles_PlantManager.sql
new file mode 100644
index 0000000..7145110
--- /dev/null
+++ b/Programmability/Functions/fnGetStep2Roles_PlantManager.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep2Roles_PlantManager] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep2Roles_PlantManager] (@IssueID INT, @CurrentDate DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ AND (SRC.SubRoleCategoryItem = 'Plant Manager')
+ INNER JOIN LotDispoDepartment LDD ON LD.IssueID = LDD.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep2Roles_RhMaQdbPeMRB.sql b/Programmability/Functions/fnGetStep2Roles_RhMaQdbPeMRB.sql
new file mode 100644
index 0000000..d87cfcb
--- /dev/null
+++ b/Programmability/Functions/fnGetStep2Roles_RhMaQdbPeMRB.sql
@@ -0,0 +1,49 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep2Roles_RhMaQdbPeMRB] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep2Roles_RhMaQdbPeMRB] (@IssueID INT, @CurrentDate DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ AND (
+ SRC.SubRoleCategoryItem <> 'Facilities'
+ AND SRC.SubRoleCategoryItem <> 'Plant Manager'
+ AND SRC.SubRoleCategoryItem <> 'M_Suffix'
+ )
+ INNER JOIN LotDispoDepartment LDD ON LD.IssueID = LDD.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep3Role_QDB.sql b/Programmability/Functions/fnGetStep3Role_QDB.sql
new file mode 100644
index 0000000..7cf7623
--- /dev/null
+++ b/Programmability/Functions/fnGetStep3Role_QDB.sql
@@ -0,0 +1,44 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep3Role_QDB] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnGetStep3Role_QDB] (
+ -- Add the parameters for the function here
+ @IssueID INT,
+ @Current DATETIME
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @Current AS 'AssignedDate',
+ @Current AS 'NotifyDate',
+ @Current AS 'RoleAssignedDate',
+ 2 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ AND SRC.SubRoleCategoryItem = 'QDB'
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep3Roles_Fab.sql b/Programmability/Functions/fnGetStep3Roles_Fab.sql
new file mode 100644
index 0000000..e71bda7
--- /dev/null
+++ b/Programmability/Functions/fnGetStep3Roles_Fab.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep3Roles_Fab] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep3Roles_Fab] (@IssueID INT, @Current DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @Current AS 'AssignedDate',
+ @Current AS 'NotifyDate',
+ @Current AS 'RoleAssignedDate',
+ 2 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ AND SRC.SubRoleCategoryItem = 'Fab'
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @issueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnGetStep3Roles_Probe.sql b/Programmability/Functions/fnGetStep3Roles_Probe.sql
new file mode 100644
index 0000000..73b78e6
--- /dev/null
+++ b/Programmability/Functions/fnGetStep3Roles_Probe.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnGetStep3Roles_Probe] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnGetStep3Roles_Probe] (@IssueID INT, @Current DATETIME) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT LD.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @Current AS 'AssignedDate',
+ @Current AS 'NotifyDate',
+ @Current AS 'RoleAssignedDate',
+ 2 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Workflows W ON WS.WorkflowID = W.WorkflowID
+ INNER JOIN DocumentType D ON W.DocumentTypeID = D.DocumentTypeID
+ AND DocumentType = 'LotDisposition'
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ AND SRC.SubRoleCategoryItem = 'Probe'
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ WHERE
+ LD.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnIsUserITARCompliant.sql b/Programmability/Functions/fnIsUserITARCompliant.sql
new file mode 100644
index 0000000..73694cf
--- /dev/null
+++ b/Programmability/Functions/fnIsUserITARCompliant.sql
@@ -0,0 +1,27 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnIsUserITARCompliant] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fnIsUserITARCompliant] (@UserID INT) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ --SELECT SAM.* FROM [TEM-CDB02].SAM.dbo.vwSamActiveUsersWithSupervisorID SAM
+ SELECT
+ SAM.*
+ FROM
+ SAMUsers SAM
+ INNER JOIN Users U ON SAM.UserID = U.LoginID
+ WHERE
+ HasITARAccess = 1
+ AND U.UserID = @UserID -- Return the result of the function
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnLotDispositionLotSummary.sql b/Programmability/Functions/fnLotDispositionLotSummary.sql
new file mode 100644
index 0000000..1f0a81c
--- /dev/null
+++ b/Programmability/Functions/fnLotDispositionLotSummary.sql
@@ -0,0 +1,70 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnLotDispositionLotSummary] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnLotDispositionLotSummary](@IssueID int) RETURNS TABLE AS RETURN (
+ SELECT
+ SUM(
+ CASE
+ WHEN L.LotStatusOptionID IN (1, 4, 6)
+ AND L.DieCount > 0 THEN L.TotalCost -- Release, M_Suffix, CloseToQDB
+ WHEN S.ReleaseCount > 0
+ AND L.WaferCount > 0
+ AND L.TotalCost > 0 THEN S.ReleaseCount * (L.TotalCost / L.WaferCount)
+ ELSE 0
+ END
+ ) AS [TotalReleaseCost],
+ SUM(
+ CASE
+ WHEN S.ReleaseCount > 0
+ AND L.WaferCount > 0
+ AND L.TotalCost > 0 THEN S.ReleaseCount
+ ELSE 0
+ END
+ ) AS [TotalReleaseWaferCount],
+ SUM(
+ CASE
+ WHEN L.LotStatusOptionID IN (1, 4, 6) -- Release, M_Suffix, CloseToQDB
+ AND L.DieCount > 0 THEN L.DieCount
+ ELSE 0
+ END
+ ) AS [TotalDieReleaseCount],
+ SUM(
+ CASE
+ WHEN L.LotStatusOptionID = 2
+ AND L.DieCount > 0 THEN L.TotalCost -- Scrap
+ WHEN S.ScrapCount > 0
+ AND L.WaferCount > 0
+ AND L.TotalCost > 0 THEN S.ScrapCount * (L.TotalCost / L.WaferCount)
+ ELSE 0
+ END
+ ) AS [TotalScrapCost],
+ SUM(
+ CASE
+ WHEN S.ScrapCount > 0
+ AND L.WaferCount > 0
+ AND L.TotalCost > 0 THEN S.ScrapCount
+ ELSE 0
+ END
+ ) AS [TotalScrapWaferCount],
+ SUM(
+ CASE
+ WHEN L.LotStatusOptionID = 2
+ AND L.DieCount > 0 THEN L.DieCount -- Scrap
+ ELSE 0
+ END
+ ) AS [TotalScrapDieCount],
+ COUNT(L.LotNumber) AS LotCount
+ FROM
+ ScrapLot S
+ INNER JOIN Lot L ON S.IssueID = L.IssueID
+ AND S.LotNo = L.LotNumber
+ WHERE
+ S.IssueID = @IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnPartsRequestGetSubRolesForNextStep.sql b/Programmability/Functions/fnPartsRequestGetSubRolesForNextStep.sql
new file mode 100644
index 0000000..7779374
--- /dev/null
+++ b/Programmability/Functions/fnPartsRequestGetSubRolesForNextStep.sql
@@ -0,0 +1,30 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnPartsRequestGetSubRolesForNextStep] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnPartsRequestGetSubRolesForNextStep] (@PRNumber int) RETURNS varchar(100) AS BEGIN DECLARE @NextStep int = 0 DECLARE @r varchar(100)
+SELECT
+ @NextStep = CurrentStep + 1
+FROM
+ PartsRequest
+WHERE
+ PRNumber = @PRNumber
+SET
+ @r = CASE
+ WHEN @NextStep = 1 THEN 'Part Assignment'
+ WHEN @NextStep = 2 THEN 'Pre-Approver'
+ WHEN @NextStep = 3 THEN 'Tech Lead'
+ WHEN @NextStep = 4 THEN 'Finance'
+ WHEN @NextStep = 5 THEN 'SAP'
+ WHEN @NextStep = 6 THEN 'Source List & Info Record'
+ WHEN @NextStep = 7 THEN 'Buyer/Planner'
+ WHEN @NextStep = 8 THEN 'Close to Folder'
+ ELSE 'Part Assignment'
+ END RETURN @r
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnPlanConvertPlanNoToDisplayFormat.sql b/Programmability/Functions/fnPlanConvertPlanNoToDisplayFormat.sql
new file mode 100644
index 0000000..020e98f
--- /dev/null
+++ b/Programmability/Functions/fnPlanConvertPlanNoToDisplayFormat.sql
@@ -0,0 +1,28 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnPlanConvertPlanNoToDisplayFormat] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnPlanConvertPlanNoToDisplayFormat] (
+ -- Add the parameters for the function here
+ @PlanNo INT
+ ) RETURNS VARCHAR(10) AS BEGIN -- Declare the return variable here
+ DECLARE @Display VARCHAR(10) -- Add the T-SQL statements to compute the return value here
+SET
+ @Display = LTRIM(
+ RTRIM(
+ CAST(
+ 'P' + RIGHT(
+ '0000' + ISNULL(CAST(@PlanNo AS VARCHAR(10)), ''),
+ 5
+ ) AS VARCHAR(50)
+ )
+ )
+ ) -- Return the result of the function
+ RETURN @Display
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fnSplitCSV.sql b/Programmability/Functions/fnSplitCSV.sql
new file mode 100644
index 0000000..7c493f6
--- /dev/null
+++ b/Programmability/Functions/fnSplitCSV.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fnSplitCSV] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fnSplitCSV](@csv varchar(max)) RETURNS @r TABLE (Position int, Val varchar(max)) AS BEGIN DECLARE @I INT = 1 DECLARE @VAL VARCHAR(1000) DECLARE @SEPERATOR CHAR(1) = ',' DECLARE @SP INT DECLARE @WORK VARCHAR(MAX) = @csv WHILE PATINDEX('%' + @SEPERATOR + '%', @WORK) <> 0 BEGIN
+SELECT
+ @SP = PATINDEX('%' + @SEPERATOR + '%', @WORK)
+SELECT
+ @VAL = LEFT(@WORK, @SP - 1)
+SELECT
+ @WORK = STUFF(@WORK, 1, @SP, '')
+INSERT INTO
+ @r
+VALUES
+ (@I, @VAL)
+SET
+ @I = @I + 1
+END IF @WORK <> ''
+INSERT INTO
+ @r
+VALUES
+ (@I, @WORK) RETURN
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_Get8DAuditByUser.sql b/Programmability/Functions/fn_Get8DAuditByUser.sql
new file mode 100644
index 0000000..75cd124
--- /dev/null
+++ b/Programmability/Functions/fn_Get8DAuditByUser.sql
@@ -0,0 +1,48 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_Get8DAuditByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_Get8DAuditByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'Audit' AS DocumentType,
+ 'Audit' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT A.AuditNo as IssueID,
+ A.AuditNo DocID,
+ A.AuditDate,
+ '' AS LotNos,
+ '' AS 'PendingApprovers',
+ A.AuditTitle AS Title,
+ '' AS IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ A.AuditDate SubmitedDate,
+ NULL AS CloseDate,
+ '' AS ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ _8DAudit A
+ INNER JOIN Users U2 ON A.OriginatorID = U2.UserID
+ WHERE
+ A.OriginatorID = @UserID
+ AND (A.AuditStatus = 0)
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_Get8DCAByUser.sql b/Programmability/Functions/fn_Get8DCAByUser.sql
new file mode 100644
index 0000000..a155238
--- /dev/null
+++ b/Programmability/Functions/fn_Get8DCAByUser.sql
@@ -0,0 +1,132 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_Get8DCAByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_Get8DCAByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'CorrectiveAction' AS DocumentType,
+ 'CA' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT CA.CANo as IssueID,
+ CA.CANo as DocID,
+ CA.IssueDate,
+ '' AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ CA.CATitle AS Title,
+ CA.D2ProblemDescription IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ CA.CACompleteDate SubmitedDate,
+ CA.ClosedDate CloseDate,
+ A.ItemStatus,
+ CASE
+ WHEN Status = 1 THEN NULL
+ WHEN Status IN (10, 9, 3) THEN CA.D3DueDate
+ WHEN Status IN (4, 5, 6, 7) THEN CA.D5D7DueDate
+ WHEN Status = 11 THEN CA.FollowUpDate
+ ELSE CA.D8DueDate
+ END AS NextDueDate
+ FROM
+ _8DCorrectiveAction CA
+ INNER JOIN Approval A ON A.IssueID = CA.CANo
+ AND DocumentTypeID = 9
+ LEFT JOIN Users U2 ON CA.RequestorID = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT CA.CANo,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 9
+ AND A.IssueID = CA.CANo
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ _8DCorrectiveAction CA
+ ) AS pdg ON CA.CANo = pdg.CANo
+ WHERE
+ A.UserID = @UserID
+ AND Status NOT IN (1, 11)
+ AND CA.Deleted = 0
+ UNION
+ SELECT
+ DISTINCT CA.CANo as IssueID,
+ CA.CANo as DocID,
+ CA.IssueDate,
+ '' AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ CA.CATitle AS Title,
+ CA.D2ProblemDescription IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ CA.CACompleteDate SubmitedDate,
+ CA.ClosedDate CloseDate,
+ A.ItemStatus,
+ CASE
+ WHEN Status = 1 THEN NULL
+ WHEN Status IN (10, 9, 3) THEN CA.D3DueDate
+ WHEN Status IN (4, 5, 6, 7) THEN CA.D5D7DueDate
+ WHEN Status = 11 THEN CA.FollowUpDate
+ ELSE CA.D8DueDate
+ END AS NextDueDate
+ FROM
+ _8DCorrectiveAction CA
+ LEFT JOIN Approval A ON A.IssueID = CA.CANo
+ AND DocumentTypeID = 9
+ INNER JOIN Users U2 ON CA.RequestorID = U2.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT CA.CANo,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 9
+ AND A.IssueID = CA.CANo
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ _8DCorrectiveAction CA
+ ) AS pdg ON CA.CANo = pdg.CANo
+ WHERE
+ CA.QAID = @UserID
+ AND CA.ClosedDate IS NULL -- added the where clause below on 8/2/2019 RJK
+ AND Status <> 1
+ AND CA.Deleted = 0
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_Get8DCASectionByUser.sql b/Programmability/Functions/fn_Get8DCASectionByUser.sql
new file mode 100644
index 0000000..4e61291
--- /dev/null
+++ b/Programmability/Functions/fn_Get8DCASectionByUser.sql
@@ -0,0 +1,50 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_Get8DCASectionByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_Get8DCASectionByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'CorrectiveAction' AS DocumentType,
+ 'CA' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT CA.CANo as IssueID,
+ CA.CANo as DocID,
+ CA.IssueDate,
+ '' AS LotNos,
+ '' AS 'PendingApprovers',
+ CONCAT(A.DSection, ' Approval', ' - ', CA.CATitle) AS Title,
+ '' AS 'IssueDescription',
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ A.DateAssigned AS SubmitedDate,
+ '' AS CloseDate,
+ '' AS ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ _8DCorrectiveAction CA
+ INNER JOIN _8DSectionApproval A ON A.CaNo = CA.CANo
+ LEFT JOIN Users U2 ON CA.RequestorID = U2.UserID
+ WHERE
+ A.Approved IS NULL
+ AND A.UserId = @UserID
+ AND CA.Deleted = 0
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetChangeControl.sql b/Programmability/Functions/fn_GetChangeControl.sql
new file mode 100644
index 0000000..f11596d
--- /dev/null
+++ b/Programmability/Functions/fn_GetChangeControl.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetChangeControl] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetChangeControl] () RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'ChangeControl' AS DocumentType,
+ 'ChangeControl' AS SubDoc,
+ CC.PlanNumber AS IssueID,
+ CC.PlanNumber AS DocID,
+ CC.InsertTimeStamp AS IssueDate,
+ '' AS LotNos,
+ '' AS 'PendingApprovers',
+ Title,
+ ChangeDescription AS IssueDescription,
+ U.FirstName + ' ' + U.LastName AS Originator,
+ Dates.StartDate AS SubmitedDate,
+ ClosedDate AS CloseDate
+ FROM
+ CCChangeControl CC
+ LEFT JOIN Users U ON CC.OwnerID = U.UserID
+ LEFT JOIN (
+ SELECT
+ PlanNumber,
+ MIN(MeetingDate) AS StartDate,
+ MAX(MeetingDate) AS StatusDate
+ FROM
+ CCMeeting
+ GROUP BY
+ PlanNumber
+ ) AS Dates ON CC.PlanNumber = Dates.PlanNumber
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetECNs.sql b/Programmability/Functions/fn_GetECNs.sql
new file mode 100644
index 0000000..8b7cc2a
--- /dev/null
+++ b/Programmability/Functions/fn_GetECNs.sql
@@ -0,0 +1,67 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetECNs] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetECNs] () RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ 'ECN' AS DocumentType,
+ CASE
+ WHEN E.IsECN = 1 THEN 'ECN'
+ WHEN E.IsTECN = 1 THEN 'TECN'
+ WHEN E.IsEmergencyTECN = 1 THEN 'E-TECN'
+ ELSE 'ECN'
+ END AS SubDoc,
+ E.ECNNumber AS IssueID,
+ E.ECNNumber AS DocID,
+ IssueDate,
+ '' AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ DescriptionOfChange AS IssueDescription,
+ U.FirstName + ' ' + U.LastName AS Originator,
+ SubmitedDate,
+ CloseDate
+ FROM
+ ECN E
+ LEFT JOIN Users U ON E.OriginatorID = U.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT E.ECNNumber AS IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ )
+ AND A.IssueID = E.ECNNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ ECN E
+ ) AS pdg ON E.ECNNumber = pdg.IssueID
+ WHERE
+ E.Deleted = 0
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetECNsByUser.sql b/Programmability/Functions/fn_GetECNsByUser.sql
new file mode 100644
index 0000000..b39e00d
--- /dev/null
+++ b/Programmability/Functions/fn_GetECNsByUser.sql
@@ -0,0 +1,170 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetECNsByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetECNsByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'ECN' AS DocumentType,
+ *
+ FROM
+ (
+ SELECT
+ CASE
+ WHEN E.IsECN = 1 THEN 'ECN'
+ WHEN E.IsTECN = 1 THEN 'TECN'
+ WHEN E.IsEmergencyTECN = 1 THEN 'E-TECN'
+ ELSE 'ECN'
+ END AS SubDoc,
+ E.ECNNumber AS IssueID,
+ E.ECNNumber AS DocID,
+ IssueDate,
+ '' AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ DescriptionOfChange AS IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ A.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ ECN E
+ INNER JOIN Approval A ON A.IssueID = E.ECNNumber
+ AND (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ INNER JOIN Users U2 ON E.OriginatorID = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT E.ECNNumber AS IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ AND A.IssueID = E.ECNNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ ECN E
+ ) AS pdg ON E.ECNNumber = pdg.IssueID
+ WHERE
+ A.UserID = @UserID
+ AND E.Deleted = 0
+ AND (
+ ItemStatus = 0
+ OR (
+ ItemStatus = 2
+ AND DisplayDeniedDocument = 1
+ )
+ OR (
+ A.ItemStatus = 8
+ AND (
+ ExtensionDate > GETDATE()
+ OR ExpirationDate > GETDATE()
+ )
+ )
+ )
+ AND E.CancellationApproved = 0 --List of documents orginated by the user
+ UNION
+ ALL
+ SELECT
+ DISTINCT CASE
+ WHEN E.IsECN = 1 THEN 'ECN'
+ WHEN E.IsTECN = 1 THEN 'TECN'
+ WHEN E.IsEmergencyTECN = 1 THEN 'E-TECN'
+ ELSE 'ECN'
+ END AS SubDoc,
+ E.ECNNumber AS IssueID,
+ E.ECNNumber AS DocID,
+ IssueDate,
+ '' AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ DescriptionOfChange AS IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ AP.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ ECN E
+ INNER JOIN Users U1 ON E.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP ON E.ECNNumber = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT E.ECNNumber AS IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ AND A.IssueID = E.ECNNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ ECN E
+ ) AS pdg ON E.ECNNumber = pdg.IssueID
+ WHERE
+ U1.UserID = @UserID
+ AND E.Deleted = 0
+ AND E.CancellationApproved = 0
+ AND E.ECNNumber NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval
+ WHERE
+ IssueID = E.ECNNumber
+ AND ItemStatus <> 2
+ AND ItemStatus <> 8
+ AND (
+ DocumentTypeID = 3
+ OR DocumentTypeID = 4
+ )
+ )
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetECNsByUserPrev.sql b/Programmability/Functions/fn_GetECNsByUserPrev.sql
new file mode 100644
index 0000000..c7afbef
--- /dev/null
+++ b/Programmability/Functions/fn_GetECNsByUserPrev.sql
@@ -0,0 +1,155 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetECNsByUserPrev] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetECNsByUserPrev] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'ECN' AS DocumentType,
+ *
+ FROM
+ (
+ SELECT
+ CASE
+ WHEN E.IsECN = 1 THEN 'ECN'
+ WHEN E.IsTECN = 1 THEN 'TECN'
+ WHEN E.IsEmergencyTECN = 1 THEN 'E-TECN'
+ ELSE 'ECN'
+ END AS SubDoc,
+ E.ECNNumber AS IssueID,
+ IssueDate,
+ '' AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ DescriptionOfChange AS IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ A.ItemStatus
+ FROM
+ ECN E
+ INNER JOIN Approval A ON A.IssueID = E.ECNNumber
+ AND (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ INNER JOIN Users U2 ON E.OriginatorID = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT E.ECNNumber AS IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ AND A.IssueID = E.ECNNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ ECN E
+ ) AS pdg ON E.ECNNumber = pdg.IssueID
+ WHERE
+ A.UserID = @UserID
+ AND E.Deleted = 0
+ AND (
+ ItemStatus = 0
+ OR (
+ ItemStatus = 2
+ AND DisplayDeniedDocument = 1
+ )
+ ) --List of documents orginated by the user
+ UNION
+ ALL
+ SELECT
+ DISTINCT CASE
+ WHEN E.IsECN = 1 THEN 'ECN'
+ WHEN E.IsTECN = 1 THEN 'TECN'
+ WHEN E.IsEmergencyTECN = 1 THEN 'E-TECN'
+ ELSE 'ECN'
+ END AS SubDoc,
+ E.ECNNumber AS IssueID,
+ IssueDate,
+ '' AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ DescriptionOfChange AS IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ AP.ItemStatus
+ FROM
+ ECN E
+ INNER JOIN Users U1 ON E.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP ON E.ECNNumber = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT E.ECNNumber AS IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ AND A.IssueID = E.ECNNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ ECN E
+ ) AS pdg ON E.ECNNumber = pdg.IssueID
+ WHERE
+ U1.UserID = @UserID
+ AND E.ECNNumber NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval
+ WHERE
+ IssueID = E.ECNNumber
+ AND ItemStatus <> 2
+ AND (
+ DocumentTypeID = 3
+ OR DocumentTypeID = 4
+ )
+ )
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetExpiredTECNByOriginator.sql b/Programmability/Functions/fn_GetExpiredTECNByOriginator.sql
new file mode 100644
index 0000000..7ed0d2f
--- /dev/null
+++ b/Programmability/Functions/fn_GetExpiredTECNByOriginator.sql
@@ -0,0 +1,88 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetExpiredTECNByOriginator] ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetExpiredTECNByOriginator] (
+ -- Add the parameters for the function here
+ @UserID INT,
+ @MaxDays INT
+ ) RETURNS TABLE AS RETURN (
+ SELECT
+ DISTINCT 'ECN' AS DocumentType,
+ CASE
+ WHEN E.IsECN = 1 THEN 'ECN'
+ WHEN E.IsTECN = 1 THEN 'TECN'
+ WHEN E.IsEmergencyTECN = 1 THEN 'E-TECN'
+ ELSE 'ECN'
+ END AS SubDoc,
+ E.ECNNumber AS IssueID,
+ E.ECNNumber AS DocID,
+ IssueDate,
+ '' AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ DescriptionOfChange AS IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ ECN E
+ INNER JOIN Users U1 ON E.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP ON E.ECNNumber = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT E.ECNNumber AS IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ (
+ A.DocumentTypeID = 3
+ OR A.DocumentTypeID = 4
+ OR A.DocumentTypeID = 5
+ )
+ AND A.IssueID = E.ECNNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ ECN E
+ ) AS pdg ON E.ECNNumber = pdg.IssueID
+ WHERE
+ E.OriginatorID = @UserID
+ AND E.IsTECN = 1
+ AND (
+ (
+ ExtensionDate IS NULL
+ AND DATEDIFF(dd, ExpirationDate, GETDATE()) BETWEEN 0
+ AND @MaxDays
+ )
+ OR (
+ DATEDIFF(dd, ExtensionDate, GETDATE()) BETWEEN 0
+ AND @MaxDays
+ )
+ )
+ AND CloseDate IS NOT NULL
+ AND ExpirationDate < GETDATE()
+ AND Deleted = 0
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetLTWorkRequests.sql b/Programmability/Functions/fn_GetLTWorkRequests.sql
new file mode 100644
index 0000000..c51c75e
--- /dev/null
+++ b/Programmability/Functions/fn_GetLTWorkRequests.sql
@@ -0,0 +1,59 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetLTWorkRequests] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetLTWorkRequests] () RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'LotTraveler' AS DocumentType,
+ 'LotTraveler' AS SubDoc,
+ W.SWRNumber AS IssueID,
+ W.ID AS DocID,
+ W.OriginatedDate AS IssueDate,
+ W.LotNumber AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ PurposeOfRequest,
+ U.FirstName + ' ' + U.LastName AS Originator,
+ SubmitedDate,
+ CloseDate
+ FROM
+ LTWorkRequest W
+ LEFT JOIN Users U ON W.OriginatorID = U.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT W.ID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 6
+ AND A.IssueID = W.ID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LTWorkRequest W
+ ) AS pdg ON W.ID = pdg.ID
+ WHERE
+ IsCurrentRevision = 1
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetLTWorkRequestsByUser.sql b/Programmability/Functions/fn_GetLTWorkRequestsByUser.sql
new file mode 100644
index 0000000..5725deb
--- /dev/null
+++ b/Programmability/Functions/fn_GetLTWorkRequestsByUser.sql
@@ -0,0 +1,140 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetLTWorkRequestsByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetLTWorkRequestsByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'LotTraveler' AS DocumentType,
+ 'LotTraveler' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT W.SWRNumber AS IssueID,
+ W.ID AS DocID,
+ W.OriginatedDate AS IssueDate,
+ W.LotNumber AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ PurposeOfRequest,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ A.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ LTWorkRequest W WITH(NOLOCK)
+ INNER JOIN Approval A WITH(NOLOCK) ON A.IssueID = W.ID
+ AND DocumentTypeID = 6
+ INNER JOIN Users U2 WITH(NOLOCK) ON W.OriginatorID = U2.UserID
+ INNER JOIN Users U1 WITH(NOLOCK) ON A.UserID = U1.UserID --LEFT JOIN
+ --(SELECT DISTINCT M.MRBNumber, STUFF
+ -- ((SELECT '/' + CAST(L.LotNumber AS varchar(512))
+ -- FROM MRBLot L
+ -- WHERE L.MRBNumber = M.MRBNumber FOR XML PATH('')), 1, 1, '') AS LotNo
+ -- FROM MRB M) AS SQ
+ --ON M.MRBNumber = SQ.MRBNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT W.ID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A WITH(NOLOCK)
+ INNER JOIN Users U WITH(NOLOCK) ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 6
+ AND A.IssueID = W.ID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LTWorkRequest W WITH(NOLOCK)
+ ) AS pdg ON W.ID = pdg.ID
+ WHERE
+ A.UserID = @UserID
+ AND (ItemStatus = 0)
+ AND IsCurrentRevision = 1
+ UNION
+ ALL
+ SELECT
+ DISTINCT W.SWRNumber AS IssueID,
+ W.ID AS DocID,
+ W.OriginatedDate AS IssueDate,
+ W.LotNumber AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ PurposeOfRequest,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ AP.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ LTWorkRequest W WITH(NOLOCK)
+ INNER JOIN Users U1 WITH(NOLOCK) ON W.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP WITH(NOLOCK) ON W.ID = AP.IssueID --LEFT JOIN
+ --(SELECT DISTINCT LD.IssueID, STUFF
+ -- ((SELECT '/' + CAST(L.LotNumber AS varchar(512))
+ -- FROM Lot L
+ -- WHERE L.IssueID = LD.IssueID FOR XML PATH('')), 1, 1, '') AS LotNo
+ -- FROM LotDisposition LD) AS SQ
+ --ON LD.IssueID = SQ.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT W.ID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A WITH(NOLOCK)
+ INNER JOIN Users U WITH(NOLOCK) ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 6
+ AND A.IssueID = W.ID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LTWorkRequest W WITH(NOLOCK)
+ ) AS pdg ON W.ID = pdg.ID
+ WHERE
+ U1.UserID = @UserID
+ AND W.ID NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval WITH(NOLOCK)
+ WHERE
+ IssueID = W.ID
+ AND ItemStatus <> 2
+ AND DocumentTypeID = 6
+ )
+ AND IsCurrentRevision = 1
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetLotDispositions.sql b/Programmability/Functions/fn_GetLotDispositions.sql
new file mode 100644
index 0000000..864c662
--- /dev/null
+++ b/Programmability/Functions/fn_GetLotDispositions.sql
@@ -0,0 +1,76 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetLotDispositions] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetLotDispositions] () RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ 'LotDisposition' AS DocumentType,
+ 'LotDisposition' AS SubDoc,
+ LD.IssueID,
+ LD.IssueID AS DocID,
+ IssueDate,
+ SQ.LotNo AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U.FirstName + ' ' + U.LastName AS Originator,
+ SubmitedDate,
+ CloseDate
+ FROM
+ LotDisposition LD
+ LEFT JOIN Users U ON LD.OriginatorID = U.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = LD.IssueID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ LotDisposition LD
+ ) AS SQ ON LD.IssueID = SQ.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ A.DocumentTypeID = 1
+ AND A.IssueID = LD.IssueID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LotDisposition LD
+ ) AS pdg ON LD.IssueID = pdg.IssueID
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetLotDispositionsByUser.sql b/Programmability/Functions/fn_GetLotDispositionsByUser.sql
new file mode 100644
index 0000000..2be0c71
--- /dev/null
+++ b/Programmability/Functions/fn_GetLotDispositionsByUser.sql
@@ -0,0 +1,170 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetLotDispositionsByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetLotDispositionsByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'LotDisposition' AS DocumentType,
+ 'LotDisposition' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT LD.IssueID,
+ LD.IssueID AS DocID,
+ IssueDate,
+ ISNULL(SQ.LotNo, '') AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ A.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ LotDisposition LD
+ INNER JOIN Approval A ON A.IssueID = LD.IssueID
+ AND DocumentTypeID = 1
+ LEFT JOIN Users U2 ON LD.OriginatorID = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = LD.IssueID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ LotDisposition LD
+ ) AS SQ ON LD.IssueID = SQ.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 1
+ AND A.IssueID = LD.IssueID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LotDisposition LD
+ ) AS pdg ON LD.IssueID = pdg.IssueID
+ WHERE
+ A.UserID = @UserID
+ AND (
+ ItemStatus = 0
+ OR (
+ ItemStatus = 2
+ AND DisplayDeniedDocument = 1
+ )
+ )
+ UNION
+ ALL
+ SELECT
+ DISTINCT LD.IssueID,
+ LD.IssueID AS DocID,
+ IssueDate,
+ ISNULL(SQ.LotNo, '') AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ AP.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ LotDisposition LD
+ INNER JOIN Users U1 ON LD.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP ON LD.IssueID = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = LD.IssueID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ LotDisposition LD
+ ) AS SQ ON LD.IssueID = SQ.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50)) + '(' + A.RoleName + ')'
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 1
+ AND A.IssueID = LD.IssueID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LotDisposition LD
+ ) AS pdg ON LD.IssueID = pdg.IssueID
+ WHERE
+ U1.UserID = @UserID
+ AND LD.IssueID NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval
+ WHERE
+ IssueID = LD.IssueID
+ AND ItemStatus <> 2
+ AND DocumentTypeID = 1
+ )
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetLotDispositionsByUserPrev.sql b/Programmability/Functions/fn_GetLotDispositionsByUserPrev.sql
new file mode 100644
index 0000000..5b73a89
--- /dev/null
+++ b/Programmability/Functions/fn_GetLotDispositionsByUserPrev.sql
@@ -0,0 +1,166 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetLotDispositionsByUserPrev] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetLotDispositionsByUserPrev] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'LotDisposition' AS DocumentType,
+ 'LotDisposition' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT LD.IssueID,
+ IssueDate,
+ ISNULL(SQ.LotNo, '') AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ A.ItemStatus
+ FROM
+ LotDisposition LD
+ INNER JOIN Approval A ON A.IssueID = LD.IssueID
+ AND DocumentTypeID = 1
+ INNER JOIN Users U2 ON LD.OriginatorID = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = LD.IssueID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ LotDisposition LD
+ ) AS SQ ON LD.IssueID = SQ.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 1
+ AND A.IssueID = LD.IssueID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LotDisposition LD
+ ) AS pdg ON LD.IssueID = pdg.IssueID
+ WHERE
+ A.UserID = @UserID
+ AND (
+ ItemStatus = 0
+ OR (
+ ItemStatus = 2
+ AND DisplayDeniedDocument = 1
+ )
+ )
+ UNION
+ ALL
+ SELECT
+ DISTINCT LD.IssueID,
+ IssueDate,
+ ISNULL(SQ.LotNo, '') AS LotNos,
+ ISNULL(pdg.Names, '') AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ AP.ItemStatus
+ FROM
+ LotDisposition LD
+ INNER JOIN Users U1 ON LD.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP ON LD.IssueID = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ Lot L
+ WHERE
+ L.IssueID = LD.IssueID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ LotDisposition LD
+ ) AS SQ ON LD.IssueID = SQ.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT LD.IssueID,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 1
+ AND A.IssueID = LD.IssueID
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ LotDisposition LD
+ ) AS pdg ON LD.IssueID = pdg.IssueID
+ WHERE
+ U1.UserID = @UserID
+ AND LD.IssueID NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval
+ WHERE
+ IssueID = LD.IssueID
+ AND ItemStatus <> 2
+ AND DocumentTypeID = 1
+ )
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetMRBByUser.sql b/Programmability/Functions/fn_GetMRBByUser.sql
new file mode 100644
index 0000000..515e7bc
--- /dev/null
+++ b/Programmability/Functions/fn_GetMRBByUser.sql
@@ -0,0 +1,163 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetMRBByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetMRBByUser] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'MRB' AS DocumentType,
+ 'MRB' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT M.MRBNumber as IssueID,
+ M.MRBNumber as DocID,
+ M.SubmittedDate AS IssueDate,
+ SQ.LotNo AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmittedDate,
+ CloseDate,
+ A.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ MRB M
+ INNER JOIN Approval A ON A.IssueID = M.MRBNumber
+ INNER JOIN Users U2 ON M.OriginatorID = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ MRBAction L
+ WHERE
+ L.MRBNumber = M.MRBNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ MRB M
+ ) AS SQ ON M.MRBNumber = SQ.MRBNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ A.IssueID = M.MRBNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ MRB M
+ ) AS pdg ON M.MRBNumber = pdg.MRBNumber
+ WHERE
+ A.UserID = @UserID
+ AND (ItemStatus = 0) --List of documents orginated by the user
+ UNION
+ ALL
+ SELECT
+ DISTINCT M.MRBNumber AS IssueID,
+ M.MRBNumber as DocID,
+ M.SubmittedDate AS IssueDate,
+ SQ.LotNo AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ M.SubmittedDate AS SubmitedDate,
+ M.CloseDate AS CloseDate,
+ AP.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ MRB M
+ INNER JOIN Users U1 ON M.OriginatorID = U1.UserID
+ LEFT JOIN Approval AP ON M.MRBNumber = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ MRBAction L
+ WHERE
+ L.MRBNumber = M.MRBNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ MRB M
+ ) AS SQ ON M.MRBNumber = SQ.MRBNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 2
+ AND A.IssueID = M.MRBNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ MRB M
+ ) AS pdg ON M.MRBNumber = pdg.MRBNumber
+ WHERE
+ U1.UserID = @UserID
+ AND AP.DocumentTypeID = 2
+ AND M.MRBNumber NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval
+ WHERE
+ IssueID = M.MRBNumber
+ AND ItemStatus = 1
+ AND DocumentTypeID = 2
+ )
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetMRBByUserPrev.sql b/Programmability/Functions/fn_GetMRBByUserPrev.sql
new file mode 100644
index 0000000..d030cb5
--- /dev/null
+++ b/Programmability/Functions/fn_GetMRBByUserPrev.sql
@@ -0,0 +1,161 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetMRBByUserPrev] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetMRBByUserPrev] (
+ -- Add the parameters for the function here
+ @UserID INT
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT 'MRB' AS DocumentType,
+ 'MRB' AS SubDoc,
+ *
+ FROM
+ (
+ SELECT
+ DISTINCT M.MRBNumber as IssueID,
+ M.MRBRaisedDate AS IssueDate,
+ SQ.LotNo AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U2.FirstName + ' ' + U2.LastName AS Originator,
+ SubmitedDate,
+ CloseDate,
+ A.ItemStatus
+ FROM
+ MRB M
+ INNER JOIN Approval A ON A.IssueID = M.MRBNumber
+ AND DocumentTypeID = 2
+ INNER JOIN Users U2 ON M.Owner = U2.UserID
+ INNER JOIN Users U1 ON A.UserID = U1.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ MRBLot L
+ WHERE
+ L.MRBNumber = M.MRBNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ MRB M
+ ) AS SQ ON M.MRBNumber = SQ.MRBNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 2
+ AND A.IssueID = M.MRBNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ MRB M
+ ) AS pdg ON M.MRBNumber = pdg.MRBNumber
+ WHERE
+ A.UserID = @UserID
+ AND (ItemStatus = 0) --List of documents orginated by the user
+ UNION
+ ALL
+ SELECT
+ DISTINCT M.MRBNumber AS IssueID,
+ M.MRBRaisedDate AS IssueDate,
+ SQ.LotNo AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ M.SubmitedDate AS SubmitedDate,
+ M.CloseDate AS CloseDate,
+ AP.ItemStatus
+ FROM
+ MRB M
+ INNER JOIN Users U1 ON M.Owner = U1.UserID
+ LEFT JOIN Approval AP ON M.MRBNumber = AP.IssueID
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ MRBLot L
+ WHERE
+ L.MRBNumber = M.MRBNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ MRB M
+ ) AS SQ ON M.MRBNumber = SQ.MRBNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ DocumentTypeID = 2
+ AND A.IssueID = M.MRBNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ MRB M
+ ) AS pdg ON M.MRBNumber = pdg.MRBNumber
+ WHERE
+ U1.UserID = @UserID
+ AND AP.DocumentTypeID = 2
+ AND M.MRBNumber NOT IN (
+ SELECT
+ IssueID
+ FROM
+ Approval
+ WHERE
+ IssueID = M.MRBNumber
+ AND ItemStatus = 1
+ AND DocumentTypeID = 2
+ )
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetMRBs.sql b/Programmability/Functions/fn_GetMRBs.sql
new file mode 100644
index 0000000..bd4b067
--- /dev/null
+++ b/Programmability/Functions/fn_GetMRBs.sql
@@ -0,0 +1,76 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetMRBs] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetMRBs] () RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ 'MRB' AS DocumentType,
+ 'MRB' AS SubDoc,
+ M.MRBNumber AS IssueID,
+ M.MRBNumber AS DocID,
+ M.SubmittedDate IssueDate,
+ SQ.LotNo AS LotNos,
+ pdg.Names AS 'PendingApprovers',
+ Title,
+ M.IssueDescription,
+ U.FirstName + ' ' + U.LastName AS Originator,
+ SubmittedDate,
+ CloseDate
+ FROM
+ MRB M
+ LEFT JOIN Users U ON M.OriginatorID = U.UserID
+ LEFT JOIN (
+ SELECT
+ DISTINCT M.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(L.LotNumber AS varchar(512))
+ FROM
+ MRBLot L
+ WHERE
+ L.MRBNumber = M.MRBNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LotNo
+ FROM
+ MRB M
+ ) AS SQ ON m.MRBNumber = SQ.MRBNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT m.MRBNumber,
+ STUFF (
+ (
+ SELECT
+ '/' + CAST(U.FirstName AS varchar(50)) + ' ' + CAST(U.LastName AS varchar(50))
+ FROM
+ Approval A
+ INNER JOIN Users U ON A.UserID = U.UserID
+ WHERE
+ A.DocumentTypeID = 2
+ AND A.IssueID = m.MRBNumber
+ AND ItemStatus = 0 FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Names
+ FROM
+ MRB m
+ ) AS pdg ON M.MRBNumber = pdg.MRBNumber
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetMeetingAI_Responsibles.sql b/Programmability/Functions/fn_GetMeetingAI_Responsibles.sql
new file mode 100644
index 0000000..cd648d6
--- /dev/null
+++ b/Programmability/Functions/fn_GetMeetingAI_Responsibles.sql
@@ -0,0 +1,45 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetMeetingAI_Responsibles] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetMeetingAI_Responsibles] (
+ -- Add the parameters for the function here
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT AI.ID AS MeetingActionItemID,
+ STUFF (
+ (
+ SELECT
+ ', ' + LTRIM(
+ RTRIM(
+ CAST(U.FirstName + ' ' + U.LastName AS VARCHAR(50))
+ )
+ )
+ FROM
+ CCMeetingActionItemResponsible AIR
+ INNER JOIN Users U ON AIR.ActionItemResponsible = U.UserID
+ WHERE
+ AI.ID = AIR.MeetingActionItemID
+ AND AI.ClosedDate IS NULL FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Responsibles
+ FROM
+ CCMeetingActionItem AI
+ WHERE
+ AI.ClosedDate IS NOT NULL
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetMeetingAI_Responsibles_ByCC.sql b/Programmability/Functions/fn_GetMeetingAI_Responsibles_ByCC.sql
new file mode 100644
index 0000000..3e9d186
--- /dev/null
+++ b/Programmability/Functions/fn_GetMeetingAI_Responsibles_ByCC.sql
@@ -0,0 +1,43 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetMeetingAI_Responsibles_ByCC] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetMeetingAI_Responsibles_ByCC] (
+ -- Add the parameters for the function here
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ SELECT
+ DISTINCT M.MeetingID,
+ STUFF (
+ (
+ SELECT
+ ', ' + LTRIM(
+ RTRIM(
+ CAST(U.FirstName + ' ' + U.LastName AS VARCHAR(50))
+ )
+ )
+ FROM
+ vCCMeetingActionResponsible AIR
+ INNER JOIN Users U ON AIR.ActionItemResponsible = U.UserID
+ INNER JOIN CCMeeting CM ON CM.MeetingID = AIR.MeetingID
+ WHERE
+ M.meetingID = AIR.MeetingID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Responsibles
+ FROM
+ CCMeeting M
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetPRs.sql b/Programmability/Functions/fn_GetPRs.sql
new file mode 100644
index 0000000..94dde88
--- /dev/null
+++ b/Programmability/Functions/fn_GetPRs.sql
@@ -0,0 +1,30 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetPRs] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fn_GetPRs]() RETURNS TABLE AS RETURN (
+ SELECT
+ 'PartsRequest' AS DocumentType,
+ 'PR' AS SubDoc,
+ PR.PRNumber AS IssueID,
+ PR.PRNumber AS DocID,
+ CreateDate AS IssueDate,
+ '' AS LotNos,
+ dbo.fnGetApprovalFullNames(PR.PRNumber, 10, ' / ', 0, 1, 1, 0, 0) AS 'PendingApprovers',
+ Title,
+ Description AS IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitDate AS SubmitedDate,
+ CloseDate
+ FROM
+ PartsRequest PR
+ INNER JOIN Users U1 ON PR.RequestorID = U1.UserID
+ WHERE
+ CurrentStep >= 0
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetPRsByUser.sql b/Programmability/Functions/fn_GetPRsByUser.sql
new file mode 100644
index 0000000..c1ca1d1
--- /dev/null
+++ b/Programmability/Functions/fn_GetPRsByUser.sql
@@ -0,0 +1,47 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetPRsByUser] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE FUNCTION [dbo].[fn_GetPRsByUser] (@UserID INT) RETURNS TABLE AS RETURN (
+ SELECT
+ DISTINCT 'PartsRequest' AS DocumentType,
+ *
+ FROM
+ (
+ SELECT
+ 'Parts Request' AS SubDoc,
+ PR.PRNumber AS IssueID,
+ PR.PRNumber AS DocID,
+ CreateDate AS IssueDate,
+ '' AS LotNos,
+ dbo.fnGetApprovalFullNames(PR.PRNumber, 10, ' / ', 0, 1, 1, 0, 0) AS 'PendingApprovers',
+ Title,
+ Description AS IssueDescription,
+ U1.FirstName + ' ' + U1.LastName AS Originator,
+ SubmitDate AS SubmitedDate,
+ CloseDate,
+ A.ItemStatus,
+ NULL AS NextDueDate
+ FROM
+ PartsRequest PR
+ INNER JOIN Approval A ON A.IssueID = PR.PRNumber
+ AND A.DocumentTypeID = 10 --INNER JOIN Users U2 ON PR.OriginatorID = U2.UserID
+ INNER JOIN Users U1 ON PR.RequestorID = U1.UserID
+ WHERE
+ (A.UserID = @UserID)
+ AND (
+ ItemStatus = 0
+ OR (
+ ItemStatus = 2
+ AND DisplayDeniedDocument = 1
+ )
+ )
+ AND CurrentStep >= 0
+ ) AS A
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_GetRole_MSuffix.sql b/Programmability/Functions/fn_GetRole_MSuffix.sql
new file mode 100644
index 0000000..0b67541
--- /dev/null
+++ b/Programmability/Functions/fn_GetRole_MSuffix.sql
@@ -0,0 +1,48 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_GetRole_MSuffix] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_GetRole_MSuffix] (
+ -- Add the parameters for the function here
+ @IssueID INT,
+ @CurrentDate DATETIME
+ ) RETURNS TABLE AS RETURN (
+ -- Add the SELECT statement with parameter references here
+ -- M_Suffix
+ SELECT
+ DISTINCT Ld.IssueID,
+ R.RoleName,
+ SRC.SubRoleCategoryItem AS 'SubRole',
+ U.UserID,
+ SR.SubRoleID,
+ 0 AS 'ItemStatus',
+ WS.WorkflowStepNumber AS 'Step',
+ @CurrentDate AS 'AssignedDate',
+ @CurrentDate AS 'NotifyDate',
+ @CurrentDate AS 'RoleAssignedDate',
+ 1 AS ApprovalType
+ FROM
+ LotDisposition LD
+ INNER JOIN WorkflowSteps WS ON LD.CurrentStep = WS.WorkflowStepNumber
+ INNER JOIN Role R ON WS.RoleID = R.RoleID
+ INNER JOIN SubRole SR ON R.RoleID = SR.RoleID
+ INNER JOIN SubRoleCategory SRC ON SR.SubRoleCategoryID = SRC.SubRoleCategoryID
+ INNER JOIN Lot L ON LD.IssueID = L.IssueID
+ INNER JOIN UserSubRole USR ON SR.SubRoleID = USR.SubRoleID
+ INNER JOIN Users U ON U.UserID = USR.UserID
+ INNER JOIN LotStatusOption LSO ON L.LotStatusOptionID = LSO.LotStatusOptionID
+ WHERE
+ LD.IssueID = @IssueID
+ AND LSO.LotStatusOption = SRC.SubRoleCategoryItem
+ )
+GO
\ No newline at end of file
diff --git a/Programmability/Functions/fn_IsECNITAR.sql b/Programmability/Functions/fn_IsECNITAR.sql
new file mode 100644
index 0000000..ec90ea4
--- /dev/null
+++ b/Programmability/Functions/fn_IsECNITAR.sql
@@ -0,0 +1,40 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: UserDefinedFunction [dbo].[fn_IsECNITAR] Script Date: 11/21/2024 11:31:55 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE FUNCTION [dbo].[fn_IsECNITAR] (
+ -- Add the parameters for the function here
+ @ECNNumber INT
+ ) RETURNS INT AS BEGIN -- Declare the return variable here
+ DECLARE @Count INT -- Add the T-SQL statements to compute the return value here
+SET
+ @Count = (
+ SELECT
+ COUNT(*)
+ FROM
+ ECN E
+ WHERE
+ (
+ (
+ E.IsRH = 1
+ AND E.IsAU = 0
+ AND E.IsIndustrial = 0
+ AND E.IsMA = 0
+ )
+ OR (IsDocEC = 1)
+ )
+ AND E.ECNNumber = @ECNNumber
+ ) -- Return the result of the function
+ RETURN @Count
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/AddUserToTrainingGroup.sql b/Programmability/Stored Procedures/AddUserToTrainingGroup.sql
new file mode 100644
index 0000000..e6f6cca
--- /dev/null
+++ b/Programmability/Stored Procedures/AddUserToTrainingGroup.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[AddUserToTrainingGroup] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[AddUserToTrainingGroup] -- Add the parameters for the stored procedure here
+ @GroupID INT,
+ @UserID INT,
+ @UserFullName VARCHAR(150) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+INSERT INTO
+ TrainingGroupMembers (TrainingGroupID, UserID, FullName)
+VALUES
+ (@GroupID, @UserID, @UserFullName)
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/AnalyzeLotAncestry.sql b/Programmability/Stored Procedures/AnalyzeLotAncestry.sql
new file mode 100644
index 0000000..3c30606
--- /dev/null
+++ b/Programmability/Stored Procedures/AnalyzeLotAncestry.sql
@@ -0,0 +1,329 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[AnalyzeLotAncestry] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE PROCEDURE [dbo].[AnalyzeLotAncestry] @LotNo varchar(20),
+ @IncidentTime datetime = NULL,
+ @LogIssueID int = NULL,
+ @LogDocumentType int = NULL,
+ @LogParms xml = NULL,
+ @AnalysisType CHAR(1) = NULL AS BEGIN
+SET
+ NOCOUNT ON DECLARE @RootLotNo varchar(20) = @LotNo DECLARE @IncidentLotNo varchar(20) = @LotNo IF @LotNo LIKE '%.%' BEGIN
+SET
+ @RootLotNo = LEFT(@LotNo, CHARINDEX('.', @LotNo)) + '1'
+SET
+ @IncidentLotNo = @LotNo
+END DECLARE @sql nvarchar(max) DECLARE @lots TABLE(LotNo varchar(20), Queried bit) DECLARE @results TABLE(
+ [WT_RECORD_CODE] [varchar](2) NULL,
+ [WT_LOT_NO] [varchar](10) NULL,
+ [WT_ACTION_DATE] [varchar](14) NULL,
+ [WT_LOT_1] [varchar](10) NULL,
+ [WT_LOT_2] [varchar](10) NULL,
+ [WT_LOT_3] [varchar](10) NULL,
+ [WT_LOT__4] [varchar](10) NULL,
+ [WT_LOT_5] [varchar](10) NULL
+) DECLARE @transaction TABLE(
+ [WT_RECORD_CODE] [varchar](2) NULL,
+ [WT_LOT_NO] [varchar](10) NULL,
+ [WT_ACTION_DATE] [varchar](14) NULL,
+ [WT_LOT_TARGET] [varchar](10) NULL
+) DECLARE @finalresults TABLE(
+ [ID] [int] NOT NULL IDENTITY(1, 1),
+ [ParentLotNo] [varchar](20) NOT NULL,
+ [LotNo] [varchar](20) NOT NULL,
+ [ActionTime] [datetime] NOT NULL,
+ [ActionType] [varchar](2) NOT NULL,
+ [IsAffected] bit NULL
+) --INSERT INTO @lots(LotNo, Queried) VALUES (@RootLotNo, 0)
+INSERT INTO
+ @lots(LotNo, Queried)
+VALUES
+ (@IncidentLotNo, 0) WHILE EXISTS (
+ SELECT
+ 1
+ FROM
+ @lots
+ WHERE
+ Queried = 0
+ ) BEGIN
+SELECT
+ TOP 1 @LotNo = LotNo
+FROM
+ @lots
+WHERE
+ Queried = 0
+SET
+ @sql = FORMATMESSAGE(
+ 'SELECT * FROM OPENQUERY(FAB2SPN, ' + '''SELECT WT_RECORD_CODE, WT_LOT_NO, WT_ACTION_DATE, WT_LOT_1, WT_LOT_2, WT_LOT_3, WT_LOT__4, WT_LOT_5 ' + 'FROM WT_RECORD ' + 'WHERE WT_WP_DIRECT_KEY = ''''3002%s '''' AND WT_RECORD_CODE IN (''''SP'''',''''CB'''')'') ',
+ @LotNo
+ )
+DELETE FROM
+ @results
+INSERT INTO
+ @results EXEC sp_executesql @sql
+DELETE FROM
+ @transaction
+INSERT INTO
+ @transaction(
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ [WT_LOT_TARGET]
+ )
+SELECT
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ [WT_LOT_TARGET]
+FROM
+ (
+ SELECT
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ WT_LOT_1 AS [WT_LOT_TARGET]
+ FROM
+ @results
+ UNION
+ SELECT
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ WT_LOT_2 AS [WT_LOT_TARGET]
+ FROM
+ @results
+ UNION
+ SELECT
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ WT_LOT_3 AS [WT_LOT_TARGET]
+ FROM
+ @results
+ UNION
+ SELECT
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ WT_LOT__4 AS [WT_LOT_TARGET]
+ FROM
+ @results
+ UNION
+ SELECT
+ [WT_RECORD_CODE],
+ [WT_LOT_NO],
+ [WT_ACTION_DATE],
+ WT_LOT_5 AS [WT_LOT_TARGET]
+ FROM
+ @results
+ ) subtable
+WHERE
+ [WT_LOT_TARGET] <> ''
+INSERT INTO
+ @lots(LotNo, Queried)
+SELECT
+ DISTINCT WT_LOT_TARGET,
+ 0
+FROM
+ @transaction
+WHERE
+ NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ @lots l
+ WHERE
+ l.LotNo = WT_LOT_TARGET
+ )
+UPDATE
+ @lots
+SET
+ Queried = 1
+WHERE
+ LotNo = @LotNo
+INSERT INTO
+ @finalresults(
+ [ParentLotNo],
+ [LotNo],
+ [ActionTime],
+ [ActionType]
+ )
+SELECT
+ RTRIM(WT_LOT_NO),
+ RTRIM(WT_LOT_TARGET),
+ CONVERT(
+ datetime,
+ STUFF(
+ STUFF(
+ STUFF(
+ STUFF(STUFF(WT_ACTION_DATE, 5, 0, '-'), 8, 0, '-'),
+ 11,
+ 0,
+ ' '
+ ),
+ 14,
+ 0,
+ ':'
+ ),
+ 17,
+ 0,
+ ':'
+ ),
+ 20
+ ),
+ WT_RECORD_CODE
+FROM
+ @transaction
+WHERE
+ WT_RECORD_CODE = 'SP'
+INSERT INTO
+ @finalresults(
+ [ParentLotNo],
+ [LotNo],
+ [ActionTime],
+ [ActionType]
+ )
+SELECT
+ RTRIM(WT_LOT_TARGET),
+ RTRIM(WT_LOT_NO),
+ CONVERT(
+ datetime,
+ STUFF(
+ STUFF(
+ STUFF(
+ STUFF(STUFF(WT_ACTION_DATE, 5, 0, '-'), 8, 0, '-'),
+ 11,
+ 0,
+ ' '
+ ),
+ 14,
+ 0,
+ ':'
+ ),
+ 17,
+ 0,
+ ':'
+ ),
+ 20
+ ),
+ WT_RECORD_CODE
+FROM
+ @transaction
+WHERE
+ WT_RECORD_CODE = 'CB'
+END;
+
+WITH relevantresults as (
+ SELECT
+ *
+ FROM
+ @finalresults
+ WHERE
+ (ActionTime >= @IncidentTime)
+ OR (@IncidentTime IS NULL)
+),
+affectedlots as (
+ SELECT
+ ID,
+ ParentLotNo,
+ LotNo,
+ ActionTime
+ FROM
+ relevantresults
+ WHERE
+ ParentLotNo = @IncidentLotNo
+ UNION
+ ALL
+ SELECT
+ rr.ID,
+ rr.ParentLotNo,
+ rr.LotNo,
+ rr.ActionTime
+ FROM
+ affectedlots
+ INNER JOIN relevantresults rr ON rr.ParentLotNo = affectedlots.LotNo
+ AND rr.ActionTime > affectedlots.ActionTime
+)
+UPDATE
+ @finalresults
+SET
+ IsAffected = 1
+WHERE
+ ID IN (
+ SELECT
+ ID
+ FROM
+ affectedlots
+ )
+UPDATE
+ @finalresults
+SET
+ IsAffected = 1
+WHERE
+ LotNo = @IncidentLotNo
+INSERT INTO
+ @finalresults(
+ ParentLotNo,
+ LotNo,
+ ActionTime,
+ ActionType,
+ IsAffected
+ )
+SELECT
+ '',
+ @IncidentLotNo,
+ '01/01/2001',
+ '',
+ 1
+WHERE
+ NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ @finalresults
+ WHERE
+ LotNo = @IncidentLotNo
+ AND IsAffected = 1
+ )
+SELECT
+ *
+FROM
+ @finalresults
+ORDER BY
+ ActionTime IF @LogIssueID IS NOT NULL
+ AND @LogDocumentType IS NOT NULL BEGIN
+INSERT INTO
+ LotSplitAnalysisLog(
+ [IssueID],
+ [DocumentType],
+ [LotNumber],
+ AnalysisType,
+ [AnalysisTime],
+ [AnalysisData]
+ )
+SELECT
+ @LogIssueID,
+ @LogDocumentType,
+ @LotNo,
+ @AnalysisType,
+ GETDATE(),
+ (
+ SELECT
+ @LogParms AS 'parms',
+ (
+ SELECT
+ *
+ FROM
+ @finalresults FOR XML PATH('results'),
+ TYPE
+ ) FOR XML PATH('log')
+ )
+END
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCAddPCRBAttendees.sql b/Programmability/Stored Procedures/CCAddPCRBAttendees.sql
new file mode 100644
index 0000000..cc44e68
--- /dev/null
+++ b/Programmability/Stored Procedures/CCAddPCRBAttendees.sql
@@ -0,0 +1,61 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCAddPCRBAttendees] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCAddPCRBAttendees] @PCRBID INT,
+ @AttendeeID VARCHAR(300),
+ @JobTitle VARCHAR(50),
+ @Location VARCHAR(50) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+Declare @AttendeeName VARCHAR(200)
+SET
+ @AttendeeName = CONCAT(
+ (
+ SELECT
+ FirstName
+ FROM
+ Users
+ WHERE
+ UserID = @AttendeeID
+ ),
+ ' ',
+ (
+ SELECT
+ LastName
+ FROM
+ Users
+ WHERE
+ UserID = @AttendeeID
+ )
+ ) -- Insert statements for procedure here
+INSERT INTO
+ CCPCRBAttendee (
+ AttendeeName,
+ PCRBID,
+ AttendeeID,
+ JobTitle,
+ Location
+ )
+VALUES
+ (
+ @AttendeeName,
+ @PCRBID,
+ @AttendeeID,
+ @JobTitle,
+ @Location
+ )
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCCancelCC.sql b/Programmability/Stored Procedures/CCCancelCC.sql
new file mode 100644
index 0000000..bcdbcbf
--- /dev/null
+++ b/Programmability/Stored Procedures/CCCancelCC.sql
@@ -0,0 +1,30 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCCancelCC] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCCancelCC] -- Add the parameters for the stored procedure here
+ @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+UPDATE
+ CCChangeControl
+SET
+ Status = 2,
+ ClosedDate = GETDATE()
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCCompleteCC.sql b/Programmability/Stored Procedures/CCCompleteCC.sql
new file mode 100644
index 0000000..dfca011
--- /dev/null
+++ b/Programmability/Stored Procedures/CCCompleteCC.sql
@@ -0,0 +1,30 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCCompleteCC] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCCompleteCC] -- Add the parameters for the stored procedure here
+ @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+UPDATE
+ CCChangeControl
+SET
+ Status = 1,
+ ClosedDate = GETDATE()
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteCCAttachment.sql b/Programmability/Stored Procedures/CCDeleteCCAttachment.sql
new file mode 100644
index 0000000..016f607
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteCCAttachment.sql
@@ -0,0 +1,26 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteCCAttachment] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteCCAttachment] -- Add the parameters for the stored procedure here
+ @ID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+DELETE CCAttachment
+WHERE
+ ID = @ID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteDecisionSummary.sql b/Programmability/Stored Procedures/CCDeleteDecisionSummary.sql
new file mode 100644
index 0000000..46561b9
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteDecisionSummary.sql
@@ -0,0 +1,25 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteDecisionSummary] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteDecisionSummary] @ID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+DELETE CCDecisionSummary
+WHERE
+ ID = @ID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteGenerations.sql b/Programmability/Stored Procedures/CCDeleteGenerations.sql
new file mode 100644
index 0000000..2bd877a
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteGenerations.sql
@@ -0,0 +1,24 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteGenerations] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteGenerations] @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DELETE CCGeneration
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteLogistics.sql b/Programmability/Stored Procedures/CCDeleteLogistics.sql
new file mode 100644
index 0000000..c38e533
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteLogistics.sql
@@ -0,0 +1,24 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteLogistics] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteLogistics] @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DELETE CCLogistics
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteMeetingActionItem.sql b/Programmability/Stored Procedures/CCDeleteMeetingActionItem.sql
new file mode 100644
index 0000000..7e00454
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteMeetingActionItem.sql
@@ -0,0 +1,27 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteMeetingActionItem] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteMeetingActionItem] @ID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+DELETE CCMeetingActionItem
+WHERE
+ ID = @ID DELETE CCMeetingActionItemResponsible
+WHERE
+ MeetingActionItemID = @ID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteMeetingAttachment.sql b/Programmability/Stored Procedures/CCDeleteMeetingAttachment.sql
new file mode 100644
index 0000000..4656a44
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteMeetingAttachment.sql
@@ -0,0 +1,25 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteMeetingAttachment] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteMeetingAttachment] @ID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+DELETE CCMeetingAttachment
+WHERE
+ ID = @ID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteMeetingAttendee.sql b/Programmability/Stored Procedures/CCDeleteMeetingAttendee.sql
new file mode 100644
index 0000000..e6f9299
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteMeetingAttendee.sql
@@ -0,0 +1,25 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteMeetingAttendee] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteMeetingAttendee] @ID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+DELETE CCMeetingAttendee
+WHERE
+ ID = @ID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteMeetingPCRValues.sql b/Programmability/Stored Procedures/CCDeleteMeetingPCRValues.sql
new file mode 100644
index 0000000..55d6aec
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteMeetingPCRValues.sql
@@ -0,0 +1,24 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteMeetingPCRValues] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteMeetingPCRValues] @MeetingID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DELETE CCMeetingPCRValue
+WHERE
+ MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeletePCRBActionItem.sql b/Programmability/Stored Procedures/CCDeletePCRBActionItem.sql
new file mode 100644
index 0000000..39cfb6f
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeletePCRBActionItem.sql
@@ -0,0 +1,28 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeletePCRBActionItem] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeletePCRBActionItem] -- Add the parameters for the stored procedure here
+ @ID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+DELETE CCPCRBActionItem
+WHERE
+ ID = @ID DELETE CCPCRBActionItemResponsible
+WHERE
+ PCRBActionItemID = @ID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeletePartNumbers.sql b/Programmability/Stored Procedures/CCDeletePartNumbers.sql
new file mode 100644
index 0000000..05fea2f
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeletePartNumbers.sql
@@ -0,0 +1,24 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeletePartNumbers] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeletePartNumbers] @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DELETE CCPartNumber
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCDeleteProcesses.sql b/Programmability/Stored Procedures/CCDeleteProcesses.sql
new file mode 100644
index 0000000..5d319c2
--- /dev/null
+++ b/Programmability/Stored Procedures/CCDeleteProcesses.sql
@@ -0,0 +1,24 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCDeleteProcesses] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCDeleteProcesses] @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DELETE CCProcess
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetActionItemFileName.sql b/Programmability/Stored Procedures/CCGetActionItemFileName.sql
new file mode 100644
index 0000000..459f22f
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetActionItemFileName.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetActionItemFileName] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetActionItemFileName] -- Add the parameters for the stored procedure here
+ @FileGUID VARCHAR(50) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ [FileName]
+FROM
+ CCMeetingActionItem
+WHERE
+ FileGUID = @FileGUID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetActionItemResponsible.sql b/Programmability/Stored Procedures/CCGetActionItemResponsible.sql
new file mode 100644
index 0000000..2fc703e
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetActionItemResponsible.sql
@@ -0,0 +1,31 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetActionItemResponsible] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetActionItemResponsible] -- Add the parameters for the stored procedure here
+ AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ LTRIM(RTRIM(CONVERT(VARCHAR(10), UserID))) AS ResponsibleID,
+ LTRIM(RTRIM(FirstName + ' ' + LastName)) AS ResponsibleName
+FROM
+ Users
+ORDER BY
+ FirstName,
+ LastName
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetCCAttachments.sql b/Programmability/Stored Procedures/CCGetCCAttachments.sql
new file mode 100644
index 0000000..15258cd
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetCCAttachments.sql
@@ -0,0 +1,36 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetCCAttachments] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetCCAttachments] @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ DISTINCT A.*,
+ U.FirstName + ' ' + U.LastName AS UploadedByName,
+ SUBSTRING(
+ FileName,
+ PATINDEX('%.%', FileName) + 1,
+ LEN(FileName)
+ ) AS FileExtension
+FROM
+ CCChangeControl CC
+ INNER JOIN CCAttachment A ON CC.PlanNumber = A.PlanNumber
+ LEFT JOIN Users U ON A.UploadedByID = U.UserID
+WHERE
+ CC.PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetCCFileName.sql b/Programmability/Stored Procedures/CCGetCCFileName.sql
new file mode 100644
index 0000000..c1b4770
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetCCFileName.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetCCFileName] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetCCFileName] -- Add the parameters for the stored procedure here
+ @FileGUID VARCHAR(50) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ [FileName]
+FROM
+ CCAttachment
+WHERE
+ FileGUID = @FileGUID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetChangeControl.sql b/Programmability/Stored Procedures/CCGetChangeControl.sql
new file mode 100644
index 0000000..1d84e62
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetChangeControl.sql
@@ -0,0 +1,110 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetChangeControl] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetChangeControl] -- Add the parameters for the stored procedure here
+ @PlanNumber INT,
+ @UserID INT,
+ @CanViewITAR INT OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DECLARE @ITARRowCount INT IF NOT EXISTS (
+ SELECT
+ *
+ FROM
+ CCChangeControl
+ WHERE
+ RecordLockIndicator = 1
+ AND PlanNumber = @PlanNumber
+) BEGIN
+UPDATE
+ CCChangeControl
+SET
+ RecordLockIndicator = 1,
+ RecordLockedBy = @UserID,
+ RecordLockedDate = GETDATE(),
+ LastUpdateDate = GETDATE()
+WHERE
+ PlanNumber = @PlanNumber
+END
+SET
+ @CanViewITAR = 1 IF EXISTS (
+ SELECT
+ *
+ FROM
+ CCChangeControl
+ WHERE
+ PlanNumber = @PlanNumber
+ AND IsITAR = 1
+ ) BEGIN
+SELECT
+ @ITARRowCount = COUNT(*)
+FROM
+ dbo.fnIsUserITARCompliant(@UserID) IF (@ITARRowCount > 0)
+SET
+ @CanViewITAR = 1
+ ELSE
+SET
+ @CanViewITAR = 0
+END -- Insert statements for procedure here
+SELECT
+ DISTINCT CC.*,
+ U.FirstName + ' ' + U.LastName AS OwnerName,
+ U1.FirstName + ' ' + U1.LastName AS RecordLockByName,
+ (
+ SELECT
+ COUNT(*)
+ FROM
+ CCMeeting
+ WHERE
+ Decision = -1
+ AND CCMeeting.PlanNumber = @PlanNumber
+ ) AS MeetingExist,
+ PCR1ID,
+ PCR2ID,
+ PCR3ID,
+ --CAST('M-' + YEAR(InsertTimeStamp) + '-' + PlanYearlyIdentifier AS VARCHAR) AS PlanTitle,
+ --CONCAT('M-', YEAR(CC.InsertTimeStamp), '-', CC.PlanYearlyIdentifier) AS PlanTitle,
+ MesaPlanNo AS PlanTitle,
+ CASE
+ WHEN CC.ClosedDate IS NULL THEN 0
+ ELSE 1
+ END PCRBClosed
+FROM
+ CCChangeControl CC
+ INNER JOIN Users U ON CC.OwnerID = U.UserID
+ LEFT JOIN Users U1 ON CC.RecordLockedBy = U1.UserID
+WHERE
+ CC.PlanNumber = @PlanNumber
+SELECT
+ GenerationID
+FROM
+ CCGeneration
+WHERE
+ PlanNumber = @PlanNumber
+SELECT
+ LogisticsID
+FROM
+ CCLogistics
+WHERE
+ PlanNumber = @PlanNumber
+SELECT
+ ProcessID
+FROM
+ CCProcess
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetChangeControlList.sql b/Programmability/Stored Procedures/CCGetChangeControlList.sql
new file mode 100644
index 0000000..add0107
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetChangeControlList.sql
@@ -0,0 +1,186 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetChangeControlList] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetChangeControlList] -- Add the parameters for the stored procedure here
+ @UserID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- UNLOCK all the CC records if there are any pending locks
+UPDATE
+ CCChangeControl
+SEt
+ RecordLocked = 0,
+ RecordLockedBy = NULL,
+ RecordLockedDate = NULL,
+ RecordLockIndicator = 0
+WHERE
+ RecordLockedBy = @UserID
+UPDATE
+ CCMeeting
+SEt
+ RecordLockedBy = NULL,
+ RecordLockedDate = NULL,
+ RecordLockIndicator = 0
+WHERE
+ RecordLockedBy = @UserID -- Insert statements for procedure here
+SELECT
+ DISTINCT C.PlanNumber AS IssueID,
+ C.Title,
+ U.FirstName + ' ' + U.LastName AS Owner,
+ C.MesaPlanNo AS MesaIdTitle,
+ CASE
+ WHEN ChangeLevel = -1 THEN NULL
+ ELSE ChangeLevel
+ END AS ChangeLevel,
+ Dates.StartDate,
+ CASE
+ WHEN [STATUS] = 1
+ OR [STATUS] = 2 THEN ClosedDate
+ ELSE Dates.StatusDate
+ END AS StatusDate,
+ CPCRB.PCRBStatus,
+ CCGens.Generations,
+ CCLogs.Logistics,
+ CCProcess.Processes,
+ C.ToolTypes,
+ CASE
+ WHEN [STATUS] = 1
+ OR [STATUS] = 2 THEN ''
+ ELSE MAI1.Responsibles
+ END AS ActionItemResponsibility
+FROM
+ CCChangeControl C
+ LEFT JOIN CCMeeting M ON C.PlanNumber = M.PlanNumber
+ LEFT JOIN Users U ON C.OwnerID = U.UserID
+ LEFT JOIN (
+ SELECT
+ PlanNumber,
+ MIN(MeetingDate) AS StartDate,
+ MAX(MeetingDate) AS StatusDate
+ FROM
+ CCMeeting
+ GROUP BY
+ PlanNumber
+ ) AS Dates ON C.PlanNumber = Dates.PlanNumber -- Get Status
+ LEFT JOIN (
+ SELECT
+ PlanNumber,
+ CASE
+ WHEN [STATUS] = 1 THEN 'Closed'
+ WHEN [STATUS] = 2 THEN 'Cancelled'
+ WHEN [STATUS] = 0 THEN (
+ SELECT
+ PCRValues
+ FROM
+ vCCMeetingPCRs P
+ WHERE
+ MeetingDate = (
+ SELECT
+ MAX(MeetingDate)
+ FROM
+ CCMeeting
+ WHERE
+ PlanNumber = C.PlanNumber
+ )
+ AND P.PlanNumber = C.PlanNumber
+ )
+ ELSE ''
+ END AS PCRBStatus
+ FROM
+ CCChangeControl C
+ ) AS CPCRB ON C.PlanNumber = CPCRB.PlanNumber -- Concatenate Gens
+ LEFT JOIN (
+ SELECT
+ DISTINCT CC.PlanNumber,
+ STUFF (
+ (
+ SELECT
+ ', ' + LTRIM(RTRIM(CAST(Generation AS VARCHAR(50))))
+ FROM
+ CCGeneration CCG
+ LEFT JOIN CCGenerationMaster GM ON CCG.GenerationID = GM.GenerationID
+ WHERE
+ CCG.PlanNumber = CC.PlanNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Generations
+ FROM
+ CCChangeControl CC
+ ) AS CCGens ON C.PlanNumber = CCGens.PlanNumber
+ LEFT JOIN (
+ SELECT
+ DISTINCT CC.PlanNumber,
+ STUFF (
+ (
+ SELECT
+ ', ' + LTRIM(RTRIM(CAST(Logistics AS VARCHAR(50))))
+ FROM
+ CCLogistics CCL
+ LEFT JOIN CCLogisticsMaster LM ON CCL.LogisticsID = LM.LogisticsID
+ WHERE
+ CCL.PlanNumber = CC.PlanNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Logistics
+ FROM
+ CCChangeControl CC
+ ) AS CCLogs ON C.PlanNumber = CCLogs.PlanNumber -- Concatenate process
+ LEFT JOIN (
+ SELECT
+ DISTINCT CC.PlanNumber,
+ STUFF (
+ (
+ SELECT
+ ', ' + LTRIM(RTRIM(CAST(Process AS VARCHAR(50))))
+ FROM
+ CCProcess CCP
+ LEFT JOIN CCProcessMaster PM ON CCP.ProcessID = PM.ProcessID
+ WHERE
+ CCP.PlanNumber = CC.PlanNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Processes
+ FROM
+ CCChangeControl CC
+ ) AS CCProcess ON C.PlanNumber = CCProcess.PlanNumber --Contcatenate Responsible person
+ LEFT JOIN (
+ SELECT
+ DISTINCT CC.PlanNumber,
+ STUFF (
+ (
+ SELECT
+ DISTINCT ', ' + LTRIM(RTRIM(CAST(AIR.Responsibles AS VARCHAR(350))))
+ FROM
+ CCMeeting CM
+ LEFT JOIN dbo.fn_GetMeetingAI_Responsibles_ByCC() AIR ON CM.MeetingID = AIR.MeetingID
+ WHERE
+ CM.PlanNumber = CC.PlanNumber FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Responsibles
+ FROM
+ CCChangeControl CC
+ ) AS MAI1 ON C.PlanNumber = MAI1.PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetChangeControlRead.sql b/Programmability/Stored Procedures/CCGetChangeControlRead.sql
new file mode 100644
index 0000000..ba12d34
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetChangeControlRead.sql
@@ -0,0 +1,75 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetChangeControlRead] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetChangeControlRead] -- Add the parameters for the stored procedure here
+ @PlanNumber INT,
+ @UserID INT,
+ @CanViewITAR INT OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DECLARE @ITARRowCount INT
+SET
+ @CanViewITAR = 1 IF EXISTS (
+ SELECT
+ *
+ FROM
+ CCChangeControl
+ WHERE
+ PlanNumber = @PlanNumber
+ AND IsITAR = 1
+ ) BEGIN
+SELECT
+ @ITARRowCount = COUNT(*)
+FROM
+ dbo.fnIsUserITARCompliant(@UserID) IF (@ITARRowCount > 0)
+SET
+ @CanViewITAR = 1
+ ELSE
+SET
+ @CanViewITAR = 0
+END -- Insert statements for procedure here
+SELECT
+ DISTINCT CC.*,
+ U.FirstName + ' ' + U.LastName AS OwnerName,
+ U1.FirstName + ' ' + U1.LastName AS RecordLockByName,
+ --CONCAT('M-', YEAR(CC.InsertTimeStamp), '-', CC.PlanYearlyIdentifier) AS PlanTitle
+ MesaPlanNo AS PlanTitle --REPLICATE('0',6-LEN(RTRIM(EmployeeId))) + RTRIM(EmployeeId)
+FROM
+ CCChangeControl CC
+ INNER JOIN Users U ON CC.OwnerID = U.UserID
+ LEFT JOIN Users U1 ON CC.RecordLockedBy = U1.UserID
+WHERE
+ CC.PlanNumber = @PlanNumber
+SELECT
+ GenerationID
+FROM
+ CCGeneration
+WHERE
+ PlanNumber = @PlanNumber
+SELECT
+ LogisticsID
+FROM
+ CCLogistics
+WHERE
+ PlanNumber = @PlanNumber
+SELECT
+ ProcessID
+FROM
+ CCProcess
+WHERE
+ PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetChangeControls.sql b/Programmability/Stored Procedures/CCGetChangeControls.sql
new file mode 100644
index 0000000..f4cdeaf
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetChangeControls.sql
@@ -0,0 +1,28 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetChangeControls] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetChangeControls] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+SELECT
+ *
+FROM
+ dbo.fn_GetChangeControl()
+ORDER BY
+ DocumentType,
+ IssueID DESC
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetDecisionsSummaryList.sql b/Programmability/Stored Procedures/CCGetDecisionsSummaryList.sql
new file mode 100644
index 0000000..6d6635e
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetDecisionsSummaryList.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetDecisionsSummaryList] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetDecisionsSummaryList] -- Add the parameters for the stored procedure here
+ @MeetingID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ *
+FROM
+ CCDecisionSummary
+WHERE
+ MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetGenerations.sql b/Programmability/Stored Procedures/CCGetGenerations.sql
new file mode 100644
index 0000000..56270ec
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetGenerations.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetGenerations] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetGenerations] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ DISTINCT GenerationID,
+ Generation
+FROM
+ CCGenerationMaster
+ORDER BY
+ Generation
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetLogistics.sql b/Programmability/Stored Procedures/CCGetLogistics.sql
new file mode 100644
index 0000000..c440474
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetLogistics.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetLogistics] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetLogistics] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ DISTINCT LogisticsID,
+ Logistics
+FROM
+ CCLogisticsMaster
+ORDER BY
+ Logistics
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeeting.sql b/Programmability/Stored Procedures/CCGetMeeting.sql
new file mode 100644
index 0000000..2ee1efc
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeeting.sql
@@ -0,0 +1,93 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeeting] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeeting] -- Add the parameters for the stored procedure here
+ @MeetingID INT,
+ @UserID INT,
+ @CanViewITAR INT OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DECLARE @ITARRowCount INT IF NOT EXISTS (
+ SELECT
+ *
+ FROM
+ CCMeeting
+ WHERE
+ RecordLockIndicator = 1
+ AND MeetingDate = @MeetingID
+) BEGIN
+UPDATE
+ CCMeeting
+SET
+ RecordLockIndicator = 1,
+ RecordLockedBy = @UserID,
+ RecordLockedDate = GETDATE(),
+ LastUpdateDate = GETDATE()
+WHERE
+ MeetingID = @MeetingID
+END
+SET
+ @CanViewITAR = 1 IF EXISTS (
+ SELECT
+ *
+ FROM
+ CCMeeting M
+ INNER JOIN CCChangeControl C ON M.PlanNumber = C.PlanNumber
+ WHERE
+ MeetingID = @MeetingID
+ AND C.IsITAR = 1
+ ) BEGIN
+SELECT
+ @ITARRowCount = COUNT(*)
+FROM
+ dbo.fnIsUserITARCompliant(@UserID) IF (@ITARRowCount > 0)
+SET
+ @CanViewITAR = 1
+ ELSE
+SET
+ @CanViewITAR = 0
+END -- Insert statements for procedure here
+SELECT
+ M.MeetingID,
+ ISNULL(LTRIM(RTRIM(M.PCRB)), 'Select') PCRB,
+ M.MeetingDate,
+ M.Decision,
+ M.Notes,
+ C.ChangeLevel,
+ C.Title,
+ C.PlanNumber,
+ C.CurrentStep,
+ M.RecordLockedBy,
+ M.RecordLockIndicator,
+ U1.FirstName + ' ' + U1.LastName AS RecordLockByName,
+ CASE
+ WHEN C.ClosedDate IS NULL THEN 0
+ ELSE 1
+ END PCRBClosed
+FROM
+ CCMeeting M
+ INNER JOIN CCChangeControl C ON M.PlanNumber = C.PlanNumber
+ LEFT JOIN Users U1 ON M.RecordLockedBy = U1.UserID
+WHERE
+ MeetingID = @MeetingID
+SELECT
+ PCRValue AS PCRValueID
+FROM
+ CCMeetingPCRValue
+WHERE
+ MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingActionItems.sql b/Programmability/Stored Procedures/CCGetMeetingActionItems.sql
new file mode 100644
index 0000000..d908ce9
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingActionItems.sql
@@ -0,0 +1,82 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingActionItems] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingActionItems] @MeetingID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ AI.ID,
+ AI.MeetingID,
+ ActionItemname,
+ CCResponsibles.Responsibles ResponsiblePerson,
+ CCResponsiblesID.ResponsiblesID ResponsibleID,
+ CASE
+ WHEN Gating = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS Gating,
+ DueDate
+FROM
+ CCMeetingActionItem AI
+ LEFT JOIN (
+ SELECT
+ DISTINCT AI.ID,
+ STUFF (
+ (
+ SELECT
+ ',' + LTRIM(
+ RTRIM(
+ CAST(U.FirstName + ' ' + U.LastName AS VARCHAR(350))
+ )
+ )
+ FROM
+ CCMeetingActionItemResponsible AIR
+ INNER JOIN Users U ON AIR.ActionItemResponsible = U.UserID
+ WHERE
+ AI.ID = AIR.MeetingActionItemID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Responsibles
+ FROM
+ CCMeetingActionItem AI
+ ) AS CCResponsibles ON AI.ID = CCResponsibles.ID
+ LEFT JOIN (
+ SELECT
+ DISTINCT AI.ID,
+ STUFF (
+ (
+ SELECT
+ ',' + LTRIM(
+ RTRIM(CAST(AIR.ActionItemResponsible AS VARCHAR(350)))
+ )
+ FROM
+ CCMeetingActionItemResponsible AIR
+ WHERE
+ AI.ID = AIR.MeetingActionItemID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS ResponsiblesID
+ FROM
+ CCMeetingActionItem AI
+ ) AS CCResponsiblesID ON AI.ID = CCResponsiblesID.ID
+WHERE
+ AI.MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingActionItems_All.sql b/Programmability/Stored Procedures/CCGetMeetingActionItems_All.sql
new file mode 100644
index 0000000..534952c
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingActionItems_All.sql
@@ -0,0 +1,71 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingActionItems_All] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingActionItems_All] @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ MA.ID,
+ M.MeetingID,
+ P.PCRValues AS PCRB,
+ ActionItemname,
+ CCResponsibles.Responsibles ResponsiblePerson,
+ CASE
+ WHEN Gating = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS Gating,
+ DueDate,
+ Updates,
+ ClosedStatus,
+ MA.ClosedDate,
+ FileGUID,
+ FileName,
+ UploadedByID,
+ U.FirstName + ' ' + U.LastName AS UploadedByName
+FROM
+ CCMeetingActionItem MA
+ INNER JOIN CCMeeting M ON MA.MeetingID = M.MeetingID
+ LEFT JOIN Users U ON MA.UploadedByID = U.UserID
+ LEFT JOIN vCCMeetingPCRs P ON M.MeetingID = P.MeetingID
+ LEFT JOIN (
+ SELECT
+ DISTINCT AI.ID,
+ STUFF (
+ (
+ SELECT
+ ', ' + LTRIM(
+ RTRIM(
+ CAST(U.FirstName + ' ' + U.LastName AS VARCHAR(550))
+ )
+ )
+ FROM
+ CCMeetingActionItemResponsible AIR
+ INNER JOIN Users U ON AIR.ActionItemResponsible = U.UserID
+ WHERE
+ AI.ID = AIR.MeetingActionItemID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Responsibles
+ FROM
+ CCMeetingActionItem AI
+ ) AS CCResponsibles ON MA.ID = CCResponsibles.ID
+WHERE
+ M.PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingAttachments.sql b/Programmability/Stored Procedures/CCGetMeetingAttachments.sql
new file mode 100644
index 0000000..802121c
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingAttachments.sql
@@ -0,0 +1,36 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingAttachments] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingAttachments] @MeetingID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ DISTINCT A.*,
+ U.FirstName + ' ' + U.LastName AS UploadedByName,
+ SUBSTRING(
+ FileName,
+ PATINDEX('%.%', FileName) + 1,
+ LEN(FileName)
+ ) AS FileExtension
+FROM
+ CCMeeting M
+ INNER JOIN CCMeetingAttachment A ON M.MeetingID = A.MeetingID
+ LEFT JOIN Users U ON A.UploadedByID = U.UserID
+WHERE
+ M.MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingAttendees.sql b/Programmability/Stored Procedures/CCGetMeetingAttendees.sql
new file mode 100644
index 0000000..c6fff68
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingAttendees.sql
@@ -0,0 +1,28 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingAttendees] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingAttendees] @MeetingID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ *
+FROM
+ CCMeetingAttendee
+WHERE
+ MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingDecisionSummaryList.sql b/Programmability/Stored Procedures/CCGetMeetingDecisionSummaryList.sql
new file mode 100644
index 0000000..c0120a6
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingDecisionSummaryList.sql
@@ -0,0 +1,94 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingDecisionSummaryList] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingDecisionSummaryList] -- Add the parameters for the stored procedure here
+ @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+/****** Script for SelectTopNRows command from SSMS ******/
+SELECT
+ DISTINCT P.PCRValues AS PCRB,
+ M.MeetingDate,
+ CCDecisionNotes.DecisionNotes,
+ CCECNLink.ECNs AS ECNLinks,
+ CCLDLink.LDs AS LotDispoLinks
+FROM
+ CCChangeControl C
+ INNER JOIN CCMeeting M ON C.PlanNumber = M.PlanNumber
+ LEFT JOIN vCCMeetingPCRs P ON M.MeetingID = P.MeetingID
+ LEFT JOIN CCDecisionSummary D ON M.MeetingID = D.MeetingID
+ LEFT JOIN (
+ SELECT
+ DISTINCT MM.MeetingID,
+ STUFF (
+ (
+ SELECT
+ '~' + LTRIM(RTRIM(CAST(DecisionNotes AS VARCHAR(500))))
+ FROM
+ CCDecisionSummary CCD
+ WHERE
+ CCD.MeetingID = MM.MeetingID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS DecisionNotes
+ FROM
+ CCMeeting MM
+ ) AS CCDecisionNotes ON M.MeetingID = CCDecisionNotes.MeetingID
+ LEFT JOIN (
+ SELECT
+ DISTINCT MM.MeetingID,
+ STUFF (
+ (
+ SELECT
+ '~ ' + LTRIM(RTRIM(CAST(ECNLinks AS VARCHAR(100))))
+ FROM
+ CCDecisionSummary CCD
+ WHERE
+ CCD.MeetingID = MM.MeetingID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS ECNs
+ FROM
+ CCMeeting MM
+ ) AS CCECNLink ON M.MeetingID = CCECNLink.MeetingID
+ LEFT JOIN (
+ SELECT
+ DISTINCT MM.MeetingID,
+ STUFF (
+ (
+ SELECT
+ '~ ' + LTRIM(RTRIM(CAST(LotDispoLinks AS VARCHAR(100))))
+ FROM
+ CCDecisionSummary CCD
+ WHERE
+ CCD.MeetingID = MM.MeetingID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS LDs
+ FROM
+ CCMeeting MM
+ ) AS CCLDLink ON M.MeetingID = CCLDLink.MeetingID
+WHERE
+ C.PlanNumber = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingFileName.sql b/Programmability/Stored Procedures/CCGetMeetingFileName.sql
new file mode 100644
index 0000000..940c519
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingFileName.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingFileName] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingFileName] -- Add the parameters for the stored procedure here
+ @FileGUID VARCHAR(50) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ [FileName]
+FROM
+ CCMeetingAttachment
+WHERE
+ FileGUID = @FileGUID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingList.sql b/Programmability/Stored Procedures/CCGetMeetingList.sql
new file mode 100644
index 0000000..2c98f8b
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingList.sql
@@ -0,0 +1,34 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingList] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingList] -- Add the parameters for the stored procedure here
+ @PlanNumber INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+SELECT
+ *
+FROM
+ CCMeeting
+WHERE
+ PlanNumber = @PlanNumber
+SELECT
+ PCRValue AS PCRValueID
+FROM
+ CCMeetingPCRValue
+WHERE
+ MeetingID = @PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetMeetingRead.sql b/Programmability/Stored Procedures/CCGetMeetingRead.sql
new file mode 100644
index 0000000..1c13d49
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetMeetingRead.sql
@@ -0,0 +1,75 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetMeetingRead] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetMeetingRead] -- Add the parameters for the stored procedure here
+ @MeetingID INT,
+ @UserID INT,
+ @CanViewITAR INT OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+DECLARE @ITARRowCount INT
+SET
+ @CanViewITAR = 1 IF EXISTS (
+ SELECT
+ *
+ FROM
+ CCMeeting M
+ INNER JOIN CCChangeControl C ON M.PlanNumber = C.PlanNumber
+ WHERE
+ MeetingID = @MeetingID
+ AND C.IsITAR = 1
+ ) BEGIN
+SELECT
+ @ITARRowCount = COUNT(*)
+FROM
+ dbo.fnIsUserITARCompliant(@UserID) IF (@ITARRowCount > 0)
+SET
+ @CanViewITAR = 1
+ ELSE
+SET
+ @CanViewITAR = 0
+END -- Insert statements for procedure here
+SELECT
+ M.MeetingID,
+ LTRIM(RTRIM(M.PCRB)) AS PCRB,
+ M.MeetingDate,
+ M.Decision,
+ M.Notes,
+ C.ChangeLevel,
+ C.Title,
+ C.PlanNumber,
+ C.CurrentStep,
+ M.RecordLockedBy,
+ M.RecordLockIndicator,
+ U1.FirstName + ' ' + U1.LastName AS RecordLockByName,
+ CASE
+ WHEN C.ClosedDate IS NULL THEN 0
+ ELSE 1
+ END PCRBClosed
+FROM
+ CCMeeting M
+ INNER JOIN CCChangeControl C ON M.PlanNumber = C.PlanNumber
+ LEFT JOIN Users U1 ON M.RecordLockedBy = U1.UserID
+WHERE
+ MeetingID = @MeetingID
+SELECT
+ PCRValue AS PCRValueID
+FROM
+ CCMeetingPCRValue
+WHERE
+ MeetingID = @MeetingID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetPCRB.sql b/Programmability/Stored Procedures/CCGetPCRB.sql
new file mode 100644
index 0000000..a641c11
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetPCRB.sql
@@ -0,0 +1,36 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetPCRB] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetPCRB] -- Add the parameters for the stored procedure here
+ @PlanNumber INT,
+ @PCRB VARCHAR(10) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ PCRBID,
+ PlanNumber,
+ PCRB,
+ Date,
+ Decision,
+ Notes
+FROM
+ CCPCRB
+WHERE
+ PlanNumber = @PlanNumber
+ AND @PCRB = PCRB
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetPCRBActionItems.sql b/Programmability/Stored Procedures/CCGetPCRBActionItems.sql
new file mode 100644
index 0000000..242fa34
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetPCRBActionItems.sql
@@ -0,0 +1,82 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetPCRBActionItems] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetPCRBActionItems] @PCRBID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ AI.ID,
+ AI.PCRBID,
+ ActionItemname,
+ CCResponsibles.Responsibles ResponsiblePerson,
+ CCResponsiblesID.ResponsiblesID ResponsibleID,
+ CASE
+ WHEN Gating = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS Gating,
+ DueDate
+FROM
+ CCPCRBActionItem AI
+ LEFT JOIN (
+ SELECT
+ DISTINCT AI.ID,
+ STUFF (
+ (
+ SELECT
+ ',' + LTRIM(
+ RTRIM(
+ CAST(U.FirstName + ' ' + U.LastName AS VARCHAR(350))
+ )
+ )
+ FROM
+ CCPCRBActionItemResponsible AIR
+ INNER JOIN Users U ON AIR.ActionItemResponsible = U.UserID
+ WHERE
+ AI.ID = AIR.PCRBActionItemID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS Responsibles
+ FROM
+ CCPCRBActionItem AI
+ ) AS CCResponsibles ON AI.ID = CCResponsibles.ID
+ LEFT JOIN (
+ SELECT
+ DISTINCT AI.ID,
+ STUFF (
+ (
+ SELECT
+ ',' + LTRIM(
+ RTRIM(CAST(AIR.ActionItemResponsible AS VARCHAR(350)))
+ )
+ FROM
+ CCMeetingActionItemResponsible AIR
+ WHERE
+ AI.ID = AIR.MeetingActionItemID FOR XML PATH('')
+ ),
+ 1,
+ 1,
+ ''
+ ) AS ResponsiblesID
+ FROM
+ CCMeetingActionItem AI
+ ) AS CCResponsiblesID ON AI.ID = CCResponsiblesID.ID
+WHERE
+ AI.PCRBID = @PCRBID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetPCRBAttendees.sql b/Programmability/Stored Procedures/CCGetPCRBAttendees.sql
new file mode 100644
index 0000000..6858ff9
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetPCRBAttendees.sql
@@ -0,0 +1,28 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetPCRBAttendees] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetPCRBAttendees] @PCRBID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ *
+FROM
+ CCPCRBAttendee
+WHERE
+ PCRBID = @PCRBID
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetPCRValues.sql b/Programmability/Stored Procedures/CCGetPCRValues.sql
new file mode 100644
index 0000000..c20c111
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetPCRValues.sql
@@ -0,0 +1,30 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetPCRValues] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetPCRValues] -- Add the parameters for the stored procedure here
+ AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ PCRValue AS PCRValueID,
+ PCRValue AS PCRValueName
+FROM
+ CCPCRValues
+ORDER BY
+ PCRValue
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetPartNumbers.sql b/Programmability/Stored Procedures/CCGetPartNumbers.sql
new file mode 100644
index 0000000..f8032e2
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetPartNumbers.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetPartNumbers] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetPartNumbers] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ DISTINCT PartNumberID,
+ PartNumber
+FROM
+ CCPartNumberMaster
+ORDER BY
+ PartNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetProcesses.sql b/Programmability/Stored Procedures/CCGetProcesses.sql
new file mode 100644
index 0000000..7c708c6
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetProcesses.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetProcesses] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetProcesses] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ DISTINCT ProcessID,
+ Process
+FROM
+ CCProcessMaster
+ORDER BY
+ Process
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetReport.sql b/Programmability/Stored Procedures/CCGetReport.sql
new file mode 100644
index 0000000..cc4c606
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetReport.sql
@@ -0,0 +1,251 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetReport] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ CREATE PROCEDURE [dbo].[CCGetReport] @PlanNumber varchar(50) = NULL,
+ @OwnerID int = NULL,
+ @Title varchar(100) = NULL,
+ @ChangeLevel int = NULL,
+ @PCRValue varchar(50) = NULL,
+ @GenerationIDs varchar(max) = NULL,
+ @Tool varchar(100) = NULL,
+ @ProcessIDs varchar(max) = NULL,
+ @StartDateFrom date = NULL,
+ @StartDateTo date = NULL,
+ @ClosedDateFrom date = NULL,
+ @ClosedDateTo date = NULL,
+ @LatestMeetingDateFrom date = NULL,
+ @LatestMeetingDateTo date = NULL,
+ @BaseURL varchar(100) = NULL,
+ @Username varchar(100) = '' AS BEGIN
+SET
+ XACT_ABORT ON
+INSERT INTO
+ ReportLog([ProcName], [Username], [Parms])
+SELECT
+ OBJECT_NAME(@ @PROCID),
+ @Username,
+ (
+ SELECT
+ @PlanNumber AS PlanNumber,
+ @OwnerID AS OwnerID,
+ @Title AS Title,
+ @ChangeLevel AS ChangeLevel,
+ @PCRValue AS PCRValue,
+ @GenerationIDs AS GenerationIDs,
+ @Tool AS Tool,
+ @ProcessIDs AS ProcessIDs,
+ @StartDateFrom AS StartDateFrom,
+ @StartDateTo AS StartDateTo,
+ @ClosedDateFrom AS ClosedDateFrom,
+ @ClosedDateTo AS ClosedDateTo,
+ @LatestMeetingDateFrom AS LatestMeetingDateFrom,
+ @LatestMeetingDateTo AS LatestMeetingDateTo,
+ @BaseURL AS BaseURL FOR XML PATH
+ )
+SELECT
+ dbo.fnPlanConvertPlanNoToDisplayFormat(C.PlanNumber) AS PlanNumber,
+ Dates.StartDate,
+ U.FirstName + ' ' + U.LastName AS [Owner],
+ C.Title,
+ CASE
+ WHEN ChangeLevel = -1 THEN NULL
+ ELSE ChangeLevel
+ END AS ChangeLevel,
+ CASE
+ WHEN [STATUS] = 1 THEN 'Closed'
+ WHEN [STATUS] = 2 THEN 'Cancelled'
+ WHEN [STATUS] = 0 THEN STUFF(
+ (
+ SELECT
+ ', ' + LTRIM(RTRIM(CAST(PCRValue AS VARCHAR(50))))
+ FROM
+ CCMeetingPCRValue P
+ WHERE
+ P.MeetingID = LatestMeeting.MeetingID
+ ORDER BY
+ 1 FOR XML PATH('')
+ ),
+ 1,
+ 2,
+ ''
+ )
+ ELSE ''
+ END AS PCRBStatus,
+ LatestMeeting.MeetingDate AS LatestMeetingDate,
+ CASE
+ WHEN LatestMeeting.Decision = 1 THEN 'Approved'
+ WHEN LatestMeeting.Decision = 0 THEN 'Not-Approved'
+ ELSE 'Open'
+ END AS LatestMeetingDecision,
+ LatestMeeting.DecisionNotes AS LatestMeetingDecisionNotes,
+ STUFF(
+ (
+ SELECT
+ ', ' + LTRIM(RTRIM(CAST(Generation AS VARCHAR(50))))
+ FROM
+ CCGeneration CCG
+ LEFT JOIN CCGenerationMaster GM ON CCG.GenerationID = GM.GenerationID
+ WHERE
+ CCG.PlanNumber = C.PlanNumber FOR XML PATH('')
+ ),
+ 1,
+ 2,
+ ''
+ ) AS Generations,
+ C.ToolTypes,
+ STUFF(
+ (
+ SELECT
+ ', ' + LTRIM(RTRIM(CAST(Process AS VARCHAR(50))))
+ FROM
+ CCProcess CCP
+ LEFT JOIN CCProcessMaster PM ON CCP.ProcessID = PM.ProcessID
+ WHERE
+ CCP.PlanNumber = C.PlanNumber FOR XML PATH('')
+ ),
+ 1,
+ 2,
+ ''
+ ) AS Processes,
+ C.ChangeDescription,
+ C.ReasonForChange,
+ ClosedDate,
+ @BaseURL + '/ChangeControl/Edit?IssueID=' + CONVERT(varchar(10), C.PlanNumber) AS [URL]
+FROM
+ CCChangeControl C
+ LEFT JOIN Users U ON C.OwnerID = U.UserID
+ OUTER APPLY (
+ SELECT
+ MIN(MeetingDate) AS StartDate,
+ MAX(MeetingDate) AS StatusDate
+ FROM
+ CCMeeting
+ WHERE
+ CCMeeting.PlanNumber = C.PlanNumber
+ GROUP BY
+ PlanNumber
+ ) AS Dates
+ OUTER APPLY (
+ SELECT
+ TOP 1 CCMeeting.*,
+ CCDecisionSummary.DecisionNotes
+ FROM
+ CCMeeting
+ LEFT OUTER JOIN CCDecisionSummary ON CCDecisionSummary.MeetingID = CCMeeting.MeetingID
+ WHERE
+ CCMeeting.PlanNumber = C.PlanNumber
+ ORDER BY
+ MeetingDate DESC
+ ) AS LatestMeeting
+WHERE
+ (
+ @PlanNumber IS NULL
+ OR dbo.fnPlanConvertPlanNoToDisplayFormat(C.PlanNumber) LIKE '%' + @PlanNumber + '%'
+ )
+ AND (
+ ISNULL(@OwnerID, -1) = -1
+ OR C.OwnerID = @OwnerID
+ )
+ AND (
+ ISNULL(@Title, '') = ''
+ OR C.Title LIKE '%' + @Title + '%'
+ )
+ AND (
+ ISNULL(@ChangeLevel, -1) = -1
+ OR C.ChangeLevel = @ChangeLevel
+ )
+ AND (
+ ISNULL(@PCRValue, '') = ''
+ OR (
+ @PCRValue = 'Closed'
+ AND [Status] = 1
+ )
+ OR (
+ @PCRValue = 'Cancelled'
+ AND [Status] = 2
+ )
+ OR (
+ [Status] = 0
+ AND EXISTS (
+ SELECT
+ 1
+ FROM
+ CCMeetingPCRValue P
+ WHERE
+ P.MeetingID = LatestMeeting.MeetingID
+ AND P.PCRValue = @PCRValue
+ )
+ )
+ )
+ AND (
+ ISNULL(@GenerationIDs, '') = ''
+ OR EXISTS (
+ SELECT
+ 1
+ FROM
+ CCGeneration CCG
+ WHERE
+ CCG.PlanNumber = C.PlanNumber
+ AND CCG.GenerationID IN (
+ SELECT
+ Val
+ FROM
+ dbo.fnSplitCSV(@GenerationIDs)
+ )
+ )
+ )
+ AND (
+ ISNULL(@Tool, '') = ''
+ OR C.ToolTypes LIKE '%' + @Tool + '%'
+ )
+ AND (
+ ISNULL(@ProcessIDs, '') = ''
+ OR EXISTS (
+ SELECT
+ 1
+ FROM
+ CCProcess CCP
+ WHERE
+ CCP.PlanNumber = C.PlanNumber
+ AND CCP.ProcessID IN (
+ SELECT
+ Val
+ FROM
+ dbo.fnSplitCSV(@ProcessIDs)
+ )
+ )
+ )
+ AND (
+ @StartDateFrom IS NULL
+ OR @StartDateFrom <= CONVERT(date, Dates.StartDate)
+ )
+ AND (
+ @StartDateTo IS NULL
+ OR CONVERT(date, Dates.StartDate) <= @StartDateTo
+ )
+ AND (
+ @ClosedDateFrom IS NULL
+ OR @ClosedDateFrom <= CONVERT(date, ClosedDate)
+ )
+ AND (
+ @ClosedDateTo IS NULL
+ OR CONVERT(date, ClosedDate) <= @ClosedDateTo
+ )
+ AND (
+ @LatestMeetingDateFrom IS NULL
+ OR @LatestMeetingDateFrom <= CONVERT(date, LatestMeeting.MeetingDate)
+ )
+ AND (
+ @LatestMeetingDateTo IS NULL
+ OR CONVERT(date, LatestMeeting.MeetingDate) <= @LatestMeetingDateTo
+ )
+ORDER BY
+ C.PlanNumber
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetSites.sql b/Programmability/Stored Procedures/CCGetSites.sql
new file mode 100644
index 0000000..45b1907
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetSites.sql
@@ -0,0 +1,30 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetSites] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description:
+ -- =============================================
+ CREATE PROCEDURE [dbo].[CCGetSites] -- Add the parameters for the stored procedure here
+ AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
+ -- interfering with SELECT statements.
+SET
+ NOCOUNT ON;
+
+-- Insert statements for procedure here
+SELECT
+ SiteName AS SiteID,
+ SiteName
+FROM
+ CCSite
+ORDER BY
+ SiteName
+END
+GO
\ No newline at end of file
diff --git a/Programmability/Stored Procedures/CCGetToolTypes.sql b/Programmability/Stored Procedures/CCGetToolTypes.sql
new file mode 100644
index 0000000..4628bd0
--- /dev/null
+++ b/Programmability/Stored Procedures/CCGetToolTypes.sql
@@ -0,0 +1,29 @@
+USE [FabApprovalSystem]
+GO
+ /****** Object: StoredProcedure [dbo].[CCGetToolTypes] Script Date: 11/21/2024 11:29:04 AM ******/
+SET
+ ANSI_NULLS ON
+GO
+SET
+ QUOTED_IDENTIFIER ON
+GO
+ -- =============================================
+ -- Author:
+ -- Create date:
+ -- Description: