Implemented suggested changes and added extra error checking
This commit is contained in:
@ -169,7 +169,6 @@ end event
|
||||
|
||||
Event PUB_SIGN.CLICK()
|
||||
|
||||
|
||||
RDSNo = Get_Property(@WINDOW:'.RDS_NO','TEXT')
|
||||
ReactorType = Get_Property(@WINDOW:'.REACTOR_TYPE','TEXT')
|
||||
LoadLockVal = Get_Property(@WINDOW:'.LOAD_LOCK_SIDE_HIDDEN','TEXT')
|
||||
@ -187,243 +186,252 @@ Event PUB_SIGN.CLICK()
|
||||
Begin Case
|
||||
|
||||
Case SignEventType EQ 'Sign'
|
||||
debug
|
||||
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
||||
WfrQty = Get_Property(@WINDOW:'.WAFERS_IN','TEXT')
|
||||
LLSide = Get_Property(@Window:'.LOAD_LOCK_SIDE', 'DEFPROP')
|
||||
|
||||
Reactor = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_REACTOR$, True$, 0, False$)
|
||||
If Reactor NE '' then
|
||||
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor)
|
||||
ReactorType = ReactorRec<REACTOR_REACT_TYPE$>
|
||||
ROTREnabled = Xlate('REACTOR', Reactor, 'ENABLE_ROTR', 'X')
|
||||
|
||||
// Don't allow tracking in on down reactor
|
||||
ReactorCurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', Reactor, 1, 'X')
|
||||
ReactCurrModeRec = Database_Services('ReadDataRow','REACT_MODE_NG', ReactorCurrModeKey, '','','')
|
||||
CurrReactMode = ReactCurrModeRec<REACT_MODE_NG_MODE$>
|
||||
CurrE10State = Xlate('REACTOR_MODES', CurrReactMode, REACTOR_MODES_E10_STATE$, 'X')
|
||||
|
||||
Override = False$
|
||||
UserVerification = ''
|
||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH':@VM:'ROTR_OVERRIDE'
|
||||
|
||||
ReactorIsDown = CurrE10State _NEC 'PRODUCTIVE'
|
||||
If (ReactorIsDown EQ True$) then
|
||||
// Allow override during prove in
|
||||
If ReactorType EQ 'EPP' then
|
||||
If RDS_Services('IsEpiProTestRun', RDSNo) then Override = True$
|
||||
end
|
||||
|
||||
If Override EQ False$ then
|
||||
UserMsg = "Reactor down. Override required from a lead or supervisor."
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||
Override = UserVerification<1>
|
||||
end
|
||||
end
|
||||
|
||||
If (ReactorIsDown NE True$) OR (Override EQ True$) then
|
||||
If (ReactorType EQ 'ASM+' OR ReactorType EQ 'HTR' OR ReactorType EQ 'ASM') AND (ROTREnabled EQ True$) then
|
||||
ROTRStatus = ReactorRec<REACTOR_ROTR_STATUS$>
|
||||
If ROTRStatus EQ 'F' then
|
||||
FailReason = ReactorRec<REACTOR_ROTR_STATUS_REASON$>
|
||||
Message = 'Unable to load reactor.' : CRLF$ : FailReason
|
||||
RotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
||||
If RotrOverrideCount EQ '' then RotrOverrideCount = 0
|
||||
Message := CRLF$ : RotrOverrideCount : ' override(s) were performed since the ROTR block was originally set.'
|
||||
Message := CRLF$ : 'A lead or supervisor must override to clear ROTR status.'
|
||||
|
||||
Response = Msg(@Window, '', 'RDS_ROTR_OVERRIDE', '', Message)
|
||||
|
||||
Begin Case
|
||||
Case Response EQ 1
|
||||
Response = True$ ; // User Clicked Override
|
||||
Case Response EQ 2
|
||||
Response = False$ ; // User Clicked Cancel
|
||||
Case Response EQ char(27)
|
||||
Response = False$ ; // User Pressed Escape Key
|
||||
End Case
|
||||
|
||||
If Response EQ True$ then
|
||||
If UserVerification EQ '' then
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups)
|
||||
end
|
||||
Valid = UserVerification<1>
|
||||
If Valid EQ True$ then
|
||||
// Prompt user for a comment
|
||||
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)
|
||||
|
||||
IF ResponseComment<2> NE '' THEN
|
||||
// Clear ROTR reactor load block.
|
||||
overrideLogTable = 'RDS':@VM:'REACTOR'
|
||||
overrideLogKey = RDSNo:@VM:Reactor
|
||||
overrideLogUser = Response<2>
|
||||
overrideLogComment = ResponseComment<2>
|
||||
overrideLogCategory = 'ROTR_BLOCK'
|
||||
overrideLogCause = FailReason
|
||||
orKey = Override_Log_Services('Create', overrideLogTable, overrideLogKey, overrideLogUser, overrideLogComment, overrideLogCategory, overrideLogCause)
|
||||
|
||||
//Add override key to RDS
|
||||
RDSRec = Xlate('RDS', RDSNo, '', 'X')
|
||||
RDSRec = Insert(RDSRec, RDS_OVERRIDE_KEYS$, 1, 0, orKey)
|
||||
|
||||
ReactorRec<REACTOR_ROTR_STATUS$> = 'P'
|
||||
|
||||
rotrStatusReason = ReactorRec<REACTOR_ROTR_STATUS_REASON$>
|
||||
ReactorRec<REACTOR_PREVIOUS_ROTR_STATUS_REASON$> = rotrStatusReason
|
||||
ReactorRec<REACTOR_ROTR_STATUS_REASON$> = ''
|
||||
|
||||
ReactorRec<REACTOR_PREVIOUS_ROTR_OVERRIDE_RDS$> = RDSNo
|
||||
|
||||
rotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
||||
ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$> = rotrOverrideCount + 1
|
||||
|
||||
Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactorRec, True$, False$, True$)
|
||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
||||
|
||||
end else
|
||||
//No Comment added. Block Load Signaure
|
||||
Msg(@Window, 'A comment is required to perform an ROTR Block Override', '', '', '')
|
||||
return
|
||||
end
|
||||
end else
|
||||
// ROTR override not verified. Block load signature.
|
||||
return
|
||||
end
|
||||
end else
|
||||
// Block load signature
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SupplAckReq = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, 'LOAD')
|
||||
IF (SupplAckReq NE FALSE$) then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo :@FM: 'LOAD' :@FM: FALSE$)
|
||||
If Response EQ False$ then
|
||||
return
|
||||
end else
|
||||
PreAuthenticated = TRUE$
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
RDSLayerAckReq = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK_REQ', 'X')
|
||||
If RDSLayerAckReq EQ True$ then
|
||||
ErrorMessage = 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
||||
ErrMsg(ErrorMessage)
|
||||
LayerKeys = Xlate('RDS', RDSNo, 'RDS_LAYER_KEYS', 'X')
|
||||
// Just display the first layer
|
||||
RDSLSID = LayerKeys<0, 1>
|
||||
Dialog_Box('RDS_LAYER', @Window, RDSLSID)
|
||||
If Error_Services('NoError') then
|
||||
If Reactor NE '' then
|
||||
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor)
|
||||
if Error_Services('NoError') then
|
||||
ReactorType = ReactorRec<REACTOR_REACT_TYPE$>
|
||||
ROTREnabled = Xlate('REACTOR', Reactor, 'ENABLE_ROTR', 'X')
|
||||
|
||||
RDSLayerAck = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK', 'X')
|
||||
If ( (RDSLayerAck EQ False$) or (RDSLayerAck EQ '') ) then
|
||||
ErrorMessage = 'RDS layer parameters were not acknowledged. Sign load stage event aborting.'
|
||||
ErrMsg(ErrorMessage)
|
||||
return
|
||||
// Don't allow tracking in on down reactor
|
||||
ReactorCurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', Reactor, 1, 'X')
|
||||
ReactCurrModeRec = Database_Services('ReadDataRow','REACT_MODE_NG', ReactorCurrModeKey, '','','')
|
||||
CurrReactMode = ReactCurrModeRec<REACT_MODE_NG_MODE$>
|
||||
CurrE10State = Xlate('REACTOR_MODES', CurrReactMode, REACTOR_MODES_E10_STATE$, 'X')
|
||||
|
||||
Override = False$
|
||||
UserVerification = ''
|
||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH':@VM:'ROTR_OVERRIDE'
|
||||
|
||||
ReactorIsDown = CurrE10State _NEC 'PRODUCTIVE'
|
||||
If (ReactorIsDown EQ True$) then
|
||||
// Allow override during prove in
|
||||
If ReactorType EQ 'EPP' then
|
||||
If RDS_Services('IsEpiProTestRun', RDSNo) then Override = True$
|
||||
end
|
||||
|
||||
If Override EQ False$ then
|
||||
UserMsg = "Reactor down. Override required from a lead or supervisor."
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||
Override = UserVerification<1>
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
FWIInstAckReq = Xlate('RDS', RDSNo, 'FWI_INST_ACK_REQ', 'X')
|
||||
If (FWIInstAckReq EQ True$) then
|
||||
Response = RDS_Services('RDSVerifyInst', RDSNo, 'FWI')
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
|
||||
LoadInstAckReq = Xlate('RDS', RDSNo, 'LOAD_INST_ACK_REQ', 'X')
|
||||
If (LoadInstAckReq EQ True$) then
|
||||
Response = RDS_Services('RDSVerifyInst', RDSNo, 'LOAD')
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
|
||||
SupplAckReq = Xlate('RDS', RDSNo, 'SUPPL_ACK_REQ', 'X')
|
||||
IF (SupplAckReq EQ True$) then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo)
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
//Check if TW Required
|
||||
if XLATE('APP_INFO', 'NEW_TW_SYSTEM_ACTIVE_SWITCH', 1, 'X') EQ True$ AND (ReactorType EQ 'HTR' OR ReactorType EQ 'ASM' OR ReactorType 'ASM+') then
|
||||
UsingTestWafers = False$
|
||||
IsTWReqd = RDS_Services('IsTWLoggingReqd', RDSNo)
|
||||
ExistingTestWafersLogged = Test_Run_Services('GetTestRunKeysByRDS', RdsNo)
|
||||
If ExistingTestWafersLogged NE True$ then
|
||||
If Not(IsTWReqd) then
|
||||
//Test wafer logging is NOT required here.
|
||||
If ReactorType NE 'EPP' then
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'Test Wafer Usage logging is not required on this load.':@FM:'Are any test wafers loaded?')
|
||||
If UsingTestWafers EQ True$ then
|
||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
||||
If TWLogResult NE True$ then
|
||||
ContinueSign = Msg(@Window, '', 'YESNO', '', 'Continue?':@FM:'Test wafer logging was cancelled. Do you wish to continue signing?')
|
||||
If Not(ContinueSign) then return
|
||||
|
||||
If (ReactorIsDown NE True$) OR (Override EQ True$) then
|
||||
If (ReactorType EQ 'ASM+' OR ReactorType EQ 'HTR' OR ReactorType EQ 'ASM') AND (ROTREnabled EQ True$) then
|
||||
ROTRStatus = ReactorRec<REACTOR_ROTR_STATUS$>
|
||||
If ROTRStatus EQ 'F' then
|
||||
FailReason = ReactorRec<REACTOR_ROTR_STATUS_REASON$>
|
||||
Message = 'Unable to load reactor.' : CRLF$ : FailReason
|
||||
RotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
||||
If RotrOverrideCount EQ '' then RotrOverrideCount = 0
|
||||
Message := CRLF$ : RotrOverrideCount : ' override(s) were performed since the ROTR block was originally set.'
|
||||
Message := CRLF$ : 'A lead or supervisor must override to clear ROTR status.'
|
||||
|
||||
Response = Msg(@Window, '', 'RDS_ROTR_OVERRIDE', '', Message)
|
||||
|
||||
Begin Case
|
||||
Case Response EQ 1
|
||||
Response = True$ ; // User Clicked Override
|
||||
Case Response EQ 2
|
||||
Response = False$ ; // User Clicked Cancel
|
||||
Case Response EQ char(27)
|
||||
Response = False$ ; // User Pressed Escape Key
|
||||
End Case
|
||||
|
||||
If Response EQ True$ then
|
||||
If UserVerification EQ '' then
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups)
|
||||
end
|
||||
end
|
||||
end
|
||||
end else
|
||||
//Test wafer logging is Required here.
|
||||
Begin Case
|
||||
Case ReactorType EQ 'ASM' OR ReactorType EQ 'HTR'
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'A test wafer is required to be ran with this load for metrology on this run':@FM:'Are any test wafers loaded?')
|
||||
Case ReactorType EQ 'ASM+'
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'A test wafer is required to be ran with this load for metrology on the next run.':@FM:'Are any test wafers loaded?')
|
||||
End Case
|
||||
If UsingTestWafers EQ True$ then
|
||||
//User has stated that they are using test wafers
|
||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
||||
If TWLogResult NE True$ then
|
||||
//User exited the the TW log prompt answering that they are not using any test wafers.
|
||||
UserMsg = "Unable to sign load because test wafer logging is required on this run. A supervisor or lead may override."
|
||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH'
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||
Override = UserVerification<1>
|
||||
OverrideUser = UserVerification<2>
|
||||
If Override then
|
||||
Override_log_services('Create', 'RDS', RDSNo, OverrideUser, '', 'TW_USAGE', '')
|
||||
Valid = UserVerification<1>
|
||||
If Valid EQ True$ then
|
||||
// Prompt user for a comment
|
||||
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)
|
||||
|
||||
IF ResponseComment<2> NE '' THEN
|
||||
// Clear ROTR reactor load block.
|
||||
overrideLogTable = 'RDS':@VM:'REACTOR'
|
||||
overrideLogKey = RDSNo:@VM:Reactor
|
||||
overrideLogUser = Response<2>
|
||||
overrideLogComment = ResponseComment<2>
|
||||
overrideLogCategory = 'ROTR_BLOCK'
|
||||
overrideLogCause = FailReason
|
||||
orKey = Override_Log_Services('Create', overrideLogTable, overrideLogKey, overrideLogUser, overrideLogComment, overrideLogCategory, overrideLogCause)
|
||||
|
||||
//Add override key to RDS
|
||||
RDSRec = Xlate('RDS', RDSNo, '', 'X')
|
||||
RDSRec = Insert(RDSRec, RDS_OVERRIDE_KEYS$, 1, 0, orKey)
|
||||
|
||||
ReactorRec<REACTOR_ROTR_STATUS$> = 'P'
|
||||
|
||||
rotrStatusReason = ReactorRec<REACTOR_ROTR_STATUS_REASON$>
|
||||
ReactorRec<REACTOR_PREVIOUS_ROTR_STATUS_REASON$> = rotrStatusReason
|
||||
ReactorRec<REACTOR_ROTR_STATUS_REASON$> = ''
|
||||
|
||||
ReactorRec<REACTOR_PREVIOUS_ROTR_OVERRIDE_RDS$> = RDSNo
|
||||
|
||||
rotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
||||
ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$> = rotrOverrideCount + 1
|
||||
|
||||
Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactorRec, True$, False$, True$)
|
||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
||||
|
||||
end else
|
||||
//No Comment added. Block Load Signaure
|
||||
Msg(@Window, 'A comment is required to perform an ROTR Block Override', '', '', '')
|
||||
return
|
||||
end
|
||||
end else
|
||||
// ROTR override not verified. Block load signature.
|
||||
return
|
||||
end
|
||||
end
|
||||
end else
|
||||
//User has stated that they are NOT using test wafers
|
||||
UserMsg = "Unable to sign load because test wafer logging is required on this run. A supervisor or lead may override."
|
||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH'
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||
Override = UserVerification<1>
|
||||
OverrideUser = UserVerification<2>
|
||||
If Override then
|
||||
Override_log_services('Create', 'RDS', RDSNo, OverrideUser, '', 'TW_USAGE', '')
|
||||
end else
|
||||
// Block load signature
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SupplAckReq = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, 'LOAD')
|
||||
IF (SupplAckReq NE FALSE$) then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo :@FM: 'LOAD' :@FM: FALSE$)
|
||||
If Response EQ False$ then
|
||||
return
|
||||
end else
|
||||
PreAuthenticated = TRUE$
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
RDSLayerAckReq = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK_REQ', 'X')
|
||||
If RDSLayerAckReq EQ True$ then
|
||||
ErrorMessage = 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
||||
ErrMsg(ErrorMessage)
|
||||
LayerKeys = Xlate('RDS', RDSNo, 'RDS_LAYER_KEYS', 'X')
|
||||
// Just display the first layer
|
||||
RDSLSID = LayerKeys<0, 1>
|
||||
Dialog_Box('RDS_LAYER', @Window, RDSLSID)
|
||||
|
||||
RDSLayerAck = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK', 'X')
|
||||
If ( (RDSLayerAck EQ False$) or (RDSLayerAck EQ '') ) then
|
||||
ErrorMessage = 'RDS layer parameters were not acknowledged. Sign load stage event aborting.'
|
||||
ErrMsg(ErrorMessage)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
FWIInstAckReq = Xlate('RDS', RDSNo, 'FWI_INST_ACK_REQ', 'X')
|
||||
If (FWIInstAckReq EQ True$) then
|
||||
Response = RDS_Services('RDSVerifyInst', RDSNo, 'FWI')
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
|
||||
LoadInstAckReq = Xlate('RDS', RDSNo, 'LOAD_INST_ACK_REQ', 'X')
|
||||
If (LoadInstAckReq EQ True$) then
|
||||
Response = RDS_Services('RDSVerifyInst', RDSNo, 'LOAD')
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
|
||||
SupplAckReq = Xlate('RDS', RDSNo, 'SUPPL_ACK_REQ', 'X')
|
||||
IF (SupplAckReq EQ True$) then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo)
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
//Check if TW Required
|
||||
if XLATE('APP_INFO', 'NEW_TW_SYSTEM_ACTIVE_SWITCH', 1, 'X') EQ True$ AND (ReactorType EQ 'HTR' OR ReactorType EQ 'ASM' OR ReactorType 'ASM+') then
|
||||
UsingTestWafers = False$
|
||||
IsTWReqd = RDS_Services('IsTWLoggingReqd', RDSNo)
|
||||
ExistingTestWafersLogged = Test_Run_Services('GetTestRunKeysByRDS', RdsNo)
|
||||
If ExistingTestWafersLogged NE True$ then
|
||||
If Not(IsTWReqd) then
|
||||
//Test wafer logging is NOT required here.
|
||||
If ReactorType NE 'EPP' then
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'Test Wafer Usage logging is not required on this load.':@FM:'Are any test wafers loaded?')
|
||||
If UsingTestWafers EQ True$ then
|
||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
||||
If TWLogResult NE True$ then
|
||||
ContinueSign = Msg(@Window, '', 'YESNO', '', 'Continue?':@FM:'Test wafer logging was cancelled. Do you wish to continue signing?')
|
||||
If Not(ContinueSign) then return
|
||||
end
|
||||
end
|
||||
end
|
||||
end else
|
||||
//Test wafer logging is Required here.
|
||||
Begin Case
|
||||
Case ReactorType EQ 'ASM' OR ReactorType EQ 'HTR'
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'A test wafer is required to be ran with this load for metrology on this run':@FM:'Are any test wafers loaded?')
|
||||
Case ReactorType EQ 'ASM+'
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'A test wafer is required to be ran with this load for metrology on the next run.':@FM:'Are any test wafers loaded?')
|
||||
End Case
|
||||
If UsingTestWafers EQ True$ then
|
||||
//User has stated that they are using test wafers
|
||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
||||
If TWLogResult NE True$ then
|
||||
//User exited the the TW log prompt answering that they are not using any test wafers.
|
||||
UserMsg = "Unable to sign load because test wafer logging is required on this run. A supervisor or lead may override."
|
||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH'
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||
Override = UserVerification<1>
|
||||
OverrideUser = UserVerification<2>
|
||||
If Override then
|
||||
Override_log_services('Create', 'RDS', RDSNo, OverrideUser, '', 'TW_USAGE', '')
|
||||
end else
|
||||
return
|
||||
end
|
||||
end
|
||||
end else
|
||||
//User has stated that they are NOT using test wafers
|
||||
UserMsg = "Unable to sign load because test wafer logging is required on this run. A supervisor or lead may override."
|
||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH'
|
||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||
Override = UserVerification<1>
|
||||
OverrideUser = UserVerification<2>
|
||||
If Override then
|
||||
Override_log_services('Create', 'RDS', RDSNo, OverrideUser, '', 'TW_USAGE', '')
|
||||
end else
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ReadyToSign = QA_Services('LoadSignatureReady', RDSNo, @User4, WfrQty, LLSide)
|
||||
If ReadyToSign EQ True$ then
|
||||
If PreAuthenticated EQ FALSE$ then
|
||||
initParams = ''
|
||||
initParams<4> = 'Sign Load'
|
||||
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||
Valid = Response<1>
|
||||
If (Valid EQ True$) then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
|
||||
ReadyToSign = QA_Services('LoadSignatureReady', RDSNo, @User4, WfrQty, LLSide)
|
||||
If ReadyToSign EQ True$ then
|
||||
If PreAuthenticated EQ FALSE$ then
|
||||
initParams = ''
|
||||
initParams<4> = 'Sign Load'
|
||||
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||
Valid = Response<1>
|
||||
If (Valid EQ True$) then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end else
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end
|
||||
If Error_Services('HasError') then
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
ErrMsg(ErrorMsg)
|
||||
end
|
||||
end else
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
Msg(@Window, ErrorMsg)
|
||||
end
|
||||
end
|
||||
If Error_Services('HasError') then
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
ErrMsg(ErrorMsg)
|
||||
end else
|
||||
Msg(@Window, "Reactor load signature not allowed on a down reactor.")
|
||||
end
|
||||
end else
|
||||
Msg(@Window, "Reactor load signature not allowed on a down reactor.")
|
||||
Msg(@Window, "RDS is not assigned to a reactor.")
|
||||
end
|
||||
end else
|
||||
Msg(@Window, "RDS is not assigned to a reactor.")
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
Msg(@Window, ErrorMsg)
|
||||
end
|
||||
GoSub OLE_LL_Status
|
||||
Set_Property(@Window, 'SAVEWARN', False$)
|
||||
@ -720,3 +728,4 @@ return
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user