USE [FabApprovalSystem] GO /****** Object: StoredProcedure [dbo].[_8DUpdateAuditFinding] 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].[_8DUpdateAuditFinding] -- Add the parameters for the stored procedure here @AuditFindingsID INT, @Findings VARCHAR(1000), @ViolatedClause VARCHAR(500), @FindingType VARCHAR(10), @FindingCategories VARCHAR(200), @CANo INT, @Title VARCHAR(500) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- 11/26/2018 TR move update before audit score calculation to fix the calculation UPDATE _8DAuditFinding SET Findings = @Findings, ViolatedClause = @ViolatedClause, FindingType = @FindingType, CANo = @CANo, Title = @Title WHERE ID = @AuditFindingsID DECLARE @AuditNo INT DECLARE @NoOfMajorNonConformities INT DECLARE @NoOfMinorNonConformities INT DECLARE @AuditScore INT SELECT @AuditNo = AuditNo FROM _8DAuditFinding WHERE ID = @AuditFindingsID SET @NoOfMajorNonConformities = ( SELECT COUNT(*) FROM _8DAuditFinding WHERE FindingType = 'Major' AND AuditNo = @AuditNo ) SET @NoOfMinorNonConformities = ( SELECT COUNT(*) FROM _8DAuditFinding WHERE FindingType = 'Minor' AND AuditNo = @AuditNo ) -- IF Audit Type is either VDA or External the do not auto calculate the Audit Score IF ( SELECT COUNT(*) FROM _8DAuditTypeByAudit WHERE ( AuditTypeID = 4 OR AuditTypeID = 8 ) AND AuditNo = @AuditNo ) = 0 BEGIN SET @AuditScore = 100 - ( (@NoOfMajorNonConformities * 10) + (@NoOfMinorNonConformities) ) UPDATE _8DAudit SET AuditScore = @AuditScore WHERE AuditNo = @AuditNo END -- calculate Audit Score DECLARE @SEPERATOR as VARCHAR(1) DECLARE @SP INT DECLARE @VALUE VARCHAR(1000) SET @SEPERATOR = ',' CREATE TABLE #tempTab (AuditFindingCategory int not null) WHILE PATINDEX('%' + @SEPERATOR + '%', @FindingCategories) <> 0 BEGIN SELECT @SP = PATINDEX('%' + @SEPERATOR + '%', @FindingCategories) SELECT @VALUE = LEFT(@FindingCategories, @SP - 1) SELECT @FindingCategories = STUFF(@FindingCategories, 1, @SP, '') INSERT INTO #tempTab (AuditFindingCategory) VALUES (@VALUE) END DELETE FROM _8DAuditFindingCategoryByAuditFinding WHERE AuditFindingID = @AuditFindingsID INSERT INTO _8DAuditFindingCategoryByAuditFinding SELECT @AuditFindingsID, AuditFindingCategory FROM #tempTab DROP TABLE #tempTab END GO