Merged PR 10039: Code to determine if a test wafer usage logging is required.
Description Created method to determine if a TW is required. HTR and ASM type reactors will required a test wafer to be logged on runs where a test wafer is prescribed. ASM+ type reactors will require a test wafer to be logged on one run prior to a run where a test wafer is prescribed for metrology. This code is gated by an active switch which will be removed when the system goes live. EpiPro is not effected Related work items: #222043
This commit is contained in:
parent
790d3e7b8c
commit
49c9ab09fd
@ -340,6 +340,52 @@ Event PUB_SIGN.CLICK()
|
||||
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.
|
||||
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 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 form without logging anything.
|
||||
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>
|
||||
If Not(Override) then return
|
||||
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>
|
||||
If Not(Override) then return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ReadyToSign = QA_Services('LoadSignatureReady', RDSNo, @User4, WfrQty, LLSide)
|
||||
If ReadyToSign EQ True$ then
|
||||
@ -349,109 +395,12 @@ Event PUB_SIGN.CLICK()
|
||||
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||
Valid = Response<1>
|
||||
If (Valid EQ True$) then
|
||||
if XLATE('APP_INFO', 'NEW_TW_SYSTEM_ACTIVE_SWITCH', 1, 'X') EQ True$ then
|
||||
UsingTestWafers = False$
|
||||
ExistingTestWafersLogged = Test_Run_Services('GetTestRunKeysByRDS', RdsNo)
|
||||
If ExistingTestWafersLogged EQ '' then
|
||||
if ReactorType NE 'EPP' then
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'Log Test Wafer Usage':@FM:'Are any test wafers loaded?')
|
||||
end
|
||||
IsTWReqd = RDS_Services('IsTWLoggingReqd', RDSNo)
|
||||
If UsingTestWafers then
|
||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
||||
If TWLogResult then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end else
|
||||
If IsTWReqd then
|
||||
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>
|
||||
If Override then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end else
|
||||
ContinueLoad = Msg(@Window, '', 'YESNO', '', 'Continue?':@FM:'Test wafer logging was cancelled. Do you wish to continue signing?')
|
||||
If ContinueLoad then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end
|
||||
end
|
||||
end else
|
||||
if IsTWReqd EQ False$ then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end else
|
||||
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>
|
||||
If Override then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end else
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
|
||||
end else
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
|
||||
end
|
||||
end else
|
||||
if XLATE('APP_INFO', 'NEW_TW_SYSTEM_ACTIVE_SWITCH', 1, 'X') EQ True$ then
|
||||
UsingTestWafers = False$
|
||||
ExistingTestWafersLogged = Test_Run_Services('GetTestRunKeysByRDS', RdsNo)
|
||||
If ExistingTestWafersLogged EQ '' then
|
||||
if ReactorType NE 'EPP' then
|
||||
UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'Log Test Wafer Usage':@FM:'Are any test wafers loaded?')
|
||||
end
|
||||
IsTWReqd = RDS_Services('IsTWLoggingReqd', RDSNo)
|
||||
If UsingTestWafers then
|
||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
||||
If TWLogResult then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end else
|
||||
If IsTWReqd then
|
||||
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>
|
||||
If Override then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end else
|
||||
ContinueLoad = Msg(@Window, '', 'YESNO', '', 'Continue?':@FM:'Test wafer logging was cancelled. Do you wish to continue signing?')
|
||||
If ContinueLoad then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end
|
||||
end
|
||||
end else
|
||||
if IsTWReqd EQ False$ then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end else
|
||||
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>
|
||||
If Override then
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end else
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
|
||||
end else
|
||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||
end
|
||||
end
|
||||
end
|
||||
If Error_Services('HasError') then
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
ErrMsg(ErrorMsg)
|
||||
|
@ -788,6 +788,7 @@ Service IsTWLoggingReqd(RDSNo)
|
||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||
WONo = RDSRec<RDS_WO$>
|
||||
ReactNo = RDSRec<RDS_REACTOR$>
|
||||
ReactorType = Database_Services('ReadDataColumn', 'REACTOR', ReactNo, REACTOR_REACT_TYPE$, True$, 0, False$)
|
||||
ThisReactorRunOrder = 0
|
||||
ReactRDSNos = RDS_Services('GetRDSRunHistoryByReactorAndWO', ReactNo, WONo)
|
||||
LOCATE RDSNo IN ReactRDSNos USING @VM SETTING ThisReactorRunOrder ELSE Return
|
||||
@ -808,9 +809,24 @@ Service IsTWLoggingReqd(RDSNo)
|
||||
CASE MeasureFreq = 'F' AND ThisReactorRunOrder = 1 ; IsTWReqd = 1
|
||||
CASE ThisReactorRunOrder = Start ; IsTWReqd = 1
|
||||
CASE NUM(MeasureFreq)
|
||||
Begin Case
|
||||
Case ReactorType EQ 'HTR'
|
||||
//Logging required on lot the data gets logged to
|
||||
IF MOD(ThisReactorRunOrder,MeasureFreq) - Start = 0 THEN
|
||||
IsTWReqd = True$
|
||||
END
|
||||
Case ReactorType EQ 'ASM'
|
||||
//Logging required on lot the data gets logged to
|
||||
IF MOD(ThisReactorRunOrder,MeasureFreq) - Start = 0 THEN
|
||||
IsTWReqd = True$
|
||||
END
|
||||
Case ReactorType EQ 'ASM+'
|
||||
//Logging required on lot prior to the one the data gets logged to.
|
||||
IF MOD(ThisReactorRunOrder,MeasureFreq) = 0 THEN
|
||||
IsTWReqd = True$
|
||||
END
|
||||
End Case
|
||||
|
||||
END CASE
|
||||
end
|
||||
Until IsTWReqd EQ True$
|
||||
|
Loading…
x
Reference in New Issue
Block a user