From e4cca79a08adc337c17e4896b0a029ead60b2c50 Mon Sep 17 00:00:00 2001 From: "Infineon\\Ouellette" Date: Thu, 21 Nov 2024 10:22:03 -0700 Subject: [PATCH] First final commit --- LSL2/STPROC/CREATENEWTESTWAFERLOT_API.txt | 1 + LSL2/STPROC/LABELING_SERVICES.txt | 2 +- LSL2/STPROC/LOT_SERVICES.txt | 32 +++-- .../NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt | 1 - LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt | 7 + LSL2/STPROC/SCAN_SERVICES.txt | 133 ++++++++++++++---- 6 files changed, 134 insertions(+), 42 deletions(-) diff --git a/LSL2/STPROC/CREATENEWTESTWAFERLOT_API.txt b/LSL2/STPROC/CREATENEWTESTWAFERLOT_API.txt index 49c8330..136e0a4 100644 --- a/LSL2/STPROC/CREATENEWTESTWAFERLOT_API.txt +++ b/LSL2/STPROC/CREATENEWTESTWAFERLOT_API.txt @@ -145,3 +145,4 @@ CreateHALItem: end return + diff --git a/LSL2/STPROC/LABELING_SERVICES.txt b/LSL2/STPROC/LABELING_SERVICES.txt index 4128292..f4be7c0 100644 --- a/LSL2/STPROC/LABELING_SERVICES.txt +++ b/LSL2/STPROC/LABELING_SERVICES.txt @@ -29,7 +29,6 @@ Return Response or "" //----------------------------------------------------------------------------- Service PrintLabel(ZPLString, PrinterId) - debug SuccessfulPrint = False$ ErrorMessage = '' If PrinterId EQ '' then @@ -174,3 +173,4 @@ end service + diff --git a/LSL2/STPROC/LOT_SERVICES.txt b/LSL2/STPROC/LOT_SERVICES.txt index 8c5f15b..7f396eb 100644 --- a/LSL2/STPROC/LOT_SERVICES.txt +++ b/LSL2/STPROC/LOT_SERVICES.txt @@ -28,7 +28,7 @@ LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' L Headers = 'Logging DTM' : @FM : 'Lot Id' : @FM : 'Event Type' : @FM : 'Operator' : @FM : 'Begin Wafer Qty' : @FM : 'End Wafer Qty' : @FM : 'Bonus Wafer Qty' : @FM : 'Reduce Wafer Qty' : @FM : 'Message' objLotEventLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$) -Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD', 'TW_USE' +Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD', 'TW_USE', 'CLOSE' Options LOT_TYPES = 'TW', 'RDS', 'WM_OUT', 'WM_IN' GoToService @@ -47,7 +47,6 @@ Service GenerateNewLotId(LotType) GeneratedLotID = '' Begin Case Case LotType EQ 'TW' - Loop Until ValidLotNum EQ True$ LotPrefix = 'TW' @@ -80,8 +79,6 @@ end service Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, VendorCode, Username, PrinterID, LotId) - ; //649491 , 03M6241, 814474, SP - debug CreatedLotNumber = '' ErrorMessage = '' Begin Case @@ -138,11 +135,10 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo //Get Curr Operation(Should be first one in sequence) ThisLotCurrOpId = Lot_Services('GetLotCurrOperationId', CreatedLotNumber) If ThisLotCurrOpId NE '' then - Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_IN', 'Move Lot in.', '', 0, 0, ThisLotCurrOpId, Username) - //Lot_Services('MoveInLot', NewLotId, Username) + Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_IN', 'Move Lot in.', '', 0, 0, ThisLotCurrOpId, Username) if Error_Services('NoError') then //Set lot to open - Lot_Services('OpenLot', CreatedLotNumber) + Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'OPEN', 'Setting lot to open.', '', 0, 0, '', Username) if Error_Services('NoError') then If PrinterID NE 'WEB' then //If PrinterID is set to WEB this means the request comes from OI_Wizard and the client is going to handle printing. @@ -166,12 +162,19 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') end end else + //Close LOT record as there was an error + Lot_Services('CreateLotEvent', NewLotId, 'TW', Datetime(), 'CLOSE', 'Error occured while created lot. Automatically setting to close', '', 0, 0, '', 'SYSTEM') ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') end end else + //Close LOT record as there was an error + Lot_Services('CreateLotEvent', NewLotId, 'TW', Datetime(), 'CLOSE', 'Error occured while created lot. Automatically setting to close', '', 0, 0, '', 'SYSTEM') ErrorMessage = 'Error in Create New Test Wafer Lot Process, error getting current operation for lot: ' : NewLotId end end else + //Close LOT record as there was an error + //Database_Services('DeleteDataRow', 'LOT', NewLotId, True$, False$) + Lot_Services('CreateLotEvent', NewLotId, 'TW', Datetime(), 'CLOSE', 'Error occured while created lot. Automatically setting to close', '', 0, 0, '', 'SYSTEM') ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') end end @@ -208,13 +211,13 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo LogData<4> = 'Successfully created lot id ' : CreatedLotNumber : ' of product type ' : ProdName '.' Logging_Services('AppendLog', objTWCreationLog, LogData, @RM, @FM, False$) end else - Error_Services('Add', ErrorMessage) LogData = '' LogData<1> = LoggingDTM LogData<2> = ProdName LogData<3> = Username LogData<4> = ErrorMessage Logging_Services('AppendLog', objTWCreationLog, LogData, @RM, @FM, False$) + Error_Services('Add', ErrorMessage) end Response = CreatedLotNumber @@ -565,7 +568,6 @@ Service IsLotMovedIn(LotId) end service Service MoveInLot(LotID, Operator) - debug ErrorMessage = '' ThisLotCurrOperationID = '' If LotId NE '' then @@ -584,7 +586,6 @@ Service MoveInLot(LotID, Operator) If Error_Services('NoError') then LotType = XLATE('LOT', LotId, LOT_TYPE$, 'X') CurrOperation = XLATE('LOT_OPERATION', ThisLotCurrOperationID, LOT_OPERATION_OPERATION_ID$, 'X') - //Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_IN', '', '', 0, 0, CurrOperation, Operator) If Error_Services('HasError') then ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. ' : Error_Services('GetMessage') end @@ -632,7 +633,6 @@ Service MoveOutLot(LotID, Operator) If Error_Services('NoError') then LotType = XLATE('LOT', LotId, LOT_TYPE$, 'X') CurrOperation = XLATE('LOT_OPERATION', ThisLotCurrOperationID, LOT_OPERATION_OPERATION_ID$, 'X') - //Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_OUT', '', '', ReduceQty, BonusQty, CurrOperation, Operator) If Error_Services('HasError') then ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. ' : Error_Services('GetMessage') end @@ -745,7 +745,15 @@ Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_ Case EventType EQ 'LOCATION' //Do nothing for now. Case EventType EQ 'CLOSE' - //Do nothing for now. + Lot_Services('CloseLot', LotId) + If Error_Services('HasError') then + ErrorMessage = 'Error in Create Lot Event routine, ' : Error_Services('GetMessage') + end + Case EventType EQ 'OPEN' + Lot_Services('OpenLot', LotId) + If Error_Services('HasError') then + ErrorMessage = 'Error in Create Lot Event routine, ' : Error_Services('GetMessage') + end Case Otherwise$ ErrorMessage = 'Error in Create Lot Event routine, event type of ' : EventType : ' passed to routine is not valid for a lot of type TW.' End Case diff --git a/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt b/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt index 1ded9b5..8849834 100644 --- a/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt +++ b/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt @@ -168,7 +168,6 @@ Event PUB_CLEAR.CLICK() end event Event PUB_SUBMIT.CLICK() - debug NotReadyReason = '' //Gather all field information ReasonForTest = Get_Property(@Window : '.CMB_TEST_TYPE', 'TEXT') diff --git a/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt b/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt index c94eac0..f843181 100644 --- a/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt +++ b/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt @@ -104,4 +104,11 @@ GetLot: end return +ResetForm: + Set_Property(@Window : '.EDL_CURR_OPERATION', 'TEXT', '') + Set_Property(@Window : '.EDL_CURR_WAFER_QTY', 'TEXT', '') + Set_Property(@Window : '.EDT_LOT_OPERATIONS', 'ARRAY', '') + Set_Property(@Window : '.EDT_LOT_EVENTS', 'ARRAY', '') +return + diff --git a/LSL2/STPROC/SCAN_SERVICES.txt b/LSL2/STPROC/SCAN_SERVICES.txt index 5e43b61..35c92c8 100644 --- a/LSL2/STPROC/SCAN_SERVICES.txt +++ b/LSL2/STPROC/SCAN_SERVICES.txt @@ -526,7 +526,7 @@ Service ProcessScanData(ScanID, ScanJSON) TWLotQuantity = Field(ScanData, '|', 3) ThisScanTWLots = ScansRow Locate TWLot in ThisScanTWLots using @VM setting twPOS then - ScansRow = TWLotQuantity + ScansRow = TWLotQuantity end Case ScanData[1, 17] EQ 'TESTRUNTYPEUPDATE' TestRunTypeId = Field(ScanData, '|', 2) @@ -618,9 +618,37 @@ Service ProcessScanData(ScanID, ScanJSON) // working with an RDS and not a WM_IN or WM_OUT cassette ID. They are not used during the // "RDS" process. - If (CassetteIDs NE '') then + If (CassetteIDs NE '') then + TestWaferLotData = ScansRow + Abort = False$ + If TestWaferLotData NE '' then + ThisTestRunType = ScansRow + If ThisTestRunType NE '' then + for each TWLot in TestWaferLotData using @VM setting twPOS + If ScansRow NE '' OR ScansRow GT 0 then + TWLotCurrOperation = Lot_Services('GetLotCurrOperationName', TWLot) + If TWLotCurrOperation NE 'TW_CREATE' AND TWLotCurrOperation NE 'TW_CLOSE' then + TWLotCurrOpen = Database_Services('ReadDataColumn', 'LOT', TWLot, LOT_OPEN$, True$, 0, False$) + If Not(TWLotCurrOpen) then + Abort = True$ + Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is closed and cannot be used at this time.') + end + end else + Abort = True$ + Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is currently at ':TWLotCurrOperation:' and cannot be used at this time.') + end + end else + Abort = True$ + Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' must have a quantity associated with it.') + end + Until Abort + Next TWLot + end + end else + Scan_Services('AddNotAcceptableReason', 'A test run type is required to log test wafer usage.') + end // Ensure only one cassette is scanned - If (NumCass EQ 1) then + If (NumCass EQ 1) AND Not(Abort) then CassetteID = CassetteIDs<0, NumCass> // Ensure we are working with an RDS and not a WM_OUT/WM_IN cassette If (Count(CassetteID, '.') EQ 0) then @@ -1041,20 +1069,38 @@ Service ProcessScanData(ScanID, ScanJSON) end end else If ScansRow NE '' then - //Test Wafer Lot Loading - TestWaferLotData = ScansRow - Abort = False$ - for each TWLot in TestWaferLotData using @VM setting twPOS - If ScansRow EQ '' OR ScansRow LE 0 then - Scan_Services('AddNotAcceptableReason', 'Each test wafer lot logged must have a quantity associated with it.') - end else - ThisUser = ScansRow - If Not(RowExists('LSL_USERS', ThisUser)) then - Scan_Services('AddNotAcceptableReason', 'A User ID Scan is required to log test wafer usage.') - end - end - Until False$ - Next TWLot + ThisTestRunType = ScansRow + ThisUser = ScansRow + If ThisTestRunType NE '' then + If RowExists('LSL_USERS', ThisUser) then + TestWaferLotData = ScansRow + Abort = False$ + for each TWLot in TestWaferLotData using @VM setting twPOS + If ScansRow NE '' OR ScansRow GT 0 then + TWLotCurrOperation = Lot_Services('GetLotCurrOperationName', TWLot) + If TWLotCurrOperation NE 'TW_CREATE' AND TWLotCurrOperation NE 'TW_CLOSE' then + TWLotCurrOpen = Database_Services('ReadDataColumn', 'LOT', TWLot, LOT_OPEN$, True$, 0, False$) + If Not(TWLotCurrOpen) then + + Abort = True$ + Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is closed and cannot be used at this time.') + end + end else + Abort = True$ + Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is currently at ':TWLotCurrOperation:' and cannot be used at this time.') + end + end else + Abort = True$ + Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' must have a quantity associated with it.') + end + Until Abort + Next TWLot + end else + Scan_Services('AddNotAcceptableReason', 'A User ID Scan is required to log test wafer usage.') + end + end else + Scan_Services('AddNotAcceptableReason', 'A test run type is required to log test wafer usage.') + end end else Scan_Services('AddNotAcceptableReason', 'A cassette must be scanned in order to complete a tool scan.') end @@ -1295,16 +1341,48 @@ Service AcceptScan(ScanID, ScanJSON) // Check if both the PRE and LOAD stages are ready to sign PreStageSigned = False$ LoadStageSigned = False$ - PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1) - If PreStageSigned EQ True$ then - LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1) + //Log test wafer usage here + If TestWaferLots NE '' then + Continue = False$ + ToolID = ScansRow + Reactor = ToolID[-1, 'BR'] + Username = ScansRow + TestWaferLotQtys = ScansRow + PSNo = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_PROD_SPEC_ID$, True$, 0, False$) + NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'R', Reactor, PSNo, RDSNo,Username , TestWaferLots, TestWaferLotQtys) + If Error_Services('NoError') then + Continue = True$ + end else + ErrorMessage = Error_Services('GetMessage') + Error_Services('Set', ErrorMessage) + Continue = False$ + end + If Continue then + PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1) + If PreStageSigned EQ True$ then + LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1) + end + If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then + Result = '(':CassetteID:') Load stage signed.' + end + LogData<6> = Action + LogData<7> = Result + Logging_Services('AppendLog', objLog, LogData, @RM, @FM) + end + + end else + PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1) + If PreStageSigned EQ True$ then + LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1) + end + If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then + Result = '(':CassetteID:') Load stage signed.' + end + LogData<6> = Action + LogData<7> = Result + Logging_Services('AppendLog', objLog, LogData, @RM, @FM) end - If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then - Result = '(':CassetteID:') Load stage signed.' - end - LogData<6> = Action - LogData<7> = Result - Logging_Services('AppendLog', objLog, LogData, @RM, @FM) + Case CurrStage _EQC 'LOAD' Action = 'LOAD' // Check if LOAD stage is ready to sign @@ -1333,13 +1411,12 @@ Service AcceptScan(ScanID, ScanJSON) Error_Services('Set', '(':CassetteID:') The ':CurrStage:' is not currently supported by the barcode application.') End Case Case CassetteID EQ '' AND TestWaferLots NE '' - debug //Tool scan with ONLY test wafers being logged. ToolID = ScansRow Reactor = ToolID[-1, 'BR'] Username = ScansRow TestWaferLotQtys = ScansRow - NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'REACTOR', Reactor, '', '',Username , TestWaferLots, TestWaferLotQtys) + NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'R', Reactor, '', '',Username , TestWaferLots, TestWaferLotQtys) If Error_Services('HasError') then ErrorMessage = Error_Services('GetMessage') Error_Services('Set', ErrorMessage)