129 lines
3.0 KiB
Transact-SQL
129 lines
3.0 KiB
Transact-SQL
USE [FabApprovalSystem]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[MRBInsertChildLot_NotInTheMRB] Script Date: 11/21/2024 11:29:05 AM ******/
|
|
SET
|
|
ANSI_NULLS ON
|
|
GO
|
|
SET
|
|
QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE PROCEDURE [dbo].[MRBInsertChildLot_NotInTheMRB] -- Add the parameters for the stored procedure here
|
|
@MRBNumber INT,
|
|
@LotNumber VARCHAR(10),
|
|
@DispoType CHAR(1) = NULL,
|
|
@ParentIsDirty BIT,
|
|
@ParentLotNumber VARCHAR(10) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
|
|
-- interfering with SELECT statements.
|
|
SET
|
|
NOCOUNT ON;
|
|
|
|
DECLARE @ParentAddRemoveChangeMRBFlag CHAR(1) DECLARE @ChildAddRemoveChangeMRBFlag CHAR(1)
|
|
SELECT
|
|
@ParentIsDirty = IsDirty,
|
|
@DispoType = DispoType,
|
|
@ParentAddRemoveChangeMRBFlag = AddRemoveChangeMRBFlag
|
|
FROM
|
|
MRBLotsToBeSentToSPN
|
|
WHERE
|
|
LotNumber = @ParentLotNumber
|
|
AND MRBNumber = @MRBNumber -- Insert into table so that Lot in the Lot Disposition Table can be associated to the MRB
|
|
DELETE FROM
|
|
MRBChildLotNotInMRB
|
|
WHERE
|
|
LotNumber = @LotNumber
|
|
AND MRBNumber = @MRBNumber -- Do not insert the lot into the MRBChildLotNotInMRB table if the Parent was a DELETE
|
|
IF @ParentAddRemoveChangeMRBFlag <> 'R' BEGIN
|
|
INSERT INTO
|
|
MRBChildLotNotInMRB (LotNumber, ParentLotNumber, MRBNumber, DispoType)
|
|
VALUES
|
|
(
|
|
@LotNumber,
|
|
@ParentLotNumber,
|
|
@MRBNumber,
|
|
@DispoType
|
|
)
|
|
END -- Insert Lot into a table that is used for sending to SPN
|
|
IF EXISTS(
|
|
SELECT
|
|
*
|
|
FROM
|
|
MRBLotsToBeSentToSPN
|
|
WHERE
|
|
LotNumber = @LotNumber
|
|
AND MRBNumber = @MRBNumber
|
|
) BEGIN -- Do not need to have the if/else. could have set the IsDirty = @ParentIsDirty
|
|
IF @ParentIsDirty = 1 BEGIN
|
|
UPDATE
|
|
MRBLotsToBeSentToSPN
|
|
SET
|
|
DispoType = @DispoType,
|
|
IsDirty = 1 -- keep the AddRemoveChangeMRBFlag same
|
|
WHERE
|
|
LotNumber = @LotNumber
|
|
AND MRBNumber = @MRBNumber
|
|
END
|
|
ELSE BEGIN
|
|
UPDATE
|
|
MRBLotsToBeSentToSPN
|
|
SET
|
|
DispoType = @DispoType,
|
|
IsDirty = 0 -- keep the AddRemoveChangeMRBFlag same
|
|
WHERE
|
|
LotNumber = @LotNumber
|
|
AND MRBNumber = @MRBNumber
|
|
END
|
|
END
|
|
ELSE BEGIN --Even though its an Insert, The AddRemoveChangeMRBFlag needs to be set to "C" because this
|
|
-- lot already has a Dispo Type in SPN which is, carried over from the parent lot
|
|
IF @ParentIsDirty = 1 BEGIN -- If the Parent has been deleted and ther is a split in SPN
|
|
-- then set the flag to 'R' to delete the child lot in SPN
|
|
IF @ParentAddRemoveChangeMRBFlag = 'R'
|
|
SET
|
|
@ChildAddRemoveChangeMRBFlag = 'R'
|
|
ELSE
|
|
SET
|
|
@ChildAddRemoveChangeMRBFlag = 'C'
|
|
INSERT INTO
|
|
MRBLotsToBeSentToSPN (
|
|
LotNumber,
|
|
ParentLotNumber,
|
|
MRBNumber,
|
|
DispoType,
|
|
AddRemoveChangeMRBFlag,
|
|
IsDirty
|
|
)
|
|
VALUES
|
|
(
|
|
@LotNumber,
|
|
@ParentLotNumber,
|
|
@MRBNumber,
|
|
@DispoType,
|
|
@ChildAddRemoveChangeMRBFlag,
|
|
1
|
|
)
|
|
END
|
|
ELSE -- Even though this lot will not be sent to SPN,
|
|
-- need to keep a record of this lot in this tble to reference it with the MRBChildLotNotInMRB table
|
|
BEGIN
|
|
INSERT INTO
|
|
MRBLotsToBeSentToSPN (
|
|
LotNumber,
|
|
ParentLotNumber,
|
|
MRBNumber,
|
|
DispoType,
|
|
AddRemoveChangeMRBFlag,
|
|
IsDirty
|
|
)
|
|
VALUES
|
|
(
|
|
@LotNumber,
|
|
@ParentLotNumber,
|
|
@MRBNumber,
|
|
@DispoType,
|
|
'C',
|
|
0
|
|
)
|
|
END
|
|
END
|
|
END
|
|
GO |