Mike Phares ab800974b7 Programmability objects from database
Removed commented code
Added fn_GetExpiredTECNByOriginator
2024-12-12 12:15:46 -07:00

70 lines
1.9 KiB
Transact-SQL

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: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <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