ebase 8/22/2025
Modified RDS_Actions to fix RDSNo being unassigned when calling obj_wo_react -> RemRDS various bug fixes Re-initializaing branch Modified RDS_Actions to fix RDSNo being unassigned when calling obj_wo_react -> RemRDS Added a check prior to running Load logic to check that a reactor is assigned.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -3591,7 +3591,7 @@
|
|||||||
"<22,2>": "",
|
"<22,2>": "",
|
||||||
"<22,3>": "EDITFIELD",
|
"<22,3>": "EDITFIELD",
|
||||||
"<22,4>": "RDS_PRE_EPI",
|
"<22,4>": "RDS_PRE_EPI",
|
||||||
"<22,5>": "366",
|
"<22,5>": "380",
|
||||||
"<22,6>": "370",
|
"<22,6>": "370",
|
||||||
"<22,7>": "132",
|
"<22,7>": "132",
|
||||||
"<22,8>": "18",
|
"<22,8>": "18",
|
||||||
@ -3731,7 +3731,7 @@
|
|||||||
"<23,2>": "",
|
"<23,2>": "",
|
||||||
"<23,3>": "EDITFIELD",
|
"<23,3>": "EDITFIELD",
|
||||||
"<23,4>": "RDS_PRE_EPI",
|
"<23,4>": "RDS_PRE_EPI",
|
||||||
"<23,5>": "505",
|
"<23,5>": "521",
|
||||||
"<23,6>": "370",
|
"<23,6>": "370",
|
||||||
"<23,7>": "84",
|
"<23,7>": "84",
|
||||||
"<23,8>": "18",
|
"<23,8>": "18",
|
||||||
@ -3871,7 +3871,7 @@
|
|||||||
"<24,2>": "",
|
"<24,2>": "",
|
||||||
"<24,3>": "EDITFIELD",
|
"<24,3>": "EDITFIELD",
|
||||||
"<24,4>": "RDS_PRE_EPI",
|
"<24,4>": "RDS_PRE_EPI",
|
||||||
"<24,5>": "593",
|
"<24,5>": "612",
|
||||||
"<24,6>": "370",
|
"<24,6>": "370",
|
||||||
"<24,7>": "75",
|
"<24,7>": "75",
|
||||||
"<24,8>": "18",
|
"<24,8>": "18",
|
||||||
@ -9835,9 +9835,9 @@
|
|||||||
"<56,3>": "PUSHBUTTON",
|
"<56,3>": "PUSHBUTTON",
|
||||||
"<56,4>": "RDS_PRE_EPI",
|
"<56,4>": "RDS_PRE_EPI",
|
||||||
"<56,5>": "324",
|
"<56,5>": "324",
|
||||||
"<56,6>": "370",
|
"<56,6>": "368",
|
||||||
"<56,7>": "36",
|
"<56,7>": "52",
|
||||||
"<56,8>": "18",
|
"<56,8>": "24",
|
||||||
"<56,9>": "Sign",
|
"<56,9>": "Sign",
|
||||||
"<56,10>": {
|
"<56,10>": {
|
||||||
"<56,10,1>": "0x56000300",
|
"<56,10,1>": "0x56000300",
|
||||||
@ -17211,9 +17211,9 @@
|
|||||||
"<101,2>": "",
|
"<101,2>": "",
|
||||||
"<101,3>": "GROUPBOX",
|
"<101,3>": "GROUPBOX",
|
||||||
"<101,4>": "RDS_PRE_EPI",
|
"<101,4>": "RDS_PRE_EPI",
|
||||||
"<101,5>": "10",
|
"<101,5>": "12",
|
||||||
"<101,6>": "268",
|
"<101,6>": "268",
|
||||||
"<101,7>": "672",
|
"<101,7>": "690",
|
||||||
"<101,8>": "129",
|
"<101,8>": "129",
|
||||||
"<101,9>": "Pre-Epi Verification",
|
"<101,9>": "Pre-Epi Verification",
|
||||||
"<101,10>": {
|
"<101,10>": {
|
||||||
@ -17917,7 +17917,8 @@
|
|||||||
"<1,26,16>": "",
|
"<1,26,16>": "",
|
||||||
"<1,26,17>": "",
|
"<1,26,17>": "",
|
||||||
"<1,26,18>": "",
|
"<1,26,18>": "",
|
||||||
"<1,26,19>": ""
|
"<1,26,19>": "",
|
||||||
|
"<1,26,20>": ""
|
||||||
},
|
},
|
||||||
"<1,27>": {
|
"<1,27>": {
|
||||||
"<1,27,1>": "ITEM",
|
"<1,27,1>": "ITEM",
|
||||||
@ -17938,7 +17939,8 @@
|
|||||||
"<1,27,16>": "",
|
"<1,27,16>": "",
|
||||||
"<1,27,17>": "",
|
"<1,27,17>": "",
|
||||||
"<1,27,18>": "",
|
"<1,27,18>": "",
|
||||||
"<1,27,19>": ""
|
"<1,27,19>": "",
|
||||||
|
"<1,27,20>": ""
|
||||||
},
|
},
|
||||||
"<1,28>": {
|
"<1,28>": {
|
||||||
"<1,28,1>": "POPUP",
|
"<1,28,1>": "POPUP",
|
||||||
@ -18010,9 +18012,9 @@
|
|||||||
"<2>": {
|
"<2>": {
|
||||||
"<2,1>": {
|
"<2,1>": {
|
||||||
"<2,1,1>": {
|
"<2,1,1>": {
|
||||||
"<2,1,1,1>": "SEND_MESSAGE.MESSAGE_W/ATTACHMENT",
|
"<2,1,1,1>": "EDIT.THICKNESS_OVERGROWTH_AVG",
|
||||||
"<2,1,1,2>": "EDIT.SSI_STANDARDS",
|
"<2,1,1,2>": "EDIT.SSI_STANDARDS",
|
||||||
"<2,1,1,3>": "EDIT.THICKNESS_OVERGROWTH_AVG"
|
"<2,1,1,3>": "SEND_MESSAGE.MESSAGE_W/ATTACHMENT"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"<2,2>": {
|
"<2,2>": {
|
||||||
@ -18022,7 +18024,17 @@
|
|||||||
"<2,2,1,3>": "@WINDOW",
|
"<2,2,1,3>": "@WINDOW",
|
||||||
"<2,2,1,4>": "",
|
"<2,2,1,4>": "",
|
||||||
"<2,2,1,5>": "",
|
"<2,2,1,5>": "",
|
||||||
"<2,2,1,6>": ""
|
"<2,2,1,6>": "",
|
||||||
|
"<2,2,1,7>": "",
|
||||||
|
"<2,2,1,8>": "",
|
||||||
|
"<2,2,1,9>": "",
|
||||||
|
"<2,2,1,10>": "",
|
||||||
|
"<2,2,1,11>": "",
|
||||||
|
"<2,2,1,12>": "",
|
||||||
|
"<2,2,1,13>": "",
|
||||||
|
"<2,2,1,14>": "",
|
||||||
|
"<2,2,1,15>": "READROW",
|
||||||
|
"<2,2,1,16>": "0"
|
||||||
},
|
},
|
||||||
"<2,2,2>": {
|
"<2,2,2>": {
|
||||||
"<2,2,2,1>": "E",
|
"<2,2,2,1>": "E",
|
||||||
@ -18152,7 +18164,17 @@
|
|||||||
"<2,2,16,3>": "@WINDOW",
|
"<2,2,16,3>": "@WINDOW",
|
||||||
"<2,2,16,4>": "",
|
"<2,2,16,4>": "",
|
||||||
"<2,2,16,5>": "",
|
"<2,2,16,5>": "",
|
||||||
"<2,2,16,6>": ""
|
"<2,2,16,6>": "",
|
||||||
|
"<2,2,16,7>": "",
|
||||||
|
"<2,2,16,8>": "",
|
||||||
|
"<2,2,16,9>": "",
|
||||||
|
"<2,2,16,10>": "",
|
||||||
|
"<2,2,16,11>": "",
|
||||||
|
"<2,2,16,12>": "",
|
||||||
|
"<2,2,16,13>": "",
|
||||||
|
"<2,2,16,14>": "",
|
||||||
|
"<2,2,16,15>": "GEN",
|
||||||
|
"<2,2,16,16>": "0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"<2,3>": {
|
"<2,3>": {
|
||||||
|
@ -1,187 +1,389 @@
|
|||||||
Compile function NDW_LOAD_UNLOAD_EXTRA_EVENTS(CtrlEntId, Event, @PARAMS)
|
Compile function NDW_LOAD_UNLOAD_EXTRA_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#window NDW_LOAD_UNLOAD_EXTRA
|
#window NDW_LOAD_UNLOAD_EXTRA
|
||||||
|
|
||||||
Declare subroutine End_Dialog, Post_Event, Database_Services, Error_Services, Msg
|
Declare subroutine End_Dialog, Post_Event, Database_Services, Error_Services, Msg
|
||||||
Declare subroutine Set_Property, Rds_Services
|
Declare subroutine Set_Property, Rds_Services, Set_Status, Rlist, Obj_Post_Log
|
||||||
Declare function Database_Services, Error_Services
|
Declare function Database_Services, Error_Services, Qa_Services, Reactor_Services
|
||||||
Declare function Get_Property
|
Declare function Get_Property, Dialog_Box
|
||||||
|
$Insert EVENT_SETUP
|
||||||
$Insert EVENT_SETUP
|
$Insert LOGICAL
|
||||||
$Insert LOGICAL
|
$Insert RDS_EQUATES
|
||||||
$Insert RDS_EQUATES
|
$Insert REACT_LL_EQUATES
|
||||||
|
$Insert REACTOR_EQUATES
|
||||||
GoToEvent Event for CtrlEntId else
|
$Insert MSG_EQUATES
|
||||||
// Event not implemented
|
|
||||||
end
|
GoToEvent Event for CtrlEntId else
|
||||||
|
// Event not implemented
|
||||||
Return EventFlow or 1
|
end
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
Return EventFlow or 1
|
||||||
// EVENT HANDLERS
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
// EVENT HANDLERS
|
||||||
Event WINDOW.CREATE(CreateParam)
|
//-----------------------------------------------------------------------------
|
||||||
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
|
||||||
RDSNo = CreateParam
|
Event WINDOW.CREATE(CreateParam)
|
||||||
If RowExists('RDS', RDSNo) then
|
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
||||||
Set_Property(@Window : '.EDL_RDS', 'TEXT', RDSNo)
|
RDSNo = CreateParam
|
||||||
GoSub Refresh
|
If RowExists('RDS', RDSNo) then
|
||||||
end else
|
Set_Property(@Window : '.EDL_RDS', 'TEXT', RDSNo)
|
||||||
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
GoSub Refresh
|
||||||
Post_Event(@Window, 'CLOSE')
|
end else
|
||||||
end
|
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
||||||
|
Post_Event(@Window, 'CLOSE')
|
||||||
End Event
|
end
|
||||||
|
|
||||||
Event WINDOW.CLOSE(CancelFlag)
|
End Event
|
||||||
ResponseValue = Get_Property(@Window, '@responsevalue')
|
|
||||||
End_Dialog(@Window, ResponseValue)
|
Event WINDOW.CLOSE(CancelFlag)
|
||||||
end event
|
ResponseValue = Get_Property(@Window, '@responsevalue')
|
||||||
|
End_Dialog(@Window, ResponseValue)
|
||||||
//Signature buttons
|
end event
|
||||||
|
|
||||||
Event PUB_SIGN_UNLOAD_EX_1.CLICK()
|
//Signature buttons
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
|
||||||
Rds_Services('SignUnloadExtra1', RDSNo, @USER4)
|
Event PUB_SIGN_UNLOAD_EX_1.CLICK()
|
||||||
If Error_Services('NoError') then
|
|
||||||
Msg(@Window, 'Unload Extra 1 Signed!')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
end else
|
initParams = ''
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
initParams<4> = 'Sign Unload Extra 1'
|
||||||
end
|
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||||
GoSub Refresh
|
Valid = Response<1>
|
||||||
end event
|
|
||||||
|
If Valid then
|
||||||
Event PUB_SIGN_LOAD_EX_1.CLICK()
|
Rds_Services('SignUnloadExtra1', RDSNo, @USER4)
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
If Error_Services('NoError') then
|
||||||
Rds_Services('SignLoadExtra1', RDSNo, @USER4)
|
Msg(@Window, 'Unload Extra 1 Signed!')
|
||||||
If Error_Services('NoError') then
|
end else
|
||||||
Msg(@Window, 'Load Extra 1 Signed!')
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end else
|
end
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
end
|
||||||
end
|
GoSub Refresh
|
||||||
GoSub Refresh
|
end event
|
||||||
end event
|
|
||||||
|
Event PUB_SIGN_LOAD_EX_1.CLICK()
|
||||||
Event PUB_SIGN_UNLOAD_EX_2.CLICK()
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
Rds_Services('SignUnloadExtra2', RDSNo, @USER4)
|
OldReactorNo = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
NewReactorNo = Get_Property(@Window : '.EDL_REACTOR1', 'TEXT')
|
||||||
Msg(@Window, 'Unload Extra 2 Signed!')
|
initParams = ''
|
||||||
end else
|
initParams<4> = 'Sign Load Extra 1'
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||||
end
|
Valid = Response<1>
|
||||||
GoSub Refresh
|
|
||||||
end event
|
If Valid then
|
||||||
|
If Qa_Services('LoadExtra1stReady', RDSNo) AND (OldReactorNo NE NewReactorNo) then
|
||||||
Event PUB_SIGN_LOAD_EX_2.CLICK()
|
Gosub ReactorChange
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
end
|
||||||
Rds_Services('SignLoadExtra2', RDSNo, @USER4)
|
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Load Extra 2 Signed!')
|
Rds_Services('SignLoadExtra1', RDSNo, @USER4)
|
||||||
end else
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, 'Load Extra 1 Signed!')
|
||||||
end
|
end else
|
||||||
GoSub Refresh
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end event
|
end
|
||||||
|
End else
|
||||||
//Clear Signature Buttons
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
|
end
|
||||||
Event PUB_CLEAR_UNLOAD_EX_1.CLICK()
|
end
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
GoSub Refresh
|
||||||
Rds_Services('UnsignUnloadExtra1', RDSNo, @User4)
|
|
||||||
If Error_Services('NoError') then
|
end event
|
||||||
Msg(@Window, 'Unload Extra 1 unsigned!')
|
|
||||||
end else
|
Event PUB_SIGN_UNLOAD_EX_2.CLICK()
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
end
|
initParams = ''
|
||||||
GoSub Refresh
|
initParams<4> = 'Sign Unload Extra 2'
|
||||||
end event
|
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||||
|
Valid = Response<1>
|
||||||
Event PUB_CLEAR_LOAD_EX_1.CLICK()
|
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
If Valid then
|
||||||
Rds_Services('UnsignLoadExtra1', RDSNo, @User4)
|
Rds_Services('SignUnloadExtra2', RDSNo, @USER4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Load Extra 1 unsigned!')
|
Msg(@Window, 'Unload Extra 2 Signed!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
end
|
||||||
end event
|
GoSub Refresh
|
||||||
|
end event
|
||||||
Event PUB_CLEAR_UNLOAD_EX_2.CLICK()
|
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
Event PUB_SIGN_LOAD_EX_2.CLICK()
|
||||||
Rds_Services('UnsignUnloadExtra2', RDSNo, @User4)
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
If Error_Services('NoError') then
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
Msg(@Window, 'Unload Extra 2 unsigned!')
|
OldReactorNo = RDSRec<RDS_REACTOR$>
|
||||||
end else
|
NewReactorNo = Get_Property(@Window : '.EDL_REACTOR2', 'TEXT')
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
initParams = ''
|
||||||
end
|
initParams<4> = 'Sign Load Extra 2'
|
||||||
GoSub Refresh
|
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||||
end event
|
Valid = Response<1>
|
||||||
|
|
||||||
Event PUB_CLEAR_LOAD_EX_2.CLICK()
|
If Valid then
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
If Qa_Services('LoadExtra2ndReady', RDSNo) AND (OldReactorNo NE NewReactorNo) then
|
||||||
Rds_Services('UnsignLoadExtra2', RDSNo, @User4)
|
Gosub ReactorChange
|
||||||
If Error_Services('NoError') then
|
end
|
||||||
Msg(@Window, 'Load Extra 2 unsigned!')
|
|
||||||
end else
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Rds_Services('SignLoadExtra2', RDSNo, @USER4)
|
||||||
end
|
If Error_Services('NoError') then
|
||||||
GoSub Refresh
|
Msg(@Window, 'Load Extra 2 Signed!')
|
||||||
end event
|
end else
|
||||||
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
//-----------------------------------------------------------------------------
|
end
|
||||||
// INTERNAL GO-SUBS
|
End else
|
||||||
//-----------------------------------------------------------------------------
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
|
end
|
||||||
|
end
|
||||||
***************
|
|
||||||
Refresh:
|
GoSub Refresh
|
||||||
***************
|
|
||||||
|
end event
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
|
||||||
If RowExists('RDS', RDSNo) then
|
//Clear Signature Buttons
|
||||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
|
||||||
//Unload Extra 1
|
Event PUB_CLEAR_UNLOAD_EX_1.CLICK()
|
||||||
UnloadExtra1Signature = RDSRec<RDS_OP_OUT_EX1$>
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
UnloadExtra1UserFirstLast = xlate( 'LSL_USERS', UnloadExtra1Signature, 'FIRST_LAST', 'X' )
|
Rds_Services('UnsignUnloadExtra1', RDSNo, @User4)
|
||||||
UnloadExtra1Date = OConv(RDSRec<RDS_OP_OUT_EX1_DATE$>, 'D')
|
If Error_Services('NoError') then
|
||||||
UnloadExtra1Time = Oconv(RDSRec<RDS_OP_OUT_EX1_TIME$>, 'MT')
|
Msg(@Window, 'Unload Extra 1 unsigned!')
|
||||||
//Load Extra 1
|
end else
|
||||||
LoadExtra1Signature = RDSRec<RDS_OP_IN_EX2$>
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
LoadExtra1UserFirstLast = xlate( 'LSL_USERS', LoadExtra1Signature, 'FIRST_LAST', 'X' )
|
end
|
||||||
LoadExtra1Date = Oconv(RDSRec<RDS_OP_IN_EX2_DATE$>, 'D')
|
GoSub Refresh
|
||||||
LoadExtra1Time = Oconv(RDSRec<RDS_OP_IN_EX2_TIME$>, 'MT')
|
end event
|
||||||
//Unload Extra 2
|
|
||||||
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
Event PUB_CLEAR_LOAD_EX_1.CLICK()
|
||||||
UnloadExtra2UserFirstLast = xlate( 'LSL_USERS', UnloadExtra2Signature, 'FIRST_LAST', 'X' )
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
UnloadExtra2Date = Oconv(RDSRec<RDS_OP_OUT_EX2_DATE$>, 'D')
|
Rds_Services('UnsignLoadExtra1', RDSNo, @User4)
|
||||||
UnloadExtra2Time = Oconv(RDSRec<RDS_OP_OUT_EX2_TIME$>, 'MT')
|
If Error_Services('NoError') then
|
||||||
//Load Extra 2
|
Msg(@Window, 'Load Extra 1 unsigned!')
|
||||||
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
end else
|
||||||
LoadExtra2UserFirstLast = xlate( 'LSL_USERS', LoadExtra2Signature, 'FIRST_LAST', 'X' )
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
LoadExtra2Date = Oconv(RDSRec<RDS_OP_IN_EX3_DATE$>, 'D')
|
end
|
||||||
LoadExtra2Time = Oconv(RDSRec<RDS_OP_IN_EX3_TIME$>, 'MT')
|
GoSub Refresh
|
||||||
|
end event
|
||||||
//Populate text fields
|
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_1_USER', 'TEXT', UnloadExtra1UserFirstLast)
|
Event PUB_CLEAR_UNLOAD_EX_2.CLICK()
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_1_DATE', 'TEXT', UnloadExtra1Date)
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_1_TIME', 'TEXT', UnloadExtra1Time)
|
Rds_Services('UnsignUnloadExtra2', RDSNo, @User4)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_1_USER', 'TEXT', LoadExtra1UserFirstLast)
|
If Error_Services('NoError') then
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_1_DATE', 'TEXT', LoadExtra1Date)
|
Msg(@Window, 'Unload Extra 2 unsigned!')
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_1_TIME', 'TEXT', LoadExtra1Time)
|
end else
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_2_USER', 'TEXT', UnloadExtra2UserFirstLast)
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_2_DATE', 'TEXT', UnloadExtra2Date)
|
end
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_2_TIME', 'TEXT', UnloadExtra2Time)
|
GoSub Refresh
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_2_USER', 'TEXT', LoadExtra2UserFirstLast)
|
end event
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_2_DATE', 'TEXT', LoadExtra2Date)
|
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_2_TIME', 'TEXT', LoadExtra2Time)
|
Event PUB_CLEAR_LOAD_EX_2.CLICK()
|
||||||
end else
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
Rds_Services('UnsignLoadExtra2', RDSNo, @User4)
|
||||||
Post_Event(@Window, 'CLOSE')
|
If Error_Services('NoError') then
|
||||||
end
|
Msg(@Window, 'Load Extra 2 unsigned!')
|
||||||
|
end else
|
||||||
return
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
|
end
|
||||||
|
GoSub Refresh
|
||||||
|
end event
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// INTERNAL GO-SUBS
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
***************
|
||||||
|
Refresh:
|
||||||
|
***************
|
||||||
|
|
||||||
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
|
If RowExists('RDS', RDSNo) then
|
||||||
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
|
UnloadSigned = RDSRec<RDS_OPERATOR_OUT$>
|
||||||
|
ReactorNo = RDSRec<RDS_REACTOR$>
|
||||||
|
//Unload Extra 1
|
||||||
|
UnloadExtra1Signature = RDSRec<RDS_OP_OUT_EX1$>
|
||||||
|
UnloadExtra1UserFirstLast = xlate( 'LSL_USERS', UnloadExtra1Signature, 'FIRST_LAST', 'X' )
|
||||||
|
UnloadExtra1Date = OConv(RDSRec<RDS_OP_OUT_EX1_DATE$>, 'D')
|
||||||
|
UnloadExtra1Time = Oconv(RDSRec<RDS_OP_OUT_EX1_TIME$>, 'MT')
|
||||||
|
//Load Extra 1
|
||||||
|
LoadExtra1Signature = RDSRec<RDS_OP_IN_EX2$>
|
||||||
|
LoadExtra1UserFirstLast = xlate( 'LSL_USERS', LoadExtra1Signature, 'FIRST_LAST', 'X' )
|
||||||
|
LoadExtra1Date = Oconv(RDSRec<RDS_OP_IN_EX2_DATE$>, 'D')
|
||||||
|
LoadExtra1Time = Oconv(RDSRec<RDS_OP_IN_EX2_TIME$>, 'MT')
|
||||||
|
LoadExtra1Reactor = RDSRec<RDS_LOAD_EXTRA_1_REACTOR$>
|
||||||
|
//Unload Extra 2
|
||||||
|
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
||||||
|
UnloadExtra2UserFirstLast = xlate( 'LSL_USERS', UnloadExtra2Signature, 'FIRST_LAST', 'X' )
|
||||||
|
UnloadExtra2Date = Oconv(RDSRec<RDS_OP_OUT_EX2_DATE$>, 'D')
|
||||||
|
UnloadExtra2Time = Oconv(RDSRec<RDS_OP_OUT_EX2_TIME$>, 'MT')
|
||||||
|
//Load Extra 2
|
||||||
|
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
||||||
|
LoadExtra2UserFirstLast = xlate( 'LSL_USERS', LoadExtra2Signature, 'FIRST_LAST', 'X' )
|
||||||
|
LoadExtra2Date = Oconv(RDSRec<RDS_OP_IN_EX3_DATE$>, 'D')
|
||||||
|
LoadExtra2Time = Oconv(RDSRec<RDS_OP_IN_EX3_TIME$>, 'MT')
|
||||||
|
LoadExtra2Reactor = RDSRec<RDS_LOAD_EXTRA_2_REACTOR$>
|
||||||
|
|
||||||
|
//Populate text fields
|
||||||
|
Set_Property(@Window : '.EDL_UNLOAD_EX_1_USER', 'TEXT', UnloadExtra1UserFirstLast)
|
||||||
|
Set_Property(@Window : '.EDL_UNLOAD_EX_1_DATE', 'TEXT', UnloadExtra1Date)
|
||||||
|
Set_Property(@Window : '.EDL_UNLOAD_EX_1_TIME', 'TEXT', UnloadExtra1Time)
|
||||||
|
Set_Property(@Window : '.EDL_LOAD_EX_1_USER', 'TEXT', LoadExtra1UserFirstLast)
|
||||||
|
Set_Property(@Window : '.EDL_LOAD_EX_1_DATE', 'TEXT', LoadExtra1Date)
|
||||||
|
Set_Property(@Window : '.EDL_LOAD_EX_1_TIME', 'TEXT', LoadExtra1Time)
|
||||||
|
Set_Property(@Window : '.EDL_UNLOAD_EX_2_USER', 'TEXT', UnloadExtra2UserFirstLast)
|
||||||
|
Set_Property(@Window : '.EDL_UNLOAD_EX_2_DATE', 'TEXT', UnloadExtra2Date)
|
||||||
|
Set_Property(@Window : '.EDL_UNLOAD_EX_2_TIME', 'TEXT', UnloadExtra2Time)
|
||||||
|
Set_Property(@Window : '.EDL_LOAD_EX_2_USER', 'TEXT', LoadExtra2UserFirstLast)
|
||||||
|
Set_Property(@Window : '.EDL_LOAD_EX_2_DATE', 'TEXT', LoadExtra2Date)
|
||||||
|
Set_Property(@Window : '.EDL_LOAD_EX_2_TIME', 'TEXT', LoadExtra2Time)
|
||||||
|
If LoadExtra1Reactor NE '' then
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR1', 'TEXT', LoadExtra1Reactor)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR1', 'TEXT', ReactorNo)
|
||||||
|
end
|
||||||
|
If LoadExtra2Reactor NE '' then
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR2', 'TEXT', LoadExtra2Reactor)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR2', 'TEXT', ReactorNo)
|
||||||
|
end
|
||||||
|
If UnloadSigned EQ '' then
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR1', 'ENABLED', True$)
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR2', 'ENABLED', True$)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR1', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window : '.EDL_REACTOR2', 'ENABLED', False$)
|
||||||
|
end
|
||||||
|
If UnloadExtra1Signature NE '' then
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_1', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_1', 'ENABLED', True$)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_1', 'ENABLED', True$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_1', 'ENABLED', False$)
|
||||||
|
end
|
||||||
|
If UnloadExtra2Signature NE '' then
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_2', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_2', 'ENABLED', True$)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_2', 'ENABLED', True$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_2', 'ENABLED', False$)
|
||||||
|
end
|
||||||
|
If LoadExtra1Signature NE '' then
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_1', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_1', 'ENABLED', True$)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_1', 'ENABLED', True$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_1', 'ENABLED', False$)
|
||||||
|
end
|
||||||
|
If LoadExtra2Signature NE '' then
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_2', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_2', 'ENABLED', True$)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_2', 'ENABLED', True$)
|
||||||
|
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_2', 'ENABLED', False$)
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
||||||
|
Post_Event(@Window, 'CLOSE')
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ReactorChange:
|
||||||
|
|
||||||
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
|
WONo = RDSRec<RDS_WO$>
|
||||||
|
ReactorNo = ''
|
||||||
|
LLChosen = ''
|
||||||
|
ChangePermitted = False$
|
||||||
|
Begin Case
|
||||||
|
|
||||||
|
Case Control EQ 'PUB_SIGN_LOAD_EX_1'
|
||||||
|
ReactorNo = Get_Property(@Window : '.EDL_REACTOR1', 'TEXT')
|
||||||
|
ReactorField = RDS_LOAD_EXTRA_1_REACTOR$
|
||||||
|
Case Control EQ 'PUB_SIGN_LOAD_EX_2'
|
||||||
|
ReactorNo = Get_Property(@Window : '.EDL_REACTOR2', 'TEXT')
|
||||||
|
ReactorField = RDS_LOAD_EXTRA_2_REACTOR$
|
||||||
|
Case Otherwise$
|
||||||
|
|
||||||
|
End Case
|
||||||
|
|
||||||
|
If ReactorNo NE '' then
|
||||||
|
PickPlace = Xlate('REACTOR', ReactorNo, 'PICK_PLACE', 'X')
|
||||||
|
If (Reactor_Services('GetReactorAvailChamberCount', ReactorNo) NE 0) OR (PickPlace EQ False$) then
|
||||||
|
Query = 'SELECT REACT_STATE WITH SCHED_WO CONTAINING ':WONo
|
||||||
|
ClearSelect
|
||||||
|
Set_Status(0)
|
||||||
|
RList(Query, TARGET_ACTIVELIST$, '', '' '')
|
||||||
|
SchedReactors = ''
|
||||||
|
EOF = False$
|
||||||
|
Loop
|
||||||
|
ReadNext SchedReactor else EOF = True$
|
||||||
|
Until EOF
|
||||||
|
SchedReactors<0, -1> = SchedReactor
|
||||||
|
Repeat
|
||||||
|
|
||||||
|
Locate ReactorNo in SchedReactors using @VM setting vPos then
|
||||||
|
If PickPlace EQ True$ then
|
||||||
|
LLDisabled = XLATE('REACTOR', ReactorNo, 'ACTIVE_LL_DISABLED', 'X')
|
||||||
|
IF LLDisabled NE '' then
|
||||||
|
ReactLLRec = Database_Services('ReadDataRow', 'REACT_LL', LLDisabled)
|
||||||
|
SideDisabled = ReactLLRec<REACT_LL_DISABLED$>
|
||||||
|
QualMode = ReactLLRec<REACT_LL_QUAL_MODE$>
|
||||||
|
Begin Case
|
||||||
|
Case SideDisabled EQ 'L'
|
||||||
|
LLChosen = 'R'
|
||||||
|
Case SideDisabled EQ 'R'
|
||||||
|
LLChosen = 'L'
|
||||||
|
End Case
|
||||||
|
end else
|
||||||
|
Def = ''
|
||||||
|
Def<MCAPTION$> = 'Select Load Lock'
|
||||||
|
Def<MTYPE$> = 'BLeft,Right'
|
||||||
|
Def<MTEXT$> = 'Please select a load lock.'
|
||||||
|
Def<MMODAL$> = 'A'
|
||||||
|
LLResponse = Msg(@Window, Def)
|
||||||
|
Begin Case
|
||||||
|
Case LLResponse EQ 1
|
||||||
|
LLChosen = 'L'
|
||||||
|
Case LLResponse EQ 2
|
||||||
|
LLChosen = 'R'
|
||||||
|
End Case
|
||||||
|
end
|
||||||
|
If LLChosen NE '' then
|
||||||
|
ChangePermitted = True$
|
||||||
|
end else
|
||||||
|
Error_Services('Add', 'You must select a load lock for this lot.')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ChangePermitted = True$
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
Swap @VM with ',' in SchedReactors
|
||||||
|
Error_Services('Add', 'Assigned reactor, ':ReactorNo:', does not equal any scheduled reactor(s), ':SchedReactors:'.')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
Error_Services('Add', ReactorNo: 'does not have the capacity necessary for this lot.')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
Error_Services('Add', 'Invalid Reactor number.')
|
||||||
|
end
|
||||||
|
If ChangePermitted then
|
||||||
|
RDSRec<RDS_REACTOR$> = ReactorNo
|
||||||
|
RDSRec<ReactorField> = ReactorNo
|
||||||
|
RDSRec<RDS_LOAD_LOCK_SIDE$> = LLChosen
|
||||||
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
Msg(@Window, 'Reactor successfully changed!')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,8 +39,6 @@ $Insert POPUP_EQUATES
|
|||||||
$Insert NOTIFICATION_EQUATES
|
$Insert NOTIFICATION_EQUATES
|
||||||
$Insert LSL_USERS_EQUATES
|
$Insert LSL_USERS_EQUATES
|
||||||
|
|
||||||
EQU READONLY_GREEN$ TO 192 + (220*256) + (192*65536)
|
|
||||||
|
|
||||||
Declare function Admin_User, Database_Services, Error_Services, Active_Directory_Services, SRP_Array
|
Declare function Admin_User, Database_Services, Error_Services, Active_Directory_Services, SRP_Array
|
||||||
Declare subroutine PlaceDialog, Error_Services, Database_Services, Btree.Extract, ErrMsg
|
Declare subroutine PlaceDialog, Error_Services, Database_Services, Btree.Extract, ErrMsg
|
||||||
|
|
||||||
@ -643,3 +641,4 @@ return
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,8 +39,6 @@ $Insert POPUP_EQUATES
|
|||||||
$Insert SEC_GROUPS_EQUATES
|
$Insert SEC_GROUPS_EQUATES
|
||||||
$Insert LSL_USERS_EQUATES
|
$Insert LSL_USERS_EQUATES
|
||||||
|
|
||||||
EQU READONLY_GREEN$ TO 192 + (220*256) + (192*65536)
|
|
||||||
|
|
||||||
Declare function Admin_User, Database_Services, Error_Services, Active_Directory_Services, SRP_Array
|
Declare function Admin_User, Database_Services, Error_Services, Active_Directory_Services, SRP_Array
|
||||||
Declare subroutine PlaceDialog, Error_Services, Database_Services, Btree.Extract, ErrMsg
|
Declare subroutine PlaceDialog, Error_Services, Database_Services, Btree.Extract, ErrMsg
|
||||||
|
|
||||||
@ -726,3 +724,4 @@ UnlockRec:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_
|
|||||||
Declare subroutine Set_Status, Sleepery, Winyield, Yield, SRP_COM, QA_Services, Logging_Services, Obj_RDS
|
Declare subroutine Set_Status, Sleepery, Winyield, Yield, SRP_COM, QA_Services, Logging_Services, Obj_RDS
|
||||||
Declare subroutine Validate, obj_WO_Mat, obj_WO_Mat_Log, obj_React_Status, Record_Lock, obj_React_State, obj_Post_Log
|
Declare subroutine Validate, obj_WO_Mat, obj_WO_Mat_Log, obj_React_Status, Record_Lock, obj_React_State, obj_Post_Log
|
||||||
Declare subroutine RDS_Services, obj_WO_React, RDS_React_Run, Signature_Services, SQL_Services, SRP_Stopwatch
|
Declare subroutine RDS_Services, obj_WO_React, RDS_React_Run, Signature_Services, SQL_Services, SRP_Stopwatch
|
||||||
Declare subroutine Override_Services, Reactor_Services, Lot_Services, Obj_Notes, Mona_Services, Service_Services
|
Declare subroutine Override_Services, Reactor_Services, Lot_Services, Mona_Services, Service_Services, Obj_Notes
|
||||||
Declare subroutine Transaction_Services
|
Declare subroutine Transaction_Services
|
||||||
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services
|
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services
|
||||||
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services
|
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services
|
||||||
@ -1828,22 +1828,6 @@ Service SignPreEpiStage(RDSNo, Username, WaferQty, Reactor, ScanEntry)
|
|||||||
PSNo = RDSRec<RDS_PROD_SPEC_ID$>
|
PSNo = RDSRec<RDS_PROD_SPEC_ID$>
|
||||||
WOStep = Xlate('RDS', RDSNo, 'WO_STEP', 'X')
|
WOStep = Xlate('RDS', RDSNo, 'WO_STEP', 'X')
|
||||||
|
|
||||||
BEGIN CASE
|
|
||||||
CASE OrgReactNo = '' AND Reactor NE ''
|
|
||||||
obj_WO_React('AddRdsNo',WONo:@RM:WOStep:@RM:Reactor:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
|
||||||
|
|
||||||
CASE OrgReactNo NE '' AND Reactor = ''
|
|
||||||
obj_WO_React('RemRdsNo',WONo:@RM:WOStep:@RM:OrgReactNo:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
|
||||||
|
|
||||||
CASE OrgReactNo NE Reactor
|
|
||||||
obj_WO_React('RemRdsNo',WONo:@RM:WOStep:@RM:OrgReactNo:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
|
||||||
obj_WO_React('AddRdsNo',WONo:@RM:WOStep:@RM:Reactor:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
|
||||||
|
|
||||||
CASE Otherwise$
|
|
||||||
NULL
|
|
||||||
|
|
||||||
END CASE
|
|
||||||
|
|
||||||
// Need to update/save RDS record before calling RDS_React_Run
|
// Need to update/save RDS record before calling RDS_React_Run
|
||||||
RDSRec<RDS_REACTOR$> = Reactor
|
RDSRec<RDS_REACTOR$> = Reactor
|
||||||
RDSRec<RDS_VERIFY_QTY$> = WaferQty
|
RDSRec<RDS_VERIFY_QTY$> = WaferQty
|
||||||
@ -2013,11 +1997,11 @@ end service
|
|||||||
Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOpt)
|
Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOpt)
|
||||||
StartTick = GetTickCount()
|
StartTick = GetTickCount()
|
||||||
MetricName = 'LoadSignatureReady'
|
MetricName = 'LoadSignatureReady'
|
||||||
|
ErrorMsg = ''
|
||||||
Error_Services('Clear')
|
Error_Services('Clear')
|
||||||
If (RDSNo EQ '') or (Username EQ '') or (WaferQty EQ '') then
|
If (RDSNo EQ '') or (Username EQ '') or (WaferQty EQ '') then
|
||||||
ErrorMessage = 'Process Error: RDSNo, Username, or WaferQty not supplied in the ':Service:' service.'
|
ErrorMsg = 'Process Error: RDSNo, Username, or WaferQty not supplied in the ':Service:' service.'
|
||||||
Error_Services('Set', ErrorMessage)
|
Error_Services('Set', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -2055,15 +2039,15 @@ Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOp
|
|||||||
ReactorCapacity = Reactor_Services('GetReactorAvailChamberCount', Reactor)
|
ReactorCapacity = Reactor_Services('GetReactorAvailChamberCount', Reactor)
|
||||||
If ReactorCapacity LE 0 then
|
If ReactorCapacity LE 0 then
|
||||||
|
|
||||||
ErrorMessage = 'Process Error: Reactor ' : Reactor : ' does not have the capacity for this lot.'
|
ErrorMsg = 'Process Error: Reactor ' : Reactor : ' does not have the capacity for this lot.'
|
||||||
Error_Services('Set', ErrorMessage)
|
Error_Services('Set', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
If WaferQty NE SchedQty then
|
If WaferQty NE SchedQty then
|
||||||
ErrorMessage = 'Process Error: Verified wafer quantity does not match the scheduled quantity.'
|
ErrorMsg = 'Process Error: Verified wafer quantity does not match the scheduled quantity.'
|
||||||
Error_Services('Set', ErrorMessage)
|
Error_Services('Set', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -2083,8 +2067,8 @@ Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOp
|
|||||||
// the parameters. If they do not confirm them, then we need to stop the load signature.
|
// the parameters. If they do not confirm them, then we need to stop the load signature.
|
||||||
RDSLayerAckReq = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK_REQ', 'X')
|
RDSLayerAckReq = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK_REQ', 'X')
|
||||||
If RDSLayerAckReq EQ True$ then
|
If RDSLayerAckReq EQ True$ then
|
||||||
ErrorMessage = 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
ErrorMsg = 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
||||||
Error_Services('Set', ErrorMessage)
|
Error_Services('Set', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -2167,9 +2151,9 @@ Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOp
|
|||||||
ROTRStatus = ReactorRec<REACTOR_ROTR_STATUS$>
|
ROTRStatus = ReactorRec<REACTOR_ROTR_STATUS$>
|
||||||
|
|
||||||
If ROTRStatus EQ 'F' then
|
If ROTRStatus EQ 'F' then
|
||||||
ErrorMessage = 'Process Error: Unable to load reactor due to ROTR load block. ' |
|
ErrorMsg = 'Process Error: Unable to load reactor due to ROTR load block. ' |
|
||||||
: 'A lead or supervisor must clear the ROTR load block.'
|
: 'A lead or supervisor must clear the ROTR load block.'
|
||||||
Error_Services('Set', ErrorMessage)
|
Error_Services('Set', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -2252,20 +2236,180 @@ Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOp
|
|||||||
// Add check for supplement signatures
|
// Add check for supplement signatures
|
||||||
UnacknowledgedSupp = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, 'LOAD')
|
UnacknowledgedSupp = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, 'LOAD')
|
||||||
If UnacknowledgedSupp NE FALSE$ then
|
If UnacknowledgedSupp NE FALSE$ then
|
||||||
ErrorMessage = 'The LOAD stage supplements must be acknowledged before the load operation can be signed.'
|
ErrorMsg = 'The LOAD stage supplements must be acknowledged before the load operation can be signed.'
|
||||||
Error_Services('Set', ErrorMessage)
|
Error_Services('Set', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
If Error_Services('NoError') then
|
EndTick = GetTickCount()
|
||||||
|
Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick)
|
||||||
|
|
||||||
|
If ErrorMsg EQ '' then
|
||||||
Response = True$
|
Response = True$
|
||||||
end else
|
end else
|
||||||
Response = False$
|
Response = False$
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
end
|
end
|
||||||
|
|
||||||
EndTick = GetTickCount()
|
end service
|
||||||
Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick)
|
|
||||||
|
Service UnsignLoadSignatureReady(RDSNo)
|
||||||
|
|
||||||
|
ErrorMessage = ''
|
||||||
|
UnsignEligible = True$
|
||||||
|
|
||||||
|
If RowExists('RDS', RDSNo) then
|
||||||
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo, True$, 0, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
WONo = RDSRec<RDS_WO$>
|
||||||
|
CassNo = RDSRec<RDS_CASS_NO$>
|
||||||
|
WoMatKey = WONo : '*' : CassNo
|
||||||
|
If RowExists('WO_MAT', WoMatKey) then
|
||||||
|
WOMatCurrStatus = obj_WO_Mat('CurrStatus',WOMatKey)
|
||||||
|
|
||||||
|
//Cases to check for various statuses that should block unsigning the unload.
|
||||||
|
Begin Case
|
||||||
|
Case WOMatCurrStatus EQ 'HOLD'
|
||||||
|
ErrorMessage = 'Cassette is on HOLD and may not have the signature removed.'
|
||||||
|
Case Otherwise$
|
||||||
|
|
||||||
|
End Case
|
||||||
|
|
||||||
|
If ErrorMessage EQ '' then
|
||||||
|
//Check if any subsequent signature are set. If so RDS is not eligible.
|
||||||
|
UnloadExtra1Sig = RDSRec<RDS_OP_OUT_EX1$>
|
||||||
|
LoadExtra1Sig = RDSRec<RDS_OP_IN_EX2$>
|
||||||
|
UnloadExtra2Sig = RDSRec<RDS_OP_OUT_EX2$>
|
||||||
|
LoadExtra2Sig = RDSRec<RDS_OP_IN_EX3$>
|
||||||
|
UnloadSig = RDSRec<RDS_OPERATOR_OUT$>Xlate('RDS', RDSNo, 'OPERATOR_OUT', 'X')
|
||||||
|
CISigs = Xlate('RDS', RDSNo, 'LWI_CI_SIG', 'X')
|
||||||
|
swap @VM with '' in CISigs
|
||||||
|
ReactorType = XLATE('RDS', RDSNo, 'REACTOR_TYPE', 'X')
|
||||||
|
If ReactorType NE 'EPP' Then
|
||||||
|
FQASig = Xlate('RDS', RDSNo, 'SUP_VER_SIG', 'X')
|
||||||
|
end else
|
||||||
|
WMOutKey = Xlate('RDS', RDSNo, 'WM_OUT_KEY', 'X')
|
||||||
|
FQASig = Xlate('WM_OUT', WMOutKey, 'SUP_VER_SIG', 'X')
|
||||||
|
end
|
||||||
|
|
||||||
|
Begin Case
|
||||||
|
Case FQASig NE ''
|
||||||
|
ErrorMessage = 'FQA Signature is set.'
|
||||||
|
Case CISigs NE ''
|
||||||
|
ErrorMessage = 'Clean and Inspect Signatures are set.'
|
||||||
|
Case UnloadSig NE ''
|
||||||
|
ErrorMessage = 'Unload signature is set.'
|
||||||
|
Case LoadExtra2Sig NE ''
|
||||||
|
ErrorMessage = 'Load extra 2 signature is set.'
|
||||||
|
Case UnloadExtra2Sig NE ''
|
||||||
|
ErrorMessage = 'Unload extra 2 signature is set.'
|
||||||
|
Case LoadExtra1Sig NE ''
|
||||||
|
ErrorMessage = 'Load extra 1 signature is set.'
|
||||||
|
Case UnloadExtra1Sig NE ''
|
||||||
|
ErrorMessage = 'Unload extra 1 signature is set.'
|
||||||
|
End Case
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Unable to locate the WO_MAT record for this RDS in the WO_MAT table.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Error reading RDS Record. ' : Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Unable to locate RDS in the RDS Table.'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMessage NE '' then
|
||||||
|
UnsignEligible = False$
|
||||||
|
ErrorMessage = 'Process Error: Unable to verify the load signature is Eligible to be unsigned: ' : ErrorMessage
|
||||||
|
Error_Services('Add', ErrorMessage)
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = UnsignEligible
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
|
Service UnsignLoadSignatureReady(RDSNo)
|
||||||
|
|
||||||
|
ErrorMessage = ''
|
||||||
|
UnsignEligible = True$
|
||||||
|
|
||||||
|
If RowExists('RDS', RDSNo) then
|
||||||
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo, True$, 0, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
WONo = RDSRec<RDS_WO$>
|
||||||
|
CassNo = RDSRec<RDS_CASS_NO$>
|
||||||
|
WoMatKey = WONo : '*' : CassNo
|
||||||
|
If RowExists('WO_MAT', WoMatKey) then
|
||||||
|
WOMatCurrStatus = obj_WO_Mat('CurrStatus',WOMatKey)
|
||||||
|
|
||||||
|
//Cases to check for various statuses that should block unsigning the unload.
|
||||||
|
Begin Case
|
||||||
|
Case WOMatCurrStatus EQ 'HOLD'
|
||||||
|
ErrorMessage = 'Cassette is on HOLD and may not have the signature removed.'
|
||||||
|
Case Otherwise$
|
||||||
|
|
||||||
|
End Case
|
||||||
|
|
||||||
|
If ErrorMessage EQ '' then
|
||||||
|
//Check if any subsequent signature are set. If so RDS is not eligible.
|
||||||
|
UnloadExtra1Sig = RDSRec<RDS_OP_OUT_EX1$>
|
||||||
|
LoadExtra1Sig = RDSRec<RDS_OP_IN_EX2$>
|
||||||
|
UnloadExtra2Sig = RDSRec<RDS_OP_OUT_EX2$>
|
||||||
|
LoadExtra2Sig = RDSRec<RDS_OP_IN_EX3$>
|
||||||
|
UnloadSig = RDSRec<RDS_OPERATOR_OUT$>Xlate('RDS', RDSNo, 'OPERATOR_OUT', 'X')
|
||||||
|
CISigs = Xlate('RDS', RDSNo, 'LWI_CI_SIG', 'X')
|
||||||
|
swap @VM with '' in CISigs
|
||||||
|
ReactorType = XLATE('RDS', RDSNo, 'REACTOR_TYPE', 'X')
|
||||||
|
If ReactorType NE 'EPP' Then
|
||||||
|
FQASig = Xlate('RDS', RDSNo, 'SUP_VER_SIG', 'X')
|
||||||
|
end else
|
||||||
|
WMOutKey = Xlate('RDS', RDSNo, 'WM_OUT_KEY', 'X')
|
||||||
|
FQASig = Xlate('WM_OUT', WMOutKey, 'SUP_VER_SIG', 'X')
|
||||||
|
end
|
||||||
|
|
||||||
|
Begin Case
|
||||||
|
Case FQASig NE ''
|
||||||
|
ErrorMessage = 'FQA Signature is set.'
|
||||||
|
Case CISigs NE ''
|
||||||
|
ErrorMessage = 'Clean and Inspect Signatures are set.'
|
||||||
|
Case UnloadSig NE ''
|
||||||
|
ErrorMessage = 'Unload signature is set.'
|
||||||
|
Case LoadExtra2Sig NE ''
|
||||||
|
ErrorMessage = 'Load extra 2 signature is set.'
|
||||||
|
Case UnloadExtra2Sig NE ''
|
||||||
|
ErrorMessage = 'Unload extra 2 signature is set.'
|
||||||
|
Case LoadExtra1Sig NE ''
|
||||||
|
ErrorMessage = 'Load extra 1 signature is set.'
|
||||||
|
Case UnloadExtra1Sig NE ''
|
||||||
|
ErrorMessage = 'Unload extra 1 signature is set.'
|
||||||
|
End Case
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Unable to locate the WO_MAT record for this RDS in the WO_MAT table.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Error reading RDS Record. ' : Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Unable to locate RDS in the RDS Table.'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMessage NE '' then
|
||||||
|
UnsignEligible = False$
|
||||||
|
ErrorMessage = 'Process Error: Unable to verify the load signature is Eligible to be unsigned: ' : ErrorMessage
|
||||||
|
Error_Services('Add', ErrorMessage)
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = UnsignEligible
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
@ -2279,6 +2423,31 @@ Service LoadExtra1stReady(RDSNo)
|
|||||||
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
||||||
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
||||||
StandardUnloadSignature = RDSRec<RDS_OPERATOR_OUT$>
|
StandardUnloadSignature = RDSRec<RDS_OPERATOR_OUT$>
|
||||||
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
|
|
||||||
|
If Reactor NE '' then
|
||||||
|
WONo = RDSRec<RDS_WO$>
|
||||||
|
Query = 'SELECT REACT_STATE WITH SCHED_WO CONTAINING ':WONo
|
||||||
|
ClearSelect
|
||||||
|
Set_Status(0)
|
||||||
|
RList(Query, TARGET_ACTIVELIST$, '', '' '')
|
||||||
|
SchedReactors = ''
|
||||||
|
EOF = False$
|
||||||
|
Loop
|
||||||
|
ReadNext SchedReactor else EOF = True$
|
||||||
|
Until EOF
|
||||||
|
SchedReactors<0, -1> = SchedReactor
|
||||||
|
Repeat
|
||||||
|
|
||||||
|
Locate Reactor in SchedReactors using @VM setting vPos else
|
||||||
|
Swap @VM with ',' in SchedReactors
|
||||||
|
ErrorMessage = 'Assigned reactor, ':Reactor:', does not equal any scheduled reactor(s), ':SchedReactors:'.'
|
||||||
|
Error_Services('Set', ErrorMessage)
|
||||||
|
Response = False$
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
If StandardLoadSignature NE '' AND UnloadExtra1Signature NE '' AND LoadExtra1Signature EQ '' And LoadExtra2Signature EQ ''AND UnloadExtra2Signature EQ '' and StandardUnloadSignature EQ '' then
|
If StandardLoadSignature NE '' AND UnloadExtra1Signature NE '' AND LoadExtra1Signature EQ '' And LoadExtra2Signature EQ ''AND UnloadExtra2Signature EQ '' and StandardUnloadSignature EQ '' then
|
||||||
Response = True$
|
Response = True$
|
||||||
end
|
end
|
||||||
@ -2315,6 +2484,31 @@ Service LoadExtra2ndReady(RDSNo)
|
|||||||
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
||||||
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
||||||
StandardUnloadSignature = RDSRec<RDS_OPERATOR_OUT$>
|
StandardUnloadSignature = RDSRec<RDS_OPERATOR_OUT$>
|
||||||
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
|
|
||||||
|
If Reactor NE '' then
|
||||||
|
WONo = RDSRec<RDS_WO$>
|
||||||
|
Query = 'SELECT REACT_STATE WITH SCHED_WO CONTAINING ':WONo
|
||||||
|
ClearSelect
|
||||||
|
Set_Status(0)
|
||||||
|
RList(Query, TARGET_ACTIVELIST$, '', '' '')
|
||||||
|
SchedReactors = ''
|
||||||
|
EOF = False$
|
||||||
|
Loop
|
||||||
|
ReadNext SchedReactor else EOF = True$
|
||||||
|
Until EOF
|
||||||
|
SchedReactors<0, -1> = SchedReactor
|
||||||
|
Repeat
|
||||||
|
|
||||||
|
Locate Reactor in SchedReactors using @VM setting vPos else
|
||||||
|
Swap @VM with ',' in SchedReactors
|
||||||
|
ErrorMessage = 'Assigned reactor, ':Reactor:', does not equal any scheduled reactor(s), ':SchedReactors:'.'
|
||||||
|
Error_Services('Set', ErrorMessage)
|
||||||
|
Response = False$
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
If StandardLoadSignature NE '' AND UnloadExtra1Signature NE '' AND LoadExtra1Signature NE '' AND UnloadExtra2Signature NE '' And LoadExtra2Signature EQ '' and StandardUnloadSignature EQ '' then
|
If StandardLoadSignature NE '' AND UnloadExtra1Signature NE '' AND LoadExtra1Signature NE '' AND UnloadExtra2Signature NE '' And LoadExtra2Signature EQ '' and StandardUnloadSignature EQ '' then
|
||||||
Response = True$
|
Response = True$
|
||||||
end
|
end
|
||||||
@ -2400,62 +2594,6 @@ Service SignLoadStage(RDSNo, Username, WaferQty, LLSide, ScanEntry)
|
|||||||
Response = False$
|
Response = False$
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
IF ReactorType NE 'EPP' THEN
|
|
||||||
|
|
||||||
WOMatRec = XLATE('WO_MAT',WONo:'*':CassNo,'','X')
|
|
||||||
WOMatSigProfile = WOMatRec<WO_MAT_SIG_PROFILE$>
|
|
||||||
SigAction = WOStep:'LOAD'
|
|
||||||
|
|
||||||
LOCATE SigAction IN WOMatSigProfile USING @VM SETTING Pos THEN
|
|
||||||
WOMatSig = WOMatRec<WO_MAT_SIGNATURE$,Pos>
|
|
||||||
CurrDTM = OCONV(WOMatRec<WO_MAT_SIG_DTM$,Pos>,'DT/4^HS')
|
|
||||||
END ELSE
|
|
||||||
WOMatSig = ''
|
|
||||||
END
|
|
||||||
RDSSig = Xlate('RDS', RDSNo, 'OPERATOR_IN', 'X')
|
|
||||||
|
|
||||||
BEGIN CASE
|
|
||||||
CASE WOMatSig = '' AND RDSSig NE ''
|
|
||||||
|
|
||||||
* Signature missing on WO_MAT
|
|
||||||
SigDate = RDSRec<RDS_DATE_IN$>
|
|
||||||
SigTime = RDSRec<RDS_TIME_IN$>
|
|
||||||
owmParms = WONo:@RM:CassNo:@RM:WOStep:@RM:'LOAD':@RM:RDSSig:@RM:SigDate:' ':SigTime
|
|
||||||
* Sets LOAD signature
|
|
||||||
IF Get_Status(errCode) THEN
|
|
||||||
ErrorMsg = 'Process Error: Error calling obj_WO_Mat("SetSignature"). Error code: ':errCode
|
|
||||||
Error_Services('Set', ErrorMsg)
|
|
||||||
Response = False$
|
|
||||||
END else
|
|
||||||
Response = True$
|
|
||||||
end
|
|
||||||
return
|
|
||||||
|
|
||||||
CASE RDSSig = '' AND WOMatSig NE ''
|
|
||||||
|
|
||||||
* Signature missing on RDS
|
|
||||||
CurrDate = CurrDTM[1,' ']
|
|
||||||
CurrTime = CurrDTM[COL2()+1,' ']
|
|
||||||
RDSRec<RDS_OPERATOR_IN$> = WOMatSig
|
|
||||||
RDSRec<RDS_DATE_IN$> = IConv(CurrDate, 'D')
|
|
||||||
RDSRec<RDS_TIME_IN$> = IConv(CurrTime, 'MT')
|
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
|
||||||
Response = True$
|
|
||||||
return
|
|
||||||
|
|
||||||
CASE RDSSig NE '' AND WOMatSig NE ''
|
|
||||||
ErrorMsg = 'Process Error: Load stage has already been signed.'
|
|
||||||
Error_Services('Set', ErrorMsg)
|
|
||||||
Response = False$
|
|
||||||
RETURN
|
|
||||||
|
|
||||||
CASE Otherwise$
|
|
||||||
Null
|
|
||||||
// Continue
|
|
||||||
END CASE
|
|
||||||
|
|
||||||
END
|
|
||||||
|
|
||||||
SigDt = OCONV( Date(), 'D2/' )
|
SigDt = OCONV( Date(), 'D2/' )
|
||||||
SigTm = OCONV( Time(), 'MTS' )
|
SigTm = OCONV( Time(), 'MTS' )
|
||||||
@ -3682,6 +3820,48 @@ Service SignFQAStage(RDSNo, Username)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service UnsignPreEpiReady(RDSNo)
|
||||||
|
|
||||||
|
ErrorMsg = ''
|
||||||
|
UnsignPreEpiReady = False$
|
||||||
|
|
||||||
|
If RDSNo NE '' then
|
||||||
|
If RowExists('RDS', RDSNo) then
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
//Call on the same logic to determine if the unsign LOAD signature is ready
|
||||||
|
UnsignLoadReady = QA_Services('UnsignLoadSignatureReady', RDSNo)
|
||||||
|
if Error_Services('NoError') then
|
||||||
|
If UnsignLoadReady then
|
||||||
|
//Check if LOAD signature is present
|
||||||
|
LoadSig = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_OPERATOR_IN$, True$, 0, False$)
|
||||||
|
If LoadSig EQ '' then
|
||||||
|
UnsignPreEpiReady = True$
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Load signature is set.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'A signature beyond pre-epi exists. Please check later stages of this RDS.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'RDS ' : RDSNo : ' was not found in database.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'RDS No was null'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMsg NE '' then
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = UnsignPreEpiReady
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
@ -3695,3 +3875,11 @@ ClearCursors:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +67,8 @@ Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Ser
|
|||||||
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services
|
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services
|
||||||
Declare function Rds_Services, SRP_DateTime, SRP_Math, obj_WO_Mat, Lot_Services, SRP_Array
|
Declare function Rds_Services, SRP_DateTime, SRP_Math, obj_WO_Mat, Lot_Services, SRP_Array
|
||||||
Declare function Lot_Event_Services, GetTickCount, Work_Order_Services
|
Declare function Lot_Event_Services, GetTickCount, Work_Order_Services
|
||||||
Declare subroutine Error_Services, Database_Services, Logging_Services, Service_Services, Mona_Services
|
Declare subroutine Error_Services, Database_Services, Logging_Services, Service_Services, obj_WO_React
|
||||||
|
Declare Subroutine Mona_Services
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\RDS'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\RDS'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
@ -766,10 +767,10 @@ WRITE_RECORD_PRE:
|
|||||||
|
|
||||||
// Look for UNLOAD_DTM override
|
// Look for UNLOAD_DTM override
|
||||||
Override = Override_Services('GetOverride', 'RDS', RDSNo, 'UNLOAD_DTM')
|
Override = Override_Services('GetOverride', 'RDS', RDSNo, 'UNLOAD_DTM')
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
|
||||||
Case ( (OrigLoadSig NE '') and (OrigReactor NE NewReactor) )
|
Case ( (OrigTimeOutSig NE '') and (OrigReactor NE NewReactor) )
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = @USER4
|
LogData<2> = @USER4
|
||||||
@ -778,28 +779,11 @@ WRITE_RECORD_PRE:
|
|||||||
Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$)
|
Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$)
|
||||||
|
|
||||||
// User is attempting to erase data that is prohibited from being erased Set the FS104 error and block the write.
|
// User is attempting to erase data that is prohibited from being erased Set the FS104 error and block the write.
|
||||||
Error_Services('Add', 'Reactor number cannot be changed or removed once the load signature is set!')
|
Error_Services('Add', 'Reactor number cannot be changed or removed once the unload signature is set!')
|
||||||
OrigFileError = 104:': Reactor number cannot be changed or removed once the load signature is set!'
|
OrigFileError = 104:': Reactor number cannot be changed or removed once the unload signature is set!'
|
||||||
Status = 0
|
Status = 0
|
||||||
Record = ''
|
Record = ''
|
||||||
ActionFlow = ACTION_STOP$
|
ActionFlow = ACTION_STOP$
|
||||||
|
|
||||||
Case ( (OrigVerSig NE '') and (NewVerSig EQ '') ) or ( (OrigVerDate NE '') and (NewVerDate EQ '') ) |
|
|
||||||
or ( (OrigVerTime NE '') and (NewVerTime EQ '') ) or ( (NewVerDate EQ '') and (NewVerTime NE '') ) |
|
|
||||||
or ( (NewVerDate NE '') and (NewVerTime EQ '') )
|
|
||||||
LogData = ''
|
|
||||||
LogData<1> = LoggingDTM
|
|
||||||
LogData<2> = @USER4
|
|
||||||
LogData<3> = RDSKeyID
|
|
||||||
LogData<4> = 'Signature data cannot be removed!'
|
|
||||||
Logging_Services('AppendLog', ObjLog, LogData, @RM, @FM, False$)
|
|
||||||
|
|
||||||
// User is attempting to erase data that is prohibited from being erased Set the FS104 error and block the write.
|
|
||||||
Error_Services('Add', 'Signature data cannot be removed!')
|
|
||||||
OrigFileError = 104:': Signature data cannot be removed!'
|
|
||||||
Status = 0
|
|
||||||
Record = ''
|
|
||||||
ActionFlow = ACTION_STOP$
|
|
||||||
|
|
||||||
Case ( (VerDTM GT CurrDTM) or (LoadDTM GT CurrDTM) or (LoadEx2DTM GT CurrDTM) or (LoadEx3DTM GT CurrDTM) |
|
Case ( (VerDTM GT CurrDTM) or (LoadDTM GT CurrDTM) or (LoadEx2DTM GT CurrDTM) or (LoadEx3DTM GT CurrDTM) |
|
||||||
or (UnloadEx1DTM GT CurrDTM) or (UnloadEx2DTM GT CurrDTM) or (UnloadDTM GT CurrDTM) |
|
or (UnloadEx1DTM GT CurrDTM) or (UnloadEx2DTM GT CurrDTM) or (UnloadDTM GT CurrDTM) |
|
||||||
@ -861,6 +845,7 @@ WRITE_RECORD_PRE:
|
|||||||
|
|
||||||
EndTick = GetTickCount()
|
EndTick = GetTickCount()
|
||||||
Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick)
|
Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@ -880,6 +865,32 @@ WRITE_RECORD:
|
|||||||
OrigDateOut = OrigRecord<RDS_DATE_OUT$>
|
OrigDateOut = OrigRecord<RDS_DATE_OUT$>
|
||||||
NewDateOut = Record<RDS_DATE_OUT$>
|
NewDateOut = Record<RDS_DATE_OUT$>
|
||||||
|
|
||||||
|
RDSNo = {SEQ}
|
||||||
|
Reactor = Record<RDS_REACTOR$>
|
||||||
|
OrgReactNo = OrigRecord<RDS_REACTOR$>
|
||||||
|
CassNo = Record<RDS_CASS_NO$>
|
||||||
|
PSNo = Record<RDS_PROD_SPEC_ID$>
|
||||||
|
WOStep = Xlate('RDS', RDSNo, 'WO_STEP', 'X')
|
||||||
|
|
||||||
|
BEGIN CASE
|
||||||
|
CASE OrgReactNo = '' AND Reactor NE ''
|
||||||
|
//Assignment to a reactor where there was no prior assigned reactor
|
||||||
|
obj_WO_React('AddRdsNo',WONo:@RM:WOStep:@RM:Reactor:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
||||||
|
|
||||||
|
CASE OrgReactNo NE '' AND Reactor = ''
|
||||||
|
//Reactor Assignment is being cleared.
|
||||||
|
obj_WO_React('RemRdsNo',WONo:@RM:WOStep:@RM:OrgReactNo:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
||||||
|
|
||||||
|
CASE OrgReactNo NE Reactor
|
||||||
|
//Reactor Assignment is changing
|
||||||
|
obj_WO_React('RemRdsNo',WONo:@RM:WOStep:@RM:OrgReactNo:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
||||||
|
obj_WO_React('AddRdsNo',WONo:@RM:WOStep:@RM:Reactor:@RM:RDSNo:@RM:CassNo:@RM:PSNo)
|
||||||
|
|
||||||
|
CASE Otherwise$
|
||||||
|
NULL
|
||||||
|
|
||||||
|
END CASE
|
||||||
|
|
||||||
If ( ( (OrigDateOut EQ '') and (NewDateOut NE '') ) ) then
|
If ( ( (OrigDateOut EQ '') and (NewDateOut NE '') ) ) then
|
||||||
// Mark this cassette as processed in the schedule event record
|
// Mark this cassette as processed in the schedule event record
|
||||||
DatetimeOut = {DATETIME_OUT}
|
DatetimeOut = {DATETIME_OUT}
|
||||||
@ -1003,3 +1014,4 @@ Restore_System_Variables:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,8 +82,6 @@ Equ COL$MET_SIG_DTM to 12
|
|||||||
|
|
||||||
Equ MSG_WIDTH$ to 600
|
Equ MSG_WIDTH$ to 600
|
||||||
|
|
||||||
EQU READONLY_GREEN$ TO 192 + (220*256) + (192*65536)
|
|
||||||
|
|
||||||
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
||||||
Declare subroutine Dialog_Box, Qa_Services, Obj_React_Ll, Start_Window, obj_React_Status, Reactor_Services, Rds_Services
|
Declare subroutine Dialog_Box, Qa_Services, Obj_React_Ll, Start_Window, obj_React_Status, Reactor_Services, Rds_Services
|
||||||
Declare subroutine Lot_Event_Services, Override_Log_Services, Logging_Services
|
Declare subroutine Lot_Event_Services, Override_Log_Services, Logging_Services
|
||||||
@ -170,7 +168,8 @@ end event
|
|||||||
|
|
||||||
|
|
||||||
Event PUB_SIGN.CLICK()
|
Event PUB_SIGN.CLICK()
|
||||||
|
|
||||||
|
|
||||||
RDSNo = Get_Property(@WINDOW:'.RDS_NO','TEXT')
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO','TEXT')
|
||||||
ReactorType = Get_Property(@WINDOW:'.REACTOR_TYPE','TEXT')
|
ReactorType = Get_Property(@WINDOW:'.REACTOR_TYPE','TEXT')
|
||||||
LoadLockVal = Get_Property(@WINDOW:'.LOAD_LOCK_SIDE_HIDDEN','TEXT')
|
LoadLockVal = Get_Property(@WINDOW:'.LOAD_LOCK_SIDE_HIDDEN','TEXT')
|
||||||
@ -183,365 +182,345 @@ Event PUB_SIGN.CLICK()
|
|||||||
LSIDArray = Get_Property(@WINDOW:'.RDS_LS_ID','ARRAY')
|
LSIDArray = Get_Property(@WINDOW:'.RDS_LS_ID','ARRAY')
|
||||||
Preauthenticated = FALSE$
|
Preauthenticated = FALSE$
|
||||||
SignEventType = Get_Property(CtrlEntID, 'TEXT')
|
SignEventType = Get_Property(CtrlEntID, 'TEXT')
|
||||||
|
WoMatKey = WONo : '*' : CassNo
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
|
||||||
Case SignEventType EQ 'Sign'
|
Case SignEventType EQ 'Sign'
|
||||||
|
debug
|
||||||
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
||||||
WfrQty = Get_Property(@WINDOW:'.WAFERS_IN','TEXT')
|
WfrQty = Get_Property(@WINDOW:'.WAFERS_IN','TEXT')
|
||||||
LLSide = Get_Property(@Window:'.LOAD_LOCK_SIDE', 'DEFPROP')
|
LLSide = Get_Property(@Window:'.LOAD_LOCK_SIDE', 'DEFPROP')
|
||||||
|
|
||||||
Reactor = Get_Property(@Window:'.REACTOR', 'TEXT')
|
Reactor = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_REACTOR$, True$, 0, False$)
|
||||||
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor)
|
If Reactor NE '' then
|
||||||
ReactorType = ReactorRec<REACTOR_REACT_TYPE$>
|
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor)
|
||||||
ROTREnabled = Xlate('REACTOR', Reactor, 'ENABLE_ROTR', 'X')
|
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')
|
// Don't allow tracking in on down reactor
|
||||||
ReactCurrModeRec = Database_Services('ReadDataRow','REACT_MODE_NG', ReactorCurrModeKey, '','','')
|
ReactorCurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', Reactor, 1, 'X')
|
||||||
CurrReactMode = ReactCurrModeRec<REACT_MODE_NG_MODE$>
|
ReactCurrModeRec = Database_Services('ReadDataRow','REACT_MODE_NG', ReactorCurrModeKey, '','','')
|
||||||
CurrE10State = Xlate('REACTOR_MODES', CurrReactMode, REACTOR_MODES_E10_STATE$, 'X')
|
CurrReactMode = ReactCurrModeRec<REACT_MODE_NG_MODE$>
|
||||||
|
CurrE10State = Xlate('REACTOR_MODES', CurrReactMode, REACTOR_MODES_E10_STATE$, 'X')
|
||||||
Override = False$
|
|
||||||
UserVerification = ''
|
Override = False$
|
||||||
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH':@VM:'ROTR_OVERRIDE'
|
UserVerification = ''
|
||||||
|
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH':@VM:'ROTR_OVERRIDE'
|
||||||
ReactorIsDown = CurrE10State _NEC 'PRODUCTIVE'
|
|
||||||
If (ReactorIsDown EQ True$) then
|
ReactorIsDown = CurrE10State _NEC 'PRODUCTIVE'
|
||||||
// Allow override during prove in
|
If (ReactorIsDown EQ True$) then
|
||||||
If ReactorType EQ 'EPP' then
|
// Allow override during prove in
|
||||||
If RDS_Services('IsEpiProTestRun', RDSNo) then Override = True$
|
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
|
||||||
|
|
||||||
If Override EQ False$ then
|
If (ReactorIsDown NE True$) OR (Override EQ True$) then
|
||||||
UserMsg = "Reactor down. Override required from a lead or supervisor."
|
If (ReactorType EQ 'ASM+' OR ReactorType EQ 'HTR' OR ReactorType EQ 'ASM') AND (ROTREnabled EQ True$) then
|
||||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
ROTRStatus = ReactorRec<REACTOR_ROTR_STATUS$>
|
||||||
Override = UserVerification<1>
|
If ROTRStatus EQ 'F' then
|
||||||
end
|
FailReason = ReactorRec<REACTOR_ROTR_STATUS_REASON$>
|
||||||
end
|
Message = 'Unable to load reactor.' : CRLF$ : FailReason
|
||||||
|
RotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
||||||
If (ReactorIsDown NE True$) OR (Override EQ True$) then
|
If RotrOverrideCount EQ '' then RotrOverrideCount = 0
|
||||||
If (ReactorType EQ 'ASM+' OR ReactorType EQ 'HTR' OR ReactorType EQ 'ASM') AND (ROTREnabled EQ True$) then
|
Message := CRLF$ : RotrOverrideCount : ' override(s) were performed since the ROTR block was originally set.'
|
||||||
ROTRStatus = ReactorRec<REACTOR_ROTR_STATUS$>
|
Message := CRLF$ : 'A lead or supervisor must override to clear ROTR status.'
|
||||||
If ROTRStatus EQ 'F' then
|
|
||||||
FailReason = ReactorRec<REACTOR_ROTR_STATUS_REASON$>
|
Response = Msg(@Window, '', 'RDS_ROTR_OVERRIDE', '', Message)
|
||||||
Message = 'Unable to load reactor.' : CRLF$ : FailReason
|
|
||||||
RotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
Begin Case
|
||||||
If RotrOverrideCount EQ '' then RotrOverrideCount = 0
|
Case Response EQ 1
|
||||||
Message := CRLF$ : RotrOverrideCount : ' override(s) were performed since the ROTR block was originally set.'
|
Response = True$ ; // User Clicked Override
|
||||||
Message := CRLF$ : 'A lead or supervisor must override to clear ROTR status.'
|
Case Response EQ 2
|
||||||
|
Response = False$ ; // User Clicked Cancel
|
||||||
Response = Msg(@Window, '', 'RDS_ROTR_OVERRIDE', '', Message)
|
Case Response EQ char(27)
|
||||||
|
Response = False$ ; // User Pressed Escape Key
|
||||||
Begin Case
|
End Case
|
||||||
Case Response EQ 1
|
|
||||||
Response = True$ ; // User Clicked Override
|
If Response EQ True$ then
|
||||||
Case Response EQ 2
|
If UserVerification EQ '' then
|
||||||
Response = False$ ; // User Clicked Cancel
|
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups)
|
||||||
Case Response EQ char(27)
|
end
|
||||||
Response = False$ ; // User Pressed Escape Key
|
Valid = UserVerification<1>
|
||||||
End Case
|
If Valid EQ True$ then
|
||||||
|
// Prompt user for a comment
|
||||||
If Response EQ True$ then
|
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)
|
||||||
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$)
|
|
||||||
|
|
||||||
|
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
|
end else
|
||||||
//No Comment added. Block Load Signaure
|
// ROTR override not verified. Block load signature.
|
||||||
Msg(@Window, 'A comment is required to perform an ROTR Block Override', '', '', '')
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
// ROTR override not verified. Block load signature.
|
// Block load signature
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end else
|
end
|
||||||
// Block load signature
|
|
||||||
return
|
|
||||||
end
|
|
||||||
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')
|
SupplAckReq = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, 'LOAD')
|
||||||
If ( (RDSLayerAck EQ False$) or (RDSLayerAck EQ '') ) then
|
IF (SupplAckReq NE FALSE$) then
|
||||||
ErrorMessage = 'RDS layer parameters were not acknowledged. Sign load stage event aborting.'
|
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo :@FM: 'LOAD' :@FM: FALSE$)
|
||||||
ErrMsg(ErrorMessage)
|
If Response EQ False$ then
|
||||||
return
|
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
|
end else
|
||||||
//Test wafer logging is Required here.
|
PreAuthenticated = TRUE$
|
||||||
Begin Case
|
end
|
||||||
Case ReactorType EQ 'ASM' OR ReactorType EQ 'HTR'
|
end
|
||||||
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?')
|
RDSLayerAckReq = Xlate('RDS', RDSNo, 'RDS_LAYER_ACK_REQ', 'X')
|
||||||
End Case
|
If RDSLayerAckReq EQ True$ then
|
||||||
If UsingTestWafers EQ True$ then
|
ErrorMessage = 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
||||||
//User has stated that they are using test wafers
|
ErrMsg(ErrorMessage)
|
||||||
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor)
|
LayerKeys = Xlate('RDS', RDSNo, 'RDS_LAYER_KEYS', 'X')
|
||||||
If TWLogResult NE True$ then
|
// Just display the first layer
|
||||||
//User exited the the TW log prompt answering that they are not using any test wafers.
|
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."
|
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'
|
OverrideGroups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEERING':@VM:'ENG_TECH'
|
||||||
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
||||||
Override = UserVerification<1>
|
Override = UserVerification<1>
|
||||||
OverrideUser = UserVerification<2>
|
OverrideUser = UserVerification<2>
|
||||||
If Override then
|
If Override then
|
||||||
Override_log_services('Create', 'RDS', RDSNo, OverrideUser, '', 'TW_USAGE', '')
|
Override_log_services('Create', 'RDS', RDSNo, OverrideUser, '', 'TW_USAGE', '')
|
||||||
end else
|
end else
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
|
||||||
|
ReadyToSign = QA_Services('LoadSignatureReady', RDSNo, @User4, WfrQty, LLSide)
|
||||||
ReadyToSign = QA_Services('LoadSignatureReady', RDSNo, @User4, WfrQty, LLSide)
|
If ReadyToSign EQ True$ then
|
||||||
If ReadyToSign EQ True$ then
|
If PreAuthenticated EQ FALSE$ then
|
||||||
If PreAuthenticated EQ FALSE$ then
|
initParams = ''
|
||||||
initParams = ''
|
initParams<4> = 'Sign Load'
|
||||||
initParams<4> = 'Sign Load'
|
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
||||||
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams)
|
Valid = Response<1>
|
||||||
Valid = Response<1>
|
If (Valid EQ True$) then
|
||||||
If (Valid EQ True$) then
|
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||||
|
end
|
||||||
|
end else
|
||||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
||||||
end
|
end
|
||||||
end else
|
|
||||||
QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide)
|
|
||||||
end
|
end
|
||||||
end
|
If Error_Services('HasError') then
|
||||||
If Error_Services('HasError') then
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
ErrMsg(ErrorMsg)
|
||||||
ErrMsg(ErrorMsg)
|
end
|
||||||
|
end else
|
||||||
|
Msg(@Window, "Reactor load signature not allowed on a down reactor.")
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Msg(@Window, "Reactor load signature not allowed on a down reactor.")
|
Msg(@Window, "RDS is not assigned to a reactor.")
|
||||||
end
|
end
|
||||||
|
|
||||||
GoSub OLE_LL_Status
|
GoSub OLE_LL_Status
|
||||||
Set_Property(@Window, 'SAVEWARN', False$)
|
Set_Property(@Window, 'SAVEWARN', False$)
|
||||||
Send_Event(@Window, 'READ')
|
Send_Event(@Window, 'READ')
|
||||||
|
|
||||||
Case SignEventType EQ 'Unsign'
|
Case SignEventType EQ 'Unsign'
|
||||||
// 1. Check if on hold. If so, then block event and inform user
|
// 1. Check if RDS Load signature is eligible to be set.
|
||||||
WOMatKey = WONo:'*':CassNo
|
IsEligible = QA_Services('UnsignLoadSignatureReady', RDSNo)
|
||||||
WOMatCurrStatus = obj_WO_Mat('CurrStatus',WOMatKey)
|
|
||||||
IF WOMatCurrStatus = 'HOLD' THEN
|
|
||||||
ErrorMessage = 'Process Error':@SVM:'Cassette is on Hold and may not have the signature removed.':CRLF$:CRLF$
|
|
||||||
ErrMsg(ErrorMessage)
|
|
||||||
RETURN 0
|
|
||||||
END
|
|
||||||
// 2.
|
|
||||||
// a. For Non-EPP - Check if LWII, LWIS, or FQA has been signed. If so, then block event and inform user
|
|
||||||
// b. For EPP - Check Clean_Insp actions to see if an inspection or surfscan has been completed
|
|
||||||
// Also check the FQA signature (MO_QA)
|
|
||||||
UnloadSig = Xlate('RDS', RDSNo, 'OPERATOR_OUT', 'X')
|
|
||||||
ReactorType = Xlate('RDS', RDSNo, 'REACTOR_TYPE','X')
|
|
||||||
CISigs = Xlate('RDS', RDSNo, 'LWI_CI_SIG', 'X')
|
|
||||||
Convert @VM to '' in CISigs
|
|
||||||
IF ReactorType NE 'EPP' THEN
|
|
||||||
FQASig = Xlate('RDS', RDSNo, 'SUP_VER_SIG', 'X')
|
|
||||||
END ELSE
|
|
||||||
WMOutKey = Xlate('RDS', RDSNo, 'WM_OUT_KEY', 'X')
|
|
||||||
FQASig = Xlate('WM_OUT', WMOutKey, 'SUP_VER_SIG', 'X')
|
|
||||||
END
|
|
||||||
If ( (UnloadSig NE '') or (CISigs NE '') or (FQASig NE '') ) then
|
|
||||||
// UNLOAD, LWII, LWIS, or FQA already signed. Block unload unsign event.
|
|
||||||
ErrorMessage = 'Process Error':@SVM:'UNLOAD, LWII, LWIS, or FQA already signed. Cannot unsign unload event.' |
|
|
||||||
: CRLF$ : CRLF$
|
|
||||||
ErrMsg(ErrorMessage)
|
|
||||||
Return 0
|
|
||||||
end
|
|
||||||
|
|
||||||
// 3. Lead/Supervisor/Engineer/EngTech override
|
If IsEligible then
|
||||||
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4 : @FM : 'LEAD' : @VM : 'SUPERVISOR':@VM:'ENGINEER':@VM:'ENG_TECH')
|
// 3. Lead/Supervisor/Engineer/EngTech override
|
||||||
Valid = Response<1>
|
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4 : @FM : 'LEAD' : @VM : 'SUPERVISOR':@VM:'ENGINEER':@VM:'ENG_TECH')
|
||||||
OverrideUser = Response<2>
|
Valid = Response<1>
|
||||||
|
OverrideUser = Response<2>
|
||||||
If Valid then
|
|
||||||
|
|
||||||
Machine = Environment_Services('GetServer')
|
|
||||||
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
|
||||||
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Lot'
|
|
||||||
makeDirSuccess = Utility("MAKEDIR", LogPath)
|
|
||||||
LogFileName = 'R':RDSNo:'.csv'
|
|
||||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
|
||||||
LogData = ''
|
|
||||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
|
||||||
LogData<2> = Machine
|
|
||||||
LogData<3> = 'LOAD stage unsigned for RDS ':RDSNo:' by user ':@User4
|
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
|
||||||
|
|
||||||
// 4. Remove WO_MAT Unload signature, date, and time
|
|
||||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
|
||||||
SigProf = WOMatRec<WO_MAT_SIG_PROFILE$>
|
|
||||||
Sigs = WOMatRec<WO_MAT_SIGNATURE$>
|
|
||||||
SigDTMs = WOMatRec<WO_MAT_SIG_DTM$>
|
|
||||||
Locate '1LOAD' in SigProf using @VM setting vPos then
|
|
||||||
Sigs<1, vPos> = ''
|
|
||||||
SigDTMs<1, vPos> = ''
|
|
||||||
WOMatRec<WO_MAT_SIGNATURE$> = Sigs
|
|
||||||
WOMatRec<WO_MAT_SIG_DTM$> = SigDTMs
|
|
||||||
obj_React_Status('HandleLoadUnsign',Reactor:@RM:WONo:@RM:CassNo:@RM:RDSNo:@RM:OverrideUser)
|
|
||||||
end
|
|
||||||
|
|
||||||
// 5. Remove '1LOAD' material log entry (i.e. WO_MAT<INV...> columns)
|
|
||||||
InvActions = WOMatRec<WO_MAT_INV_ACTION$>
|
|
||||||
Locate '1LOAD' in InvActions using @VM setting vPos then
|
|
||||||
WOMatRec<WO_MAT_INV_WH$> = Delete(WOMatRec<WO_MAT_INV_WH$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_LOCATION$> = Delete(WOMatRec<WO_MAT_INV_LOCATION$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_ACTION$> = Delete(WOMatRec<WO_MAT_INV_ACTION$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_DTM$> = Delete(WOMatRec<WO_MAT_INV_DTM$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_USER$> = Delete(WOMatRec<WO_MAT_INV_USER$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_TAG$> = Delete(WOMatRec<WO_MAT_INV_TAG$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_TOOL_ID$> = Delete(WOMatRec<WO_MAT_INV_TOOL_ID$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_LOC$> = Delete(WOMatRec<WO_MAT_INV_LOC$>, 0, vPos, 0)
|
|
||||||
WOMatRec<WO_MAT_INV_SCAN_ENTRY$> = Delete(WOMatRec<WO_MAT_INV_SCAN_ENTRY$>, 0, vPos, 0)
|
|
||||||
end
|
|
||||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
|
||||||
|
|
||||||
// 6. Remove RDS Unload signature, date, and time
|
|
||||||
// NOTE: This needs to occur before item #5 to avoid RDS_ACTIONS restoring the load signature
|
|
||||||
Set_Property(@Window:'.OP_IN', 'TEXT', '')
|
|
||||||
Set_Property(@Window:'.OP_IN_NAME', 'TEXT', '')
|
|
||||||
Set_Property(@Window:'.OP_IN_DATE', 'TEXT', '')
|
|
||||||
Set_Property(@Window:'.OP_IN_TIME', 'TEXT', '')
|
|
||||||
IOOptions = Get_Property(@Window, 'IOOPTIONS')
|
|
||||||
IOOptions<6> = True$
|
|
||||||
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
|
||||||
Send_Event(@Window, 'WRITE')
|
|
||||||
IOOptions<6> = False$
|
|
||||||
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
|
||||||
|
|
||||||
Reactor = Get_Property(@Window:'.REACTOR', 'TEXT')
|
|
||||||
Rds_Services('AddComment', RDSNo, 'Load Stage Unsigned from Reactor ' : Reactor)
|
|
||||||
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor)
|
|
||||||
PreviousRotrOverrideRds = ReactorRec<REACTOR_PREVIOUS_ROTR_OVERRIDE_RDS$>
|
|
||||||
|
|
||||||
// Check if ROTR override was preformed when signing this load
|
|
||||||
If (PreviousRotrOverrideRds EQ RDSNo) then
|
|
||||||
// Reset the override flag
|
|
||||||
ReactorRec<REACTOR_ROTR_STATUS$> = 'F'
|
|
||||||
PreviousRotrStatusReason = ReactorRec<REACTOR_PREVIOUS_ROTR_STATUS_REASON$>
|
|
||||||
ReactorRec<REACTOR_ROTR_STATUS_REASON$> = PreviousRotrStatusReason
|
|
||||||
RotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
|
||||||
ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$> = Max(0, (RotrOverrideCount - 1))
|
|
||||||
end
|
|
||||||
Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactorRec, True$, False$, True$)
|
|
||||||
If ReactorType EQ 'EPP' then
|
|
||||||
Reactor_Services('DecrementWfrMetrics', RDSNo)
|
|
||||||
end
|
|
||||||
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign')
|
|
||||||
|
|
||||||
|
If Valid then
|
||||||
|
|
||||||
|
Machine = Environment_Services('GetServer')
|
||||||
|
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
||||||
|
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
||||||
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Lot'
|
||||||
|
makeDirSuccess = Utility("MAKEDIR", LogPath)
|
||||||
|
LogFileName = 'R':RDSNo:'.csv'
|
||||||
|
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||||
|
LogData<2> = Machine
|
||||||
|
LogData<3> = 'LOAD stage unsigned for RDS ':RDSNo:' by user ':@User4
|
||||||
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||||
|
|
||||||
|
// 4. Remove WO_MAT Unload signature, date, and time
|
||||||
|
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||||
|
SigProf = WOMatRec<WO_MAT_SIG_PROFILE$>
|
||||||
|
Sigs = WOMatRec<WO_MAT_SIGNATURE$>
|
||||||
|
SigDTMs = WOMatRec<WO_MAT_SIG_DTM$>
|
||||||
|
Locate '1LOAD' in SigProf using @VM setting vPos then
|
||||||
|
Sigs<1, vPos> = ''
|
||||||
|
SigDTMs<1, vPos> = ''
|
||||||
|
WOMatRec<WO_MAT_SIGNATURE$> = Sigs
|
||||||
|
WOMatRec<WO_MAT_SIG_DTM$> = SigDTMs
|
||||||
|
obj_React_Status('HandleLoadUnsign',Reactor:@RM:WONo:@RM:CassNo:@RM:RDSNo:@RM:OverrideUser)
|
||||||
|
end
|
||||||
|
|
||||||
|
// 5. Remove '1LOAD' material log entry (i.e. WO_MAT<INV...> columns)
|
||||||
|
InvActions = WOMatRec<WO_MAT_INV_ACTION$>
|
||||||
|
Locate '1LOAD' in InvActions using @VM setting vPos then
|
||||||
|
WOMatRec<WO_MAT_INV_WH$> = Delete(WOMatRec<WO_MAT_INV_WH$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_LOCATION$> = Delete(WOMatRec<WO_MAT_INV_LOCATION$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_ACTION$> = Delete(WOMatRec<WO_MAT_INV_ACTION$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_DTM$> = Delete(WOMatRec<WO_MAT_INV_DTM$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_USER$> = Delete(WOMatRec<WO_MAT_INV_USER$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_TAG$> = Delete(WOMatRec<WO_MAT_INV_TAG$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_TOOL_ID$> = Delete(WOMatRec<WO_MAT_INV_TOOL_ID$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_LOC$> = Delete(WOMatRec<WO_MAT_INV_LOC$>, 0, vPos, 0)
|
||||||
|
WOMatRec<WO_MAT_INV_SCAN_ENTRY$> = Delete(WOMatRec<WO_MAT_INV_SCAN_ENTRY$>, 0, vPos, 0)
|
||||||
|
end
|
||||||
|
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
||||||
|
|
||||||
|
// 6. Remove RDS Unload signature, date, and time
|
||||||
|
// NOTE: This needs to occur before item #5 to avoid RDS_ACTIONS restoring the load signature
|
||||||
|
Set_Property(@Window:'.OP_IN', 'TEXT', '')
|
||||||
|
Set_Property(@Window:'.OP_IN_NAME', 'TEXT', '')
|
||||||
|
Set_Property(@Window:'.OP_IN_DATE', 'TEXT', '')
|
||||||
|
Set_Property(@Window:'.OP_IN_TIME', 'TEXT', '')
|
||||||
|
IOOptions = Get_Property(@Window, 'IOOPTIONS')
|
||||||
|
IOOptions<6> = True$
|
||||||
|
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
||||||
|
Send_Event(@Window, 'WRITE')
|
||||||
|
IOOptions<6> = False$
|
||||||
|
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
||||||
|
|
||||||
|
Reactor = Get_Property(@Window:'.REACTOR', 'TEXT')
|
||||||
|
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor)
|
||||||
|
PreviousRotrOverrideRds = ReactorRec<REACTOR_PREVIOUS_ROTR_OVERRIDE_RDS$>
|
||||||
|
|
||||||
|
// Check if ROTR override was preformed when signing this load
|
||||||
|
If (PreviousRotrOverrideRds EQ RDSNo) then
|
||||||
|
// Reset the override flag
|
||||||
|
ReactorRec<REACTOR_ROTR_STATUS$> = 'F'
|
||||||
|
PreviousRotrStatusReason = ReactorRec<REACTOR_PREVIOUS_ROTR_STATUS_REASON$>
|
||||||
|
ReactorRec<REACTOR_ROTR_STATUS_REASON$> = PreviousRotrStatusReason
|
||||||
|
RotrOverrideCount = ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$>
|
||||||
|
ReactorRec<REACTOR_ROTR_OVERRIDE_COUNT$> = Max(0, (RotrOverrideCount - 1))
|
||||||
|
end
|
||||||
|
Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactorRec, True$, False$, True$)
|
||||||
|
If ReactorType EQ 'EPP' then
|
||||||
|
Reactor_Services('DecrementWfrMetrics', RDSNo)
|
||||||
|
end
|
||||||
|
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign')
|
||||||
|
|
||||||
|
end else
|
||||||
|
Return 0
|
||||||
|
end
|
||||||
end else
|
end else
|
||||||
Return 0
|
ErrorMessage = Error_Services('GetMessage')
|
||||||
end
|
Msg(@Window, ErrorMessage)
|
||||||
|
end
|
||||||
End Case
|
End Case
|
||||||
Post_Event(@Window, 'READ')
|
Post_Event(@Window, 'READ')
|
||||||
|
|
||||||
@ -582,7 +561,6 @@ Event LL_R_STATUS.OnClick()
|
|||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -740,3 +718,5 @@ OLE_LL_Status:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,8 +51,6 @@ $insert REACT_STATUS_EQUATES
|
|||||||
$insert SUPPL_INFO_ARRAY_EQU
|
$insert SUPPL_INFO_ARRAY_EQU
|
||||||
$insert CLEAN_INSP_EQUATES
|
$insert CLEAN_INSP_EQUATES
|
||||||
|
|
||||||
EQU READONLY_GREEN$ TO 192 + (220*256) + (192*65536)
|
|
||||||
|
|
||||||
Equ COL$LOG_FILE to 1
|
Equ COL$LOG_FILE to 1
|
||||||
Equ COL$LOG_DTM to 2
|
Equ COL$LOG_DTM to 2
|
||||||
Equ COL$ACTION to 3
|
Equ COL$ACTION to 3
|
||||||
@ -67,7 +65,7 @@ Equ COL$TOOL_ID to 10
|
|||||||
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
||||||
Declare subroutine Qa_Services, RDS_Services, Dialog_Box
|
Declare subroutine Qa_Services, RDS_Services, Dialog_Box
|
||||||
Declare function Dialog_Box, Msg, MemberOf, obj_WO_Mat, Database_Services, Get_Property, obj_React_Status, Get_Status
|
Declare function Dialog_Box, Msg, MemberOf, obj_WO_Mat, Database_Services, Get_Property, obj_React_Status, Get_Status
|
||||||
Declare function QA_Services, Database_Services, Supplement_Services
|
Declare function QA_Services, Database_Services, Supplement_Services, RDS_Services
|
||||||
|
|
||||||
SubclassInfo = Form_Services('FindSubclassControl')
|
SubclassInfo = Form_Services('FindSubclassControl')
|
||||||
Subclass = SubclassInfo<1>
|
Subclass = SubclassInfo<1>
|
||||||
@ -95,20 +93,16 @@ Return EventFlow else EVENT_CONTINUE$
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
|
|
||||||
|
GoSub SetupControls
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.READ()
|
Event WINDOW.READ()
|
||||||
// Disable reactor edit line control if the RDS has been loaded.
|
|
||||||
RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT')
|
GoSub SetupControls
|
||||||
If RDSNo NE '' then
|
|
||||||
LoadSig = Xlate('RDS', RDSNo, 'OPERATOR_IN', 'X')
|
|
||||||
If LoadSig NE '' then
|
|
||||||
Set_Property(@Window:'.REACTOR', 'ENABLED', False$)
|
|
||||||
Set_Property(@Window:'.REACTOR', 'BACKCOLOR', READONLY_GREEN$)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
@ -132,6 +126,76 @@ end event
|
|||||||
|
|
||||||
Event PUB_SIGN.CLICK()
|
Event PUB_SIGN.CLICK()
|
||||||
|
|
||||||
|
ButtonText = Get_Property(@Window:'.PUB_SIGN', 'TEXT')
|
||||||
|
|
||||||
|
Begin Case
|
||||||
|
Case ButtonText EQ 'Sign'
|
||||||
|
GoSub SignPreEpi
|
||||||
|
Case ButtonText EQ 'Unsign'
|
||||||
|
GoSub UnsignPreEpi
|
||||||
|
End Case
|
||||||
|
|
||||||
|
If Error_Services('HasError') then
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
ErrMsg(ErrorMsg)
|
||||||
|
end
|
||||||
|
Set_Property(@Window, 'SAVEWARN', False$)
|
||||||
|
Set_Status(0)
|
||||||
|
Send_Event(@Window, 'READ')
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Internal GoSubs
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
SetupControls:
|
||||||
|
|
||||||
|
RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT')
|
||||||
|
|
||||||
|
GoSub ReactorEdlCtrlSetup
|
||||||
|
GoSub PubSignCtrlSetup
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
ReactorEdlCtrlSetup:
|
||||||
|
|
||||||
|
// Disable reactor edit line control if the RDS has been assigned.
|
||||||
|
If RDSNo NE '' then
|
||||||
|
PreEpiSig = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_PRE_EPI_SIG$, True$, 0, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
If PreEpiSig NE '' then
|
||||||
|
Set_Property(@Window:'.REACTOR', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window:'.REACTOR', 'BACKCOLOR', READONLY_GREEN$)
|
||||||
|
end else
|
||||||
|
Set_Property(@Window:'.REACTOR', 'ENABLED', True$)
|
||||||
|
Set_Property(@Window:'.REACTOR', 'BACKCOLOR', EDIT_ACTIVE_WHITE$)
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
Set_Property(@Window:'.REACTOR', 'ENABLED', False$)
|
||||||
|
Set_Property(@Window:'.REACTOR', 'BACKCOLOR', READONLY_GREEN$)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
PubSignCtrlSetup:
|
||||||
|
|
||||||
|
If RDSNo NE '' then
|
||||||
|
PreEpiSig = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_PRE_EPI_SIG$, True$, 0, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
If PreEpiSig NE '' then
|
||||||
|
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Unsign')
|
||||||
|
end else
|
||||||
|
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
SignPreEpi:
|
||||||
|
|
||||||
RDSNo = Get_Property(@Window:'.RDS_NO' ,'DEFPROP')
|
RDSNo = Get_Property(@Window:'.RDS_NO' ,'DEFPROP')
|
||||||
WfrQty = Get_Property(@Window:'.VERIFY_QTY','TEXT')
|
WfrQty = Get_Property(@Window:'.VERIFY_QTY','TEXT')
|
||||||
Reactor = Get_Property(@Window:'.REACTOR' ,'TEXT')
|
Reactor = Get_Property(@Window:'.REACTOR' ,'TEXT')
|
||||||
@ -156,23 +220,29 @@ Event PUB_SIGN.CLICK()
|
|||||||
Valid = Response<1>
|
Valid = Response<1>
|
||||||
If (Valid EQ True$) then
|
If (Valid EQ True$) then
|
||||||
QA_Services('SignPreEpiStage', RDSNo, @USER4, WfrQty, Reactor)
|
QA_Services('SignPreEpiStage', RDSNo, @USER4, WfrQty, Reactor)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
QA_Services('SignPreEpiStage', RDSNo, @USER4, WfrQty, Reactor)
|
QA_Services('SignPreEpiStage', RDSNo, @USER4, WfrQty, Reactor)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
If Error_Services('HasError') then
|
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
|
||||||
ErrMsg(ErrorMsg)
|
|
||||||
end
|
|
||||||
Set_Property(@Window, 'SAVEWARN', False$)
|
|
||||||
Set_Status(0)
|
|
||||||
Send_Event(@Window, 'READ')
|
|
||||||
|
|
||||||
end event
|
return
|
||||||
|
|
||||||
|
UnsignPreEpi:
|
||||||
|
|
||||||
|
RDSNo = Get_Property(@Window:'.RDS_NO','DEFPROP')
|
||||||
|
VerCheckParams = ''
|
||||||
|
VerCheckParams<4> = 'Permission needed for Pre-Epi Unsign on RDS# ' : RDSNo
|
||||||
|
UserVerCheck = Dialog_Box('NDW_VERIFY_USER', @Window, '':@FM:'':@FM:'':@FM:VerCheckParams)
|
||||||
|
ValidUserCheck = UserVerCheck<1>
|
||||||
|
If ValidUserCheck then
|
||||||
|
ValidUserId = UserVerCheck<2>
|
||||||
|
If ValidUserId NE '' then
|
||||||
|
RDS_Services('UnsignPreEpiSignature', RDSNo, ValidUserId)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Internal GoSubs
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ AutoDisplayErrors = FALSE$ ; // Set this to True$ when debugging so all erro
|
|||||||
|
|
||||||
Declare subroutine SRP_Stopwatch, Error_Services, obj_Tables, Metrology_Services, obj_RDS_Test, SRP_JSON, Logging_Services
|
Declare subroutine SRP_Stopwatch, Error_Services, obj_Tables, Metrology_Services, obj_RDS_Test, SRP_JSON, Logging_Services
|
||||||
Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_SI_Keys, Obj_WO_Mat, Obj_WO_Mat_Log
|
Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_SI_Keys, Obj_WO_Mat, Obj_WO_Mat_Log
|
||||||
Declare subroutine Dialog_Box, Obj_Notes, RList, Set_Status, Errmsg, Obj_React_Status , Reactor_Services
|
Declare subroutine Dialog_Box, Obj_Notes, RList, Set_Status, Errmsg, Obj_React_Status, Reactor_Services
|
||||||
Declare subroutine Rds_Services, Obj_Post_Log, Mona_Services, Transaction_Services, Reduce
|
Declare subroutine Rds_Services, Obj_Post_Log, Mona_Services, Transaction_Services, Reduce
|
||||||
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services
|
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services
|
||||||
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services
|
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services
|
||||||
@ -1461,12 +1461,11 @@ Service SignUnloadExtra1(RDSNo, LSLUserName)
|
|||||||
RDSRec<RDS_OP_OUT_EX1$> = LSLUsername
|
RDSRec<RDS_OP_OUT_EX1$> = LSLUsername
|
||||||
RDSRec<RDS_OP_OUT_EX1_DATE$> = SRP_Date('Today')
|
RDSRec<RDS_OP_OUT_EX1_DATE$> = SRP_Date('Today')
|
||||||
RDSRec<RDS_OP_OUT_EX1_TIME$> = SRP_Time('Now')
|
RDSRec<RDS_OP_OUT_EX1_TIME$> = SRP_Time('Now')
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
Reactor = RDSRec<RDS_REACTOR$>
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Unload Extra 1 Signed from Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
||||||
end
|
end
|
||||||
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Unload Extra 1 is not able to be signed at this stage')
|
Error_Services('Add', 'Unload Extra 1 is not able to be signed at this stage')
|
||||||
end
|
end
|
||||||
@ -1494,12 +1493,11 @@ Service UnsignUnloadExtra1(RDSNo, LSLUserName)
|
|||||||
RDSRec<RDS_OP_OUT_EX1$> = ''
|
RDSRec<RDS_OP_OUT_EX1$> = ''
|
||||||
RDSRec<RDS_OP_OUT_EX1_DATE$> = ''
|
RDSRec<RDS_OP_OUT_EX1_DATE$> = ''
|
||||||
RDSRec<RDS_OP_OUT_EX1_TIME$> = ''
|
RDSRec<RDS_OP_OUT_EX1_TIME$> = ''
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
Reactor = RDSRec<RDS_REACTOR$>
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Unload Extra 1 Unsigned on Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
||||||
end
|
end
|
||||||
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Unsign Load Extra 1 is not able to be unsigned.')
|
Error_Services('Add', 'Unsign Load Extra 1 is not able to be unsigned.')
|
||||||
end
|
end
|
||||||
@ -1534,11 +1532,10 @@ Service SignLoadExtra1(RDSNo,LSLUserName)
|
|||||||
RDSRec<RDS_OP_IN_EX2$> = LSLUsername
|
RDSRec<RDS_OP_IN_EX2$> = LSLUsername
|
||||||
RDSRec<RDS_OP_IN_EX2_DATE$> = SRP_Date('Today')
|
RDSRec<RDS_OP_IN_EX2_DATE$> = SRP_Date('Today')
|
||||||
RDSRec<RDS_OP_IN_EX2_TIME$> = SRP_Time('Now')
|
RDSRec<RDS_OP_IN_EX2_TIME$> = SRP_Time('Now')
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Load Extra 1 Signed to Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
||||||
end
|
end
|
||||||
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Load Extra 1 is not able to be signed at this stage')
|
Error_Services('Add', 'Load Extra 1 is not able to be signed at this stage')
|
||||||
end
|
end
|
||||||
@ -1569,12 +1566,11 @@ Service UnsignLoadExtra1(RDSNo, LSLUserName)
|
|||||||
RDSRec<RDS_OP_IN_EX2$> = ''
|
RDSRec<RDS_OP_IN_EX2$> = ''
|
||||||
RDSRec<RDS_OP_IN_EX2_DATE$> = ''
|
RDSRec<RDS_OP_IN_EX2_DATE$> = ''
|
||||||
RDSRec<RDS_OP_IN_EX2_TIME$> = ''
|
RDSRec<RDS_OP_IN_EX2_TIME$> = ''
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
Reactor = RDSRec<RDS_REACTOR$>
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Load Extra 1 Unsigned on Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
||||||
end
|
end
|
||||||
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Unsign Load Extra 1 is not able to be unsigned.')
|
Error_Services('Add', 'Unsign Load Extra 1 is not able to be unsigned.')
|
||||||
end
|
end
|
||||||
@ -1598,12 +1594,11 @@ Service SignUnloadExtra2(RDSNo,LSLUserName)
|
|||||||
RDSRec<RDS_OP_OUT_EX2$> = LSLUsername
|
RDSRec<RDS_OP_OUT_EX2$> = LSLUsername
|
||||||
RDSRec<RDS_OP_OUT_EX2_DATE$> = SRP_Date('Today')
|
RDSRec<RDS_OP_OUT_EX2_DATE$> = SRP_Date('Today')
|
||||||
RDSRec<RDS_OP_OUT_EX2_TIME$> = SRP_Time('Now')
|
RDSRec<RDS_OP_OUT_EX2_TIME$> = SRP_Time('Now')
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
Reactor = RDSRec<RDS_REACTOR$>
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Unload Extra 2 Signed from Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
||||||
end
|
end
|
||||||
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Unload Extra 2 is not able to be signed at this stage')
|
Error_Services('Add', 'Unload Extra 2 is not able to be signed at this stage')
|
||||||
end
|
end
|
||||||
@ -1631,12 +1626,11 @@ Service UnsignUnloadExtra2(RDSNo, LSLUserName)
|
|||||||
RDSRec<RDS_OP_OUT_EX2$> = ''
|
RDSRec<RDS_OP_OUT_EX2$> = ''
|
||||||
RDSRec<RDS_OP_OUT_EX2_DATE$> = ''
|
RDSRec<RDS_OP_OUT_EX2_DATE$> = ''
|
||||||
RDSRec<RDS_OP_OUT_EX2_TIME$> = ''
|
RDSRec<RDS_OP_OUT_EX2_TIME$> = ''
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
Reactor = RDSRec<RDS_REACTOR$>
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Unload Extra 2 Unsigned on Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
||||||
end
|
end
|
||||||
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Unsign Load Extra 2 is not able to be unsigned.')
|
Error_Services('Add', 'Unsign Load Extra 2 is not able to be unsigned.')
|
||||||
end
|
end
|
||||||
@ -1671,11 +1665,10 @@ Service SignLoadExtra2(RDSNo,LSLUserName)
|
|||||||
RDSRec<RDS_OP_IN_EX3$> = LSLUsername
|
RDSRec<RDS_OP_IN_EX3$> = LSLUsername
|
||||||
RDSRec<RDS_OP_IN_EX3_DATE$> = SRP_Date('Today')
|
RDSRec<RDS_OP_IN_EX3_DATE$> = SRP_Date('Today')
|
||||||
RDSRec<RDS_OP_IN_EX3_TIME$> = SRP_Time('Now')
|
RDSRec<RDS_OP_IN_EX3_TIME$> = SRP_Time('Now')
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Load Extra 2 Signed to Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
||||||
end
|
end
|
||||||
Reactor_Services('AddRDSToReactorLoad', RDSNo, Reactor)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Load Extra 2 is not able to be signed at this stage')
|
Error_Services('Add', 'Load Extra 2 is not able to be signed at this stage')
|
||||||
end
|
end
|
||||||
@ -1689,7 +1682,7 @@ Service SignLoadExtra2(RDSNo,LSLUserName)
|
|||||||
Error_Services('Add', 'RDS ' : RDSNo : ' does not exist.')
|
Error_Services('Add', 'RDS ' : RDSNo : ' does not exist.')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Invalid user passed to Sign Unload Extra 1 routine')
|
Error_Services('Add', 'Invalid user passed to Sign Unload Extra 2 routine')
|
||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
@ -1705,12 +1698,11 @@ Service UnsignLoadExtra2(RDSNo, LSLUserName)
|
|||||||
RDSRec<RDS_OP_IN_EX3$> = ''
|
RDSRec<RDS_OP_IN_EX3$> = ''
|
||||||
RDSRec<RDS_OP_IN_EX3_DATE$> = ''
|
RDSRec<RDS_OP_IN_EX3_DATE$> = ''
|
||||||
RDSRec<RDS_OP_IN_EX3_TIME$> = ''
|
RDSRec<RDS_OP_IN_EX3_TIME$> = ''
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
Reactor = RDSRec<RDS_REACTOR$>
|
Reactor = RDSRec<RDS_REACTOR$>
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Rds_Services('AddComment', RDSNo, 'Load Extra 2 Unsigned on Reactor ' : Reactor, LSLUserName)
|
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
||||||
end
|
end
|
||||||
Reactor_Services('RemoveRDSFromReactorLoad', RDSNo, Reactor, LSLUserName)
|
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Unsign Load Extra 2 is not able to be unsigned.')
|
Error_Services('Add', 'Unsign Load Extra 2 is not able to be unsigned.')
|
||||||
end
|
end
|
||||||
@ -1868,6 +1860,47 @@ Service DetachRDSFromWO(RDSNo)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service ChangeReactor(RDSNo, NewReactorNo)
|
||||||
|
|
||||||
|
ErrorMessage = ''
|
||||||
|
If RDSNo NE '' AND NewReactorNo NE '' then
|
||||||
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
|
WONo = RDSRec<RDS_WO$>
|
||||||
|
Query = 'SELECT REACT_STATE WITH SCHED_WO CONTAINING ':WONo
|
||||||
|
ClearSelect
|
||||||
|
Set_Status(0)
|
||||||
|
RList(Query, TARGET_ACTIVELIST$, '', '' '')
|
||||||
|
SchedReactors = ''
|
||||||
|
EOF = False$
|
||||||
|
Loop
|
||||||
|
ReadNext SchedReactor else EOF = True$
|
||||||
|
Until EOF
|
||||||
|
SchedReactors<0, -1> = SchedReactor
|
||||||
|
Repeat
|
||||||
|
|
||||||
|
Locate NewReactorNo in SchedReactors using @VM setting vPos then
|
||||||
|
RDSRec<RDS_REACTOR$> = NewReactorNo
|
||||||
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
Response = True$
|
||||||
|
end else
|
||||||
|
Response = False$
|
||||||
|
ErrorMessage = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
Swap @VM with ',' in SchedReactors
|
||||||
|
ErrorMessage = 'Assigned reactor, ':NewReactorNo:', does not equal any scheduled reactor(s), ':SchedReactors:'.'
|
||||||
|
Response = False$
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Missing RDSNo or NewReactorNo param.'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMessage NE '' then
|
||||||
|
Error_Services('Set', ErrorMessage)
|
||||||
|
end
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
Service PushSigProfileToWoMat(RDSNo)
|
Service PushSigProfileToWoMat(RDSNo)
|
||||||
|
|
||||||
@ -1889,12 +1922,9 @@ Service PushSigProfileToWoMat(RDSNo)
|
|||||||
If WOMatKey NE '' then
|
If WOMatKey NE '' then
|
||||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
WOMatSigProf = obj_WO_Mat('CassSigProfile', WOMatKey)
|
WOMatSigProf = obj_WO_Mat('CassSigProfile', WOMatKey)
|
||||||
WOMatSig = WOMatRec<WO_MAT_SIGNATURE$>
|
WOMatSig = WOMatRec<WO_MAT_SIGNATURE$>
|
||||||
WOMatSigDTM = WOMatRec<WO_MAT_SIG_DTM$>
|
WOMatSigDTM = WOMatRec<WO_MAT_SIG_DTM$>
|
||||||
WOMatSigProfOrig = WOMatSigProf
|
|
||||||
WOMatSigOrig = WOMatSig
|
|
||||||
WOMatSigDTMOrig = WOMatSigDTM
|
|
||||||
|
|
||||||
// Update WO_MAT signature profile to match for the "1VER" stage
|
// Update WO_MAT signature profile to match for the "1VER" stage
|
||||||
Stage = '1VER'
|
Stage = '1VER'
|
||||||
@ -1966,15 +1996,9 @@ Service PushSigProfileToWoMat(RDSNo)
|
|||||||
WOMatSigDTM<0, vPos> = FQASigDTM
|
WOMatSigDTM<0, vPos> = FQASigDTM
|
||||||
end
|
end
|
||||||
|
|
||||||
If WOMatSigProf NE WOMatSigProfOrig then
|
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIG_PROFILE$, WOMatSigProf)
|
||||||
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIG_PROFILE$, WOMatSigProf)
|
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIGNATURE$, WOMatSig)
|
||||||
end
|
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIG_DTM$, WOMatSigDTM)
|
||||||
If WOMatSig NE WOMatSigOrig then
|
|
||||||
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIGNATURE$, WOMatSig)
|
|
||||||
end
|
|
||||||
If WOMatSigDTM NE WOMatSigDTMOrig then
|
|
||||||
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIG_DTM$, WOMatSigDTM)
|
|
||||||
end
|
|
||||||
|
|
||||||
end else
|
end else
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
@ -1997,9 +2021,7 @@ Service PushSigProfileToWoMat(RDSNo)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
Service AllTWUseSigned(RDSNo)
|
Service AllTWUseSigned(RDSNo)
|
||||||
|
|
||||||
If RDSNo NE '' then
|
If RDSNo NE '' then
|
||||||
LSKeys = Xlate('RDS', RDSNo, 'RDS_LS_SORTED', 'X')
|
LSKeys = Xlate('RDS', RDSNo, 'RDS_LS_SORTED', 'X')
|
||||||
AllMetKeys = XLATE('RDS_LAYER', LSKeys, RDS_LAYER_RDS_TEST_KEYS$, 'X')
|
AllMetKeys = XLATE('RDS_LAYER', LSKeys, RDS_LAYER_RDS_TEST_KEYS$, 'X')
|
||||||
@ -2022,10 +2044,8 @@ Service AllTWUseSigned(RDSNo)
|
|||||||
Error_Services('Add', ErrorMessage)
|
Error_Services('Add', ErrorMessage)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
Service GetRDSKeys(WONo)
|
Service GetRDSKeys(WONo)
|
||||||
|
|
||||||
Response = ''
|
Response = ''
|
||||||
@ -2286,6 +2306,136 @@ Service VerifyWOLogRDSKeyIndex(RDSNo)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service CheckUserRDSModificationPerm(UserId)
|
||||||
|
|
||||||
|
ErrorMsg = ''
|
||||||
|
CanUserModify = False$
|
||||||
|
|
||||||
|
If UserId NE '' then
|
||||||
|
If RowExists('LSL_USERS', UserId) then
|
||||||
|
Begin Case
|
||||||
|
Case MemberOf(UserId, 'ENGINEERING')
|
||||||
|
CanUserModify = True$
|
||||||
|
Case MemberOf(UserId, 'OI_ADMIN')
|
||||||
|
CanUserModify = True$
|
||||||
|
Case MemberOf(UserId, 'SUPERVISOR')
|
||||||
|
CanUserModify = True$
|
||||||
|
Case MemberOf(UserId, 'LEAD')
|
||||||
|
CanUserModify = True$
|
||||||
|
Case MemberOf(UserId, 'ENG_TECH')
|
||||||
|
CanUserModify = True$
|
||||||
|
Case Otherwise$
|
||||||
|
CanUserModify = False$
|
||||||
|
End Case
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'User not found in Users table.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'User Id was null.'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMsg NE '' then
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = CanUserModify
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
|
Service UnsignPreEpiSignature(RDSNo, UserId)
|
||||||
|
|
||||||
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\RDS\Signatures'
|
||||||
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Pre-Epi-Unsign.csv'
|
||||||
|
Headers = 'Logging DTM':@FM:'RDS No.':@FM:'User':@FM:'Message'
|
||||||
|
objPreEpiUnsignLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, COMMA$, Headers, '', False$, False$)
|
||||||
|
LoggingDTM = LogDate : ' ' : LogTime
|
||||||
|
|
||||||
|
ErrorMsg = ''
|
||||||
|
PreEpiUnsign = False$
|
||||||
|
If RDSNo NE '' then
|
||||||
|
If RowExists('RDS', RDSNo) then
|
||||||
|
if UserId NE '' then
|
||||||
|
if RowExists('LSL_USERS', UserId) then
|
||||||
|
CanUserModifyRDS = RDS_Services('CheckUserRDSModificationPerm', UserId)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
If CanUserModifyRDS then
|
||||||
|
UnsignPreEpiReady = QA_Services('UnsignPreEpiReady', RDSNo)
|
||||||
|
if Error_Services('NoError') then
|
||||||
|
If UnsignPreEpiReady then
|
||||||
|
Database_Services('WriteDataColumn', 'RDS', RDSNo, RDS_PRE_EPI_SIG$, '', True$, False$, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
Database_Services('WriteDataColumn', 'RDS', RDSNo, RDS_PRE_EPI_SIG_DATE$, '', True$, False$, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
Database_Services('WriteDataColumn', 'RDS', RDSNo, RDS_PRE_EPI_SIG_TIME$, '', True$, False$, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
Database_Services('WriteDataColumn', 'RDS', RDSNo, RDS_VERIFY_QTY$, '', True$, False$, False$)
|
||||||
|
if Error_Services('NoError') then
|
||||||
|
Database_Services('WriteDataColumn', 'RDS', RDSNo, RDS_REACTOR$, '', True$, False$, False$)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
PreEpiUnsign = True$
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error clearing the RDS Pre Epi Signature Time on RDS ' : RDSNo : '.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error clearing the RDS Pre Epi Signature Date on RDS ' : RDSNo : '.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error clearing the RDS Pre Epi Signature on RDS ' : RDSNo : '.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Pre Epi is unable to be unsigned because a signature beyond pre-epi exists.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'User does not have permissions to perform a Pre-Epi Unsign'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'User ' : UserId : ' not found in database.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'User Id was null.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'RDS ' : RDSNo : ' not found in database.'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'RDS Number was null.'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMsg EQ '' then
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = LoggingDTM
|
||||||
|
LogData<2> = RDSNo
|
||||||
|
LogData<3> = UserId
|
||||||
|
LogData<4> = 'Successfully unsigned pre-epi signature.'
|
||||||
|
Logging_Services('AppendLog', objPreEpiUnsignLog, LogData, @RM, @FM, False$)
|
||||||
|
end else
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = LoggingDTM
|
||||||
|
LogData<2> = RDSNo
|
||||||
|
LogData<3> = UserId
|
||||||
|
LogData<4> = ErrorMsg
|
||||||
|
Logging_Services('AppendLog', objPreEpiUnsignLog, LogData, @RM, @FM, False$)
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = PreEpiUnsign
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -2298,3 +2448,19 @@ ClearCursors:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -242,6 +242,10 @@ Equ API_COLOR_BTNTEXT$ To 18
|
|||||||
Equ API_COLOR_INACTIVECAPTIONTEXT$ To 19
|
Equ API_COLOR_INACTIVECAPTIONTEXT$ To 19
|
||||||
Equ API_COLOR_BTNHIGHLIGHT$ To 20
|
Equ API_COLOR_BTNHIGHLIGHT$ To 20
|
||||||
|
|
||||||
|
// Edit Line Color Equates
|
||||||
|
Equ READONLY_GREEN$ TO 192 + (220*256) + (192*65536)
|
||||||
|
Equ EDIT_ACTIVE_WHITE$ TO 16777215
|
||||||
|
|
||||||
// Preference Manager
|
// Preference Manager
|
||||||
Equ ImagePath$ to Memory_Services('GetValue', 'PM_CURRENT_IMAGE_PATH') : '\'
|
Equ ImagePath$ to Memory_Services('GetValue', 'PM_CURRENT_IMAGE_PATH') : '\'
|
||||||
PMSystemFont = Memory_Services('GetValue', 'PM_SYSTEM_FONT')
|
PMSystemFont = Memory_Services('GetValue', 'PM_SYSTEM_FONT')
|
||||||
|
@ -260,4 +260,7 @@ Equ RDS_COMMENT_NOTE$ To 307
|
|||||||
Equ RDS_WAFER_COUNTER_QTY$ To 308
|
Equ RDS_WAFER_COUNTER_QTY$ To 308
|
||||||
Equ RDS_WAFER_COUNTER_DTM$ To 309
|
Equ RDS_WAFER_COUNTER_DTM$ To 309
|
||||||
Equ RDS_POST_SUPERCEDE$ To 310
|
Equ RDS_POST_SUPERCEDE$ To 310
|
||||||
Equ RDS_ALL_TW_USE_SIGNED$ To 311
|
Equ RDS_ALL_TW_USE_SIGNED$ To 311
|
||||||
|
Equ RDS_LOAD_EXTRA_1_REACTOR$ To 312
|
||||||
|
Equ RDS_LOAD_EXTRA_2_REACTOR$ To 313
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user